Skip to content

fix(ict,#16691): collision numéro 40 résolue en palier 40a/40b — TriangulationCausale entre au README - #16717

Merged
myia-ai-01 merged 1 commit into
mainfrom
fix/16691-ict40-palier-suffix
Sep 18, 2026
Merged

myia-ai-01 merged 1 commit into
mainfrom
fix/16691-ict40-palier-suffix

Conversation

@jsboige

@jsboige jsboige commented Sep 18, 2026

Copy link
Copy Markdown
Owner

Grain: MED/content-org -- lane myia-po-2023:CoursIA -- prev: #16713

Summary

Résolution de la collision ICT-40 + entrée de TriangulationCausale au README (le seul des deux défauts purement additif, indépendant de la collision).

Option retenue : 3 — suffixe de palier ICT-40a / ICT-40b

Argument 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)

Fichier Changement
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.md Ligne ICT-40a-TriangulationCausale AJOUTÉ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 à jour
assets/readme/MANIFEST.md 2 citations de provenance de figures renommées

Ce 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": 15480 dans des cellules code, et metadata.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

  • Plus aucun ICT-40- vivant dans les .md de la série (grep → 0 hors provenance interne notebooks).
  • Aucune autre référence repo-wide (grep -r ICT-40 limité aux 4 fichiers traités — vérifié avant édition).
  • Cellules code, outputs et execution_count des 2 notebooks intacts (titres = markdown-only, exception C.2).
  • Catalogue byte-identique (règle : régénération par le cron).

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

…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>
@github-actions

Copy link
Copy Markdown
Contributor

Golden-Set Execution (H.7 P3)

✅ 8/8 notebooks passed (certified reproducible)

Notebook Status Time
2.1-Workflow-ML.ipynb ✅ SUCCESS 3.1s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 2.9s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 3.8s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 4.1s
Search-01-StateSpace.ipynb ✅ SUCCESS 3.0s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 2.0s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 16.1s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 2.8s

Pinned lockfile: scripts/notebook_tools/golden_set.lock.txt (H.7 P3, axe A #4208)

@github-actions

Copy link
Copy Markdown
Contributor

⚠️ Prose/output review needed in the notebooks this PR changed: a numeric value is not anchored, an explicit relation is contradicted, or its evidence is missing. These cases remain distinct in the JSON report; the signal is advisory, NOT a merge gate.

Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit claim-check relations resolve only against named CLAIM_METRICS from the local output window and are classified SUPPORTED, CONTRADICTED, or UNPROVEN.
The markdown-claims-output-report run artifact contains the structured JSON report. See python scripts/check_markdown_claims_output.py --help for re-running locally.
Detector rationale: c.290 / c.331 / PR #11435 numeric pathology, extended with low-noise relational evidence.

@github-actions github-actions Bot added variation-tag-genre-offlist GENRE hors de l'enumeration variation-protocol §1 variation-tag-prev-absent Tag Grain sans 'prev: <TIER>/<GENRE> #<PR>' (adjacence G-VAR-3 inevaluable) labels Sep 18, 2026
@github-actions

Copy link
Copy Markdown
Contributor

G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
La lane `myia-po-2023:CoursIA` voit ces signaux actifs sur les mergees du jour (UTC 2026-09-18) :

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 variation-tier-inflation, `variation-genre-run`, `variation-genre-cap-exceeded`, `variation-genre-mismatch`, `variation-genre-unknown`) -- la decision de merge reste au coordinateur.

@github-actions

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #16717 (fix(ict,#16691): collision numéro 40 résolue en palier 40a/40b — TriangulationCausale entre au README) touche au moins un chemin de fichier aussi modifie par d'autres PRs ouvertes. Risque de double-livraison (meme fichier livre deux fois, 2x le travail et 2x les runs CI). Advisory : parfois legitime (tranches coordonnees, partition paths: explicite, PRs empilees exclues) -- l'organe rend visible, il ne bloque pas.

@myia-ai-01 myia-ai-01 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@myia-ai-01
myia-ai-01 merged commit 7098f01 into main Sep 18, 2026
84 of 85 checks passed
jsboige added a commit that referenced this pull request Sep 18, 2026
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>
jsboige added a commit that referenced this pull request Sep 21, 2026
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>
myia-ai-01 pushed a commit that referenced this pull request Sep 22, 2026
…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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

variation-tag-genre-offlist GENRE hors de l'enumeration variation-protocol §1 variation-tag-prev-absent Tag Grain sans 'prev: <TIER>/<GENRE> #<PR>' (adjacence G-VAR-3 inevaluable)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ICT: deux notebooks portent le numéro 40, et ICT-40-TriangulationCausale est absent du README

2 participants