Repository navigation
fix(lean,#15742): seuil R3 — énoncer le contrat réel (< 2 modèle, bande à 2 au replay) - #15924
Conversation
…e (< 2 modele, bande a 2 au replay) Dissipation des 2 points CONCERNS Hermes (review 2026-09-12T06:34:59Z sur #15711) : le schema enoncait un seuil 3 que le code ne materialise pas (rejet exact a < 2), et le commentaire GROW pretendait la non-interaction a >= 2, contredisant la mesure de la tranche (naissances croisees a distance 2). Choix retenu : corriger les formulations (option b de la review) plutot que d'elever le seuil code — la bande a exactement 2 est delibrement deleguee au replay de certification, c'est le contrat que test_reutilisation_stricte_impossible_borne verifie (replay_rejected >= 1) et que la table d'ablations a mesure. Nouveau test punissant le contrat : distance 1 rejetee par le modele, distance exactement 2 admise a l'elagage. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
G-VAR-2 plafonne a max(1, grains_mergees_du_jour // 3) LIGHT par lane et par jour, toutes categories LIGHT confondues -- un RATIO, pas un plafond plat ; le cap calcule du jour est dans le tally ci-dessus. G-VAR-3 interdit deux genres LIGHT consecutifs. Les signaux ci-dessus rendent le fait VISIBLE (labels |
Path-collision (organ #13359/#13615)Cette PR #15924 (
Le verdict terminal (#15578) signale qu'un cote de la paire est deja sur |
…e (< 2 modele, bande a 2 au replay) (#15924) Dissipation des 2 points CONCERNS Hermes (review 2026-09-12T06:34:59Z sur #15711) : le schema enoncait un seuil 3 que le code ne materialise pas (rejet exact a < 2), et le commentaire GROW pretendait la non-interaction a >= 2, contredisant la mesure de la tranche (naissances croisees a distance 2). Choix retenu : corriger les formulations (option b de la review) plutot que d'elever le seuil code — la bande a exactement 2 est delibrement deleguee au replay de certification, c'est le contrat que test_reutilisation_stricte_impossible_borne verifie (replay_rejected >= 1) et que la table d'ablations a mesure. Nouveau test punissant le contrat : distance 1 rejetee par le modele, distance exactement 2 admise a l'elagage. Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Sujet
Dissipation des 2 points CONCERNS de la review Hermes du 2026-09-12T06:34:59Z sur #15711 (follow-up #15742) : un écart doc-vs-code et un commentaire contredisant la mesure de la tranche elle-même.
Les deux CONCERNS, et le choix opéré
Point 1 — seuil R3 doc vs code.
docs/lean/life-components-schema.md§Fenêtres spatiales énonçait : « un objet vivant passe à moins de 3 (Chebyshev) des cellules d'une fenêtre étrangère → rejetés » et « Le seuil 3 n'est pas un réglage, c'est la mesure ». Le code n'implémente pas ce seuil : pré-filtre par enveloppes gonflées (GROW=1) qui fait entrer les paires à Chebyshev ≤ 2 dans le contrôle exact, lequel rejette à_min_chebyshev(...) < 2— une scène à distance exactement 2 passe le modèle et ne doit son rejet qu'au replay de certification.Point 2 — commentaire GROW.
life_compose.py: « deux groupes de cellules à distance de Chebyshev >= 2 ne se voient pas » — contredit la leçon mesurée de la tranche (test_chebyshev_2_engendre_des_naissances_croisees: naissances croisées à distance 2) et le schéma lui-même (« ≥ 3 : jamais ; à distance 2, tout dépend du contenu »).Choix : option (b) de la review — corriger les formulations, pas élever le seuil code à < 3. Raisons :
test_reutilisation_stricte_impossible_bornevérifie end-to-end (replay_rejected >= 1asserté — les candidats distance-2 passent l'élagage et meurent au replay). Élever le seuil retirerait au filet sa classe d'échec-modèle témoin.Diff (3 fichiers, +68/−9, zéro changement de comportement)
scripts/lean/life_compose.py: commentaireGROWréécrit (énonce les 3 bandes et le rôle exact du gonfllement d'enveloppe — corrigé aussi le typo « Chebysyshev ») ; commentaire inline du contrôle exact réécrit (l'ancien parenthétique « non-interaction réelle que les rectangles se touchent » était à la fois faux physiquement et obscur). Aucune ligne exécutable touchée.docs/lean/life-components-schema.md: §Fenêtres spatiales réécrit — « moins de 2 → rejetés », la bande à exactement 2 passe l'élagage et le replay tranche (c'est lui qui produitreplay_rejected ≥ 1), « le seuil du modèle est 2, le seuil 3 est la mesure physique de la non-interaction universelle, pas le seuil d'élagage » ; leçon mesurée n°1 : la phrase finale « Le seuil 3 de R3 est cette mesure » (qui collait la mesure physique sur le seuil d'élagage) remplace l'énoncé des deux seuils.scripts/lean/tests/test_life_compose.py: nouveautest_elagage_r3_bande_chebyshev_2_passe_le_modele— punition du contrat désormais écrit : un bloc à Chebyshev exactement 1 de la fenêtre E0 est rejeté par le modèle ; à exactement 2 il passe_spatial_ok(le replay décidera). Les ancres sont calculées depuis la fenêtre réelle (reaction_window_cells), hors zones de clearance, via_motif_phases("block").Validation
python -m pytest scripts/lean/tests/test_life_compose.py -q→ 26 passed en 246,23 s (baseline reproduite).life_compose.pymodifiée (commentaires seuls) — la stabilité des 26 tests initiaux est le contrôle négatif du « zéro changement de comportement ».Résiduel
Re-revue Hermes attendue sur ce follow-up (action 1 de #15742) ; clôture de l'issue après feu vert — d'où
See #15742et nonCloses.Grain: MED/tooling — lane myia-po-2023:CoursIA — prev: MED/docs #15921
🤖 Generated with Claude Code