Skip to content

[EPIC] Derive de degenerescence des notebooks a travers leurs revisions — forensic d'historique git #9768

Description

@jsboige

> É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, SetStartDate en cellule 39 sous l'en-tête # CODE A COPIER DANS main.py — re-verifié 09-27 au SHA 491f1deb73, inchangé).

Item du §5 Ce que le body dit (09-02) Ce qui est mesuré maintenant Preuve
1. Phase 3 — figer les fenêtres des ~16 D2 À faire, une famille à la fois TERMINÉ — classe D2 éteinte sur main. Toutes les cibles réelles livrées : #9837 (BTC-MACD-ADX), #15098 (QC-Py-30), #15509 (DL-LSTM quantbook), #15797 (SL-12), #16117 (RL-Trading), #16644 (fenêtre OOS DL-LSTM), #17220 (EMA-Cross, dernier résiduel), #14744 (ucr_anomaly). Résidu mesuré : 2 au 09-21, 1/1540 au 09-27 (po-2023), 1/1592 au 10-04 (ce jour) — toujours le même FP. PRs mergées + mesures datées en commentaires
2. #14222 — dette d'instrument Suivi nommé INCHANGÉ, toujours gaté sur le test de discrimination du §2(c) (verdict différent pré/post 7de14792c, orphelin nommé = 0,6875). Aucune reprise détecteur sans ce test. #14222
3. Addendum robustesse (variante 35/60/15-85) Vivant, non couvert INSTRUIT — #18012 (27/09), verdict INCONCLUSIF : domination cloud reproduite (Sharpe 0.843 vs 0.246), walk-forward local inversé — la divergence des moteurs est le finding réel. Paramètres NON committés (règle C tenue). #18012

Ce qui reste réellement ouvert, et sa porte :

  1. Walk-forward sur le moteur cloud (~30 backtests, deux configs figées par fenêtre) — laissé ouvert à arbitrage budgétaire par feat(qc,#9768): selectivite de la variante 35/60/15-85 -- verdict INCONCLUSIF, divergence moteurs documentee #18012. Porte : décision coordinateur/user.
  2. Annexe d'ancrage du tableau 8.3 de CSharp-BTC-MACD-ADX/research_robustness.ipynb (métriques cloud Sharpe 0.246/0.843, backtests 9ae0a35b/85a1ef0e attribué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.
  3. 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 — gaté sur le test de discrimination (interdit du corps, inchangé).

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-2 du 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 :

Tranche Population Findings bruts Vrais positifs Mécanismes
ICT/IIT (#9787) 9 stratifiés — 4 D5 x4 (ICT-1, ICT-14, ICT-15b x3)
QuantConnect (#9772) échantillon — 1 (cas-graine #9754) D2
Search/CSP (c.1267) ~10 stratifiés — 0 —
Probas 30 stratifiés 25 D1+ 0 25/25 FP (instrument)
GameTheory 77 37 D1+ 0 37/37 FP (instrument)
Sudoku 37 310 0 278 in-scope, 278 FP
D2 statique (2026-09-02) 1217 209 puis 16 ~2 confirmés D2, résidu 69 % QC

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.py sur main à l'instant :

1221 notebooks — 917 avec >= 1 finding (75,1 %) — 9207 findings
  MISSING_FROM_OUTPUTS 8909 · MISSING_FROM_PROSE_ENUMERATION 298
  80,4 % des findings ont pour ancre une ligne de TITRE markdown
famille notebooks touchés findings
QuantConnect 220 65 % 3330
SymbolicAI 263 76 % 1599
GenAI 223 73 % 1210
ML · Probas · IIT · Sudoku · RL 271 82-92 % 2009

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é-7de14792c de ICT-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 par myia-po-2025 était exacte : la révision pré-fix sort bien un MISSING_FROM_PROSE_ENUMERATION sur cell[24], avec prose_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, 7de14792c entre les deux, sortie JSON verbatim :

révision findings ENUMERATION cellule prose_number closest_output_number ancre
pré-fix (défaut présent) 20 1 cell[24] 2.0 1.2 "## Conclusion"
post-fix (défaut corrigé) 20 1 cell[24] 3.0 14.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 nomme 1,2 puis 14,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_vals est notebook-wide, et l'orphelin est choisi par distance relative maximale, pas par « quel niveau de l'énumération est absent ». 0,6875 est proche de 0,19 comme de 1,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é de cell[24]. Le cas ne réapparaît pas (20 puis 13 findings, toujours 0 sur 0,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-2023 l'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.md dit du comptage de sorry — 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é

Phase Décision
Phase 0 TERMINÉE, critère de sortie atteint. Six tranches + mesure D2 + mesure D5 corpus.
Phase 1 (outiller le détecteur) ABANDONNÉE. Les trois scan_*.py restent sur main comme aides d'investigation ponctuelle ; ils ne sont pas promus.
Phase 2 (balayer 40+ puis 20-39) ABANDONNÉE. Balayer avec un instrument à 75 % de positifs consomme les lanes en triage de FP — c'est ce qu'ont fait Probas, GameTheory et Sudoku pour rendre 0.
Phase 3 (figer les fenêtres, D2) SEULE SUITE RETENUE. Correctif structurel, ne demande aucun détecteur : ~16 notebooks nommés, 69 % en QuantConnect. Poser une graine et une date de fin supprime la classe sans avoir à décider notebook par notebook si le nombre a dérivé.

Interdits qui accompagnent la décision — sans eux l'abandon ne tient pas :

  • Aucun des trois scan_*.py ne devient un gate CI, ni bloquant ni advisory. Un advisory à 75 % de positifs apprend à être ignoré, puis masque le jour où il aurait raison.
  • Aucun rollout de balayage fondé sur leur sortie brute. Un ticket qui dit « N findings à traiter sur la famille X » n'est pas un grain : c'est du triage de FP déguisé en contenu (cf variation-protocol.md, litmus LIGHT).
  • Condition de reprise, écrite pour être vérifiable : quiconque veut relancer une phase détecteur doit d'abord faire passer le test de discrimination du §2(c) — verdict différent entre pré et post 7de14792c, l'orphelin nommé valant 0,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

  1. Phase 3 — figer les fenêtres des ~16 notebooks D2 (11 QuantConnect, 3 SymbolicAI, 1 GenAI, 1 ML). Grain de contenu, une famille à la fois : graine explicite + SetEndDate + ré-exécution. Liste dans le commentaire du 2026-09-02T02:01Z.
  2. La non-discrimination du détecteur v3 part en suivi nommé : 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 (dette d'instrument, grain tooling). Ce n'est pas un pré-requis de la Phase 3 — c'est la dette de l'instrument, à traiter ou à archiver explicitement.
  3. L'addendum robustesse du 2026-08-07 reste vivant et non couvert : sur le cas-graine, la variante period=35 win=60 pct=15/85 fait 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

« Tous les notebooks ont des dizaines de révisions à leur actif, et il suffit d'une coquille au milieu de ça pour que le notebook dégénère complètement sans qu'on ne comprenne bien pourquoi. »

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-BEATS sur CSharp-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

Fait Preuve
Le modèle de frais Binance est présent depuis le premier commit SetBrokerageModel(BrokerageName.Binance, AccountType.Cash) dans 647b12e35 (2026-02-13) et dans toutes les révisions suivantes. Il n'a jamais été retiré.
Le fichier a changé de chemin ESGF-2026/examples/…/Main.cs → projects/…/Main.cs en 98cb71299 (2026-03-21, « remove duplicates »), rename à 100 %. git log sans --follow perd tout l'historique antérieur.
Les paramètres ont bougé trois fois 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.
La fenêtre de mesure a bougé une fois, délibérément SetStartDate(2021,04,09) (v0) → SetStartDate(2019,4,1) en cbc5e3636 (« extend backtest periods »). Changement assumé et documenté.
Il n'y a aucun SetEndDate actif La fenêtre se termine « aujourd'hui » et s'allonge à chaque exécution.

Ce que QC Cloud établit (source autoritative, lue firsthand)

30751067 n'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 :

Backtest Sharpe CAGR MaxDD Ordres PSR
BTC-MACD-ADX Baseline (= paramètres committés) 0.225 3.63 % 72.70 % 50 2.88 %
period=35 win=60 pct=15/85 (8ᵉ run du balayage) 0.787 24.77 % 56.30 % 30 24.25 %
Backtest frais 2026-08-06 (projet 34901074, mêmes paramètres committés) 0.123 0.04 % 72.70 % 52 0.81 %

Le verdict

Rien n'a jamais été cassé. Le 0.787 du 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 dans Main.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-BEATS de #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)

# Mécanisme Signature détectable
D1 Provenance orpheline — le nombre publié vient d'un run dont les paramètres n'ont jamais été committés (max de balayage, variante locale, notebook de recherche) Le nombre ne se reproduit pas depuis HEAD ; il se reproduit depuis une variante non-trackée
D2 Fenêtre non figée — pas de date de fin, pas de seed, pas de version de données épinglée : le nombre se périme par construction SetEndDate absent · random_state absent · dataset « latest »
D3 Restauration partielle — un commit « restore X » rétablit l'approche mais pas les paramètres Message restore/revert/rollback + valeurs numériques ≠ celles d'avant la perte
D4 Réorganisation qui déplace le nombre — un commit de rangement transporte une valeur hors de son contexte de mesure ; git log -S "<nombre>" pointe alors le déménagement, pas la mesure Rename/move + -S sur la valeur pointant un commit chore/reorganize
D5 Coquille silencieuse — un caractère (signe, indice, seuil) qui ne lève aucune exception et dégrade le résultat Delta numérique important sur un diff de source minuscule
D6 Alignement à l'envers — la prose est réalignée sur un output qui avait lui-même dérivé Déjà couvert par la règle C.4 / #8364 — ne pas réinventer, seulement compter

Le 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 :

  1. Pour chaque notebook, parcourir ses révisions (git log --follow, le --follow n'est pas optionnel : D4 le prouve).
  2. À chaque révision, extraire les nombres des sorties committées (règle C.2 : les outputs sont dans le fichier — c'est précisément ce qui rend ce forensic possible ici alors qu'il serait impossible sur un dépôt qui strippe les sorties).
  3. Construire la série temporelle de chaque nombre-clé et flaguer les sauts dont le commit associé se réclame d'un changement non substantiel (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é)

chemins .ipynb distincts vus dans l'historique : 1592
total (révision x fichier)                     : 16404
dont encore présents sur le disque             :  963
Révisions Notebooks vivants Part
1 27 3 %
2-4 188 20 %
5-9 280 29 %
10-19 200 21 %
20-39 228 24 %
40+ 40 4 %

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.

  • Échantillon : 30 notebooks stratifiés sur les six bandes ci-dessus, sur-échantillonnés dans 20-39 et 40+ (là où le risque se concentre), et couvrant ≥4 familles distinctes (QC, GenAI, Search/CSP, Probas/Infer, SymbolicAI) — pas un mono-thème.
  • Par notebook : appliquer le détecteur, produire un verdict parmi SAIN / D1..D6 / INDÉTERMINÉ, avec le SHA du commit incriminé cité. Un verdict sans SHA ne compte pas.
  • Critère de sortie : un taux de dégénérescence chiffré par bande de révisions + la distribution des mécanismes + une estimation du coût par notebook. Publié sur le dashboard, pas dans le dépôt.

Phases suivantes (à re-cadrer après Phase 0, ne pas démarrer avant)

  • Phase 1 — outiller le détecteur dans scripts/notebook_tools/ (jamais un script ad-hoc à la racine).
  • Phase 2 — passer les bandes 40+ puis 20-39 en priorité.
  • Phase 3 — remonter en amont : figer les fenêtres (D2) est un correctif structurel qui supprime une classe entière, bien plus rentable que corriger les nombres un par un.

Garde-fous

  • Aucun rapport committé. Les sorties d'audit vont sur le dashboard, les findings actionnables deviennent des issues filles (audit-cross-source-distillation.md règle HARD 1).
  • Pas de re-tuning opportuniste. Le fait que period=35/win=60/pct=15/85 rende 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 de pr-review-discipline.md). Si quelqu'un veut le valider, c'est une issue séparée avec le protocole complet.
  • Un verdict de dégénérescence n'est pas un verdict de faute. L'Exhibit A ne désigne aucun coupable : personne n'a rien cassé, un nombre a simplement été enregistré depuis un artefact voisin.

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 :

  1. L'edge est-il concentré dans le temps ? Découper la fenêtre en sous-périodes et regarder si le résultat tient hors du régime qui l'a produit, plutôt que de constater l'agrégat.
  2. Les variantes du balayage disent-elles autre chose que « plus de Sharpe » ? Sur le cas-graine, la variante period=35 win=60 pct=15/85 fait 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.
  3. Le paramètre est-il un point ou un plateau ? Un optimum isolé est du surapprentissage ; un plateau large est de la robustesse. La distinction se lit dans le balayage déjà exécuté, sans un backtest de plus.

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.

Activity

  1. added 6 commits that reference this issue on Aug 7, 2026
  2. jsboige commented on Aug 7, 2026

    @jsboige
    OwnerAuthor

    [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-forensic sur feature/c1264-9768-ict-forensic depuis 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.

  3. jsboige commented on Aug 7, 2026

    @jsboige
    OwnerAuthor

    [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

  4. added 2 commits that reference this issue on Aug 7, 2026
  5. jsboige commented on Aug 7, 2026

    @jsboige
    OwnerAuthor

    [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) (commit a7b380383, +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.

  6. added a commit that references this issue on Aug 7, 2026
  7. jsboige commented on Aug 7, 2026

    @jsboige
    OwnerAuthor

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

  8. jsboige commented on Aug 7, 2026

    @jsboige
    OwnerAuthor

    @-

  9. added a commit that references this issue on Aug 7, 2026
  10. 113 remaining items

  11. jsboige commented on Oct 11, 2026

    @jsboige
    OwnerAuthor

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

  12. jsboige commented on Oct 11, 2026

    @jsboige
    OwnerAuthor

    [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

  13. jsboige commented on Oct 11, 2026

    @jsboige
    OwnerAuthor

    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/ hors Lean/** 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 --follow du 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 papermill end_time 2026-05-25 (périmées), 14/16 cellules code avec outputs.
    • Au restore 77050d016b (02/06) : papermill end_time 2026-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 depuis 030fc8b2 (196 retours à la ligne) ; à 77050d016b elle 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 le 77050d016b re-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).

  14. jsboige commented on Oct 11, 2026

    @jsboige
    OwnerAuthor

    [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

  15. jsboige commented on Oct 11, 2026

    @jsboige
    OwnerAuthor

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

  16. jsboige commented on Oct 11, 2026

    @jsboige
    OwnerAuthor

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

  17. jsboige commented on Oct 11, 2026

    @jsboige
    OwnerAuthor

    [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

  18. jsboige commented on Oct 11, 2026

    @jsboige
    OwnerAuthor

    [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

  19. jsboige commented on Oct 11, 2026

    @jsboige
    OwnerAuthor

    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_count 1-9 continus.
    • Re-exécution prouvée : métadonnées papermill end_time 2026-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.Run INFO 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

  20. jsboige commented on Oct 11, 2026

    @jsboige
    OwnerAuthor

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

  21. jsboige commented on Oct 11, 2026

    @jsboige
    OwnerAuthor

    [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

  22. jsboige commented on Oct 11, 2026

    @jsboige
    OwnerAuthor

    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 est chore(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_count 1-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)

  23. jsboige commented on Oct 11, 2026

    @jsboige
    OwnerAuthor

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

  24. jsboige commented on Oct 11, 2026

    @jsboige
    OwnerAuthor

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

  25. jsboige commented on Oct 11, 2026

    @jsboige
    OwnerAuthor

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions