airtria-ha-read: age = fait neutre, pas de verdict "fige" (EVCS)

EVCS a mesure que "FIGE >15 min" crie au loup : un systeme stable a des entites metier
IMMOBILES par construction (voiture branchee depuis 12 h, mode "Bloque" inchange), et
last_reported == last_changed -- aucun champ de l'API ne distingue un ecrivain mort d'une
reecriture identique. L'age n'est donc pas une preuve de panne.

- airtria-ha-read.js : "inchange depuis X" (fait neutre), plus de marqueur FIGE.
- AGENTS.md 1.7 : l'age d'une entite metier n'est pas une panne ; la vivacite se lit sur le
  battement de coeur seul ; entite metier lue pour sa VALEUR, pas sa fraicheur. La vraie
  erreur du "12,1 kWh" = le perimetre (compteur de vie), pas l'age.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RZsbhyGmRwZogdoBwT6C6y
This commit is contained in:
2026-09-16 08:19:34 +02:00
parent 78577eda85
commit 04c1e19bf3
2 changed files with 32 additions and 13 deletions

View File

@@ -60,7 +60,7 @@ Pour vérifier qu'un PNG est correct, utiliser **`du -b`** (taille en octets) vi
Ne JAMAIS utiliser `view_image` ni `read` sur un `.png` : c'est lent, coûteux en contexte,
et inutile. Un PNG de graphe valide fait > 5000 octets.
### 1.7 Mesures : ne JAMAIS substituer une grandeur absente, vérifier `last_changed`
### 1.7 Mesures : ne pas substituer, ne pas fabriquer, ne pas confondre âge et panne
Pour toute question chiffrée (énergie, SOC, puissance, prix). Ces règles ont manqué le
16/09 (« SOC de la VW ? » : la grandeur n'existe pas ; Airtria l'a dit, puis a servi les
@@ -71,8 +71,16 @@ grandeurs voisines comme si elles répondaient → 5 affirmations fausses sur 6)
(« je n'ai pas X ; j'ai Y, qui est différent »), jamais comme la réponse. Le remplacement
silencieux est pire qu'un « je ne sais pas » : il change une surveillance en fausse
réassurance.
- **Vérifier `last_changed`** (donné par `/api/states/<entité>`) avant de citer une valeur
comme ACTUELLE : figée depuis des heures ≠ « maintenant » / « cette nuit ».
- **L'âge d'une entité métier n'est PAS une preuve de panne.** Un système stable produit des
entités IMMOBILES (voiture branchée depuis 12 h, mode « Bloqué » inchangé) : c'est normal.
Aucun champ de l'API ne distingue un écrivain mort d'un écrivain qui réécrit la même valeur
(`last_reported` = `last_changed`). Donc : lire une entité métier pour sa VALEUR, jamais
pour sa fraîcheur, et ne jamais dire « figé » d'une valeur ancienne. La VIVACITÉ (« le
contrôleur est-il muet ? ») se lit UNIQUEMENT sur le battement de cœur (état = horodatage
qui change forcément à chaque écriture).
- **Ne pas attribuer une valeur à une fenêtre qu'elle ne couvre pas** : un compteur de vie
(kWh cumulés) n'est pas « cette nuit » — la vraie erreur du « 12,1 kWh », c'est le
périmètre, pas l'âge.
- **Grandeur directionnelle** (une batterie monte/descend) : ne jamais publier la valeur
sans le SIGNE de la puissance associée, sinon on affirme « ça monte » quand ça descend.
- **Ne jamais FABRIQUER une panne ni une cause.** Si une lecture échoue, rapporter l'erreur