Repository navigation
feat(ict,#19343): T3 Dehaene F2 -- test direct A/B/C (store etendu requis, delta +0.289 vs 2*sigma_B 0.073) - #19997
Conversation
…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>
Notebook outputs-required (H.4 schema): PASS (every code cell carries an
|
|
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 |
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>
|
Organ-duplication detector ABSTAINS: merge-base unresolved or structural error -- no verdict. See workflow log. Detector: |
Notebook PR Validation: PASS
Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns) |
|
[ADJOINT PREFLIGHT] |
clusterManager-Myia
left a comment
There was a problem hiding this comment.
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>
Réserve 1 — alignée en code, commit
|
Golden-Set Execution (H.7 P3)✅ 9/9 notebooks passed (certified reproducible)
Pinned lockfile: |
|
Issue de suivi ouverte et nommée avant merge : #20064 Lane |
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>
|
Vos trois demandes sont traitees a la tete (a) Burn-in : 15 % etait de la prose, 20 % est le calcul. (b) (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 : Ce que j'ai fait a la place : un controle positif d'abord. Une reimplementation du calcul publie reproduit
Deux faits en sortent :
Disposition : le code n'est pas commute, et c'est deliberé. Changer le temoin ne modifie aucun nombre publie (les
— 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.
Path-collision (organ #13359/#13615)Cette PR #19997 (
|
…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
|
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 |
|
[INFO] Tete deplacee : Motif, mesure. L'organe bloquant La cause n'est pas dans cette PR. La base a gagne de la prose a 15:40:06Z Verification a la nouvelle tete, hors CI : meme commande, Consequence de coordination : le dossier de prevalidation anterieur est perime avec |
|
[ADJOINT PREFLIGHT] Jambe fautive a la source : |
|
[ADJOINT PREFLIGHT] |
myia-ai-01
left a comment
There was a problem hiding this comment.
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.
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é)
Aest 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.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 couplageG. Son seuil d'ignition est relatif à la concentration courante — un seuil absolu rendait la trajectoire multimodale (R² de test négatif, mesuré).(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 rendpuniformé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.|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
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
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.self_model_minimal) reste GPU-only — verdict RECOVERABLE-MACHINE (Tell c.8236), non contourné ici : il est nommé, pas remplacé.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)
python3, cwd du carnet) :execution_count1→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.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 navigationSuivantvers 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 unorphan_entry:check-notebook-nav-chainrougissait sur la tête précédente. Le carnet précédent (case 2,PhatSelfReference) porte désormaisSuivant -> 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.htmlsur 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.ipynbdans un sous-arbre rendu est unSTALE_LINKneuf). 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
score_A,score_B,score_Csur les 4 graines{0, 1, 7, 42}.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.git diff --statadditions seules, sur code de production.🤖 Generated with Claude Code