Le 16/09 Airtria a FABRIQUE un "jeton HA 401, regenere cote HA" alors que le jeton
renvoie 200 : elle raisonnait sur l'etat HA au lieu de le lire. Faute de methode de
lecture fiable, elle confabulait (valeurs a 03:25, puis une panne a 04:35).
- airtria-ha-read.js : lit /api/states, imprime etat + unite + last_changed converti en
heure de Paris + age (marque FIGE si >15 min) ; en echec, imprime le VRAI code HTTP.
Airtria lit via ce script et rapporte ce qu'il imprime. Verifie en live (SOC 46 %,
power -408 W = decharge ; source_mode et night_target correctement marques FIGE).
- AGENTS.md 1.7 : ne jamais fabriquer une panne/cause ; lire pour de vrai via
airtria-ha-read.js, ne pas raisonner sur une valeur.
- AGENTS.md 5ter : pointe vers le lecteur ; rappelle que /api/states est en UTC.
- .gitignore : whitelist elargie workspace/airtria-*.js.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RZsbhyGmRwZogdoBwT6C6y
Suite a une reponse WhatsApp erronee du 16/09 (question SOC VW : grandeur absente, puis
grandeurs voisines servies comme reponse - 5 faux sur 6, dont un compteur fige depuis 8 h
cite comme "cette nuit", et une batterie dite qui "monte" alors qu'elle descendait).
Corrections de domaine fournies par EVCS.
- AGENTS.md 1.7 : ne JAMAIS substituer une grandeur absente (le dire et s'arreter) ;
verifier last_changed avant de citer une valeur comme actuelle ; publier une grandeur
directionnelle avec le SIGNE de sa puissance.
- AGENTS.md 5ter : reference "ou lire quoi" (SOC maison + sens via battery_power,
source_mode, cible de nuit vivante, compteurs gx_device_* empoisonnes a ne pas lire
comme des deltas ; SOC voiture = n'existe pas).
- airtria-charge-session.js : lecteur SQL lecture seule (role airtria_ro, reutilise
makeClient) de la session de charge en cours, pour l'energie reellement prise par la
voiture (dont reseau) sans lire un compteur HA fige.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RZsbhyGmRwZogdoBwT6C6y
Concierge: declenche au BRANCHEMENT (transition on de evenement) au lieu de la session ;
helper porte 'branchement' (ts::text verbatim) ; fraicheur [on-10, min(now, on+30)].
Moniteur LLM/RAM (llm-monitor.js) : endpoint spark + RAM, alerte WhatsApp sur changement
d'etat, publie l'etat dans HA (last_seen a chaque passage) + interrupteur de pilotage.
Docs: SPEC a jour, MONITORING-LLM.md, brouillons de config HA.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RZsbhyGmRwZogdoBwT6C6y
Complete le commit doc precedent : ajoute le code JS du concierge, exclu jusqu'ici
par la liste blanche workspace/*. Exception ciblee !workspace/concierge-*.js dans
.gitignore (aucun secret : les tokens sont lus depuis .ha-token/.pg-airtria, ignores).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RZsbhyGmRwZogdoBwT6C6y
Le depot suivait openclaw.json en clair, qui contient gateway.auth.token,
gateway.remote.token et models.providers.*.apiKey. Ces valeurs sont deja
presentes dans l'historique pousse (2 occurrences du jeton de gateway
actuel) : la rotation du jeton reste a faire cote gateway.
Sans .gitignore, un "git add -A" balayait 505 Mo, dont l'appairage WhatsApp
(32 Mo de cles de session), la base SQLite active, credentials/, secrets/,
devices/ et les medias recus.
Strategie retenue : liste blanche. Tout est ignore par defaut, seules la
documentation et la configuration sont reintegrees explicitement.
openclaw.json est remplace par openclaw.json.example, caviarde.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NuEBkGBjkpZGgqJnX1DCrm