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
504 lines
13 KiB
JSON
504 lines
13 KiB
JSON
{
|
|
"_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
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|