Skip to content

feat(ict,#19343): T3 Dehaene F2 -- test direct A/B/C (store etendu requis, delta +0.289 vs 2*sigma_B 0.073) - #19997

Merged
myia-ai-01 merged 6 commits into
mainfrom
feature/19343-dehaene-f2-dissociation
Oct 10, 2026
Merged

myia-ai-01 merged 6 commits into
mainfrom
feature/19343-dehaene-f2-dissociation

Conversation

@jsboige

@jsboige jsboige commented Oct 8, 2026 •

Copy link
Copy Markdown
Owner

Grain: DEEP/notebook-python — lane myia-po-2026:CoursIA-2 — prev: MED/guard #19995

See #19343 (volet direct ; le volet proxy de la même issue est livré par #19345).

Ce que cette PR livre

Le proxy de #19345 mesurait une discrimination inter-catégories (code vs prose) sur traces ICT-21, en repli explicite du test direct — sa docstring le dit : « pose la méthodologie et un proxy mesurable localement ». La question de l'issue reste donc intacte : le self-model survit-il au vidage du store étendu ? Cette PR porte le test direct, sur substrat synthétique numpy-only.

Substrat et protocole (pré-enregistré)

  • Deux agents appariés : le spectre de A est partagé par la paire (mêmes valeurs propres ⇒ même horizon de mémoire), seule la base propre diffère. C'est la condition de « capacité égale » de l'issue ; sans elle, l'écart mesuré signalerait la mémoire de l'un des deux agents.
  • Store étendu : les cinq variables de l'issue (workspace_state, ignition_flag, report_counter, attention_index, basin_width), chacune dérivée de la dynamique propre de l'agent (donc self-specific), réinjectée dans la dynamique par le couplage G. Son seuil d'ignition est relatif à la concentration courante — un seuil absolu rendait la trajectoire multimodale (R² de test négatif, mesuré).
  • Self-model : un prédicteur ridge à un pas par agent, entraîné sur sa propre trajectoire (burn-in 20 %, train 60 %).
  • Score de reconnaissance symétrique apparié : (erreur croisée − erreur propre) / erreur propre, agrégé par blocs de temps ; chaque côté reçoit les deux prédicteurs, donc la statistique est une différence de différences où les biais de cadre s'annulent. Le témoin nul livré permute globalement les 40 valeurs de blocs poolées ; le test exact apparié (permutation intra-bloc) a été mesuré sur 5000 permutations et rend p uniformément au moins aussi petit sur les 8 paires graine × régime : le témoin livré est donc faiblement conservateur, il ne fabrique aucune signification.
  • Trois régimes : A (store plein), B (store vidé partout — lésion), C (self-model ablaté — contrôle de non-dégénérescence).
  • Falsification pré-enregistrée : |score_A − score_B| < 2·σ(score_B). Graines {0, 1, 7, 42} (fix(ict24,#19222): gate23 graine stable (SETS.index) + dispersion 4 graines + phrase non-'definitif' #19225), n_shuffles = 50 (ICT-24 Gate 23 : renforcer le verdict à n_shuffles >= 50 sur les 4 graines #19335).

Mesure

régime score (4 graines) p
A — store plein +0,384 ± 0,308 < 0,02 à chaque graine
B — store vidé (lésion) +0,095 ± 0,037 < 0,02 à chaque graine
C — self-model ablaté 0,000 ≈ 0,5 (bruit)

delta = +0,289 ≥ 2·σ_B = 0,073 — 4/4 graines dans le sens prédit. Verdict : F2_CONFIRMED_EXTENDED_REQUIRED.

Ce que la PR ne prétend pas

  1. Le régime B reste significatif (p < 0,02) : le self-model persiste hors store, plus faiblement. F2 est donc confirmé dans sa lettre, pas dans sa version forte — le self-model n'est pas seulement une sortie du workspace.
  2. Le verdict tient à la dispersion pré-enregistrée (σ_B). Contre 2·σ_A (0,616), le delta (0,289) ne passerait pas : cette sensibilité est rapportée comme partie du résultat, dans le carnet comme dans la matrice.
  3. Substrat synthétique. La conclusion porte sur ce modèle, pas sur un LLM. Le volet sur traces réelles (case 4, bras self_model_minimal) reste GPU-only — verdict RECOVERABLE-MACHINE (Tell c.8236), non contourné ici : il est nommé, pas remplacé.
  4. Le régime C est un contrôle de dégénérescence, pas un témoin nul empirique : avec des prédicteurs non entraînés, il vaut 0 par construction. Il valide l'absence d'artefact trivial ; il ne mesure pas une distribution nulle — dit tel quel dans le carnet.

Deux faux départs documentés

Le carnet documente les deux protocoles rejetés, tous deux attrapés par le contrôle C : une première version rendait C = −0,99 (confond d'amplitude, normalisation par feature) et une seconde un appariement spectral absent (R² de test négatif). Ils sont dans le carnet, pas cachés — c'est ce qui rend la mesure publiée crédible.

Vérifications (Tell c.18529 — exécution réelle, Voie 1)

  • Carnet exécuté end-to-end au papermill local (python3, cwd du carnet) : execution_count 1→9 séquentiels, 9/9 cellules code avec sorties, 0 erreur. Aucune sortie éditée à la main ; la seule retouche post-exécution est une correction de prose de cellule markdown (11 valeurs alignées sur les sorties réelles), vérifiée comme ne touchant aucune cellule code.
  • python -m pytest ict/tests/test_dehaene_f2_dissociation.py -q → 5 passed (nouveau fichier : appariement spectral, lésion du store, contrôle C nul, règle de verdict, bout en bout).
  • python scripts/notebook_tools/notebook_lint.py <carnet> → 1/1 pass.
  • Hooks pre-commit passés (dont H.3 et le garde de source non-compilable).

Périmètre

Six fichiers (gh pr view --json files) :

  • MyIA.AI.Notebooks/IIT/ICT-Series/ICT-Dissociation-DehaeneF2-SelfReport.ipynb (+914/−0, carnet exécuté) ;
  • MyIA.AI.Notebooks/IIT/ICT-Series/ict/dehaene_f2_dissociation.py (+340/−0 : volet direct ajouté, volet proxy intact) ;
  • MyIA.AI.Notebooks/IIT/ICT-Series/ict/tests/test_dehaene_f2_dissociation.py (+85/−0, nouveau) ;
  • MyIA.AI.Notebooks/IIT/ICT-Series/ict/results/dehaene_f2_abc_results.json (+76/−0, résultats canoniques) ;
  • MyIA.AI.Notebooks/IIT/ICT-Series/ICT-Dissociation-PhatSelfReference.ipynb (+1/−1 : une ligne de navigation Suivant vers le carnet F2, markdown seul) ;
  • docs/ict/dissociations-matrix.md (+2/−0 : une ligne, case F2, test direct).

Aucun workflow. Le seul fichier hors de la série ICT est la matrice de dissociations (docs/ict/).

Changement de navigation (commit cbf296227) — le carnet est un nouveau membre de la famille dissociations de la série, et un carnet inséré sans lien entrant est un orphan_entry : check-notebook-nav-chain rougissait sur la tête précédente. Le carnet précédent (case 2, PhatSelfReference) porte désormais Suivant -> F2, et le carnet F2 porte sa ligne de famille (liens vers case 1 et case 2) — la convention de prose reconnue par le garde. Retouche markdown seule : aucune cellule code touchée, donc pas de ré-exécution (C.2, exception markdown). Vérifié en local : check_notebook_nav_chain --check = 0 NEW finding, check_notebook_navlinks = 0 lien cassé, prose-counts = aucun compteur.

Hors périmètre, déclaré : le carnet n'est pas encore ajouté à la liste de rendu _quarto.yml, donc il n'est pas servi en .html sur le site Pages, et le tableau du README de série ne le liste pas encore. L'y ajouter exige la liste de rendu et un lien README en .html (un lien .ipynb dans un sous-arbre rendu est un STALE_LINK neuf). C'est un geste de publication séparé, suivi hors de cette PR pour ne pas mêler un changement de configuration de build à un test de dissociation.

Critères d'acceptance de #19343

  • Critère 1 — un carnet ré-exécutable mesure score_A, score_B, score_C sur les 4 graines {0, 1, 7, 42}.
  • Critère 2 — la lecture critique porte (a) le delta score_A − score_B, (b) sa dispersion, (c) un verdict tranché (F2_CONFIRMED_EXTENDED_REQUIRED) — sans « mesuré, pas tranché » par défaut, et avec la sensibilité au choix de la dispersion explicitée.
  • Critère 3 — conditionnel à une falsification : F2 est confirmé ici, donc la clause (« citer l'endroit où le self-model persiste ») se lit à l'envers et est honorée : le carnet nomme où la reconnaissance persiste (régime B significatif) et pose la question ouverte que cela laisse, sans ouvrir d'issue fille tant qu'aucun protocole ne l'a tranchée.
  • Critère 4 — git diff --stat additions seules, sur code de production.

🤖 Generated with Claude Code

…quis, delta +0.289 vs 2*sigma_B 0.073)

Grain: DEEP/notebook-python -- lane myia-po-2026:CoursIA-2 -- prev: MED/guard #19995

Le volet proxy de #19343 (#19345) mesurait une discrimination
inter-categories sur traces ICT-21, pas la reconnaissance self-sur-self.
Ce commit porte le volet DIRECT restant : un substrat synthetique
numpy-only ou la question F2 est directement falsifiable.

Substrat : deux agents apparies (spectre de A PARTAGE -- meme horizon de
memoire --, base propre distincte), un store etendu a cinq variables
derive de la dynamique propre de l'agent et reinjecte dans cette
dynamique, un self-model ridge par agent. Score de reconnaissance
SYMETRIQUE APPARIE (erreur croisee - erreur propre, par blocs de temps) :
difference de differences ou les biais de cadre s'annulent.

Mesure (graines {0,1,7,42}, T=8000, n_shuffles=50) :
  score_A = +0.384 +/- 0.308  (store plein)
  score_B = +0.095 +/- 0.037  (store vide -- lesion)
  score_C =  0.000            (self-model ablate -- controle)
  delta   = +0.289 >= 2*sigma_B = 0.073, 4/4 graines A > B
  verdict = F2_CONFIRMED_EXTENDED_REQUIRED

Deux faux departs de protocole sont documentes dans le carnet, tous deux
attrapes par le controle de degenerescence (C) : une premiere version
rendait C = -0.99 (confond d'amplitude) et une seconde un appariement
spectral absent. Nuance non masquee : le regime B reste significatif
(p < 0.02), donc F2 est confirme dans sa lettre, pas dans sa version
forte -- le self-model persiste hors store, plus faiblement.

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

Notebook outputs-required (H.4 schema): PASS (every code cell carries an outputs: list)

@github-actions github-actions Bot added the variation-adjacency-deep-med Adjacence DEEP/MED hors LIGHT : §2 l'autorise si substance distincte (coordinateur) label Oct 8, 2026
@github-actions

github-actions Bot commented Oct 8, 2026 •

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 commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

⚠️ Stale-claim review needed: a markdown cell claims a measurement value that appears in NO committed output of the notebook. Advisory, NOT a merge gate — triage against the JSON artifact.

Scope = notebooks CHANGED in this PR, not the whole corpus. The stale-claim-report run artifact holds the structured JSON.
Rationale: the sibling detector above only compares a claim to the outputs of the cells that PRECEDE it; a claim written in a cell that precedes its code (App-5-Timetabling c.2/c.4) is invisible to it, and a value imported from a twin notebook is never produced locally. See python scripts/check_stale_claims.py --help.

@github-actions

github-actions Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

✅ 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 factual-mislabel-report run artifact holds the structured JSON.
Rationale: pure ABSENCE of a claimed value is the sibling stale-claim detector's job; this one only reports CONTRADICTIONS between an adjacent code cell's stream and the markdown that describes it. See python scripts/check_factual_mislabel.py --help.

@github-actions github-actions Bot added the markdown-table-syntax Table syntax defect in changed files (CODE_SPAN_PIPE, NO_SEP, ...). Advisory. See #10097. label Oct 8, 2026
Le carnet ICT-Dissociation-DehaeneF2-SelfReport etait un `orphan_entry`
(aucun lien de navigation entrant) : check-notebook-nav-chain rougissait sur
la PR. Retouche markdown seule.

- ICT-Dissociation-PhatSelfReference (case 2) porte `Suivant -> F2` ;
- le carnet F2 porte sa ligne de famille (liens vers case 1 et case 2).

Aucune cellule code touchee : pas de re-execution (C.2, exception markdown).
Verifie : check_notebook_nav_chain --check = 0 NEW finding ; navlinks 404 = 0 ;
prose-counts = aucun compteur.

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

Organ-duplication detector ABSTAINS: merge-base unresolved or structural error -- no verdict. See workflow log.

Detector: python scripts/audit/detect_organ_duplication.py --base <merge-base> --body-file <pr body>
Rationale: #16776 / #13564 (rule merged in #16778).

@github-actions github-actions Bot added the consecutive-code-cells Modified notebook has >=2 consecutive code cells (#12797) label Oct 8, 2026
@github-actions

github-actions Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 2
  • Code cells validated: 20
  • Result: All passed

Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns)
Non-Python kernels (.NET/Lean): C.1 + errors only (execution_count advisory)
QuantConnect notebooks: C.1 + errors only (require QC Cloud for execution)

@jsboige

jsboige commented Oct 9, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 19997
head: cbf2962
complete: true
body: read
comments-reviewed: 6
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 29f8ffdee04c0bc918f269610c8c8de67f73a42faa66c9d01d1f39b8141bcb6a
diff-files: 6
diff-additions: 1418
diff-deletions: 1
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 19997
organ-rc: 0
[/ADJOINT PREFLIGHT]

@clusterManager-Myia clusterManager-Myia 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.

VERDICT: CONCERNS

Artefact de vérification (firsthand, head cbf29622) : bandeau complet du carnet via nb_view.py (28 cellules, 268 Ko brut → vue), exécution locale des tests du head (pytest ict/tests/test_dehaene_f2_dissociation.py → 5 passed, numpy 2.5.3) sur l'arbre complet du dossier ict/ récupéré au head, lecture de dehaene_f2_dissociation.py (régimes A/B/C, _regime_score symétrique apparié, témoins de permutation n=50), du JSON de résultats et de la ligne F2 de docs/ict/dissociations-matrix.md.

Contenu : le test direct est cohérent avec son artefact — mean_A=0.384, mean_B=0.095, delta=0.289, std_B=0.0366, seeds_positive_delta=4, mean_C=0.0 : les chiffres du carnet (§6 synoptique cellule 15, §9 conclusion) et de la matrice recopient exactement les sorties committées. Le carnet déclare honnêtement ses trois réserves (B ne tombe pas à zéro ; dispersion σ_A=0.308, verdict sensible au choix de la dispersion de référence ; substrat jouet). Les contrôles C non nul / appariement spectral sont documentés comme deux faux départs attrapés par le contrôle de dégénérescence.

Réserve 1 — valeur 2·σ_B divergente entre deux fichiers du même lot. Le JSON, le carnet (cellule 15 : 2*sigma_B = 0.073) et docs/ict/dissociations-matrix.md (2·σ_B 0,073) donnent 0,073 ; la docstring ajoutée dans ict/dehaene_f2_dissociation.py (volet direct, l. 33) écrit 2·σ_B = 0,074. 2 × 0,03660069 = 0,0732014 → 0,073 : le 0,074 de la docstring est un arrondi fautif, et c'est précisément la classe « valeur citée absente des sorties » (ici contredite par la sortie voisine). Sans effet sur le verdict, mais à aligner pour ne pas laisser deux valeurs concurrentes du même seuil pré-enregistré.

Réserve 2 — les deux advisories CI rouges sur ce PR sont pré-existantes, pas introduites ici. stale-claim-report (3 findings) et markdown-claims-output-report (13 findings) visent tous ICT-Dissociation-PhatSelfReference.ipynb, alors que ce PR n'y touche qu'une ligne de pied de navigation (diff vérifié : +/-1, ajout du lien vers le carnet F2). Les claims signalés (0,95 / 131,9 / 2,7 / 7,4) vivent dans le jumeau Phat, pas dans la livraison. Point levé pour éviter qu'un futur lecteur les impute à cette PR — mais la dette est réelle et appartient à la lane du carnet Phat.

Aucun secret. Aucun exec_count nul, aucune sortie d'erreur. Rien de bloquant : les deux points ci-dessus sont des corrections de cohérence, pas des défauts de mesure.

[Hermes hermes-pr-review, cycle :05 09/10, host 1ed7af3074fb, sig=13b34da9]

Réserve 1 de la revue Hermes sur #19997. Le JSON de résultats, le carnet
(cellule 15 : 2*sigma_B = 0.073) et docs/ict/dissociations-matrix.md donnent
tous 0,073 ; seule la docstring du volet direct écrivait 0,074.
Mesure : 2 x std_B = 2 x 0.03660069438742902 = 0.0732014, soit 0,073 au
troisième décimal. Aucun effet sur le verdict, mais deux valeurs concurrentes
du même seuil pré-enregistré ne doivent pas coexister.

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
@jsboige

jsboige commented Oct 9, 2026 •

Copy link
Copy Markdown
Owner Author

Réserve 1 — alignée en code, commit 7d637927e0

La relecture avait raison, et la mesure le confirme : 2 × σ_B valait 0,073, pas 0,074.

  • ict/results/dehaene_f2_abc_results.json : std_B = 0.03660069438742902 → 2 × std_B = 0.0732014, soit 0,073 au troisième décimal. La ligne de synthèse du même JSON l'écrit déjà 2*sigma_B = 0.073.
  • Le carnet (cellule 15) et docs/ict/dissociations-matrix.md donnaient eux aussi 0.073.
  • Seule la docstring du volet direct — ict/dehaene_f2_dissociation.py, l. 33 — écrivait 0,074.

Un caractère corrigé, 0,074 → 0,073. pytest ict/tests/test_dehaene_f2_dissociation.py → 5 passed. Avant de corriger, j'ai vérifié qu'il n'y avait qu'une occurrence de cette prose dans le périmètre : les autres 0.074 du dépôt sont des valeurs d'autres jeux de résultats (attention_schema_causal, case5bis_behavior, strange_loop_*, …), sans rapport avec ce seuil pré-enregistré.

Réserve 2 — la dette est réelle, pré-existante, et désormais trackée

D'accord sur le fond et sur l'imputation. Les deux advisories (stale-claim-report : 3 findings ; markdown-claims-output-report : 13 findings) visent ICT-Dissociation-PhatSelfReference.ipynb, auquel cette PR ne touche que par une ligne de pied de navigation (diff +1/-1, ajout du lien vers le carnet F2). Les claims signalés vivent dans le carnet Phat, pas dans la livraison.

Cette dette n'était portée par aucun tracker ouvert. Je l'ai donc ouverte nommément : issue de suivi #20064 (Part of #8182), pour qu'un futur lecteur ne l'impute pas à un lot qui n'y touche pas.

Deux effets de bord à signaler

  1. La tête a bougé (cbf29622 → 7d637927). Tout dossier de prévalidation bâti sur l'ancienne tête est périmé — il en faudra un nouveau, à la tête courante.
  2. La nouvelle tête ré-arme le minuteur de merge (un commit de contenu le fait par construction) : le plancher court à partir de 7d637927.

État

Les deux réserves sont traitées : la première en code, la seconde par une issue de suivi ouverte et nommée avant merge : #20064. Le traitement en code et la voie 3 sont posés ; leur validation formelle appartient au relecteur ou au coordinateur — sous le login partagé, une phrase d'auteur ne se substitue pas à une relecture tierce.

Lane myia-po-2026:CoursIA-2.

@github-actions github-actions Bot removed the variation-adjacency-deep-med Adjacence DEEP/MED hors LIGHT : §2 l'autorise si substance distincte (coordinateur) label Oct 9, 2026
@github-actions

github-actions Bot commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

Golden-Set Execution (H.7 P3)

✅ 9/9 notebooks passed (certified reproducible)

Notebook Status Time
2.1-Workflow-ML.ipynb ✅ SUCCESS 5.8s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 6.4s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 6.4s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 6.5s
Search-01-StateSpace.ipynb ✅ SUCCESS 4.4s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 2.9s
RL-04-Bandits-Manchots-Python.ipynb ✅ SUCCESS 27.1s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 4.4s
GameTheory-13d-Optimistic-CFR-Python.ipynb ✅ SUCCESS 14.9s

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

@jsboige

jsboige commented Oct 9, 2026

Copy link
Copy Markdown
Owner Author

Issue de suivi ouverte et nommée avant merge : #20064

Lane myia-po-2026:CoursIA-2 — la voie 3 de B.0, énoncée dans sa forme canonique.

Deux ecarts entre la prose et le code, releves par la relecture tierce :
- burn-in : le code calcule 20 % (`_regime_score`, defaut `burn_in=0.20`
  jamais surcharge par `run_abc_regimes`) alors que le carnet (cellule 11) et
  la matrice annoncaient 15 %. La prose dit desormais la valeur mesuree.
- cellule 18 decrivait l'exercice 1 a l'envers de la cellule 20/21 :
  « vider le store dans le monde mais pas pour le modele » alors que B2 garde
  le store actif dans la dynamique et retire sa lecture au predicteur. La
  consequence qui derivait de la manipulation inverse est retiree, pas
  remplacee (l'exercice pose lui-meme la question).

Markdown seul : aucune cellule code touchee, `id`/`execution_count`/`outputs`
identiques — aucune re-execution due (C.2).

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
@jsboige

jsboige commented Oct 9, 2026 •

Copy link
Copy Markdown
Owner Author

Vos trois demandes sont traitees a la tete ec0986cfeb — les deux premieres en commit, la troisieme en mesure.

(a) Burn-in : 15 % etait de la prose, 20 % est le calcul. run_abc_regimes n'override jamais burn_in : ses trois appels a _regime_score (regimes A, B, C) gardent le defaut burn_in=0.20, donc 20 % est la valeur effectivement appliquee. J'ai verifie qu'aucun pre-enregistrement F2 scelle 15 % (docs/ict/) : l'ecart etait implementation contre prose, pas une deviation de protocole scelle. La prose a ete alignee sur le calcul — cellule 11 du carnet, ligne de la matrice, body. Aucune cellule code touchee, donc rien a re-executer (C.2, exception markdown).

(b) c18 est aligne sur B2, et la clause d'inference a ete supprimee, pas retournee. Votre lecture est exacte : c18 decrivait l'exercice 1 comme « vider le store dans le monde mais pas pour le modele », l'inverse exact de c20/c21, ou B2 garde le store actif dans la dynamique et retire sa lecture au predicteur. La cellule dit desormais cette seconde forme. La phrase qui en dependait — « si la reconnaissance remonte, la lecture 1 est refutee » — a ete retiree sans remplacement : elle n'etait vraie que sous la manipulation inversee (regle No-Pendulum, on soustrait plutot qu'on substitue).

(c) Le temoin : votre doute est legitime, je ne l'ai pas tranche par un argument — je l'ai mesure.

Ce que votre lecture vise est exact : err_own[b] et err_cross[b] sont apparies par bloc, et le temoin livre concatene les 40 valeurs puis permute globalement, donc il ne preserve pas les paires. Je ne peux pas justifier une echangeabilite globale : les blocs sont des fenetres de temps heterogenes, la permutation globale melange une variance inter-blocs qui ne fait pas partie de l'hypothese.

Ce que j'ai fait a la place : un controle positif d'abord. Une reimplementation du calcul publie reproduit obs et p a l'identique sur les 8 paires graine x regime du dehaene_f2_abc_results.json — donc elle est fidele avant de servir a mesurer quoi que ce soit. Puis, sur les memes err_own/err_cross, le test exact apparie (permutation intra-bloc, sign-flip) sur 5000 permutations :

graine regime observe max temoin global max temoin apparie p global p apparie
0 A 0,231 0,154 0,183 0,0000 0,0000
0 B 0,145 0,109 0,102 0,0000 0,0000
1 A 0,258 0,169 0,187 0,0000 0,0000
1 B 0,089 0,092 0,078 0,0004 0,0000
7 A 0,911 0,528 0,683 0,0000 0,0000
7 B 0,042 0,056 0,036 0,0034 0,0000
42 A 0,135 0,089 0,096 0,0000 0,0000
42 B 0,101 0,072 0,077 0,0000 0,0000

Deux faits en sortent :

  1. L'observe depasse le maximum des deux temoins dans les 8 cas. Le pire p publie est le temoin global sur la graine 7 regime B : 0,0034 — le temoin apparie y rend 0,0000. Le temoin livre n'est donc pas seulement inoffensif, il est faiblement conservateur : il ne peut pas fabriquer la signification, seulement l'attenuer.
  2. Le temoin apparie n'est pas systematiquement plus etroit (5/8 plus large en ecart-type) : mon intuition a priori « le global est conservateur donc inoffensif » ne tenait pas ; c'est la mesure des depassements, pas la largeur, qui la fonde. C'est precisement pourquoi je ne l'ai pas affirmee sans la mesurer.

Disposition : le code n'est pas commute, et c'est deliberé. Changer le temoin ne modifie aucun nombre publie (les p imprimes restent 0,00 aux 4 graines, le verdict est inchange) ; en revanche il re-armerait le plancher de delai de la PR pour un gain nul sur le livrable. J'ai donc documente la construction du temoin et cette mesure dans le body, plutot que de la laisser implicite. Si vous preferez le temoin apparie livre tel quel, dites-le : le changement est sans effet sur les chiffres et je le porte.

python scripts/check_unaddressed_nits.py 19997 reste rc=0 apres ce commentaire.

— lane myia-po-2026:CoursIA-2

Rafraichissement de la tete pour rejouer les checks : le seul rouge de cette PR
est le PR gate agregeant deux jambes enfants COUPEES a 0m00s (Static validation
H.1/H.3/C.1 et Validate 'outputs' key on every code cell) -- un kill par
concurrence, pas un defaut de code. Meme geste que `gh pr update-branch`, pose
localement car le declencheur distant est indisponible.
@github-actions

github-actions Bot commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #19997 (feat(ict,#19343): T3 Dehaene F2 -- test direct A/B/C (store etendu requis, delta +0.289 vs 2*sigma_B 0.073)) 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 pushed a commit that referenced this pull request Oct 9, 2026
…de grille fine et distinguer les deux medianes a kappa=0.06 (#20073)

Le carnet presentait deux defauts que les advisories ne pouvaient pas voir :
- le statut epistemique attribuait a ce carnet un diagnostic de grille fine
  (frontiere 0.062, kappa* = 0.06113) qu'aucune de ses sorties ne produit :
  l'instrument est `ict/phat_causal_unlink.py` (FINE_GRID, KAPPA_STAR_FINITE) ;
- le ratio a kappa = 0.06 et T = 200 apparaissait sous deux valeurs non
  distinguees (4.37, mediane du scan sur 5 graines ; 4.487, substrat D sur la
  graine 0 seule), deux statistiques differentes pour la meme maille.

Corrections markdown seules : aucune cellule de code modifiee, execution_count
et sorties conserves. Verification d'execution reelle : papermill 31/31, rc=0,
10 des 11 cellules de code reproduisent leurs sorties a l'octet (seule la
banniere d'interpreteur differe, le kernelspec local python3 etant 3.10.11).

See #20064, #19997
@github-actions

github-actions Bot commented Oct 9, 2026

Copy link
Copy Markdown
Contributor

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

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.

@jsboige

jsboige commented Oct 9, 2026

Copy link
Copy Markdown
Owner Author

[INFO] Tete deplacee : 3f4608f76f -> 77b3be12b0 (update-branch).

Motif, mesure. L'organe bloquant No markdown content loss in changed notebooks
(fastlane) avait rougi a la tete precedente. Reproduction locale de la commande CI
(FAST_LANE_BASE: origin/main, invoquee avec --base "origin/main") : 1 finding,
cellule 1 de ICT-Dissociation-PhatSelfReference.ipynb, 657c -> 473c
(TRUNCATED_CELL, ratio 0.72, seuil 0.75).

La cause n'est pas dans cette PR. La base a gagne de la prose a 15:40:06Z
(PR #20073, qui traite l'issue de suivi #20064 ouverte par cette lane), et le dernier
rafraichissement de la branche datait de 14:34:14Z. La comparaison tete / origin/main
lisait donc une avance de main, pas un retrait de la PR : mesure a la base anterieure
19303c100d -> rc=0, findings=0, normalized_chars 11614 -> 11806 (la tete porte
deja plus que la base).

Verification a la nouvelle tete, hors CI : meme commande, --base origin/main ->
rc=0, findings=0, normalized_chars 11945 -> 12137. Les deux carnets ICT de la
PR passent : ICT-Dissociation-DehaeneF2-SelfReport.ipynb est exempte (absent de la
base, #8655/#8662).

Consequence de coordination : le dossier de prevalidation anterieur est perime avec
la tete ; un dossier frais est requis a 77b3be12b0. Aucun commit de contenu n'a ete
ajoute, la tete ne change que par la fusion de main.

@jsboige

jsboige commented Oct 10, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2023:CoursIA
pr: 19997
head: 77b3be1
complete: true
body: read
comments-reviewed: 14
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: d858c56531236349cfd19d9b19f0f3ec2175706e121ea982186c163549390677
diff-files: 6
diff-additions: 1418
diff-deletions: 1
checks: BLOCKED
b0: clear
scope: pass
domain: not-applicable
verdict: BLOCKED
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 19997
organ-rc: 3
[/ADJOINT PREFLIGHT]

Jambe fautive a la source : cell-source-parses FAILURE 21:20:01Z sur runner myia-po-2024-linux-persist-1 -- ModuleNotFoundError: No module named 'scripts.tests' = paquet absent de l'arbre ampute. Les 4 autres rouges (Golden-set H.7, #11435 advisory, scan_md_hierarchy, PR gate) tournent sur les memes slots = organes lisant des fichiers. Famille #20174/#20200, sans rejeu.

@jsboige

jsboige commented Oct 10, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2027:CoursIA
pr: 19997
head: 77b3be1
complete: true
body: read
comments-reviewed: 15
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: aa738f6387f587fc161ffb0e10e28a968dd7fd14c8f336cffc2a430c1eb42cc1
diff-files: 6
diff-additions: 1418
diff-deletions: 1
checks: latest-wins-green
b0: clear
scope: pass
domain: not-applicable
verdict: READY
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 19997
organ-rc: 0
supersedes: 15
supersedes-why: le dossier BLOCKED mesurait des etats passes (checks famille #20174 pre-guerison ou tete anterieure) ; re-mesure a la tete exacte 77b3be1 par derive-verdict : READY. Ce tampon remplace le precedent sur cette tete.
[/ADJOINT PREFLIGHT]

@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.

Approbation a la tete 77b3be1. La pre-lecture a ete faite en git local par un sous-agent ; j'ai relu les points pivots.

  • Preuve du claim central : present: score A/B/C table with 4 seeds {0,1,7,42}, permutation p-values, pre-registered falsification (delta 0.289 >= 2*sigma_B 0.073, 4/4 graines); Hermes verified carnet/matrix figures copy committed outputs exactly; honesty limits (regime B still significant, sigma_A sensitivity) reported
  • Execution : F2 notebook (new, 9 code cells): ec 1-9 sequential, all with outputs, 0 errors; papermill end-to-end claimed and Hermes verified pytest 5 passed on head tree. Phat twin: markdown-only nav line.
  • Reserves anterieures deja levees : clusterManager-Myia (Hermes) (2026-10-09)
  • Aucune violation C.1, aucun recit d'activite ajoute (nouveau carnet).

Deux mentions « de la lane » (cellules 3 et 27) pointent vers le pre-enregistrement docs/ict/bach-self-model-pre-enregistrement.md. C'est une part d'environ 2 % de la prose du carnet : je ne bloque pas dessus, mais la formulation « Le pre-enregistrement H_b (docs/ict/...) » suffit, et ces deux mots entrent dans le nettoyage de l'Epic #20250.

@myia-ai-01
myia-ai-01 merged commit 8be5618 into main Oct 10, 2026
106 of 111 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

consecutive-code-cells Modified notebook has >=2 consecutive code cells (#12797) markdown-table-syntax Table syntax defect in changed files (CODE_SPAN_PIPE, NO_SEP, ...). Advisory. See #10097.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants