# AGENTS.md — etm-powersync-app Application mobile Flutter ETM : lecture live + écrans add & config. - **Licence** : à confirmer · **Miroir public** : selon licence - **Agent** : app · **Branche** : feature/beta-add-config · **Scope** : écrans add & config ## Invariants locaux 1. Lecture live + transport JSON-RPC DÉJÀ faits — ne pas y toucher. 2. Câbler sur l'API publiée (namespace `NymeaEnergy` actuel ; cible `Ems`). 3. Mode Optimiser / Manuel. Héos GRISÉ par défaut (capabilities `community/false/false`). Objet capabilities à 4 champs : tier / optimizerExpected / optimizerAlive / activeStrategy. 4. Pas de libellé « Héos » dans la config GPL. Pas d'écran tier Auto/Predict en beta. 5. Distribution TestFlight (iOS) + APK/Play internal (Android) — pas de review store sur le chemin critique. 6. **Dater le paquet qui porte la GRANDEUR, pas celui qui porte la fonction.** La fonction et la grandeur qu'elle consomme peuvent vivre dans deux paquets différents. Le 2026-09-04, `dpkg -l | grep powersync-energy` répondait « `+etm53`, tout va bien » pendant que l'étalement restait inobservable : le compteur appartient à `nymea-plugin-generic-energy` (classe `smartMeterConsumer`), jamais reconstruit depuis le 2026-06-19. Le propriétaire se trouve en une ligne — avec les DEUX encodages, une chaîne `QStringLiteral` étant stockée en UTF-16 et invisible à un `strings` nu : ```bash for so in /usr/lib/*/nymea/plugins/*.so; do { strings -a "$so"; strings -a -el "$so"; } | grep -qx && dpkg -S "$so" done ``` Détail et corollaire `deploy.sh` : `CLAUDE.md` § Règles de modification, et `../etm-powersync-energy-plugin-etm/AGENTS.md` § « Dater le paquet qui porte la GRANDEUR ». ## Déploiement live-demo Sur instruction explicite uniquement (`"déploie la demo"` / `"mets à jour app.etm-powersync.fr"`). Ne pas déployer automatiquement, même après un build réussi. ```bash flutter build web --release rsync -avz --delete build/web/ etm@192.168.1.241:/var/www/html/app.etm-powersync.fr/ ``` **Prérequis** : build `--release` sans erreur. **Serveur** : DMZ Apache · `192.168.1.241` · user `etm` **URL** : https://app.etm-powersync.fr **Routing** : `FallbackResource /index.html` (go_router côté client) ## Références - `CLAUDE.md` existant, `TODO.md`. Carte globale et frontières : voir `../AGENTS.md`.