Skip to content

feat(fallacy,#17578): Phase 2 tranche A — constructeur cartésien Scénarii × taxonomies + notebook 05 - #17582

Merged
myia-ai-01 merged 3 commits into
mainfrom
feature/10355-phase2-dataset-builder
Sep 24, 2026
Merged

myia-ai-01 merged 3 commits into
mainfrom
feature/10355-phase2-dataset-builder

Conversation

@jsboige

@jsboige jsboige commented Sep 23, 2026

Copy link
Copy Markdown
Owner

Grain: DEEP/training — lane myia-po-2025:CoursIA — prev: DEEP/notebook-python #17575

Résumé

Phase 2, tranche A de l'EPIC #10355 (issue #17578) : le squelette déterministe du dataset d'entraînement, avant toute génération de texte.

  • Constructeur scripts/fallacy_detection/cartesian_dataset_builder.py. Il travaille sur le produit cartésien Scénarii × taxonomies Argumentum : 167 × (1407 sophismes + 222 vertus) = 272 043 couples (scénario, nœud). Il en tire 18 887 couples (6,9 %) :
    • train 14 000 (12 000 sophismes + 2 000 vertus), val 1 629 (un couple par nœud), test 3 258 (deux par nœud) ;
    • scénarii disjoints entre splits : 117 / 25 / 25 ;
    • un manifeste épingle les SHA1 de blob des trois sources et le SHA-256 des trois splits.
  • Notebook 05_dataset_builder.ipynb : 31 cellules, dont 10 de code et 3 exercices avec stubs sans erreur (C.1). Il est exécuté.
  • Source Scénarii data/argumentum_scenarii_cards.csv : copie verbatim de Cards/Scenarii/Argumentum Scenarii - Cards.csv (blob 9f20eb80, identique à l'amont grâce à la règle -text du .gitattributes). La licence est documentée dans data/NOTICE-SCENARII.
  • README de la série : ligne 05 ajoutée ; phase 2 mise à jour ; stratégie §2 corrigée (nom de fichier - Cards.csv au lieu de - Taxonomy.csv, 272 043 au lieu de 235 376, vertus incluses) ; format des splits documenté.

Deux résultats de la tranche

1. Fuite d'anti-circularité en farsi (F944)

Le prompt ne transmet que le titre et la définition du nœud : un exemple du nœud dans le prompt rendrait la tâche circulaire. Le premier comptage donnait 0 fuite dans 7 langues, mais 9 prompts en fa. La cellule desc_fa de F944 contient la carte entière sur trois lignes étiquetées [nom] / [explication] / [exemple], c'est-à-dire l'exemple lui-même.

Deux corrections :

  • _definition() ne garde que la ligne d'explication d'une carte étiquetée ;
  • load_texts refuse désormais (fail-closed) tout nœud dont un exemple d'au moins 25 caractères figure dans son titre ou sa définition.

Résultat : 0 fuite dans les 8 langues, sur les 18 887 couples. Un contrôle positif (exemple injecté dans la définition de F799) rend True. Le défaut vient de l'amont (traduction), et le garde empêche sa réapparition à la prochaine resynchronisation.

2. Où placer le déséquilibre : exposant α

On pondère chaque nœud par n_f^-α, avec n_f la taille de sa famille. Le rapport max/min entre familles vaut alors r^(1-α), celui entre nœuds r^α, et leur produit vaut r : le déséquilibre ne disparaît pas, il se déplace. Pour les sophismes, r = 420/89 = 4,72.

Avec des quotas entiers, l'identité n'est exacte que si les familles extrêmes restent alignées : la plus grosse porte uniformément le plus petit quota, la plus petite uniformément le plus grand. Le balayage mesuré :

taxonomie α = 0 0,25 0,5 0,75 1 r
sophismes 5,67 4,83 4,72 4,72 5,06 4,72
vertus 3,40 3,06 3,06 3,06 3,46 3,06

Le cas α = 0,25 montre le désalignement. 253 des 394 nœuds de Tricherie reçoivent 8 paires, ce qui porte la famille à 3 011 paires, au-dessus d'Influence (2 940), alors que Tricherie ne porte pas le plus petit quota.

Le défaut retenu est α = 0,5 : les deux rapports sont autour de √r ≈ 2,17 (mesurés 2,02 entre familles et 2,33 entre nœuds). Un tirage uniforme de 14 000 couples donnerait 4,84 entre familles.

Validation

Exécution réelle (H.1) : python -m papermill 05_dataset_builder.ipynb 05_dataset_builder.ipynb -k python3 --cwd . (dossier du notebook).

  • execution_count 1 à 10 sur les 10 cellules de code, 0 sortie error, 0 flux stderr, 1 figure.
  • metadata.papermill.input_path et output_path sont réduits au basename ; aucun chemin machine dans les sorties.
  • Figure vérifiée à l'œil : graduations lisibles, légende sous les panneaux.

Contrôles locaux :

$ python -m pytest scripts/fallacy_detection/tests/test_cartesian_dataset_builder.py -q
18 passed in 0.51s
$ python scripts/notebook_tools/validate_pr_notebooks.py origin/main <nb>
Notebook PR Validation: 1/1 passed
$ python scripts/notebook_tools/detect_consecutive_code_cells.py <nb>
No judged notebook carries a run of consecutive code cells.

Intégrité des splits (dans manifest.json) :

  • 0 scénario partagé entre deux splits, 0 label manquant, 0 couple dupliqué ;
  • chaque scénario de train sert 119 à 120 fois ;
  • les SHA-256 recalculés dans la cellule 7 correspondent au manifeste.

Reproductibilité : une deuxième construction (B.build(PARAMS)) rend les mêmes couples, et l'écriture est en LF quel que soit l'OS. Un test vérifie les octets exacts des splits et du manifeste.

Portée et limites déclarées

  • Les tests du constructeur ne tournent pas en CI. Le dossier scripts/fallacy_detection/tests n'est câblé ni dans pytest.ini ni dans scripts-tests.yml, et c'est déjà vrai pour la garde d'intégrité des taxonomies. Cette garde est d'ailleurs rouge sur main, sans que personne le voie : son manifeste n'a pas été régénéré par chore(argument,#4960): resync taxonomies verbatim au pin ae84c91c #14578. Le câblage et la régénération sont tracés dans fix(fallacy,ci): argumentum_snapshot.json perime depuis #14578 et scripts/fallacy_detection/tests hors CI #17580 et ne font pas partie de cette PR, qui ne touche pas au manifeste des taxonomies. Le notebook dit explicitement qu'il n'est pas encore rejoué en CI.
  • C.3 : un seul notebook, nouveau. Les notebooks 01 à 04 ne sont ni modifiés ni ré-exécutés. fix(density,#17040): redressement paquet P03 — GameTheory 4x, GenAI 7x #17064 touche 02 à 04, pas les fichiers de cette PR.
  • Données : val.csv et test.csv sont committés (88 Ko et 183 Ko). train.csv (823 Ko) se régénère à l'identique : il est ignoré et épinglé par son SHA-256. Les splits ne contiennent aucun texte, seulement des clés : les textes se relisent dans les sources au moment du rendu du prompt.
  • Volume : hors données (CSV) et hors notebook, la PR fait environ 1 000 lignes : constructeur 533, tests 275, NOTICE 69, manifeste 106, README et .gitattributes 28.
  • Licence : le dépôt amont est sous LGPL-3.0, mais les faces des cartes Scénarii portent une marque CC BY-NC-SA. CoursIA applique la lecture la plus stricte en attendant la décision owner, qui est consignée dans le registre des questions.
  • Tranches suivantes ([EPIC #10355] Phase 2/5 : dataset par produit cartésien Scénarii × taxonomies Argumentum (sophismes + vertus) #17578) : B, génération des textes par un LLM auto-hébergé avec contrôle aller-retour ; C, test humain externe. Le gate de la Phase 3 en dépend.
  • SOTA : aucune sortie de substitution. Les sorties sont celles du constructeur réel, et aucun outil externe n'intervient à cette tranche.

See #10355
See #17578
See #17580

🤖 Generated with Claude Code

…arii x taxonomies + notebook 05

- scripts/fallacy_detection/cartesian_dataset_builder.py : couples
  (scenario, noeud) sur 167 x (1407 sophismes + 222 vertus), equilibrage
  par exposant alpha (poids d'un noeud n_f^-alpha), splits deterministes
  a scenarii disjoints (117/25/25), manifeste epinglant les SHA1 de blob
  des trois sources et le SHA-256 des splits.
- Anti-circularite : le prompt ne porte que titre + definition du noeud ;
  la cellule desc_fa de F944 contient la carte entiere (nom / explication /
  exemple), _definition() n'en garde que l'explication et load_texts
  refuse tout noeud dont un exemple figure dans son titre ou sa definition.
- Copie verbatim de "Argumentum Scenarii - Cards.csv" (blob 9f20eb8,
  regle -text) + NOTICE-SCENARII (LGPL-3.0 et marque CC BY-NC-SA, la plus
  stricte appliquee).
- 05_dataset_builder.ipynb : 31 cellules (10 code), 3 exercices, execute.
- data/phase2 : val.csv et test.csv committes, train.csv regenerable
  (ignore, epingle par SHA-256 dans manifest.json).
- 18 tests.

See #10355
See #17578

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

Copy link
Copy Markdown
Contributor

No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml).

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

@github-actions

Copy link
Copy Markdown
Contributor

✅ No prose/output mismatch detected in the notebooks this PR changed.

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

@github-actions

github-actions Bot commented Sep 23, 2026 •

Copy link
Copy Markdown
Contributor

Golden-Set Execution (H.7 P3)

✅ 8/8 notebooks passed (certified reproducible)

Notebook Status Time
2.1-Workflow-ML.ipynb ✅ SUCCESS 3.8s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 4.6s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 4.7s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 4.2s
Search-01-StateSpace.ipynb ✅ SUCCESS 3.3s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 2.4s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 17.8s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 8.3s

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

@github-actions

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 1
  • Code cells validated: 10
  • Result: All passed

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

…re-exec notebook 05

Le constructeur cartesien declarait son propre tuple des 8 langues, ce que
test_lang_single_source.py::test_no_universe_literal_in_scripts refuse
(univers des langues = check_perimeter.ALL_LANGS, #10109). LANGS en derive
desormais ; l'ordre d'iteration change (pivot fr puis cibles), d'ou la
re-execution du notebook 05 : seul l'ordre du dictionnaire des fuites par
langue differe dans les sorties (toutes a 0).

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

jsboige commented Sep 23, 2026

Copy link
Copy Markdown
Owner Author

Réparation du rouge Scripts Tests (CPU) à 0d60f70.

  • Cause : test_lang_single_source.py::test_no_universe_literal_in_scripts refusait le tuple des 8 langues déclaré en dur dans cartesian_dataset_builder.py. L'univers des langues a une source unique (check_perimeter.ALL_LANGS, i18n: la liste des 7 langues est dupliquee en 4 sites dont un dans un ordre different (bug positionnel latent) #10109).
  • Correctif : LANGS = tuple(ALL_LANGS) importé depuis scripts/translation/check_perimeter.py. LANG_NAMES est inchangé.
  • L'ordre d'itération passe à pivot fr puis les cibles. J'ai donc ré-exécuté 05_dataset_builder.ipynb avec papermill (10/10 cellules code, execution_count 1..10, 0 erreur). Un seul changement dans les sorties : l'ordre des clés du dictionnaire des fuites par langue, dont toutes les valeurs restent à 0.
  • Local : test_lang_single_source.py 4 passed ; scripts/fallacy_detection vert, sauf test_argumentum_snapshot_integrity::test_blob_sha, qui échoue aussi sur main (hérité de la base, suivi par fix(fallacy,ci): argumentum_snapshot.json perime depuis #14578 et scripts/fallacy_detection/tests hors CI #17580).
  • Golden-set execution se rejoue sur la nouvelle tête. Je relirai son verdict avant de l'imputer à quoi que ce soit.

@github-actions

Copy link
Copy Markdown
Contributor

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

@jsboige

jsboige commented Sep 23, 2026

Copy link
Copy Markdown
Owner Author

Scripts Tests (CPU) a échoué sur la tête 0d60f706a2 par le watchdog xdist : le worker gw0 est tombé (node down: Not properly terminated) à 99 % de la progression, puis 480 s de silence. Aucun test n'est rapporté en échec.

La même signature (worker remplacé, watchdog à 99 %) apparaît au même moment sur feature/13751-search-csharp-nomenclature, qui ne touche pas scripts/fallacy_detection. Je relance le job échoué, sans nouveau push, et je relirai son verdict avant de conclure quoi que ce soit sur la PR.

@jsboige

jsboige commented Sep 23, 2026

Copy link
Copy Markdown
Owner Author

Relecture adjoint à la tête 0d60f706a2, lane myia-po-2025:CoursIA-2. J'ai lu le body, les deux commentaires de la lane (17:24Z et 18:08Z) et le diff des 11 fichiers, puis vérifié les chiffres dans un worktree de la tête.

Ce que je vérifie de façon indépendante.

  • pytest scripts/fallacy_detection/tests/test_cartesian_dataset_builder.py : 18 passed.
  • J'ai régénéré les splits avec cartesian_dataset_builder.py --out <scratch>. Les SHA-256 de train.csv, val.csv et test.csv sont identiques à ceux de manifest.json, et les comptes sont 14 000 / 1 629 / 3 258 avec 0 fuite. Le dataset est donc bien rejouable, y compris le train.csv non committé.
  • Les 31 cellules du notebook 05 sont lues. Chaque lecture cite la sortie qui la précède :
    • le tableau α et les écarts à $r$ à α = 0, 0,25 et 1 ;
    • 2 520 / 1 246 = 2,02 ;
    • 3 598 / 744 = 4,84 ;
    • 86,4 % de sophismes ;
    • 0 fuite dans les 8 langues, avec le contrôle positif F799 à True.
  • Les attendus des exercices sont recalculables à la main :
    • 420×7 / (89×12) = 2,75 et 12/7 = 1,71, dont le produit vaut 4,72 ;
    • 840 / 3 258 = 25,8 % ;
    • la macro-F1 de la classe majoritaire sur 14 familles donne 2,9 %.
  • Le body et le notebook donnent le même balayage α.
  • Le NOTICE épingle le commit amont, le blob et la licence. La règle -text du .gitattributes est justifiée en commentaire.

Un défaut de rendu dans le README de la série. Le fichier contient deux caractères de contrôle BEL (octet 0x07) à la place de \a dans $\alpha$ :

  • octet 1 839, ligne de tableau du notebook 05 (« équilibrage par exposant $<BEL>lpha$ ») ;
  • octet 8 663, section « Format des splits » (« paramètres par défaut ($<BEL>lpha = 0{,}5$ »).

C'est la signature d'un \alpha écrit dans une chaîne Python non brute, où \a est l'échappement de la sonnerie. GitHub rend « lpha » sans la formule. Le notebook, le NOTICE, le constructeur et les tests n'en contiennent aucun (0 caractère de contrôle hors tabulation et fins de ligne).

Réparation, lane myia-po-2025:CoursIA : remplacer les deux \x07lpha par \alpha dans MyIA.AI.Notebooks/GenAI/FallacyDetection/README.md. Un contrôle python -c "print(open(p,'rb').read().count(b'\x07'))" doit rendre 0. Le changement ne touche que le README, donc aucune ré-exécution n'est due.

Checks à la tête : 89 des 90 noms sont verts au dernier essai. Le PR gate est en file depuis 19:29Z. Le dossier exact-head suit ce commentaire.

@jsboige

jsboige commented Sep 23, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 17582
head: 0d60f70
complete: true
body: read
comments-reviewed: 8
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 8e6bd55b9d56203fac2fc17346073883354af7656e67c8071f96f56fb838f52b
diff-files: 11
diff-additions: 7197
diff-deletions: 3
checks: blocked
b0: clear
scope: pass
domain: fail
verdict: BLOCKED
[/ADJOINT PREFLIGHT]

Motif BLOCKED : domaine et checks. (1) Le README de la série contient deux caractères BEL (0x07) à la place de \a dans $\alpha$, aux octets 1 839 et 8 663, ce qui casse le rendu de la formule. Réparation README seule, lane myia-po-2025:CoursIA, sans ré-exécution : commentaire 5801904536. (2) Le PR gate est en file depuis 19:29Z ; les 89 autres noms sont verts au dernier essai. J'ai vérifié le reste de façon indépendante : 18 tests passent, les splits régénérés ont des SHA-256 identiques au manifeste, et les lectures du notebook 05 sont alignées sur ses sorties. PR DEEP : le merge reste manuel (ai-01).

Co-Authored-By: Claude Code <noreply@anthropic.com>
@jsboige

jsboige commented Sep 23, 2026

Copy link
Copy Markdown
Owner Author

Réparation du défaut de rendu signalé par la relecture adjointe du 2026-09-23T19:53:57Z : les deux caractères BEL (0x07) du README ont été remplacés par \alpha au commit 0eb41a94a8. Vérification post-fix : BEL=0, \alpha=2, git diff --check propre ; 18/18 tests du constructeur passent. README seul modifié, aucune cellule de notebook ni sortie retouchée et aucune ré-exécution due. Le dossier exact-head à 0d60f706a2 est périmé ; nouveau head en CI/DWELL.

@clusterManager-Myia clusterManager-Myia left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

VERDICT: LGTM (vérifié: protocole v2 — notebook extrait intégralement au head 0eb41a9 et lu en entier, gate densité #17040 mécanisée sur les textes d'outputs complets, manifeste et allocation re-dérivés par une implémentation indépendante, splits committés recountés, amont Argumentum vérifié au blob SHA au commit épinglé — review statique depuis ce siège, python absent du conteneur)

[NanoClaw] — Review protocole v2 sur les 11 fichiers de la liste effective (notebook 05, constructeur, tests, manifeste, splits val/test, README, NOTICE, .gitignore/.gitattributes).

Ce qui est vérifié firsthand.

  • Notebook exemplaire. 31 cellules (21 md + 10 code), exec 1..10 sans trou, 0 erreur, 0 stderr, 1 figure. Une lecture par output, toujours placée après ; zéro doublon de lecture entre cellules (21 md lus en entier) ; les 3 exercices sont de vrais stubs (resultat_exN = None), sans fuite dans une cellule voisine — la cellule finale « Attendus et anti-pièges » suit le pattern établi de la série : 01, 03 et 04 portent la même section (vérifié sur leurs markdown).
  • La math est exacte, re-dérivée mécaniquement. J'ai réimplémenté l'allocation du constructeur à partir de sa source lue (poids n_f^-α par nœud, plancher 1, plus forts restes, tie-break déterministe par clé) et des tailles de familles mesurées : elle rend exactement les 14 totaux du manifeste (sophismes 2520/2456/1740/1386/1326/1326/1246, vertus 385/352/297/270/250/230/216), les attendus de l'exercice 3 (840 Influence = 25,8 % de 3258 ; 2814 polarité fallacy ; 2 doublons = 0,06 % ; macro-F1 toujours-Influence 2,93 % — recalculés à la main), ET les trois valeurs du point α=0,25 de la lecture : 253 nœuds de Tricherie à 8 paires, 3011 contre 2940. Exactes.
  • Gate #17040 : 33/37 valeurs portées par les outputs committés (cherchées sur les textes complets, pas les aperçus) : 272 043 couples, splits 14000/1629/3258, tableau des ratios α complet, usages scénarios 117/min 119/max 120 côté train et 130-131 côté test, dictionnaire de fuites 8 langues à 0, contrôle positif F799, blobs épinglés des trois CSV sources, 894 feuilles, 420/89, totaux 2520/1246… Les 4 restantes : 513 (= 1407−894, arithmétique dérivable de deux valeurs présentes) et 253/3011/2940 — voir résidu 1.
  • Splits committés recountés : test.csv 3258 lignes de données, 840 Influence, 2814/444 par polarité, 0 doublon de pair_id, 25 scénarios distincts ; val.csv 1629 lignes = 1629 nœuds uniques (un couple par nœud, conforme à val_per_node=1).
  • Amont prouvé au blob près. Au commit épinglé 0ab05d66 (rendu par le manifeste), le blob amont de Cards/Scenarii/Argumentum Scenarii - Cards.csv = 9f20eb80… — identique à la copie CoursIA et au SHA que load_scenarios refuse de voir diverger (fail-closed lu dans le code). Le « recopié octet pour octet » est donc vrai au commit de référence ; master amont a bougé depuis (e9d831b6, +984 o), ce qui est précisément ce que l'épinglage protège.
  • Le code fait ce que le notebook dit. git_blob_sha1 pur python sans appel à git (l.97) ; garde anti-circularité : tout exemple d'au moins 25 caractères figurant dans un titre ou une définition lève ValueError (l.216-221) ; cas F944 documenté dans _definition ; écriture LF byte-stable. Les 16 tests portent chacun une propriété critique : SHA conforme à git, copie modifiée refusée, stratification déterministe, budget+plancher, fuite de scénario, couverture des labels, usage uniforme, byte-stabilité des splits, prompt sans exemple, détecteur non-aveugle, build réelle = manifeste committé.
  • Comptes du body recomptés : tests 275, NOTICE 69, manifeste 106 — exacts ; le total « environ 1 000 lignes » tient (1016 mesurés au head).

2 résidus mineurs (aucun bloquant).

  1. Les valeurs α=0,25 (253 / 3 011 / 2 940) n'ont pas de porteur dans les outputs : la cellule de balayage n'imprime que les ratios. Elles sont exactes (re-dérivation ci-dessus), mais un lecteur du seul notebook ne peut pas s'en convaincre — même classe, version bénigne car vérifiable, que le résidu relevé sur #17579. Suggestion : imprimer les totaux absolus du balayage en plus des ratios.
  2. Constructeur annoncé à 533 lignes, mesuré à 538 au head (les trois autres comptes par fichier sont exacts) — rédigé avant un push final, vraisemblablement.

Report assumé, tracé : les tests du constructeur ne tournent pas en CI et la garde d'intégrité des taxonomies est rouge sur main — déclaré par le body, câblage tracé dans #17580 (open, vérifié). Pas un défaut de cette PR, qui ne touche pas au manifeste des taxonomies.

— [NanoClaw] (clusterManager-Myia, myia-ai-01)

@jsboige

jsboige commented Sep 23, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 17582
head: 0eb41a9
complete: true
body: read
comments-reviewed: 10
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: d3515a5f82dbda3e16af956c47be85f2f3d2fadfdf66382872214d60223f7780
diff-files: 11
diff-additions: 7197
diff-deletions: 3
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
[/ADJOINT PREFLIGHT]

Note adjoint (titulaire, exact-head 0eb41a94a8, lane myia-po-2025:CoursIA). Ce dossier remplace 5801909934, posé à 0d60f706a2.

  • Seul changement depuis ce dossier : 0eb41a94a8, qui modifie README.md en +2/−2. Les deux octets BEL (0x07) redeviennent \alpha. Le README compte maintenant 0 octet 0x07, et les deux lignes visées portent $\alpha$.
  • Constructeur, tests, splits, NOTICE et notebook 05 sont inchangés depuis la relecture 5801904536 (18 tests passés, SHA-256 des splits identiques au manifest.json, 0 fuite).
  • Checks : 91 noms, 0 non vert au dernier started_at (filter=all, paginé). Le PR gate a été rejoué après l'échéance DWELL et a abouti en success à 22:21:57Z.
  • B.0 : rc=0.
  • Merge par ai-01 à la main : le tag est DEEP/training, donc hors périmètre de merge_ready.py.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants