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

2.4 KiB

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 :
    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.

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.