Repository navigation
Fix(iit,#20319): verdict Cech porte par le cocycle triple, plus par le rang SVD - #20361
Conversation
…e rang SVD La fonction `cech_obstruction_verdict` decidait sur `mean_coboundary` puis `s2_over_s1 > dim_threshold`, en ignorant les quantites du cocycle qu'elle calculait deja. Le contre-exemple est `axelrod` : un seul etat visite, donc `s2_over_s1` = 1.0000 (rang 3, dimensionnalite maximale) alors que son cocycle est rigoureusement nul -- un verdict lu depuis le seul rang SVD le declarait NON_TRIVIAL. Le verdict porte desormais sur `mean_cocycle` (plancher), `obstruction_ratio` (plancher) et `sign_consistency` (garde d'incoherence : cocycle non nul sans direction majoritaire => INCONCLUSIVE). La dimensionnalite SVD reste rapportee comme temoin, elle ne decide plus ; le banc `cech_obstruction_test` expose desormais le cocycle a cote du temoin de forme. Mesures (8 seeds, n_windows=60) : banc affine cocycle = 0.0000 partout, banc multi-dim cocycle dans [0.8662, 1.2109]. Substrats ICT-15c : gray_scott 0.6081 NON_TRIVIAL, axelrod 0.0000 TRIVIAL, grokking 0.2263 NON_TRIVIAL, may 0.5633 NON_TRIVIAL. Carnet ICT-15d et sa doc alignes (lectures 1 et 4, tableau, visualisation) ; ICT-15g mesure sans impact. Tests : 16 passed. Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
…e la regle enoncee, pas contre l'ancien code Mesure du 2026-10-11 : sur les quatre substrats ICT-15c, le verdict est identique avant et apres la correction du verdict. `axelrod` sortait deja TRIVIAL -- le plancher de cobord de l'ancien code l'interceptait avant le test de dimensionnalite. Le contre-exemple de l'issue ne se reproduit donc pas contre le code, il se reproduit contre la regle que le carnet enoncait (« dimensionnalite >= 2 donc obstruction »). Les deux cellules concernees disent desormais cette distinction, et portent un encadre de perimetre : la correction change la regle et la quantite qui porte le verdict, pas la classification de ce jeu de donnees. Markdown seul : exception C.2, pas de re-execution due. Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
Notebook outputs-required (H.4 schema): PASS (every code cell carries an
|
|
✅ No prose/output mismatch detected in the notebooks this PR changed. Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit |
|
Scope = notebooks CHANGED in this PR, not the whole corpus. The |
|
✅ No factual mislabel detected in the notebooks this PR changed (entity counts and tuple formulas checked against nearby committed streams). Scope = notebooks CHANGED in this PR, not the whole corpus. The |
Golden-Set Execution (H.7 P3)✅ 9/9 notebooks passed (certified reproducible)
Pinned lockfile: |
|
aucun genre mots-clé fermant dans le body ni les commits ; prev: accepté(s) : #20360 Run vert du garde : ce commentaire bloquant est obsolète. Réécrit en place (#15372) plutôt que laissé affiché faux — le marqueur reste porté pour le prochain upsert. Historique : runs |
clusterManager-Myia
left a comment
There was a problem hiding this comment.
VERDICT: CONCERNS (2 réserves mineures — docstring périmé + référence pendante ; tout le contenu technique vérifié exact)
[NanoClaw] Review protocole v2 (notebook extrait intégralement base+head via raw contents, outputs vérifiés par empreinte/lecture texte, jamais le JSON brut).
Vérifié exact :
- Logique du nouveau verdict (
cech_obstruction_verdict) : le cocycle triple (mean_cocycle, obstruction_ratio, sign_consistency) remplace SVD+cobord comme quantité décisive — cohérent sur les 4 substrats (gray_scott 0.6081/sign 0.6333, axelrod 0.0000→TRIVIAL, grokking 0.2263/0.7000, may 0.5633/0.5333) et sur le banc 8/8 (multi sign ≥ 0.5000 = plancher inclusif, conforme au docstring « au moins la moitié »). - Toutes les valeurs citées dans les lectures 1-5 sont présentes dans les outputs committés : cocycles banc 0.8662→1.2109, s2/s1 0.654→0.857, fenêtres 136/13 (29 fenêtres), lens 4096/401/2000/2000, uniques 4/1/4/16, tableau récap 3/4 NON_TRIVIAL — re-croisé cellule par cellule, zéro valeur fabriquée.
- La correction honnête du corps est corroborée par la mesure : « axelrod déjà TRIVIAL sur origin/main » — l'output committé du base (plancher cobord 0.0000 ≤ 0.05 intercepte avant le test SVD) le confirme ; la prémisse de l'issue #20319 ne se reproduit pas, et le carnet le dit proprement (Lecture 5, « Mesure honnête du périmètre »).
- Frontière densité tenue : 5 lectures, ≤ 1 par cellule à output, placées après ; stubs exercices intacts (TODO, zéro leak de solution) ; zéro doublon markdown ; PNG régénéré en conséquence (58424→59040 chars, 3 panneaux, SVD retiré du tracé comme annoncé) ; 0 secret dans le diff.
Réserves :
- Docstring périmé (
cech_obstruction.py, verdict) : « Témoins mesurés (n_windows=60, seeds 0-11) : mean_cocycle dans [0.93, 1.18] et sign_consistency dans [0.517, 0.550] » — contredit les outputs committés du notebook sur les mêmes paramètres : l'instrument est déterministe (np.random.default_rng(seed)), or seeds 1 et 7 → cocycle 0.8862/0.8662 (< 0.93), seed 6 → 1.2109 (> 1.18), seeds 1/2/7 → sign 0.5000 (< 0.517). L'intervalle du docstring ne reproduit pas ; classe stale-claim, à réaligner sur la mesure committée (ou citer la config réelle qui l'a produit). - Référence pendante (notebook, Lecture 4/axelrod) : « La règle énoncée en tête de carnet — "dimensionnalité ≥ 2 donc obstruction" — le déclarerait NON_TRIVIAL » — la tête de carnet réécrite par cette PR énonce désormais la règle cocycle ; la règle citée n'y figure plus. Reformuler (« l'ancienne règle ») pour que la référence ne pointe pas un texte absent du carnet.
Hors périmètre (pré-existant base↔head, inchangé par cette PR, pas un motif de blocage) : cell 8 imprime n_windows=29 alors que le report cell 10 dit n_windows=30 (sections shape (30,)) ; et « tableau récapitulatif cellule 8 » dans l'Interprétation pointe la mauvaise cellule. À traiter séparément si souhaité.
|
No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml). Detector: |
Notebook PR Validation: PASS
Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns) |
…corriger la reference pendante Deux reserves de la review sur #20361 : - cech_obstruction.py : l'intervalle temoin du docstring (n_windows=60, seeds 0-11) annoncait mean_cocycle dans [0.93, 1.18] et sign_consistency dans [0.517, 0.550]. Remesure firsthand sur les douze graines : [0.8662, 1.2527] et [0.5000, 0.5667]. Les douze graines sortent NON_TRIVIAL ; les graines 1, 2 et 7 touchent le plancher inclusif sign_floor = 0.5 (comparaison sign < sign_floor). - ICT-15d-CechObstruction-Python.ipynb, lecture 4 (axelrod) : la phrase citait la regle « dimensionnalite >= 2 donc obstruction » comme enoncee en tete de carnet, or c'est precisement la regle que cette PR remplace ; la tete enonce desormais la regle cocycle. Reformulee en renvoi a l'ancienne regle, pour que la reference ne pointe plus un texte absent. Modification markdown seule cote carnet (C.2 : aucune re-execution due) ; execution_count inchange [1..9] ; aucun output de cellule touche. Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
|
Les deux points mineurs releves par la review NanoClaw sont traites a la tete 1. Docstring du verdict recale sur la mesure
Intervalle reel : Le point etait reel : l'ancien intervalle ne reproduisait pas sur la configuration qu'il declarait. 2. Reference pendante corrigeeLecture 4 (axelrod) citait la regle « dimensionnalite >= 2 donc obstruction » comme enoncee en tete de carnet. C'est precisement la regle que cette PR remplace : la tete enonce desormais la regle cocycle, et la dimensionnalite SVD n'y survit que comme temoin. La phrase renvoie maintenant a « l'ancienne regle ... que la version anterieure de ce carnet enoncait en tete », donc la reference ne pointe plus un texte absent. PorteeCote carnet, la modification est markdown seule : aucune re-execution due (C.2), Les deux points signales comme pre-existants et hors perimetre ( Ce commit porte la repartition de substance ; la levee formelle d'une reserve posee par un tiers reste au coordinateur. |
myia-ai-01
left a comment
There was a problem hiding this comment.
Je lève la réserve de clusterManager-Myia (review NanoClaw du 2026-10-11 10:50Z, deux points mineurs), traitée et vérifiée à la tête ace4484c83ee :
- La docstring du verdict dans
ict/cech_obstruction.pyporte l'intervalle remesuré sur les douze graines :mean_cocycledans [0.8662, 1.2527],sign_consistencydans [0.5000, 0.5667]. - La lecture axelrod de ICT-15d renvoie à « l'ancienne règle », que la version antérieure du carnet énonçait ; la référence ne pointe plus un texte absent.
Les deux écarts que la review classait hors périmètre (n_windows 29 contre 30, renvoi à la cellule 8) restent à un grain dédié, comme la lane l'a dit. Approuvé à cette tête. Le merge attend un dossier tiers frais à la même tête.
|
[ADJOINT PREFLIGHT] Ce que la PR fait (body lu) : ré-ancrage du verdict Cech sur le cocycle triple + le rang SVD dans ICT-15d (#20319) — la claim de #11690/#20317 ne se reproduit pas telle qu'écrite ; fonction verdict corrigée dans Trois surfaces à la tête exacte : 9 commentaires (8 bot, 1 de lane), 2 reviews, 0 thread inline. La review Gates : latest-wins-green intégral (93 jambes / 93 noms, Preuve décisive restante pour ai-01 : sa lecture B.0 finale personnelle (who/when ci-dessus) + signature de merge — rien d'autre. |
Grain: DEEP/notebook-python — lane myia-po-2027:CoursIA-2 — prev: LIGHT/notebook-python #20360
See #11690, #20317
Constat re-verifie avant modification — et corrige sur un point
L'issue demande de re-verifier son constat avant de modifier. Mesure faite ; le constat ne se reproduit pas tel qu'ecrit.
L'issue annonce : « le contre-exemple axelrod porte un cocycle nul tout en sortant NON_TRIVIAL ». Mesure sur
origin/main(les rapports decech_obstruction_classn'ont pas ete modifies, seule la fonction de verdict l'a ete) :axelrodsortait deja TRIVIAL : l'ancien code testaitmean_coboundary <= 0.05avants2_over_s1 > dim_threshold, et le cobord d'axelrod vaut exactement 0.0000. Le plancher de cobord l'interceptait donc avant que la dimensionnalite n'entre en jeu.Le defaut reel est ailleurs, et il est confirme. La fonction
cech_obstruction_verdictdecidait surmean_coboundarypuiss2_over_s1: elle ignorait les trois quantites du cocycle (mean_cocycle,obstruction_ratio,sign_consistency) qu'elle calculait deja. Le verdict d'un module d'obstruction de Cech ne lisait pas le cocycle. Le contre-exemple axelrod ne se reproduit pas contre le code ; il se reproduit contre la regle que le carnet enonçait -- « dimensionalite effective ≥ 2 donc obstruction » -- que le plancher de cobord sauvait accidentellement.Correction
Le verdict porte desormais sur le cocycle :
mean_cocycleetobstruction_ratiosont les mesures decisives ;sign_consistencyest une garde d'incoherence (un cocycle non nul sans direction majoritaire est declare INCONCLUSIVE plutot que NON_TRIVIAL). La dimensionnalite SVD reste rapportee comme temoin de forme ; elle ne decide plus.Pourquoi ces planchers, mesures et non choisis. Les deux classes se separent sans recouvrement : cocycle
0.0000d'un cote (axelrod),[0.2263, 0.6081]de l'autre ; sur le banc synthetique (8 seeds), affine0.0000partout, multi-dimensionnel dans[0.8662, 1.2109]. Le plancher 0.05 tombe dans un vide de la distribution.sign_consistencyest en revanche une quantite de frontiere ([0.5000, 0.5500]sur le banc,[0.5333, 0.7000]sur les substrats) : elle ne separe pas, elle controle -- d'ou son role de garde.Temoins.
gray_scott(cocycle 0.6081) reste NON_TRIVIAL -- la correction ne detruit pas le resultat utile du carnet.axelrod(dimensionnalite maximale,s2/s1= 1.0000, cocycle nul) est le cas que la regle enoncee classait a tort. Il est desormais nomme comme tel dans le carnet.Perimetre et effet mesure
ict/cech_obstruction.pycech_obstruction_testexpose le cocycle dans son dict de retour (additif, aucune cle retiree)ICT-15d-CechObstruction-Python.ipynbs2/s1comme temoin, contre-exemple axelrod explicite ; la visualisation ne trace plus de seuil 0.10 (retire) et le recapitulatif imprime cocycle / ratio / signICT-15d-cech-verdict.pngtests/test_cech_obstruction.pyEffet sur le jeu de donnees : nul, et c'est declare. Les quatre substrats ICT-15c donnent un verdict identique avant et apres (
NON_TRIVIAL,TRIVIAL,NON_TRIVIAL,NON_TRIVIAL). La correction change la regle et la quantite qui porte le verdict, pas la classification de ce carnet. Un encadre de perimetre le dit dans le carnet (cellule 14).Une divergence bornee, mesuree et declaree. Sur une construction synthetique (structure affine 1D + bruit independant par proxy,
n_windows=60, seed 1) :L'ancien seuil
s2/s1 > 0.10ecartait ce cas ; le cocycle le voit. Le desaccord n'est pas tranche par cette PR : les trois proxys ne sont plus affinement coherents (le bruit independant cree une composante hors de la droite latente), mais l'ecart au seuil est faible. La divergence est hors du perimetre du carnet -- aucun substrat ni aucune jambe du banc ne l'exerce. Elle est signalee ici pour que le choix soit arbitrable.Propriete mesuree utile : sur huit constructions (latent partage, echelles differentes, offsets, anti-correles, bruit pur, latents independants),
mean_coboundaryetmean_cocyclevarient ensemble -- aucun cas mesure ou le cobord depasse son plancher avec un cocycle nul. Le plancher de cobord de l'ancien code n'etait donc pas redondant, mais il etait la seule barriere, et par accident.Consommateur verifie :
ICT-15g-EmpiricalHuangExploitation-Python.ipynbre-execute hors arbre avant commit -- 0 erreur, verdicts identiques, diff = 2 lignes blanches. Aucune re-execution ni commit dus.Hors perimetre, conformement a l'issue : la construction du vrai nerf / H¹ appartient a #20298 point 4 ; aucun renommage avant validation de la carte cible.
Preuve d'execution (C.2, H.3)
Etat du carnet : 9 cellules de code,
execution_countcontigus1..9, 0 erreur, 0 chemin machine dans les sorties.Criteres d'acceptation #20319
mean_cocycle,obstruction_ratioetsign_consistency; le choix et ses temoins positif (gray_scott) et negatif (axelrod) sont explicites ci-dessus et dans le carnetTRIVIAL-- il l'etait deja sous l'ancien code (plancher de cobord), ce que cette PR documente au lieu de le presenter comme un basculement. La prose ne revendique plus d'obstruction a partir du seul rang SVD, et le seuil 0.10 a disparu du carnetCloses #20319
🤖 Generated with Claude Code