Repository navigation
fix(ict,#16691): collision numéro 40 résolue en palier 40a/40b — TriangulationCausale entre au README - #16717
Conversation
…ngulationCausale au README
Option 3 de l'issue (suffixe de palier, convention ICT-15c/15d/22b) :
TriangulationCausale = 40a (precedence 10:32Z vs 13:21Z), AnalogCognitionWaves
= 40b. Argument pedagogique : les deux sont des notebooks d'instrument au meme
palier de lecture (lentilles / substrat) — le palier partage preserve l'ordre
de lecture sans renumerotation eloignante.
git mv x2 + cellule titre markdown mise a jour (remplacement binaire, 1 ligne
par notebook). Chaines de provenance dans les cellules code (JSON
{"notebook": "ICT-40-..."}) et metadata papermill laissees byte-identiques :
auto-coherentes avec leurs outputs committes (provenance historique).
README : ligne ICT-40a ajoutee (defaut additif : le notebook etait absent de
l'index), ligne 40b renommee, 2 captions de figures. MANIFEST : 2 citations.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Golden-Set Execution (H.7 P3)✅ 8/8 notebooks passed (certified reproducible)
Pinned lockfile: |
|
Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit |
|
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 #16717 (
|
myia-ai-01
left a comment
There was a problem hiding this comment.
Lecture B.0 personnelle (ai-01) — les trois surfaces énumérées. Aucun nit user dans comments[], aucune review (donc aucun verdict Hermes en préfixe de body), aucun thread inline non résolu (GraphQL reviewThreads → 0). check_unaddressed_nits.py 16717 → rc=0.
Diff lu firsthand (3 points, fc8da0912e...9184b46524) :
| Vérification | Mesure |
|---|---|
| Portée réelle = titre annoncé | 8 insertions / 7 délétions sur 4 fichiers, 2 renames à similarité 99 % |
| Aucune cellule code ni output touchés | le diff *.ipynb entier = 2 lignes, toutes deux des titres markdown (# ICT-40 — → # ICT-40a/b —). C.2 intact |
| TriangulationCausale entre effectivement au README | ligne ajoutée (le notebook était absent sous toute graphie — vérifié : git grep TriangulationCausale -- '*.md' sur origin/main rendait 0 hit) |
Plus de ICT-40- vivant |
git grep 'ICT-40-' <head> -- '*.md' → 0 hit |
| Catalogue byte-identique | aucun COURSE_CATALOG* dans les fichiers touchés — la règle catalog-pr-hygiene est respectée |
| Argument pédagogique écrit | exigé par notebook-accretion-numbering, présent : même étage « outillage/lentilles », palier partagé qui préserve l'ordre de lecture, précédence horodatée donnant 40a/40b, convention déjà établie dans la série (ICT-15c/15d, ICT-22b) |
Path-collision : faible, sur le seul README.md, avec #15942 — la PR longue de régénération automatique du catalogue. Attendu et bénin.
La préservation byte-identique des chaînes de provenance interne (JSON de cellules code, metadata.papermill.*_path) est le bon choix : les réécrire falsifierait l'identité du run ou imposerait une ré-exécution GPU pour un changement de libellé.
Ce correctif ferme le défaut que ma propre vérification adverse de #16233 venait de re-mesurer sur origin/main : 74 notebooks sur disque, deux ICT-40-* en collision, et TriangulationCausale référencé nulle part. APPROVED.
Le renommage main 7098f01 (#16691/#16717) laissait test_ict_jlens_layers.py pointant l'ancien nom ICT-40-TriangulationCausale ; le garde s'auto-skippait (notebook absent) = silencieusement inerte. Path corrige vers ICT-40a -- 9/9 verts au head rebase. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Le renommage main 7098f01 (#16691/#16717) laissait test_ict_jlens_layers.py pointant l'ancien nom ICT-40-TriangulationCausale ; le garde s'auto-skippait (notebook absent) = silencieusement inerte. Path corrige vers ICT-40a -- 9/9 verts au head rebase. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…s3 canonique, ICT-37 ré-exécuté (#16675) * feat(iit,#16225): RRXOR conforme litterature (MSP 36) + Mess3 canonique par defaut, ICT-37 re-execute - bench_factorise.RRXOR reecrit : machine Mealy 5 etats (Riechers & Crutchfield 2018, arXiv:1706.00883 Fig. 4), triplets (r1, r2, r1 XOR r2) -- l'ancienne version modelisait le XOR de bits iid (processus iid, sans structure) - mixed_state.build_msp : conventions Moore ET Mealy (edge_tensor), elagage des aretes de probabilite nulle, alphabet stocke, n_distinct_total - msp_rrxor : union fermee a 36 croyances (31 transitoires + 5 recurrentes) -- valeur exacte de la litterature p. 17 Fig. 7 - Alias Mess3 = Mess3Canonical : un seul generateur par defaut, alphabet discret non revelateur ; ObsCoupled garde en comparateur explicite - Tests : 36 verifie, dissociation "croyances distinctes, meme next-token" (36 croyances -> 11 predictions), bruteforce generique, non-Dirac canonique - ICT-37 : generateurs importes (plus d'inline), attribution corrigee (singh 1994 -> Marzen & Crutchfield 2017), demo MSP, verdicts recalcules : Ex.2 0.908/R2 0.886 (plus de 1.000 tautologique), Ex.3 dissociation 0.335 (avant 0.008 impute a tort au bruit), next-token a son plafond mesure 0.667 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> * fix(iit,#16225): integration batterie + ICT-40 -- generateurs legacy explicites Le rebase sur main expose deux consommateurs calibres sur les generateurs legacy (arrives via #16230) : test_intervention_battery (bras SAE selectivite 2/16 seeds avec le RRXOR conforme -- le dictionary se melange au flux binaire desormais structure) et ICT-40 (Mess3().means/.std n'existe pas sur le canonique). Correctif miroir du traitement Mess3_ObsCoupled : - bench_factorise : ancien banc reintegre sous RRXOR_Iid (DEPRECIE, conserve pour reproductibilite batterie #15480/#16230 et ICT-40) - test_intervention_battery : epingle a FactoredBench(Mess3_ObsCoupled(), RRXOR_Iid()) = banc de calibration verbatim, 12/12 verts, aucun seuil recalcule - ICT-40 : cellules 2/4 epinglees aux memes noms + note provenance cellule 3, re-execute integralement (16/16 cellules, 0 erreur ; verdicts et p-values identiques aux outputs committes -- vloss par seed egaux a 3 decimales ; seule derive : wall-times et floats a la 3e-18e decimale, torch 2.13.0->2.14.0) Artefact mesure et consigne (grain separe, porteur batterie) : la selectivite SAE SUPPORTED de la batterie sur banc legacy depend du facteur B structureless. Suite ICT complete : 929 passed. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> * fix(iit,#16225): re-arme le garde J-Lens post-palier 40a/40b Le renommage main 7098f01 (#16691/#16717) laissait test_ict_jlens_layers.py pointant l'ancien nom ICT-40-TriangulationCausale ; le garde s'auto-skippait (notebook absent) = silencieusement inerte. Path corrige vers ICT-40a -- 9/9 verts au head rebase. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> * fix(iit,#16225): re-execution des deux notebooks du delta au head courant Le commit 5283902 a modifie la source de deux cellules de code d'ICT-40a (cellules 3 et 5) apres la trace papermill embarquee (2026-09-18T12:52:19Z). La preuve d'execution portee par le corps de la PR ne decrivait donc plus la tete : le report « par identite de blob » qui l'avait transferee jusqu'a c3ba746 est tombe le meme jour (C.2). Re-execution des deux notebooks du delta par l'outil canonique (scripts/notebook_tools/notebook_tools.py execute), dans le worktree de la PR : - ICT-40a : 16/16 cellules code, execution_count 1..16 sans trou, 0 cellule sans sortie, 0 sortie d'erreur, trace 2026-09-21T15:01:08Z, exception null. - ICT-37 : 9/9 cellules code, execution_count 1..9, memes conditions, trace 2026-09-21T15:01:58Z, exception null. Verdicts idempotents : 0/16 cellule dont un jeton de verdict a change (H1/H2/H3 INCONCLUSIVE, H4 et separation_geometrique NOT_SUPPORTED ; p_signflip, p Holm, ci95 inchanges a la precision rapportee). La derive residuelle est un flottant de 3e-4e decimale, signature d'un ordre de reduction BLAS non epingle. Les durees murales imprimees par ICT-40a refletent la charge de la machine (15 runners CI restaures le meme jour sur ce parc, load average ~9-11 pour 16 CPU), pas une propriete du notebook : le premier run a ete refait seul pour ne pas committer un chiffre gonfle par un second notebook en vol, et les deux valeurs sont conservees ci-dessus pour que l'ecart reste lisible. Les chemins de metadata.papermill sont ramenes au basename par le hook scrub-papermill-paths (metadata seule, source et sorties intactes). See #16225 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Grain: MED/content-org -- lane myia-po-2023:CoursIA -- prev: #16713
Summary
Résolution de la collision ICT-40 + entrée de
TriangulationCausaleau README (le seul des deux défauts purement additif, indépendant de la collision).Option retenue : 3 — suffixe de palier
ICT-40a/ICT-40bArgument pédagogique écrit (exigé par
notebook-accretion-numbering) : les deux notebooks sont des instruments au même palier de lecture — TriangulationCausale triangule trois lentilles (SAE × J-Lens × F-Lens) sur un banc à vérité connue, AnalogCognitionWaves distille un substrat physique de calcul (ondes/gating éphaptique) ; l'un et l'autre relèvent du même étage « outillage/lentilles » de la série. Un palier partagé préserve l'ordre de lecture (aucun des deux n'est déplacé dans la progression) là où une renumérotation éloignerait l'un d'eux d'un voisin thématique. La précédence donne le suffixe :TriangulationCausale= 40a (commit 10:32:08Z, #15480),AnalogCognitionWaves= 40b (13:21:25Z, #16617). Convention déjà établie dans la série :ICT-15c/ICT-15d,ICT-22b.Changements (chirurgical : 8 insertions / 7 délétions, 4 fichiers)
ICT-40-TriangulationCausale.ipynb→ICT-40a-…git mv+ cellule titre markdown# ICT-40 —→# ICT-40a —(remplacement binaire, 1 ligne, similarité git 99 %)ICT-40-AnalogCognitionWaves.ipynb→ICT-40b-…git mv+ titre# ICT-40 —→# ICT-40b —(idem)README.mdICT-40a-TriangulationCausaleAJOUTÉE (le notebook était absent de l'index sous toute graphie — résumé rédigé depuis son contenu réel : banc factorisé Mess3 × RRXOR, F-Lens R² par couche, SAE AUC + z-score 200 relabelisations, J-Lens dose fixée, interventions latentes H1/H3, verdict accord/dissociation) ; ligne 40b renommée ; 2 captions de figures mises à jourassets/readme/MANIFEST.mdCe qui est délibérément préservé byte-identique
Les chaînes de provenance interne du notebook 40a (JSON
"notebook": "ICT-40-TriangulationCausale", "issue": 15480dans des cellules code, etmetadata.papermill.*_path) : elles enregistrent l'identité du run au moment de l'exécution et sont auto-cohérentes avec leurs outputs committés — les modifier reviendrait soit à falsifier la provenance du run, soit à exiger une ré-exécution complète (GPU/models) pour un changement de libellé. Même logique que la provenance papermill (secrets-hygiene règle 6, normalisation tolérée non requise).Validation
ICT-40-vivant dans les.mdde la série (grep→ 0 hors provenance interne notebooks).grep -r ICT-40limité aux 4 fichiers traités — vérifié avant édition).execution_countdes 2 notebooks intacts (titres = markdown-only, exception C.2).Hors scope (signalé, non traité — explicitement hors condition de fermeture)
Le garde amont suggéré par l'issue (unicité des numéros de série, piège des PNG compagnons à éviter en ne comptant que les
.ipynb) : à évaluer en grain séparé.Closes #16691 (collision résolue avec argument écrit + TriangulationCausale indexé)
🤖 Generated with Claude Code