La carte declare un proprietaire, et le conseiller la lit
Essai du 12/09 : avec la seule liste des ecrivains, le conseiller voyait le conflit mais accusait les deux workflows n8n — l intrus etait une automatisation Home Assistant. La carte sait lire QUI PEUT ecrire, elle ne peut pas deviner QUI DEVRAIT : le proprietaire est une decision humaine, desormais declaree et commentee dans l outil. Resultat : 3 ecrivains hors proprietaire sur le contacteur reseau, 1 sur le courant de la borne, 1 sur le verrou. Injectee dans le briefing entre bornes explicites, regeneree par --injecte. Le conseiller enonce maintenant la bonne forme (« contradiction entre le proprietaire et un autre ecrivain ») mais ne nomme toujours pas lequel : il lui manque l ATTRIBUTION — rien ne relie une bascule a son auteur. Le contexte Home Assistant distingue un appel de service d une automatisation ; c est la prochaine piste. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GwpFpy2aQ2rJok6tNQSbVj
This commit is contained in:
@@ -47,6 +47,7 @@ const BASE = {
|
||||
grid_setpoint_w: '700',
|
||||
mppt_operation_modes: 'off,off,off,off,off,off',
|
||||
vehicle_selected: 'VW',
|
||||
evenements_recents: '',
|
||||
};
|
||||
const LIM = Array(6).fill('voltage_current_limited').join(',');
|
||||
const MAX = Array(6).fill('mppt_active').join(',');
|
||||
@@ -223,6 +224,27 @@ export const CAS = [
|
||||
modules_en_service:'16', bms_max_discharge_current_a:'400',
|
||||
bms_max_charge_current_a:'400' } },
|
||||
|
||||
{ id:'15-oscillation-contacteur', t:'2026-09-12T06:36:00+02:00', certain:true,
|
||||
titre:"INCIDENT 12/09 06:25-06:35 — le contacteur bascule six fois en dix minutes",
|
||||
attendu:"REPERER : gravite haute, nommer le conflit entre ecrivains",
|
||||
s:{ soc_percent:'35', battery_current_a:'20', pv_power_w:'0', house_ac_power_w:'950',
|
||||
grid_state:'on', acin1_available:'1', night_target_soc_actual:'42.8',
|
||||
balance_required_soc:'42.8', balance_required_soc_prudent:'49',
|
||||
balance_energy_to_cover_kwh:'1.56', balance_grid_needed:'on',
|
||||
balance_grid_energy_needed_kwh:'1.1', balance_crossing_hour:'09 h',
|
||||
grid_setpoint_w:'5759', tomorrow_kwh:'75.2',
|
||||
evenements_recents:'06:35:06 Contacteur EDF : off -> on|06:34:02 Contacteur EDF : on -> off|06:30:49 Contacteur EDF : off -> on|06:29:44 Contacteur EDF : on -> off|06:26:31 Contacteur EDF : off -> on|06:25:27 Contacteur EDF : on -> off' } },
|
||||
|
||||
{ id:'16-systeme-calme', t:'2026-09-12T07:00:00+02:00', certain:true,
|
||||
titre:"CONTREFACTUEL — meme nuit, contacteur stable depuis 90 minutes",
|
||||
attendu:"NE RIEN SIGNALER : gravite aucune",
|
||||
s:{ soc_percent:'42', battery_current_a:'20', pv_power_w:'0', house_ac_power_w:'950',
|
||||
grid_state:'on', acin1_available:'1', night_target_soc_actual:'42.8',
|
||||
balance_required_soc:'42.8', balance_required_soc_prudent:'49',
|
||||
balance_energy_to_cover_kwh:'0.9', balance_grid_needed:'on',
|
||||
balance_crossing_hour:'09 h', grid_setpoint_w:'5759', tomorrow_kwh:'75.2',
|
||||
evenements_recents:'05:02:51 Contacteur EDF : off -> on|05:02:51 Reprise reseau nuit : off -> on' } },
|
||||
|
||||
{ id:'14-bilan-indisponible', t:'2026-09-12T04:00:00+02:00', certain:true,
|
||||
titre:"ROBUSTESSE — meme nuit que le cas 1 mais bilan DEGRADE",
|
||||
attendu:"Le dire dans sa raison et rester prudent",
|
||||
@@ -257,7 +279,8 @@ for (const cas of CAS) {
|
||||
console.log(` attendu : ${cas.attendu}`);
|
||||
for (const x of passages) {
|
||||
console.log(x.erreur ? ` ✖ ${x.erreur}`
|
||||
: ` ${String(x.strategy).padEnd(17)} cible ${String(x.night_target_soc).padStart(3)} % ${String(x.current_max_a).padStart(2)} A VE:${String(x.ev_charge_tonight).padEnd(11)} [${Math.round((x.confidence||0)*100)}%] ${String(x.reason).slice(0,110)}`);
|
||||
: ` [${String(x.gravite).padEnd(7)}] ${String(x.constat).slice(0,88).padEnd(90)} ${String(x.strategy).padEnd(16)} cible ${String(x.night_target_soc).padStart(3)}`);
|
||||
if (!x.erreur && x.ce_qui_cloche) console.log(` ↳ ${String(x.ce_qui_cloche).slice(0,120)}`);
|
||||
}
|
||||
if (ecart !== null) console.log(` → ecart de cible entre passages : ${ecart} pts`);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user