Un depassement souple de la batterie doit durer pour compter

La table des bandes SOC declarait depuis toujours un courant souple tolere
pendant des minutes et un courant dur tolere quelques secondes. Les deux
tolerances etaient calculees, exportees dans le debug, et lues par aucune
decision : le controleur comparait un echantillon instantane a un plancher,
toutes les 30 s.

A SOC 94 la batterie est en float et son courant oscille entre +1,8 et -2,6 A
d'un echantillon a l'autre. Le test devenait un tirage a pile ou face et la
charge du vehicule s'arretait sur du bruit : deux fois le 01/09, quatre a six
fois par jour la semaine precedente. Chaque arret coutait environ 0,45 kWh,
la batterie etant pleine et le vehicule le seul preneur.

Le correctif est purement temporel : aucun seuil n'est deplace, aucune
constante ajoutee. La tolerance de la bande est branchee sur les trois
conditions de MAINTIEN, via un helper de persistance qui porte le debut du
depassement en cours. Le plancher de demarrage et le garde dur restent
instantanes : la tolerance est du confort, jamais du risque.

Golden 56 -> 61. Preuve par mutation dans les deux sens : tolerance supprimee
-> 2 echecs cibles, tolerance infinie -> 3 echecs cibles, l'arret dur restant
vert dans les deux cas.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KKzkkVTG6KXnGXFFC7X9XJ
This commit is contained in:
Tallagrand Thierry
2026-09-01 20:10:28 +02:00
parent a7ebaabb8b
commit 10987a04d8
9 changed files with 428 additions and 11 deletions

View File

@@ -717,6 +717,39 @@ charge EVCS), lisser le SOC pour les décisions de confort en gardant
l'instantané pour la sécurité, et exploiter les messages d'état réels du
Victron et de la borne plutôt que de s'auto-limiter à l'aveugle sur un proxy.
#### C. Arrêt de la charge sur le bruit de la mesure batterie (01/09/2026)
Troisième membre de la même famille, découvert le 01/09 : la règle de maintien
comparait le **courant batterie instantané** à un plancher de 0 A, toutes les
30 s. À SOC 94 % la batterie est en float et son courant oscille entre +1,8 et
−2,6 A d'un échantillon à l'autre — le test devenait un tirage à pile ou face.
Deux arrêts ce jour-là (14:26 et 14:56), 1 à 6 par jour la semaine précédente.
Chaque arrêt coûtait ~0,45 kWh : batterie pleine, le véhicule était le **seul
preneur**, donc la PV s'effondrait de 6,6 à 2,5 kW en 30 s et la reprise mettait
21 min à remonter de 6 A à 20 A.
La table de politique batterie par bande de SOC (`INPUT_PARSE`) déclarait
pourtant déjà, pour chaque bande, un courant **souple** toléré pendant des
**minutes** (12 min au-dessus de 90 %) et un courant **dur** toléré quelques
**secondes**. Les deux tolérances étaient calculées, exportées dans le debug, et
lues par **aucune décision** : toute la dimension temporelle de la politique
était morte.
Correctif : brancher la tolérance souple sur les trois conditions de maintien,
via un helper de persistance
`input_text.victron_evcs_battery_soft_breach_at` qui porte le début du
dépassement en cours. **Aucun seuil déplacé, aucune constante ajoutée.** Le
plancher de démarrage et le garde dur restent instantanés — la tolérance est du
confort, jamais du risque. Le filtre discrimine parce que le bruit change de
signe en quelques secondes (compteur remis à zéro) alors qu'une vraie décharge
reste négative à chaque échantillon.
Golden 56 → 61, dont le contrefactuel `batt-decharge-soutenue-coupe` qui prouve
que la garde mord toujours après sa tolérance. Détail : HANDOFF §35.
---
---
## 12. Configuration opencode.json