Repository navigation
[EPIC] Derive de degenerescence des notebooks a travers leurs revisions — forensic d'historique git #9768
Description
Activity
- added 6 commits that reference this issue
on Aug 7, 2026 [CLAIMED] c.1264 — myia-po-2025:CoursIA-2 2026-08-07T00:58Z. Phase 0 ICT/IIT tranche.
Grain: DEEP/audit — lane myia-po-2025:CoursIA-2 — prev: MED/test #9777 (c.1262) + RELEASE c.1263 (collision po-2025 #9776).
Cible: EPIC #9768 Phase 0, famille IIT/ICT-Series. Détecteurs D1 (provenance orpheline,
git log --follow+ reproduction HEAD vs variante) et D5 (coquille silencieuse, delta num sur diff minuscule). Addendum user 2026-08-07 : sous-question robustesse pour D2.Échantillon (8 notebooks stratifiés sur distribution réelle IIT/ICT — note: pas de bande 20-39 ni 40+ ici, max=11 révisions):
- ICT-1-PhiTrajectories (11 rev, bande 10-19, le plus mature)
- ICT-2-SelfSortingMorphogenesis (9 rev, bande 5-9)
- ICT-5-CausalEmergence (8 rev, bande 5-9)
- ICT-15b-SensitivityCanonicity (7 rev, bande 5-9)
- ICT-25-InoculationRL (6 rev, bande 5-9)
- ICT-17-EpsilonMachine (6 rev, bande 5-9)
- ICT-11-CausalAgencyProfiles (4 rev, bande 2-4)
- ICT-Dissociation-SaillancePregnance (1 rev, première version)
L898 + L972 ★★ pré-flight: 0 PR sur MyIA.AI.Notebooks/IIT/ (5 PRs open total none touchent IIT/ICT). Tranche Phase 0 ICT libre. Worktree
d:/dev/CoursIA-2-c1264-9768-ict-forensicsurfeature/c1264-9768-ict-forensicdepuis origin/main HEAD da5b85d.Livrable: issue fille de #9768 (modèle #9772), SHA incriminé par verdict SAIN/D1-D6/INDÉTERMINÉ. Pas de rapport committé (audit-cross-source-distillation R1).
Pivote hors MED/test (4ᵉ saturation G-VAR-3) → DEEP/audit.
[REPORTING] c.1264 — myia-po-2025:CoursIA-2 2026-08-07T01:20Z.
Livré : #9787 = tranche IIT/ICT-Series de Phase 0 EPIC #9768.
Verdict empirique : 8/8 SAIN par détecteur numérique v2 (signature médiane+std+count > 5%).
Faux positifs identifiés et corrigés : 5 D3 + 1 D4 annulés car basés sur subject de commit (heuristique trop permissive) ; la vraie signature numérique ne changeait pas. Leçon durable : un détecteur basé sur le subject est un hint, pas une preuve.
Cas-limite D5 non détecté : ICT-1 #9416 fix(iit,#8052) corrigeait une prose cell[24] qui dropait une valeur Phi=0.69 (3 niveaux au lieu de 2) ; les outputs cell[7] étaient déjà justes. Le détecteur v2 compare les outputs entre révisions consécutives — il manque le croisement prose ↔ outputs à la même révision. Recommandation : sous-issue pour v3.
Stratification ICT atypique : 47 notebooks ICT, max 11 révisions, 0 en 20-39/40+. Le barème de stratification de l'Epic (sur-échantillonner 20-39/40+) ne s'applique pas à cette famille — soit on adapte par famille, soit on documente cette asymétrie.
Détecteur : Python standalone, ~250 LOC, 0 dépendance externe, dans
scratchpad/du worker (pas committé). Méthodologie reproductible.Suite : autre tranche Phase 0 (GenAI / Search / Probas / SymbolicAI) à dispatcher. Tranche QC déjà livrée par po-2024 (#9772). Tranche IIT/ICT close par cette livraison.
Gates : L898 + L972 ★★★ propre · L278/L279 worker-ne-merge respecté · catalog-pr-hygiene R1 byte-identique (rien committé) · audit-cross-source-distillation R1 rapport = issue, pas fichier · harness-hygiene rapport = GH issue · pas de merge · pas de close d'autrui · pas de
/coordinate.Grain: DEEP/audit — lane myia-po-2025:CoursIA-2 — prev: MED/test #9777 (c.1262) + RELEASE c.1263.
🤖 Generated with Claude Code
[CLAIMED] c.1265 — myia-po-2025:CoursIA-2 2026-08-06T01:08Z
Livré : PR #9791
feat(notebook_tools,#9768): scan_d1_d3_d4_d5.py Phase 1 outillage (4 détecteurs)(commita7b380383, +1464 LOC = +792 module / +672 tests).
Genre : DEEP/tooling (pivot hors MED/test pour G-VAR-3 — dette acquittée par ai-01 publiquement, déclaration acquittée c.1264).
Gates : 64/64 tests pytest PASS en 0.98s · 3947/3947 sur suite complète en 121s · 0 CR / trail_nl=True / 0 BOM (L800 ★) · 0 erreur volontaire (C.1) · 0 dépendance externe · 0 catalogue regénéré (catalog-pr-hygiene R1) · 0 secret inline (secrets-hygiene) · 0 cellule notebook modifiée · 0 rapport commité (audit-cross-source-distillation R1) · PR body HORS worktree (L677-L4 ★★).
Observation empirique clé : D1 a un biais famille-spécifique sur corpus très référentiel (ICT-Series) — verdict D1+ ≈ 50 % orphelins sur cette famille précise, signal à creuser manuellement. Documenté dans la docstring du module et le body PR.
Conformité L898 ★★★ + L972 ★ : triple-check propre (scan_d1, scan_d1_d3_d4_d5, ict_forensic, #9768, #9787) tous retournent 0 collision.
Prochaines étapes (PR owner = ai-01 coordinateur) : revue, sweep-ready check, merge.- added a commit that references this issue
on Aug 7, 2026 [CLAIMED] c.1267 — myia-po-2025:CoursIA — Phase 0 tranche Search/CSP family (EPIC #9768).
Grain: DEEP/audit — lane myia-po-2025:CoursIA — prev: DEEP/qc #9789 (merged).
New family for the Phase 0 sample (≥4 families required: ICT/IIT done #9787 + QC done #9772; this adds the 3rd: Search/CSP). Search/CSP is revision-rich in the high-risk bands the Epic targets for over-sampling: 12 notebooks in the 40+ band (Search-3-Informed 58, CSP-3-Advanced 56, CSP-1-Fundamentals 56, Search-10-SymbolicAutomata 55, CSP-2-Consistency 50, Search-2-Uninformed 50, CSP-9-Distributed 45, Search-8-DancingLinks 45, Search-7-MCTS 45, Search-9-LinearProgramming 44, CSP-7-Soft 42, Search-6-AdversarialSearch 41), ~20 more in 20-39.
Methodology: my v2 detector (#9791, numeric signature median+std+count > 5%) applied to a stratified ~8-10 notebook slice over-weighted to 40+. Git forensic only (no kernel exec = CPU-pure). Verdict SAIN/D1..D6/INDÉTERMINÉ per notebook with cited SHA. Output = dashboard + this issue, NOT a committed file (audit-cross-source-distillation R1).
L898 firsthand: 0 PR for Search/CSP Phase 0 tranche (#9783/#9791/#9793 = Phase 1 tooling; #9772 = QC family tranche po-2024; #9787 = ICT family tranche me). No collision.
@-
- added a commit that references this issue
on Aug 7, 2026 113 remaining items
[CLAIMED] lane myia-po-2025:CoursIA -- paths: MyIA.AI.Notebooks/SymbolicAI/Tweety/, MyIA.AI.Notebooks/SymbolicAI/SemanticWeb/, MyIA.AI.Notebooks/SymbolicAI/Planning/, MyIA.AI.Notebooks/SymbolicAI/SmartContract/, MyIA.AI.Notebooks/SymbolicAI/Argument_Analysis/, MyIA.AI.Notebooks/SymbolicAI/SMT/ -- Phase 0 tranche 10e famille SymbolicAI non-Lean (audit read-only echantillon stratifie, sortie sur issue, conformement aux 9 premieres tranches)
[CLAIMED-AMEND] lane myia-po-2025:CoursIA -- paths: MyIA.AI.Notebooks/SymbolicAI/Tweety/, MyIA.AI.Notebooks/SymbolicAI/SemanticWeb/, MyIA.AI.Notebooks/SymbolicAI/Planners/, MyIA.AI.Notebooks/SymbolicAI/SmartContracts/, MyIA.AI.Notebooks/SymbolicAI/Argument_Analysis/, MyIA.AI.Notebooks/SymbolicAI/SMT/, MyIA.AI.Notebooks/SymbolicAI/SymbolicLearning/** -- correction du claim precedent : noms reels des sous-dossiers (SmartContracts, Planners) + SymbolicLearning omis (31 notebooks). Scope complet de la 10e famille : SymbolicAI hors Lean/** et hors _archive
Phase 0 tranche famille SymbolicAI non-Lean — 14 notebooks stratifiés (10e famille)
Audit read-only — sortie conforme à audit-cross-source-distillation R1 : verdict sur issue, jamais un fichier committé.
Après ICT/IIT (#9787), QC (#9772), Search/CSP, Probas, GenAI, GameTheory, Sudoku, ML et Lean (tranche 9), la 10e et dernière famille jamais auditée :
MyIA.AI.Notebooks/SymbolicAI/horsLean/**et hors_archive.Échantillon
14/233 notebooks (git ls-tree -r origin/main), stratifiés par strate — les 8 strates sont toutes couvertes, en privilégiant les plus révisées de chaque strate :
Strate Population Échantillon Révisions (scan --follow) SMT/ (Z3-Linq2Z3) 47 2 8 · 6 Tweety/ 39 2 40 · 6 Argument_Analysis/ 32 1 9 SmartContracts/ 32 1 5 SymbolicLearning/ 29 2 38 · 30 SemanticWeb/ 28 2 47 · 32 Planners/ 25 3 34 · 31 · 32 racine (OR-tools-Stiegler) 1 1 28 Note instrument : la stratification initiale a utilisé
git rev-list --count(nu), qui est rename-blind — Tweety-01 compte 9 révisions en nu contre 40 en--follow. L'échantillon a été corrigé sur les comptes--followdu scanner ; le défaut est déclaré pour les tranches futures.Verdicts agrégés (scan_d1_d3_d4_d5.py, JSON, tête origin/main)
Verdict Count SAIN 10 D1+ 3 (tous re-vérifiés ci-dessous : faux positifs) D3+ 1 (re-vérifié ci-dessous : faux positif — restore + re-exec légitime) D4+ / D5+ / MIXED 0 Re-vérification du D3+ Planners-10 (protocole audit-reassessment)
Le scan cite le commit
77050d016b« restore corrupted cell 38 » : « Restore numérique : médiane 7 -> 1 (n 4 -> 24) ». Le détecteur D3 tire sur le verbe "restore" dans le sujet + saut de la signature numérique des outputs. Mesures firsthand :- Au parent
4fdc5f4220: métadonnées papermillend_time2026-05-25 (périmées), 14/16 cellules code avec outputs. - Au restore
77050d016b(02/06) : papermillend_time2026-06-02T08:52:47 — le jour même du commit — duration 8,68 s,exception: None, 16/16 cellules code avec outputs. Le body du commit (« Papermill re-executed: 16/16 code cells, 0 errors ») est prouvé par les métadonnées, pas seulement allégué. - Cellule 38 : écrasée en une ligne par
d25c5d98(25/05, « TP conversions batch 3 »), source restaurée depuis030fc8b2(196 retours à la ligne) ; à77050d016belle porte le pipeline NL→PDDL complet, exec=15, avec 1 output réel (fallback honnête « ⚠ Aucune API configurée — utilisation du plan exemple »).
Le saut de signature (médiane 7→1, n 4→24) est la conséquence de la re-exécution de la source restaurée — des mesures fraîches, pas un collage de vieilles valeurs. FP confirmé : la catégorie D3 « restauration partielle de valeurs sans exécution » ne s'applique pas, l'exécution est prouvée.
Re-vérification des 3 D1+ (prose↔outputs à HEAD)
Notebook Signal Lecture firsthand Verdict Tweety-01-Setup-Python 70/166 (42 %) cell[0]= prose d'intro d'un carnet de setup : « Durée estimée : 20 minutes », ancres de section « 1.4 », noms de siblings « Tweety-7a/7b », sommaire numéroté. Zéro claim de mesure.FP structurel (échafaudage, 14e du mécanisme §2(a)) Tweety-07b-Ranking (C#) 37/78 (47 %) cell[1]= prose d'architecture du shade IKVM (énumération des JARs) ;cell[6]= diagnostic mesuré sur le blob trackéc7f71e08(« 7 697 types, dont 31 rpcl ») avec provenance écrite dans la prose même (« re-mesuré le 2026-09-28 ») — mesure externe documentée, pas un claim d'output notebook.FP (prose à provenance externe vérifiable) OR-tools-Stiegler 398/861 (46 %) cell[5]= énoncé du problème de Stigler : « En 1939, Stigler a résolu ce problème manuellement en 120 jours de calculs », « 9 nutriments », « 77 aliments », « 7 produits ». Paramètres d'énoncé et contexte historique.FP (données du problème, pas des mesures) Forensic git (D3/D4) — lectures ciblées
Sur l'historique complet des 14 carnets : deux commits « restore » seulement — le mass-accents
0ce5cc37c9(6 921 cures, 123 notebooks, restauration de texte pas de valeurs) et le77050d016bre-vérifié ci-dessus. Aucun revert ni rename ciblé sur l'échantillon → D4 écarté.Lecture fine qualitative (2 SAIN les plus révisés)
- SW-13-Python-Reasoners (89 cellules) : markdown d'annonce et d'interprétation confrontés aux outputs adjacents (« ✓ 10 classes définies », « Total triples: 40 », figures matplotlib) — cohérents ; les 3 cellules d'exercice rendent « Exercice a completer » (stubs C.1 conformes).
- SL-1-LogicalLearning (58 cellules) : aucun markdown non-structurel porteur de nombres de résultat — rien à contredire.
Aucune contradiction qualitative du type Lean-16j (tranche 9).
Verdict de la tranche
0 finding confirmé sur 14 carnets. La 10e famille (SymbolicAI non-Lean, 233 notebooks) est propre sur l'échantillon au sens du scan et des re-vérifications. Les 9 précédentes tranches ayant produit des findings réels (KNOTS-03 en tranche 9, etc.), l'absence de finding ici est un résultat, pas une absence d'audit : les 4 signaux du scan ont tous été re-vérifiés firsthand avec preuve.
Portée non vérifiée
- Les 219 notebooks hors échantillon ne sont ni blanchis ni accusés — en particulier SMT/ (45 non audités, dont les séries SAT/SMT hors Z3-Linq2Z3) et SmartContracts/ (31 non audités).
- L'échantillon couvre 6 % de la famille ; les strates à 1 représentant (Argument_Analysis, SmartContracts, racine) restent superficiellement couvertes.
Portée du cycle
Grain : DEEP/research-code (audit Phase 0 — 10e et dernière famille du balayage #9768) — lane myia-po-2025:CoursIA — prev: MED/repair #20148 (dossier adjoint, en attente externe).
- Au parent
[RELEASED] lane myia-po-2025:CoursIA -- paths: MyIA.AI.Notebooks/SymbolicAI/Tweety/, MyIA.AI.Notebooks/SymbolicAI/SemanticWeb/, MyIA.AI.Notebooks/SymbolicAI/Planners/, MyIA.AI.Notebooks/SymbolicAI/SmartContracts/, MyIA.AI.Notebooks/SymbolicAI/Argument_Analysis/, MyIA.AI.Notebooks/SymbolicAI/SMT/, MyIA.AI.Notebooks/SymbolicAI/SymbolicLearning/** -- tranche 10 livree (rapport c.6105528148) : 14 carnets, 0 finding confirme, 10e et derniere famille du balayage Phase 0
[CLAIMED] lane myia-po-2025:CoursIA -- paths: MyIA.AI.Notebooks/SymbolicAI/SMT/, MyIA.AI.Notebooks/SymbolicAI/SmartContracts/ -- tranche 10-bis : les deux strates les moins couvertes de la 10e famille (SMT 47 carnets dont 45 non audites, SmartContracts 32 dont 31 non audites), etape suivante du rapport tranche 10 (c.6105528148, portee non verifiee)
Phase 0 tranche 10-bis — strates SMT et SmartContracts (complément 10e famille)
Audit read-only — sortie sur issue, jamais un fichier committé. Suite directe de la tranche 10 (c.6105528148) : les deux strates les moins couvertes de la 10e famille y étaient représentées par un seul carnet chacune.
Échantillon
13 carnets, diversité intra-strate par sous-dossier (chaque sous-dossier représenté par son carnet le plus révisé ; SC-7b déjà audité en tranche 10, remplacé par le 2e de 02-Solidity-Advanced) :
Sous-strate Échantillon Révisions (scan --follow) SMT/Z3-Linq2Z3 08_Meal_Planner_Patient_Capstone · 03_Sudoku_Modes · 14_Optimize_MaxSAT · 18_Einsteins_Riddle 12 · 12 · 12 · 8 SMT/Z3-API Z3-14-BitVectors-Overflow · Z3-13-UnsatCores 10 · 15 SmartContracts/ (7 sous-dossiers × 1) SC-07c-ERC20-Lean · SC-25-Mainnet-Deploy · SC-12-Foundry-Testing · SC-16-Homomorphic · SC-19-Ripple-XRP · SC-00-Cypherpunk · SC-03-Solidity-Basics 7 · 24 · 30 · 33 · 28 · 23 · 33 Verdicts agrégés (scan_d1_d3_d4_d5.py, JSON, tête origin/main)
Verdict Count SAIN 12 D1+ 1 (re-vérifié ci-dessous : faux positif) D3+ / D4+ / D5+ / MIXED 0 Re-vérification du D1+ SC-25-Mainnet-Deploy (protocole audit-reassessment)
Le scan cite « 97/104 (93 %) » avec exemples
cell[1]=2, 1, 2, 2, 3. Lecture firsthand :cell[1]= objectifs d'apprentissage numérotés 1-5, prérequis (« ~$0.01-0.50 »), « Durée estimée : 40 minutes », « Coût estimé » ;cell[2]= table comparative des réseaux (L1 ~$5-50, Base ~$0.01-0.10, confirmations ~12 s/~2 s) — des données de contexte marché et de l'échafaudage éditorial, toutes déclarées « estimées », pas des claims de mesure du carnet. Le carnet est un TP de déploiement mainnet réel : 7/8 cellules code portent des outputs. Le ratio 93 % reflète la densité de prose de contexte (coûts de gas partout), pas une dérive. FP structurel, même mécanisme que les 3 D1+ de la tranche 10.Verdict de la tranche
0 finding confirmé sur 13 carnets. Couverture cumulée de la 10e famille : 27/233 carnets (12 %), toutes les strates et sous-dossiers désormais représentés (SMT 3 sous-dossiers — Z3-Linq2Z3 6/14, Z3-API 2/N, — ; SmartContracts 7/7 sous-dossiers).
Portée non vérifiée
- SMT/Z3-Linq2Z3 : 8 carnets hors échantillon ; Z3-API : reste hors 2 ; sous-dossiers SMT additionnels non couverts ce cycle.
- SmartContracts : 25 carnets hors échantillon (1-2 par sous-dossier couvert).
- Les deux tranches cumulées (14 + 13 = 27) ne blanchissent ni n'accusent les 206 restants.
Grain : MED/research-code (audit complémentaire — 1 hit re-vérifié FP, état documenté) — lane myia-po-2025:CoursIA — prev: DEEP/research-code #9768 tranche 10 (c.6105528148).
[RELEASED] lane myia-po-2025:CoursIA -- paths: MyIA.AI.Notebooks/SymbolicAI/SMT/, MyIA.AI.Notebooks/SymbolicAI/SmartContracts/ -- tranche 10-bis livree (rapport c.6105679962) : 13 carnets (6 SMT + 7 SmartContracts, 7/7 sous-dossiers SC), 12 SAIN + 1 D1+ re-verifie FP, 0 finding confirme ; couverture cumulee 27/233
[CLAIMED] lane myia-po-2025:CoursIA -- paths: MyIA.AI.Notebooks/SymbolicAI/Tweety/, MyIA.AI.Notebooks/SymbolicAI/Argument_Analysis/, MyIA.AI.Notebooks/SymbolicAI/SymbolicLearning/, MyIA.AI.Notebooks/SymbolicAI/SemanticWeb/, MyIA.AI.Notebooks/SymbolicAI/Planners/** -- tranche 10-ter (complement 10e famille) : les 5 strates superficiellement couvertes de la tranche 10, 3 carnets neufs chacune (exclusion calibree des picks des tranches 10/10-bis), audit read-only
Phase 0 tranche 10-ter — les 5 strates restantes de la 10e famille (complément)
Audit read-only — sortie sur issue, jamais un fichier committé. Suite des tranches 10 (c.6105528148) et 10-bis (c.6105679962) : les cinq strates qui n'y avaient que 1-2 représentants chacune.
Échantillon
15 carnets neufs (3 par strate), les plus révisés hors picks déjà couverts. Exclusion calibrée : la méthode de compte a été calibrée sur Tweety-01-Setup (40 = compte tranche 10 exact) ; les candidats dont le compte pouvait mapper sur les picks non nommés des tranches précédentes (SW-12-GraphRAG, Planners-11/5/6) sont écartés au profit des suivants — zéro doublon garanti.
Strate Échantillon Révisions (git log --follow) Tweety/ 04-Belief-Revision-Python · 05-Abstract-Argumentation-Python · 02-Basic-Logics-Python 48 · 46 · 46 Argument_Analysis/ Argumentation-08b-Executor-Python · 07-Orchestration-Python · Onto-01-AIF-OWL2-Python 36 · 26 · 19 SymbolicLearning/ SL-9-LLM-SymbolicLearning · SL-8-KnowledgeGraphs-ILP · SL-2-KnowledgeBasedLearning 31 · 28 · 27 SemanticWeb/ SW-9-Python-JSONLD · SW-11-Python-KnowledgeGraphs · SW-8-Python-SHACL 30 · 29 · 23 Planners/ 12-LOOP · 7-OR-Tools · 9-HTN 30 · 28 · 27 Verdicts agrégés (scan_d1_d3_d4_d5.py, JSON, tête origin/main = 68972f1, arbre vérifié propre)
Verdict Count SAIN 14 D5+ 1 (re-vérifié ci-dessous : faux positif) D1+ / D3+ / D4+ / MIXED 0 Re-vérification du D5+ Argumentation-08b-Executor (protocole audit-reassessment)
Le scan cite
d59f74c4970c« Saut mediane 10 -> 5 (relatif 50.0%) sous commit non-substantiel ». Mesures firsthand aux deux bornes du commit :- Structure inchangée : 9 cellules code avant/après, 9/9 avec outputs,
execution_count1-9 continus. - Re-exécution prouvée : métadonnées papermill
end_time2026-09-25T06:27:32Z — le jour même du commit (11:17Z), avant le push —exception: None. La re-exec n'est pas alléguée, elle est dans le blob. - La prémisse « non-substantiel » est fausse : le commit porte 3 573 lignes sur ce carnet — c'est la greffe délibérée de l'exécuteur 08b sur la shim après archivage de la chaîne legacy
*_agent(EPIC [Argumentation] Arc narratif a deux dimensions : numeros (du concept d'argument au pipeline) et accretions (theorie, instruments) — fille #5081 #17547, PR refactor(argumentation,#17547): archive legacy *_agent chain + graft 08b executor onto shim (3/3) #17765, réparation SK 1.44). Le refactor EST la substance. - La chute de volume d'outputs est la conséquence du remplacement du moteur : cell[18] passe de 308 outputs (logs
Orchestration.RunINFO un-par-ligne de la chaîne legacy) à 3 outputs consolidés (« Lancement de l'exécution asynchrone… Analyse terminee. Phases executees : […] ») — des sorties fraîches du nouvel exécuteur, pas un strip ni un collage. - Le carnet est vivant à HEAD : 10 cellules code exécutées, dernière campagne visible
2026-10-09T09:13.
FP confirmé : catégorie D5 « saut de signature sous commit non-substantiel » — le commit est substantiel et documenté, la signature change parce que le moteur a changé.
Lecture fine qualitative (le SAIN le plus révisé : Tweety-04, 48 révisions)
13/13 cellules code avec outputs. Les 15 cellules markdown porteuses de nombres citent des années de littérature (1985/1994/1988 — AGM et successors), des numéros de section et des paramètres déclarés (.2/.4/.28) — aucun claim de mesure à confronter. Cohérent avec le SAIN du D1 (prose↔outputs automatisé).
Verdict de la tranche
0 finding confirmé sur 15 carnets. Couverture cumulée de la 10e famille : 42/233 (18 %).
Portée non vérifiée
- SMT : 8 Z3-Linq2Z3 + reste Z3-API + sous-dossiers additionnels (reportés de 10-bis).
- SmartContracts : 25 carnets hors échantillon (1-2 par sous-dossier couvert).
- Les 5 strates de cette tranche restent majoritairement hors échantillon : Tweety ~34, Argument_Analysis ~29, SymbolicLearning ~26, SemanticWeb ~25, Planners ~20.
- Les 42 carnets couverts ne blanchissent ni n'accusent les 191 restants.
Grain : MED/research-code (audit complémentaire — 1 hit D5 re-vérifié FP avec preuve, couverture 12 % -> 18 %) — lane myia-po-2025:CoursIA — prev: DEEP/notebook-python #20334
- Structure inchangée : 9 cellules code avant/après, 9/9 avec outputs,
[RELEASED] lane myia-po-2025:CoursIA -- paths: MyIA.AI.Notebooks/SymbolicAI/Tweety/, MyIA.AI.Notebooks/SymbolicAI/Argument_Analysis/, MyIA.AI.Notebooks/SymbolicAI/SymbolicLearning/, MyIA.AI.Notebooks/SymbolicAI/SemanticWeb/, MyIA.AI.Notebooks/SymbolicAI/Planners/** -- tranche 10-ter livree (rapport c.6106443207, 15 carnets, 0 finding confirme, couverture 42/233)
[CLAIMED] lane myia-po-2025:CoursIA -- paths: MyIA.AI.Notebooks/SymbolicAI/SMT/** -- tranche 10-quater : residuel Z3-Linq2Z3 (milieu de serie) + Z3-API, 8 carnets, audit read-only
Phase 0 tranche 10-quater — résiduel SMT (complément 10e famille)
Audit read-only — sortie sur issue. Suite des tranches 10/10-bis/10-ter : résiduel Z3-Linq2Z3 (milieu de série) + premier représentant Z3-API non couvert. Tête origin/main = 68972f1.
Échantillon (8 carnets)
Sous-strate Carnets SMT/Z3-Linq2Z3 05_Nested_Arrays_2D · 06_Meal_Planner_Modelisation · 07_Meal_Planner_Data_External · 09_Meal_Planner_Convergence_Scale · 11_Job_Shop_Scheduling · 12_Graph_Coloring_Petersen SMT/Z3-API Z3-13b-UnsatCores-MUS-Python · Z3-16e-Meal-Planner-Optimize-Python Verdicts (scan_d1_d3_d4_d5.py, JSON)
Verdict Count SAIN 6 D5+ 1 (re-vérifié ci-dessous : faux positif) INDETERMINE 1 (Z3-13b : une seule révision — né récemment, comparaison impossible, déclaré par le scanner) Re-vérification du D5+ 06_Meal_Planner_Modelisation
Scan :
77f92b7439ef« Saut mediane 38 -> 10 (73,7 %) sous commit non-substantiel » — le commit estchore(smt,#14169): reexecute Z3-Linq2Z3 meal-planner 06/08/09 after .deploy DLL bump (#14829). Mesures firsthand aux deux bornes :- Structure : 28 cellules code avant/après, 28/28 avec outputs,
execution_count1-28 continus. - Contenu : cellules échantillonnées (5/14/27) byte-identiques au parent — même verdict solver (« Optimisation (dichotomie) : cout minimum = 7,50 EUR, résultat = SATISFIABLE »), même stub d'exercice ; la médiane réelle des longueurs de sortie est en HAUSSE (93 → 236,5 caractères) — des cellules ont gagné du contenu (comportement DLL nouveau), aucune n'en a perdu.
- Prémisse « non-substantiel » fausse : un commit de re-exécution après bump de DLL est précisément l'événement légitime qui change la signature des sorties.
FP confirmé — même famille que les FP D5 des tranches précédentes : le détecteur classifie « chore/reexecute » comme non-substantiel alors que c'est un événement d'exécution documenté.
Verdict de la tranche
0 finding confirmé sur 8 carnets. Couverture cumulée 10e famille : 50/233 (21 %) — dont Z3-Linq2Z3 12/18, Z3-API 3/29.
Portée non vérifiée
- Z3-Linq2Z3 : 6 restants (01, 02, 04, 10, 13, 15, 16, 17 selon couverture cumulée tranches 10/10-bis — l'attribution exacte des 2 picks non nommés de la tranche 10 reste à caler).
- Z3-API : 26 restants. SmartContracts : 25. Les 5 strates de la 10-ter : ~134 restants.
Grain : MED/research-code — lane myia-po-2025:CoursIA — prev: MED/research-code #20298 inventaire graines (c.6106514103)
- Structure : 28 cellules code avant/après, 28/28 avec outputs,
[RELEASED] lane myia-po-2025:CoursIA -- paths: MyIA.AI.Notebooks/SymbolicAI/SMT/** -- tranche 10-quater livree (rapport c.6106677217, 8 carnets, 0 finding confirme, couverture 50/233)
[CLAIMED] lane myia-po-2025:CoursIA -- paths: scripts/notebook_tools/scan_d1_d3_d4_d5.py, scripts/notebook_tools/tests/test_scan_d1_d3_d4_d5.py -- fix detecteur D5 : categorie D5-EXEC pour les sauts sous commits documentant leur propre re-execution (famille de 4 FP re-verifies ce jour, tranches 10 a 10-quater)
[RELEASED] PR #20343 — fix detecteur D5 : categorie D5-EXEC (sauts sous commits documentant leur propre re-execution, famille des 4 FP re-verifies ce jour). Tests 76 passed, controles reels : 06_Meal_Planner D5+->D5-EXEC+ (exit 1->0), SAIN non regresse, residuel Argumentation-08b assume et documente dans le body. Grain MED/guard.
> État mesuré au 2026-10-04 — §5.1 est TERMINÉ, ce qui reste est gaté ou à arbitrage
Passe de confrontation body-vs-réel (lane
myia-po-2025:CoursIA, cycle c.5) — le §5 ci-dessous date du 2026-09-02 ; trois de ses quatre prémisses ont depuis été résolues. Mesure du jour, firsthand :scan_d2_window_openness.py(aide d'investigation ponctuelle, conformément à l'arbitrage du 09-02 — pas un gate) sur worktree propre àorigin/main=987dd4f187, corpus 1592 fichiers : D2+ = 1 (0,06 %), et ce candidat unique est le FP déjà documenté au 09-02 (QuantConnect/Python/research/research_classification.ipynb,SetStartDateen cellule 39 sous l'en-tête# CODE A COPIER DANS main.py— re-verifié 09-27 au SHA491f1deb73, inchangé).7de14792c, orphelin nommé =0,6875). Aucune reprise détecteur sans ce test.Ce qui reste réellement ouvert, et sa porte :
CSharp-BTC-MACD-ADX/research_robustness.ipynb(métriques cloud Sharpe 0.246/0.843, backtests9ae0a35b/85a1ef0eattribuées par identifiant, ancrées dans aucune sortie du carnet) — suivi reporté par ai-01 le 2026-09-27T18:56Z : à faire avec le walk-forward cloud ci-dessus, pas séparément.Les trois interdits du corps restent en vigueur. Aucune fermeture revendiquée par cette passe — la fermeture de l'Epic relève du coordinateur.
Portée de ce qui n'a pas été vérifié : la dette D1/D3/D4/D5 n'a pas été re-mesurée ce jour (seule D2 l'a été) ; les tranches livrées sont vérifiées par leurs marqueurs
[DELIVERED]/PRs mergées, pas re-exécutées.Corps du 2026-09-02 conservé intégralement ci-dessous.
État au 2026-09-02 — Phase 0 est terminée, son critère de sortie est atteint, et il tranche : Phase 1/2 abandonnées, Phase 3 seule suite
Passe de curation coordinateur (défaut #13906) + arbitrage de la demande de
myia-po-2023:CoursIA-2du 2026-09-02T02:01Z, qui recommandait de ne pas construire le détecteur D2. La recommandation est acceptée, et étendue : la mesure faite ce matin montre que le problème n'est pas propre à D2.Surface livrée : 46 PRs mergées citent cet Epic, 17 citent sa fille #9790, zéro ouverte. Six familles ont reçu une tranche Phase 0 (ICT/IIT, QuantConnect, Search/CSP, Probas, GameTheory, Sudoku), plus une mesure D2 full-corpus. Le corpus est passé de 963 notebooks vivants à l'ouverture à 1221 aujourd'hui.
1. Le taux de dégénérescence — critère de sortie n°1, mesuré
Phase 0 devait rendre « un taux de dégénérescence chiffré par bande + la distribution des mécanismes ». Le voici, agrégé sur les six tranches, en ne comptant que ce qui a été vérifié firsthand (lecture de la cellule citée), jamais le brut du détecteur :
Cinq familles sur six rendent zéro. Les seuls vrais positifs de tout l'Epic sont les 4 cas D5 de la famille ICT/IIT — et ils ont été trouvés en lisant les notebooks, pas par un détecteur : trois étaient déjà corrigés par des PRs antérieures (#8453, #8511, #9776), le quatrième est le cas-graine de #9790 (#9416).
L'intuition fondatrice (« il suffit d'une coquille au milieu de dizaines de révisions pour que le notebook dégénère ») était juste comme risque et fausse comme fréquence : le corpus ne porte pas de dégénérescence numérique de masse. C'est un résultat, pas un échec — c'est exactement ce que la Phase 0 était chartée pour établir.
2. Le critère de sortie n°2 — et il condamne l'instrument, pas le corpus
La distribution des mécanismes ne peut pas être lue depuis les détecteurs, parce que les détecteurs ne discriminent pas. Trois mesures indépendantes, toutes faites aujourd'hui :
(a) D5 sur le corpus entier —
scan_d5_prose_outputs_alignment.pysurmainà l'instant :Un détecteur qui signale trois notebooks sur quatre, dans toutes les familles, entre 65 % et 92 %, ne mesure pas une propriété du corpus : il mesure sa propre définition. Les numéros de section (« ## Partie 1 », « ### Exercice 2 », « 5x5 ») dominent.
(b) La contre-épreuve de #9790 est verte à la lettre — et ne prouve pas ce qu'on lui fait dire. Le corps de #9790 avait écrit le garde-fou lui-même : « le détecteur v3 doit re-signaler l'état pré-
7de14792cdeICT-1. S'il ne le retrouve pas, c'est le détecteur qui est faux, pas le corpus qui est sain. » Il le fait, et l'acceptance publiée le 2026-08-07 parmyia-po-2025était exacte : la révision pré-fix sort bien unMISSING_FROM_PROSE_ENUMERATIONsurcell[24], avecprose_number=2.0— précisément la valeur citée à l'époque. Cette mesure n'est pas en cause.Ce que la contre-épreuve ne demandait pas, c'est ce qui se passe de l'autre côté du correctif.
(c) Le test décisif — le détecteur ne sépare pas l'état cassé de l'état réparé. Même notebook, deux révisions,
7de14792centre les deux, sortie JSON verbatim :ENUMERATIONprose_numberclosest_output_numbercell[24]2.01.2"## Conclusion"cell[24]3.014.0"## Conclusion"Le finding survit intact à la réparation du défaut qu'il est censé détecter : même total, même catégorie, même cellule — celle-là même que le correctif a modifiée. Et ni d'un côté ni de l'autre il ne nomme
0,6875, la valeur dont l'omission est le défaut ; il nomme1,2puis14,0. Son ancre de prose est"## Conclusion"— une ligne de titre, cohérent avec les 80,4 % du §2(a).Une épreuve qui rend le même verdict sur l'état cassé et sur l'état réparé ne certifie ni l'un ni l'autre. C'est le piège du contrôle d'identité : la référence existe — le bon fichier, la bonne cellule, la bonne catégorie — et elle ne vérifie rien de ce que l'on en conclut.
Cause mécanique, lue dans le code (tour 2 de
scan_d5_prose_outputs_alignment.py) :output_valsest notebook-wide, et l'orphelin est choisi par distance relative maximale, pas par « quel niveau de l'énumération est absent ».0,6875est proche de0,19comme de1,875: il ne gagne jamais le maximum, donc il n'est jamais nommé — qu'il soit cité par la prose ou non. Le détecteur sait dire qu'il manque quelque chose ; il ne sait pas dire quoi — et sur ce corpus il le dit de 917 notebooks.Hypothèse testée et réfutée, consignée pour qu'elle ne soit pas re-tentée : j'ai d'abord soupçonné le filtre
_LATEX_MATH_SPAN_RE(#9957) — la prose d'ICT-1 écrit ses nombres en LaTeX. Contrôle positif : même notebook, LaTeX retiré decell[24]. Le cas ne réapparaît pas (20 puis 13 findings, toujours 0 sur0,6875). Le filtre de précision n'est pas la cause.3. Ce que le mode de défaillance a d'instructif — et pourquoi il a coûté six tranches
myia-po-2023l'a nommé exactement ce matin, et sa formulation vaut d'être conservée : une lacune d'antidote ne produit pas un silence, elle produit un faux positif. Elle rend donc un nombre plus grand et plus alarmant, qui ressemble à une découverte. Sa passe D2 est allée de 209 candidats (17,2 %) à 16 (1,3 %) en quatre corrections trouvées à la main — 13x — et le détecteur n'a jamais signalé une seule de ses propres lacunes.C'est la symétrie de ce que
anti-regression.mddit du comptage desorry— un motif se valide par ses faux négatifs, pas par ses hits — avec un tour de plus : ici le faux négatif est dans l'antidote, donc il remonte en faux positif dans le verdict. Le durcissement successif du détecteur v3 (#9836, #9957, #10189, #12633, #12835) a été validé à chaque fois par ce qu'il retirait, jamais en re-posant la question que la contre-épreuve ne posait pas : et sur le notebook réparé, que dit-il ? Personne n'a manqué de rigueur — la question n'était pas dans le protocole, donc rien n'a rougi.4. Arbitrage — ce qui est décidé, pas déféré
scan_*.pyrestent surmaincomme aides d'investigation ponctuelle ; ils ne sont pas promus.Interdits qui accompagnent la décision — sans eux l'abandon ne tient pas :
scan_*.pyne devient un gate CI, ni bloquant ni advisory. Un advisory à 75 % de positifs apprend à être ignoré, puis masque le jour où il aurait raison.variation-protocol.md, litmus LIGHT).7de14792c, l'orphelin nommé valant0,6875. Tant que ce test échoue, l'instrument ne mesure pas ce que l'Epic cherche. Le test et sa cause mécanique sont écrits dans scan_d5_prose_outputs_alignment.py ne discrimine pas l'etat casse de l'etat repare — dette d'instrument issue de la cloture Phase 0 de #9768 #14222.5. Ce qui reste, dans l'ordre où une lane devrait le prendre
SetEndDate+ ré-exécution. Liste dans le commentaire du 2026-09-02T02:01Z.tooling). Ce n'est pas un pré-requis de la Phase 3 — c'est la dette de l'instrument, à traiter ou à archiver explicitement.period=35 win=60 pct=15/85fait 30 ordres au lieu de 50 et 56,3 % de drawdown au lieu de 72,7 %. Signature de sélectivité, à instruire comme question de robustesse — jamais à committer comme paramètre (règle C : walk-forward + multi-seed obligatoires).Corps d'origine conservé intégralement ci-dessous (2026-08-06 + addendum 2026-08-07). L'Exhibit A
CSharp-BTC-MACD-ADX, le dimensionnement des 16 404 instantanés et la taxonomie D1-D6 restent exacts et fondent la décision ci-dessus ; seul l'état des phases avait dérivé.Le constat
Le travail de révision des over-claims est salutaire et doit continuer. Mais il produit des verdicts (
NO-BEATS,CAUSE_DOCUMENTED_ONLY, réalignements de prose) qui constatent un écart sans jamais expliquer d'où il vient. Cet Epic ajoute la moitié manquante : le forensic d'historique qui dit quand et par quel commit un artefact a divergé de ce qu'il annonce.Cadrage méthodologique imposé : commencer par un échantillon pour évaluer l'ampleur réelle et le taux prévisionnel de dégénérescence, puis suivre l'Epic dans le temps. Pas de rollout aveugle sur 963 notebooks.
Exhibit A — le cas-graine #9754, entièrement remonté
La PR #9754 conclut
NO-BEATSsurCSharp-BTC-MACD-ADX(Sharpe 0.123) alors que le catalogue affiche 0.787 et qu'un souvenir situe un « Sharpe correct avec un modèle de frais Binance ». Le forensic tranche, et il donne raison au souvenir tout en déplaçant la cause.Ce que l'historique git établit
SetBrokerageModel(BrokerageName.Binance, AccountType.Cash)dans647b12e35(2026-02-13) et dans toutes les révisions suivantes. Il n'a jamais été retiré.ESGF-2026/examples/…/Main.cs→projects/…/Main.csen98cb71299(2026-03-21, « remove duplicates »), rename à 100 %.git logsans--followperd tout l'historique antérieur.140 / 6 / 86(v0) → approche remplacée (256d7f10e) →80 / 5 / 85(3c82e12b5, « restore MACD+ADX with optimized parameters ») →40 / 10 / 90(e9bbcbbb5, « Sharpe 0.267 attendu »). Le commit « restore » n'a pas restauré les paramètres d'origine.SetStartDate(2021,04,09)(v0) →SetStartDate(2019,4,1)encbc5e3636(« extend backtest periods »). Changement assumé et documenté.SetEndDateactifCe que QC Cloud établit (source autoritative, lue firsthand)
30751067n'est pas un backtest : c'est le projet, et il contient 8 backtests lancés en 18 minutes le 2026-04-27 — un balayage de paramètres :BTC-MACD-ADX Baseline(= paramètres committés)period=35 win=60 pct=15/85(8ᵉ run du balayage)Le verdict
Rien n'a jamais été cassé. Le
0.787du catalogue est réel, il inclut bien les frais Binance — mais c'est le maximum d'un balayage à 8 variantes, et les paramètres gagnants (adx-period=35, adx-window=60, percentiles 15/85) n'ont jamais été réécrits dansMain.cs. Le code committé valait 0.225 le jour même où le catalogue a enregistré 0.787 : un facteur 3,5× entre le nombre publié et le code publié, le même jour, sur les mêmes données.Et l'écart 0.225 → 0.123 entre avril et août n'est pas une dégénérescence non plus : c'est la fenêtre ouverte qui a absorbé 101 jours de bourse supplémentaires (2583 → 2684 jours négociables, 50 → 52 ordres, MaxDD identique à 72.700 %). Le même code rend un nombre différent chaque mois.
La conclusion
NO-BEATSde #9754 est donc correcte et doit être mergée. Ce qui manquait, c'est que le 0.787 n'a jamais décrit ce dépôt.Taxonomie des mécanismes (dérivée de l'Exhibit A, à valider sur l'échantillon)
HEAD; il se reproduit depuis une variante non-trackéeSetEndDateabsent ·random_stateabsent · dataset « latest »restore/revert/rollback+ valeurs numériques ≠ celles d'avant la pertegit log -S "<nombre>"pointe alors le déménagement, pas la mesure-Ssur la valeur pointant un commitchore/reorganizeLe détecteur mécanique
Ce qui est calculable depuis git seul, sans réexécuter quoi que ce soit — c'est ce qui rend l'Epic finançable :
git log --follow, le--follown'est pas optionnel : D4 le prouve).docs,chore,refactor,style,fix compilation,reorganize).Un saut numérique sous un commit qui prétend ne rien changer est la définition opérationnelle de la dégénérescence recherchée.
Dimensionnement (mesuré, pas estimé)
49 % du corpus vivant a ≥10 révisions, 28 % en a ≥20. L'intuition « des dizaines de révisions » est vérifiée sur la moitié du corpus, et la surface forensic totale est de ~16 400 instantanés.
Phase 0 — échantillon (le seul travail autorisé avant réévaluation)
Objectif : estimer le taux de dégénérescence et la part de chaque mécanisme D1-D6, pour décider si la suite vaut son coût.
20-39et40+(là où le risque se concentre), et couvrant ≥4 familles distinctes (QC, GenAI, Search/CSP, Probas/Infer, SymbolicAI) — pas un mono-thème.SAIN/D1..D6/INDÉTERMINÉ, avec le SHA du commit incriminé cité. Un verdict sans SHA ne compte pas.Phases suivantes (à re-cadrer après Phase 0, ne pas démarrer avant)
scripts/notebook_tools/(jamais un script ad-hoc à la racine).40+puis20-39en priorité.Garde-fous
audit-cross-source-distillation.mdrègle HARD 1).period=35/win=60/pct=15/85rende 0.787 n'autorise pas à le committer : maximum d'un balayage sur une fenêtre unique, sans walk-forward ni multi-seed = surapprentissage jusqu'à preuve du contraire (règle C depr-review-discipline.md). Si quelqu'un veut le valider, c'est une issue séparée avec le protocole complet.See #1621 · seed #9754
Addendum (mandat user, 2026-08-07) — une dérive « justifiée » n'est pas un classement sans suite
Tel que rédigé ci-dessus, l'Epic avait un défaut : il traitait
D2(fenêtre non figée) comme un artefact de comptabilité — « le nombre s'est périmé tout seul, personne n'est fautif, dossier clos ». C'est faux, et le cas-graine le montre lui-même.Quand une stratégie rend 0.225 → 0.123 parce qu'on lui ajoute 3,4 mois, elle ne fait pas que « vieillir » : elle a rendu 28,69 % → 0,274 % de profit net sur ces 101 jours. Le verdict honnête n'est donc pas « la fenêtre a bougé », c'est « l'edge était concentré et non-stationnaire » — et ça, c'est une information de robustesse, actionnable.
Règle ajoutée : tout verdict
D2(et plus généralement toute dérive jugée « justifiée ») ouvre une sous-question de robustesse au lieu de fermer le dossier :period=35 win=60 pct=15/85fait 30 ordres au lieu de 50 et 56,3 % de drawdown au lieu de 72,7 %. C'est une signature de sélectivité, pas seulement de performance — et c'est précisément le genre de signal qu'un classement « surapprentissage, écarté » aurait jeté avec l'eau du bain.Ce que ça ne change pas : les paramètres candidats restent des hypothèses, pas des livrables. Ils ne se committent qu'après walk-forward multi-régimes + multi-seed là où il y a du stochastique + sensibilité aux coûts (règle C). L'addendum ouvre une question, il ne pré-autorise aucun merge.
Ce que ça change : la Phase 0 doit produire, à côté du taux de dégénérescence, un compte des cas où la dérive justifiée cache une fragilité de régime. Si cette proportion est élevée, la valeur de l'Epic n'est plus seulement d'assainir des nombres — c'est de désigner les stratégies et notebooks à durcir.