Épingles : écarts correctifs face à l'épingle d'origine, écarts d'harmonisation refigés (05/10)
L'épingle d'origine (fixtures/sorties-origine-2026-09-28.json, générée depuis le code d'astro-pro) porte les défauts corrigés par91c755f(eg_phytostation ×3 sur C/eau, basse_planche_bec ×2 sur B et C/alim, lignes forcées orphelines, FORCE ×4 dans le journal, A/eau par axe en INSUFFISANT). La regénérer depuis astro-pro reproduirait les défauts ; la regénérer depuis ce paquet en ferait une épingle sur soi-même. Elle reste donc telle quelle, et : - scripts/ecarts-correctifs.mjs + fixtures/ecarts-correctifs-2026-10-05.json : chaque cellule (profil × mode × axe × champ) qui s'écarte de l'origine est figée, avec le détail des lignes ; une cellule absente doit rester identique. - test/decoupage.test.mjs : test 1 compare aux écarts figés (et vérifie qu'un correctif n'introduit jamais un INSUFFISANT ni un total hors ±5 % en global ; budgets alloués et poids des axes inchangés) ; test 2 vérifie la propriété du découpage contre selectionner() de ce paquet ; test 3 inchangé dans l'esprit. - Écarts d'harmonisation REFIGÉS (npm run ecarts -- --ecrire 2026-10-05) après relecture de docs/CONSTANTES.md : neuf lignes au lieu de onze. Les deux lignes perdues (A énergie global 22 → 6 %, C énergie par axe 10 → 3 %) étaient des taux calculés sur des kWc fantômes hérités par une batterie ; la couverture y est null avec les deux tables. Aucun coefficient ne change. Note datée posée dans CONSTANTES.md §1. (La suppression du fichier du 28/09 est partie par erreur dans8465bf7, avec la version : même intention, deux commits.) - fixtures/README.md et AGENTS.md (règles 6 et 8) : l'épingle d'origine ne se regénère pas pour absorber un correctif ; invariants tenus depuis v0.1.1. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Tgtn7bJxTLiL2fRCkQMgtR
This commit is contained in:
co-authored by
Claude Fable 5.1
parent
8465bf7204
commit
4f593d2edf
+3
-2
@@ -8,7 +8,8 @@ Les tests tournent hors ligne sur ces copies. Aucun fichier d'ici n'est importé
|
||||
| `algo-config.json` | heuristiques de conception du noyau (poids, modulateurs, matrices, tolérances, alias, poids des postes) ; les clés `orientation_factors` et `dju_defaults_by_zone` y figurent encore mais **ne sont plus lues** (les coefficients vivent dans `src/commun/coefficients.ts`) | `astro-pro/src/lib/autonomie/algo-config.json` | 2026-09-28 (inchangé depuis mai 2026) |
|
||||
| `profils-reference.json` | les trois profils de calibrage A / B / C | `astro-pro/tests/profils-reference.json` | 2026-09-28 |
|
||||
| `coefficients-2026-05.json` | jeu de coefficients **d'origine** (valeurs du code de calculs), injecté par le test de non-régression | relevé sur `astro-pro` master `c628cf9` | 2026-09-28 |
|
||||
| `sorties-origine-2026-09-28.json` | sorties de `selectionner()` **d'origine** sur les trois profils (pipeline complet + mode un seul axe), générées par `scripts/pin-origine.mjs` depuis le code d'astro-pro | `astro-pro` master `c628cf9` | 2026-09-28 |
|
||||
| `ecarts-harmonisation-2026-09-28.json` | écarts de sélection et de taux entre coefficients d'origine et table harmonisée (`npm run ecarts -- --ecrire <date>`) ; relus par Jules avec `docs/CONSTANTES.md` | ce paquet | 2026-09-28 |
|
||||
| `sorties-origine-2026-09-28.json` | sorties de `selectionner()` **d'origine** sur les trois profils (pipeline complet + mode un seul axe), générées par `scripts/pin-origine.mjs` depuis le code d'astro-pro. **Porte les défauts corrigés en v0.1.1** (doublons, accessoires forcés orphelins, statut non monotone, journal répété) : elle n'est pas regénérée, les écarts voulus sont figés à côté | `astro-pro` master `c628cf9` | 2026-09-28 |
|
||||
| `ecarts-correctifs-2026-10-05.json` | écarts voulus entre l'épingle d'origine et ce paquet (coefficients d'origine), cellule par cellule, avec le détail des lignes (`node scripts/ecarts-correctifs.mjs --ecrire <date>`). Une cellule absente doit rester identique à l'origine ; un nouvel écart ne se refige que pour corriger un défaut du noyau, avec son test | ce paquet v0.1.1 | 2026-10-05 |
|
||||
| `ecarts-harmonisation-2026-10-05.json` | écarts de sélection et de taux entre coefficients d'origine et table harmonisée (`npm run ecarts -- --ecrire <date>`) ; relus par Jules avec `docs/CONSTANTES.md`. Refigé le 05/10 après le correctif v0.1.1 : les écarts sont identiques à ceux du 28/09 (seuls les totaux de référence des lignes ont bougé) | ce paquet | 2026-10-05 |
|
||||
|
||||
Refiger une épingle est un acte volontaire : on relit `docs/CONSTANTES.md`, on relance le script avec la date du jour, on met à jour les tests qui la citent, et on l'écrit dans le message de commit.
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,503 @@
|
||||
{
|
||||
"_commentaire": "Écarts de sélection et de taux entre le jeu de coefficients d'origine et la table harmonisée, sur les trois profils de référence, figés le 2026-10-05. Un changement de coefficient ou de code qui modifie ces écarts casse test/decoupage.test.mjs : c'est voulu, on relit CONSTANTES.md avant de refiger.",
|
||||
"date": "2026-10-05",
|
||||
"ecarts": [
|
||||
{
|
||||
"profil": "A — Frugal urbain",
|
||||
"mode": "taux (par_axe)",
|
||||
"axe": "eau",
|
||||
"origine": "23 %",
|
||||
"harmonisee": "27 %"
|
||||
},
|
||||
{
|
||||
"profil": "A — Frugal urbain",
|
||||
"mode": "taux (global)",
|
||||
"axe": "eau",
|
||||
"origine": "23 %",
|
||||
"harmonisee": "27 %"
|
||||
},
|
||||
{
|
||||
"profil": "A — Frugal urbain",
|
||||
"mode": "taux (par_axe)",
|
||||
"axe": "energie",
|
||||
"origine": "22 %",
|
||||
"harmonisee": "6 %"
|
||||
},
|
||||
{
|
||||
"profil": "B — Famille moyenne",
|
||||
"mode": "taux (par_axe)",
|
||||
"axe": "eau",
|
||||
"origine": "24 %",
|
||||
"harmonisee": "27 %"
|
||||
},
|
||||
{
|
||||
"profil": "B — Famille moyenne",
|
||||
"mode": "taux (global)",
|
||||
"axe": "eau",
|
||||
"origine": "24 %",
|
||||
"harmonisee": "27 %"
|
||||
},
|
||||
{
|
||||
"profil": "B — Famille moyenne",
|
||||
"mode": "taux (par_axe)",
|
||||
"axe": "energie",
|
||||
"origine": "100 %",
|
||||
"harmonisee": "80 %"
|
||||
},
|
||||
{
|
||||
"profil": "C — Autonomie large",
|
||||
"mode": "taux (par_axe)",
|
||||
"axe": "eau",
|
||||
"origine": "20 %",
|
||||
"harmonisee": "23 %"
|
||||
},
|
||||
{
|
||||
"profil": "C — Autonomie large",
|
||||
"mode": "taux (global)",
|
||||
"axe": "eau",
|
||||
"origine": "20 %",
|
||||
"harmonisee": "23 %"
|
||||
},
|
||||
{
|
||||
"profil": "C — Autonomie large",
|
||||
"mode": "taux (global)",
|
||||
"axe": "energie",
|
||||
"origine": "100 %",
|
||||
"harmonisee": "63 %"
|
||||
}
|
||||
],
|
||||
"lignes": [
|
||||
{
|
||||
"profil": "A — Frugal urbain",
|
||||
"jeu": "origine",
|
||||
"global": {
|
||||
"total": 15700,
|
||||
"status": "OK",
|
||||
"typologies": {
|
||||
"eau": [
|
||||
"captage_descente_directe",
|
||||
"filtration_3_corps_uv",
|
||||
"stockage_souple_5m3",
|
||||
"distrib_kit_double_reseau",
|
||||
"eg_noue",
|
||||
"eg_fpv_autoconstruit"
|
||||
],
|
||||
"energie": [
|
||||
"pv_batterie_plomb_5",
|
||||
"th_ballon_500",
|
||||
"bois_poele_masse_diy",
|
||||
"emet_vannes_thermo",
|
||||
"pil_routeur_ecs",
|
||||
"bois_conduit_fumee"
|
||||
],
|
||||
"alim": []
|
||||
},
|
||||
"taux": {
|
||||
"eau": 23,
|
||||
"energie": null,
|
||||
"alim": null
|
||||
}
|
||||
},
|
||||
"par_axe": {
|
||||
"eau": {
|
||||
"typologies": [
|
||||
"captage_descente_directe",
|
||||
"filtration_3_corps_uv",
|
||||
"stockage_souple_5m3",
|
||||
"distrib_kit_double_reseau",
|
||||
"eg_recyclage_spareau",
|
||||
"eg_separation_source"
|
||||
],
|
||||
"sous_total": 7575,
|
||||
"status": "OK",
|
||||
"taux": 23
|
||||
},
|
||||
"energie": {
|
||||
"typologies": [
|
||||
"pv_kit_beem_balcon",
|
||||
"th_ballon_500",
|
||||
"bois_poele_granules",
|
||||
"emet_radiateur_acier",
|
||||
"pil_routeur_ecs",
|
||||
"bois_conduit_fumee"
|
||||
],
|
||||
"sous_total": 7110,
|
||||
"status": "AJOUTER_OPTIONNEL",
|
||||
"taux": 22
|
||||
},
|
||||
"alim": {
|
||||
"typologies": [],
|
||||
"sous_total": 0,
|
||||
"status": "OK",
|
||||
"taux": null
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"profil": "A — Frugal urbain",
|
||||
"jeu": "harmonisee",
|
||||
"global": {
|
||||
"total": 15700,
|
||||
"status": "OK",
|
||||
"typologies": {
|
||||
"eau": [
|
||||
"captage_descente_directe",
|
||||
"filtration_3_corps_uv",
|
||||
"stockage_souple_5m3",
|
||||
"distrib_kit_double_reseau",
|
||||
"eg_noue",
|
||||
"eg_fpv_autoconstruit"
|
||||
],
|
||||
"energie": [
|
||||
"pv_batterie_plomb_5",
|
||||
"th_ballon_500",
|
||||
"bois_poele_masse_diy",
|
||||
"emet_vannes_thermo",
|
||||
"pil_routeur_ecs",
|
||||
"bois_conduit_fumee"
|
||||
],
|
||||
"alim": []
|
||||
},
|
||||
"taux": {
|
||||
"eau": 27,
|
||||
"energie": null,
|
||||
"alim": null
|
||||
}
|
||||
},
|
||||
"par_axe": {
|
||||
"eau": {
|
||||
"typologies": [
|
||||
"captage_descente_directe",
|
||||
"filtration_3_corps_uv",
|
||||
"stockage_souple_5m3",
|
||||
"distrib_kit_double_reseau",
|
||||
"eg_recyclage_spareau",
|
||||
"eg_separation_source"
|
||||
],
|
||||
"sous_total": 7575,
|
||||
"status": "OK",
|
||||
"taux": 27
|
||||
},
|
||||
"energie": {
|
||||
"typologies": [
|
||||
"pv_kit_beem_balcon",
|
||||
"th_ballon_500",
|
||||
"bois_poele_granules",
|
||||
"emet_radiateur_acier",
|
||||
"pil_routeur_ecs",
|
||||
"bois_conduit_fumee"
|
||||
],
|
||||
"sous_total": 7110,
|
||||
"status": "AJOUTER_OPTIONNEL",
|
||||
"taux": 6
|
||||
},
|
||||
"alim": {
|
||||
"typologies": [],
|
||||
"sous_total": 0,
|
||||
"status": "OK",
|
||||
"taux": null
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"profil": "B — Famille moyenne",
|
||||
"jeu": "origine",
|
||||
"global": {
|
||||
"total": 34183,
|
||||
"status": "OK",
|
||||
"typologies": {
|
||||
"eau": [
|
||||
"captage_descente_directe",
|
||||
"filtration_particulaire_simple",
|
||||
"stockage_souple_5m3",
|
||||
"distrib_gravitaire",
|
||||
"eg_autoepure"
|
||||
],
|
||||
"energie": [
|
||||
"pv_monitoring",
|
||||
"th_ballon_500",
|
||||
"bois_poele_masse_indus",
|
||||
"emet_seche_serviette",
|
||||
"pil_delesteur",
|
||||
"bois_conduit_fumee"
|
||||
],
|
||||
"alim": [
|
||||
"etude_analyse_labo",
|
||||
"haute_plantation_pose_pro",
|
||||
"moy_petit_fruit_3L",
|
||||
"basse_medicinales_lot30"
|
||||
]
|
||||
},
|
||||
"taux": {
|
||||
"eau": 24,
|
||||
"energie": null,
|
||||
"alim": null
|
||||
}
|
||||
},
|
||||
"par_axe": {
|
||||
"eau": {
|
||||
"typologies": [
|
||||
"captage_capteur_sol",
|
||||
"filtration_particulaire_simple",
|
||||
"stockage_pehd_enterree_5m3",
|
||||
"distrib_per_bleu_interieur",
|
||||
"eg_autoepure",
|
||||
"distrib_kit_double_reseau"
|
||||
],
|
||||
"sous_total": 13595,
|
||||
"status": "OK",
|
||||
"taux": 24
|
||||
},
|
||||
"energie": {
|
||||
"typologies": [
|
||||
"pv_kit_3kwc_string",
|
||||
"th_ballon_500",
|
||||
"bois_poele_granules",
|
||||
"emet_seche_serviette",
|
||||
"pil_delesteur",
|
||||
"bois_conduit_fumee"
|
||||
],
|
||||
"sous_total": 13455,
|
||||
"status": "OK",
|
||||
"taux": 100
|
||||
},
|
||||
"alim": {
|
||||
"typologies": [
|
||||
"etude_analyse_labo",
|
||||
"haute_plantation_pose_pro",
|
||||
"moy_haie_biodiv_complete",
|
||||
"basse_planche_bec"
|
||||
],
|
||||
"sous_total": 4360,
|
||||
"status": "AJOUTER_OPTIONNEL",
|
||||
"taux": 50
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"profil": "B — Famille moyenne",
|
||||
"jeu": "harmonisee",
|
||||
"global": {
|
||||
"total": 34183,
|
||||
"status": "OK",
|
||||
"typologies": {
|
||||
"eau": [
|
||||
"captage_descente_directe",
|
||||
"filtration_particulaire_simple",
|
||||
"stockage_souple_5m3",
|
||||
"distrib_gravitaire",
|
||||
"eg_autoepure"
|
||||
],
|
||||
"energie": [
|
||||
"pv_monitoring",
|
||||
"th_ballon_500",
|
||||
"bois_poele_masse_indus",
|
||||
"emet_seche_serviette",
|
||||
"pil_delesteur",
|
||||
"bois_conduit_fumee"
|
||||
],
|
||||
"alim": [
|
||||
"etude_analyse_labo",
|
||||
"haute_plantation_pose_pro",
|
||||
"moy_petit_fruit_3L",
|
||||
"basse_medicinales_lot30"
|
||||
]
|
||||
},
|
||||
"taux": {
|
||||
"eau": 27,
|
||||
"energie": null,
|
||||
"alim": null
|
||||
}
|
||||
},
|
||||
"par_axe": {
|
||||
"eau": {
|
||||
"typologies": [
|
||||
"captage_capteur_sol",
|
||||
"filtration_particulaire_simple",
|
||||
"stockage_pehd_enterree_5m3",
|
||||
"distrib_per_bleu_interieur",
|
||||
"eg_autoepure",
|
||||
"distrib_kit_double_reseau"
|
||||
],
|
||||
"sous_total": 13595,
|
||||
"status": "OK",
|
||||
"taux": 27
|
||||
},
|
||||
"energie": {
|
||||
"typologies": [
|
||||
"pv_kit_3kwc_string",
|
||||
"th_ballon_500",
|
||||
"bois_poele_granules",
|
||||
"emet_seche_serviette",
|
||||
"pil_delesteur",
|
||||
"bois_conduit_fumee"
|
||||
],
|
||||
"sous_total": 13455,
|
||||
"status": "OK",
|
||||
"taux": 80
|
||||
},
|
||||
"alim": {
|
||||
"typologies": [
|
||||
"etude_analyse_labo",
|
||||
"haute_plantation_pose_pro",
|
||||
"moy_haie_biodiv_complete",
|
||||
"basse_planche_bec"
|
||||
],
|
||||
"sous_total": 4360,
|
||||
"status": "AJOUTER_OPTIONNEL",
|
||||
"taux": 50
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"profil": "C — Autonomie large",
|
||||
"jeu": "origine",
|
||||
"global": {
|
||||
"total": 77465,
|
||||
"status": "OK",
|
||||
"typologies": {
|
||||
"eau": [
|
||||
"captage_capteur_sol",
|
||||
"filtration_3_corps_uv",
|
||||
"stockage_beton_5m3",
|
||||
"distrib_gravitaire",
|
||||
"eg_phytostation"
|
||||
],
|
||||
"energie": [
|
||||
"pv_kit_3kwc_micro",
|
||||
"th_ballon_500",
|
||||
"bois_chaudiere_granules",
|
||||
"emet_vannes_thermo",
|
||||
"pil_onduleur_hybride",
|
||||
"bois_conduit_fumee"
|
||||
],
|
||||
"alim": [
|
||||
"etude_analyse_labo",
|
||||
"haute_haute_tige",
|
||||
"moy_haie_biodiv_complete",
|
||||
"basse_planche_bec"
|
||||
]
|
||||
},
|
||||
"taux": {
|
||||
"eau": 20,
|
||||
"energie": 100,
|
||||
"alim": 67
|
||||
}
|
||||
},
|
||||
"par_axe": {
|
||||
"eau": {
|
||||
"typologies": [
|
||||
"captage_capteur_sol",
|
||||
"filtration_3_corps_uv",
|
||||
"stockage_beton_5m3",
|
||||
"distrib_per_bleu_interieur",
|
||||
"eg_phytostation",
|
||||
"distrib_kit_double_reseau"
|
||||
],
|
||||
"sous_total": 18400,
|
||||
"status": "AJOUTER_OPTIONNEL",
|
||||
"taux": 20
|
||||
},
|
||||
"energie": {
|
||||
"typologies": [
|
||||
"pv_batterie_plomb_5",
|
||||
"th_ballon_500",
|
||||
"bois_poele_hydro",
|
||||
"emet_radiateur_acier",
|
||||
"pil_routeur_ecs",
|
||||
"bois_conduit_fumee"
|
||||
],
|
||||
"sous_total": 19210,
|
||||
"status": "OK",
|
||||
"taux": null
|
||||
},
|
||||
"alim": {
|
||||
"typologies": [
|
||||
"etude_analyse_labo",
|
||||
"haute_haute_tige",
|
||||
"moy_haie_biodiv_complete",
|
||||
"basse_planche_bec"
|
||||
],
|
||||
"sous_total": 11855,
|
||||
"status": "AJOUTER_OPTIONNEL",
|
||||
"taux": 67
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"profil": "C — Autonomie large",
|
||||
"jeu": "harmonisee",
|
||||
"global": {
|
||||
"total": 77465,
|
||||
"status": "OK",
|
||||
"typologies": {
|
||||
"eau": [
|
||||
"captage_capteur_sol",
|
||||
"filtration_3_corps_uv",
|
||||
"stockage_beton_5m3",
|
||||
"distrib_gravitaire",
|
||||
"eg_phytostation"
|
||||
],
|
||||
"energie": [
|
||||
"pv_kit_3kwc_micro",
|
||||
"th_ballon_500",
|
||||
"bois_chaudiere_granules",
|
||||
"emet_vannes_thermo",
|
||||
"pil_onduleur_hybride",
|
||||
"bois_conduit_fumee"
|
||||
],
|
||||
"alim": [
|
||||
"etude_analyse_labo",
|
||||
"haute_haute_tige",
|
||||
"moy_haie_biodiv_complete",
|
||||
"basse_planche_bec"
|
||||
]
|
||||
},
|
||||
"taux": {
|
||||
"eau": 23,
|
||||
"energie": 63,
|
||||
"alim": 67
|
||||
}
|
||||
},
|
||||
"par_axe": {
|
||||
"eau": {
|
||||
"typologies": [
|
||||
"captage_capteur_sol",
|
||||
"filtration_3_corps_uv",
|
||||
"stockage_beton_5m3",
|
||||
"distrib_per_bleu_interieur",
|
||||
"eg_phytostation",
|
||||
"distrib_kit_double_reseau"
|
||||
],
|
||||
"sous_total": 18400,
|
||||
"status": "AJOUTER_OPTIONNEL",
|
||||
"taux": 23
|
||||
},
|
||||
"energie": {
|
||||
"typologies": [
|
||||
"pv_batterie_plomb_5",
|
||||
"th_ballon_500",
|
||||
"bois_poele_hydro",
|
||||
"emet_radiateur_acier",
|
||||
"pil_routeur_ecs",
|
||||
"bois_conduit_fumee"
|
||||
],
|
||||
"sous_total": 19210,
|
||||
"status": "OK",
|
||||
"taux": null
|
||||
},
|
||||
"alim": {
|
||||
"typologies": [
|
||||
"etude_analyse_labo",
|
||||
"haute_haute_tige",
|
||||
"moy_haie_biodiv_complete",
|
||||
"basse_planche_bec"
|
||||
],
|
||||
"sous_total": 11855,
|
||||
"status": "AJOUTER_OPTIONNEL",
|
||||
"taux": 67
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user