Bilan : PREPARE_BALANCE ne transmettait ni les heures HC ni le plancher HC manuel
La regle « tenir jusqu'a la prochaine HC » (8de284c) et le plancher de charge HC manuelle (2654592, 18/09) etaient muets en production : la colle recopie le snapshot champ par champ et les avait oublies. Les tests appelaient BALANCE directement. Garde-fou : tout champ lu par BALANCE doit etre produit par PREPARE_BALANCE (mutation verifiee). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011uJ47NxgfpGnuuMr3f2n7Z
This commit is contained in:
@@ -178,6 +178,24 @@ for (const sc of all) {
|
||||
}
|
||||
}
|
||||
|
||||
// Garde-fou (28/09) : tout champ que BALANCE.js lit sur son entree doit etre
|
||||
// produit par PREPARE_BALANCE.js. Les scenarios appellent BALANCE directement :
|
||||
// un champ oublie dans la colle passait tous les tests et rendait une regle
|
||||
// muette en production (heures HC, nuit du 28/09).
|
||||
if (!PRINT && (!ONLY || 'prepare-balance-transmet-tout'.includes(ONLY))) {
|
||||
run++;
|
||||
const src = fs.readFileSync(path.join(ROOT, 'src/energy-balance/BALANCE.js'), 'utf8');
|
||||
const lus = new Set([...src.matchAll(/(?<![$\w])input\.([A-Za-z_0-9]+)/g)].map(m => m[1]));
|
||||
const prep = fs.readFileSync(path.join(ROOT, 'src/energy-balance/PREPARE_BALANCE.js'), 'utf8');
|
||||
const manquants = [...lus].filter(k => !new RegExp(`^\\s*${k}\\s*:`, 'm').test(prep));
|
||||
if (manquants.length) {
|
||||
failed++;
|
||||
console.log(`❌ prepare-balance-transmet-tout | champs lus par BALANCE absents de PREPARE_BALANCE : ${manquants.join(', ')}`);
|
||||
} else {
|
||||
console.log(`✅ prepare-balance-transmet-tout (${lus.size} champs)`);
|
||||
}
|
||||
}
|
||||
|
||||
if (PRINT) process.exit(0);
|
||||
console.log('');
|
||||
if (failed) {
|
||||
|
||||
Reference in New Issue
Block a user