etm-powersync-app/AGENTS.md
Patrick Schurig 0564c47569 docs(AGENTS): dater le paquet qui porte la grandeur, pas celui qui porte la fonction
Report de la règle déjà consignée dans CLAUDE.md (§ Règles de modification),
avec la ligne complétée du second encodage : une chaîne QStringLiteral est
stockée en UTF-16 et reste invisible à un `strings` nu.
2026-09-04 07:13:43 +02:00

47 lines
2.4 KiB
Markdown

# 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 <classe> && 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`.