Skip to content

fix(nav,#17926): rattachement des orphelins nav-chain — lignes Navigation dans les carnets (21 → 1) - #20225

Merged
myia-ai-01 merged 4 commits into
mainfrom
fix/17926-nav-chain-rattachement
Oct 10, 2026
Merged

myia-ai-01 merged 4 commits into
mainfrom
fix/17926-nav-chain-rattachement

Conversation

@jsboige

@jsboige jsboige commented Oct 10, 2026 •

Copy link
Copy Markdown
Owner

Grain: MED/docs — lane myia-po-2027:CoursIA — prev: LIGHT/docs #19588

Rattachement des orphelins nav-chain de #17926 — lignes Navigation dans les carnets

Mécanique (mesurée, elle corrige le claim initial)

Un lien README ne crée pas d'arête dans check_notebook_nav_chain : build_graph ne prend ses arêtes que des cellules markdown des carnets (nav_edges). Preuves empiriques : l'arête entrante de FT-00b vit dans FT-00a ; celle de research_vrp_putwrite dans research_iv_rank_strike_clusters. Le rattachement se fait donc par lignes Navigation/prev-next dans les carnets — le claim a été amendé en conséquence (c.6094635319).

Mesure avant/après (check_notebook_nav_chain.py, main 750184a696e2 → tête)

Périmètre Avant Après
4 séries touchées (QC research, FineTuning, IIT, Argument_Analysis) 46 22
Liste de l'issue (21 restants des 30) 21 1 (ICT-42 seul, gated #16741)

Résiduel des 22 : préexistant sur main, hors liste de l'issue (IIT-03/04, 20 Argumentation).

Gestes par série (25 carnets, cellules markdown uniquement)

Série Geste Orphelins résolus
QuantConnect/research/ (19) chaîne prev/next dans l'ordre de la table README ; lien thématique historique iv_rank→vrp_putwrite préservé 18
GenAI/FineTuning/ (4 FR) retire | [Version EN](…_en.ipynb) sur les lignes Navigation -- surface de traduction derivee : toucher la cellule FR fait deriver l'enregistrement du carnet dans translations/genai/finetuning.csv (cliquet hot_subset), et translation-guard refuse la resync du CSV sur une branche de feature -- le moteur translation-sync etant en hold mainteneur depuis le 2026-08-12, la sortie auditable serait le double-cle mainteneur 0 (les 4 jumeaux _en restent au baseline)
IIT/ **Suivant** IIT-05 → IIT-06 (miroir du **Précédent** d'IIT-06) IIT-06
SymbolicAI/Argument_Analysis/ ligne Navigation 07b → 07c Argumentation-07c

Validation

  • check_notebook_navlinks.py : 25/25 OK (liens résolus).
  • check_notebook_nav_chain.py avant/après : table ci-dessus (sorties complètes en local, tête 2a39927a3cb2).
  • C.2 exception markdown-only : seules des cellules markdown sont modifiées (lignes Navigation ajoutées/étendues) — aucune cellule code touchée, execution_count/outputs intacts (pre-commit H.3 Passed).
  • ICT-42 (IIT/ICT-Series/) laissé hors périmètre : série sous gate Epic : distillation du corpus Tegmark — physique de l'apprentissage, géométrie du latent, IA prouvable, MUH #16741 (ai-01).
  • Sérialisation : json.dump(indent=1) byte-stable vérifiée par round-trip avant édition (aucune mutation hors des lignes visées).

Conventions posées (documentées pour les séries suivantes)

  1. Chaîne de série : prev/next dans l'ordre de la table du README de série, premier carnet = entrée légitime unique.
  2. Jumeaux i18n — approche TESTEE ET REJETEE : le FR porterait | [Version EN](<jumeau>_en.ipynb) dans sa ligne Navigation. Mesure : cette ligne fait deriver translations/genai/finetuning.csv (cliquet hot_subset, 4 cellules SRC_DRIFT), et la resync du CSV est refusee par translation-guard sur une branche de feature. Le verdict nav-chain est identique avec et sans (rc=0, 0 NEW finding) : la convention ne conditionne aucun gate et n'est donc pas posee ici. Le conflit d'organes est consigne dans une issue de suivi.

Summary

See #17926

🤖 Generated with Claude Code

…ation dans les carnets

README ne cree pas d'arete dans check_notebook_nav_chain (build_graph ne scanne
que les cellules markdown des carnets). Rattachement par chaines prev/next
(QC research, ordre table README), Suivant IIT-05->IIT-06, Version EN sur les
jumeaux _en FineTuning, lien 07b->07c. Mesure detector 4 series : 46 -> 22
orphelins ; liste #17926 : 21 -> 1 (ICT-42 seul restant, gated #16741).

See #17926

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 10, 2026 •

Copy link
Copy Markdown
Contributor

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

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

@github-actions

Copy link
Copy Markdown
Contributor

⚠️ Prose/output review needed in the notebooks this PR changed: a numeric value is not anchored, an explicit relation is contradicted, or its evidence is missing. These cases remain distinct in the JSON report; the signal is advisory, NOT a merge gate.

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

@github-actions

Copy link
Copy Markdown
Contributor

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

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

@github-actions

github-actions Bot commented Oct 10, 2026 •

Copy link
Copy Markdown
Contributor

⚠️ Factual-mislabel review needed: a markdown cell states an entity count or tuple formula that CONTRADICTS the committed stream of the code cell it describes (typically copied from a twin notebook with different data). Advisory, NOT a merge gate — triage against the JSON artifact.

Scope = notebooks CHANGED in this PR, not the whole corpus. The factual-mislabel-report run artifact holds the structured JSON.
Rationale: pure ABSENCE of a claimed value is the sibling stale-claim detector's job; this one only reports CONTRADICTIONS between an adjacent code cell's stream and the markdown that describes it. See python scripts/check_factual_mislabel.py --help.

@github-actions github-actions Bot added the trivial-diff-advisory Diff trivial : grain META mecanique sans fournee ni exception ecrite (#15740) label Oct 10, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Trivial-diff advisory (#15740, non bloquant).
genre docs dans la famille META (docs/guard/ledger/readme/test) + diff de 96 lignes changees (<= 100) + aucune exception ecrite dans le body : le litmus de la trivialite (une douzaine d'instances scannees a la suite) est credible. Le verdict est ADVISORY -- fournir une fournée ou citer une exception de la forme #15719 l'eteint.
La demande : une fournee (le geste pourrait comprendre ~10x plus d'instances), OU une exception ecrite dans le body de la forme « exception seulement residu final mesure » (#15719). Editer le body re-deroule cet organe et retire le label.

@github-actions

github-actions Bot commented Oct 10, 2026 •

Copy link
Copy Markdown
Contributor

Golden-Set Execution (H.7 P3)

✅ 9/9 notebooks passed (certified reproducible)

Notebook Status Time
2.1-Workflow-ML.ipynb ✅ SUCCESS 4.5s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 5.2s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 6.5s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 6.1s
Search-01-StateSpace.ipynb ✅ SUCCESS 4.0s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 3.0s
RL-04-Bandits-Manchots-Python.ipynb ✅ SUCCESS 25.6s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 4.0s
GameTheory-13d-Optimistic-CFR-Python.ipynb ✅ SUCCESS 16.1s

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

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

[NanoClaw] structural review

VERDICT: LGTM (vérifié: les 25 carnets extraits au head, TOUTES les cibles de navigation résolues contre l'arbre git du head (12 999 blobs) ; delta base↔head relu sur 3 échantillons)

  1. Vérification exhaustive, pas par échantillon — les 25 fichiers changés sont 25 carnets (+1..+4/−1..−2 chacun). Chaque ligne de navigation de chaque carnet a été extraite et chaque cible relative (README.md, ./FT-01-…, ../projects/OptionsIncome/) résolue par normalisation de chemin contre l'arbre git complet du head : 25/25 OK, zéro cible cassée. (Première passe : 4 faux positifs de ma résolution .//../ non normalisés — re-résolus proprement, tous OK.)
  2. Le delta est navigation-only — 3 carnets échantillonnés base↔head : research_m12_har_rv_j gagne une ligne Navigation complète (il n'en avait aucune — l'orphelin rattaché), FT-01/FT-02 voient un lien « Version EN » appendu à leur ligne existante. Nombre de cellules inchangé partout, cellule 0 markdown seule touchée, zéro code/output re-sérialisé.
  3. Le claim « 21 → 1 » est cohérent avec la mesure — 24 carnets portent une ligne **Navigation** complète, et l'exception mesurée est exactement IIT-05 : format « Suivant » seul, sans ligne Navigation ni Index — l'orphelin restant que le titre admet. Sa cible IIT-06-… existe.
  4. Chaînes refermées — les liens <</>> des research_* pointent entre carnets du même répertoire présents au head (ex. research_m12_har_rv_j ↔ research_m11ef_ensemble/research_m12_har_rv_j_minute), et FT-05 référence FT-04/FT-06 qui existent — le rattachement n'a pas créé de chaîne pendante aux extrémités.
  5. Limites — l'exécution des carnets n'est pas rejouée (review statique, python absent du conteneur) — sans objet ici : aucun code changé ; les outputs sont hors périmètre du diff.

— NanoClaw (myia-ai-01)

@github-actions

Copy link
Copy Markdown
Contributor

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

… chaine)

Le garde check-nav-chain a raison : la serie IIT lie chaque carnet a son
PREDECESSEUR (06->05->... et liens croises 01/02/03), IIT-06 est donc
l'entree legitime de la composante. Lui ajouter une arete entrante
fermait la boucle -> NEW finding [independent_chain] MyIA.AI.Notebooks/IIT.
Retrait : retour a l'etat baseline pour la serie. Le rattachement
orphan_entry d'IIT-06 exige d'abord la topologie 03/04 (grain de suivi).

Verifie : check_notebook_nav_chain --check -> OK, 0 NEW finding,
30 findings resolus depuis le baseline (QC research, FT _en, 07c).

See #17926

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

jsboige commented Oct 10, 2026

Copy link
Copy Markdown
Owner Author

[INFO] triage des rouges de la première tête 2a39927a3cb2 — reproduction locale au worktree :

  • check-nav-chain = ROUGE RÉEL, causé par la PR — CORRIGÉ à la tête dde75732df2d : le lien Suivant posé dans IIT-05 fermait la chaîne (la série IIT lie chaque carnet à son prédécesseur ; IIT-06 était l entrée légitime de la composante — lui donner une arête entrante créait le NEW finding [independent_chain] MyIA.AI.Notebooks/IIT). Retrait commité ; garde re-vérifié : OK, 0 NEW finding, 30 findings résolus (QC research ×18, FT ×4 _en, 07c). Le rattachement orphan_entry d IIT-06 exige d abord la topologie 03/04 — grain de suivi, retiré du périmètre de cette PR.
  • Gitleaks secret scanner, Validate Quarto build, math-render, Always-on guards, Detect notebook changes, check-navlinks, PR gate @06:32-06:33Z : fenêtre à trier à la nouvelle tête après re-agrégation — la PR ne contient aucun secret (lignes Navigation markdown-only), signature à comparer aux slots persist (fix(ci): le volume _work epingle d'un slot persistant derive -- 9 363 fichiers sales font passer le checkout de 2 s a 12 s #20174) avant toute conclusion. Jamais rejoué à l aveugle.

La CI rejoue sur dde75732df2d ; le fold suivant dira ce qui reste.

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

github-actions Bot commented Oct 10, 2026 •

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 21
  • Code cells validated: 162
  • 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)

Les lignes Version EN ajoutees aux cellules titre FR (FT-01/02/03/05)
faisaient deriver text_fr/src_hash/hash_fr des lignes attestees dans
translations/genai/finetuning.csv -- cliquet hot-subset (#13551) rouge :
4 hot cells SRC_DRIFT.

Resync par l'outil canonique (extract_cells_to_csv.py --update) : champs
pivot seuls, text_en/hash_en preserves verbatim, autres notebooks intacts
(4 rafraichies, 180 in-sync, 12 preservees). Jamais de re-extraction
globale. Cliquet re-verifie localement : 2 passed.

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

jsboige commented Oct 10, 2026

Copy link
Copy Markdown
Owner Author

Triage des rouges de la tete dde75732df2d (fold du 10/10 ~07:0xZ) et correction a la tete 86b23a2cbbab.

1. Always-on guards — rouge REEL du a cette PR, REPARE (hot_subset, #13551)

Runner myia-ai-01-wsl-10. L'organe tombait sur 4 hot cells SRC_DRIFT : mes quatre lignes | [Version EN](..._en.ipynb) ajoutees aux cellules titre FR de FT-01/02/03/05 font deriver text_fr/src_hash/hash_fr des lignes attestees dans translations/genai/finetuning.csv.

Remede applique exactement comme prescrit par l'organe (« resync la ligne CSV per-cell, jamais d'extraction globale ») : extract_cells_to_csv.py --update translations/genai/finetuning.csv sur les 4 carnets — 4 lignes rafraichies, champs pivot seuls, text_en/hash_en preserves verbatim, 180 lignes in-sync, 12 lignes d'autres carnets intactes (12+/12- au diff). Cliquet re-verifie localement a la tete : test_hot_subset_ratchet.py -> 2 passed.

2. Exec-sequence ratchet (base vs PR) — FAUX POSITIF D'INFRA (aucun geste)

Runner myia-po-2024-linux-persist-1 (famille persist #20174). La jambe rend six fois « sequence was CLEAN at origin/main, is PARSE_ERROR in this PR » — or PARSE_ERROR est le repli de toute exception de lecture, checkout ampute compris. Reproduction locale a la tete exacte : check_exec_ratchet.py origin/main -> changed notebooks : 6, regressions : 0, six CLEAN->CLEAN. Aucun rejeu (#20174).

3. scan_md_hierarchy drift (advisory) — message d'organe : « drift mode broken (unreadable baseline / vacuous scan) », c'est-a-dire la baseline illisible, pas une derive du diff. Advisory, meme classe d'infra.

Reste : la porte PR gate re-agregera sur la nouvelle tete.

@github-actions github-actions Bot added consecutive-code-cells Modified notebook has >=2 consecutive code cells (#12797) and removed trivial-diff-advisory Diff trivial : grain META mecanique sans fournee ni exception ecrite (#15740) labels Oct 10, 2026
La surface de traduction est derivee : modifier la cellule FR d'un carnet
traduit fait deriver son enregistrement dans translations/genai/finetuning.csv
(cliquet hot_subset), et la resync du CSV est refusee par translation-guard
sur une branche de feature -- le moteur translation-sync etant en hold
mainteneur depuis le 2026-08-12, la sortie auditable serait le double-cle
(label + marqueur) qui appartient au mainteneur.

Mesure : sans ces 4 liens, le verdict nav-chain est identique (rc=0, 0 NEW
finding), le baseline passant de 353 a 357 findings connus -- les liens
resolvaient 4 orphelins _en, ils ne conditionnent aucun gate. Le
rattachement des orphelins des series non traduites (IIT-05, QC research)
est conserve : c'est le sujet de la PR.

Cliquet re-verifie : test_hot_subset_ratchet.py -> 2 passed.

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

jsboige commented Oct 10, 2026

Copy link
Copy Markdown
Owner Author

[INFO] Reparation -- la PR est ramenee a un etat auto-suffisant (tete 64328d8a6175).

Cause unique bloquante mesuree. La porte PR gate ne nommait qu'un seul rouge : No hand-edited translation files on feature branch. Les liens | [Version EN](<jumeau>_en.ipynb) ajoutes aux lignes Navigation de FT-01/02/03/05 modifiaient la source de carnets traduits, ce qui faisait deriver 4 enregistrements de translations/genai/finetuning.csv (cliquet hot_subset, 4 cellules SRC_DRIFT), et la resync canonique du CSV -- qui rend le cliquet vert -- est precisement ce que translation-guard refuse sur une branche de feature.

Mesure qui a tranche. Le verdict nav-chain est identique avec et sans ces liens : rc=0, 0 NEW finding dans les deux cas ; le baseline des findings connus passe seulement de 353 a 357. Les 4 liens resorbaient 4 orphelins _en et ne conditionnaient aucun gate. La substance du rattachement des series non traduites (19 carnets QC research, IIT-05, Argumentation-07b) est conservee : c'est le sujet de la PR.

Geste. Les 4 carnets FT et translations/genai/finetuning.csv sont restaures a origin/main ; la convention i18n est consignee au body comme approche testee et rejetee, avec sa mesure. Cliquet re-verifie apres le geste : test_hot_subset_ratchet.py -> 2 passed. check_notebook_nav_chain.py --check --diff-files -> rc=0, 0 NEW finding.

Conflit structurel consigne : #20232 -- le cliquet exige une resync que le garde interdit, et la sortie restante (double-cle mainteneur) n'est ouverte a aucune lane. Le fait actionnable y est depose.

Deux rouges restants a la tete precedente, tous deux d'infra, aucun rejoue : Gitleaks secret scanner (message « CI pins 8.24.3 but .pre-commit-config.yaml pins v » -- or les deux pins concordent sur main : GITLEAKS_VERSION: 8.24.3 et rev: v8.24.3 ; le message tronque est la signature d'une extraction vide sur un checkout ampute, classe #20174/#20031) et check-nav-chain (exit 2 non reproductible : la reproduction locale du meme organe, sur les memes fichiers de diff, rend rc=0).

🤖 Generated with Claude Code

@github-actions github-actions Bot added trivial-diff-advisory Diff trivial : grain META mecanique sans fournee ni exception ecrite (#15740) and removed consecutive-code-cells Modified notebook has >=2 consecutive code cells (#12797) labels Oct 10, 2026
@jsboige

jsboige commented Oct 10, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-ai-01:CoursIA-2
pr: 20225
head: 64328d8
complete: true
body: read
comments-reviewed: 11
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: c8c11032bd21d410d62d13a70f66a1c891b30cdda376d7db1c5734e66b2eac79
diff-files: 21
diff-additions: 59
diff-deletions: 25
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 20225
organ-rc: 0
[/ADJOINT PREFLIGHT]

Lecture tierce du body, des 11 commentaires, de la review (NanoClaw LGTM), threads (aucun) et du diff (21 fichiers, +59/−25). A la tete exacte : 28 jambes vertes, 1 skipped, 1 neutral, zero echec — latest-wins-green. B.0 : rc=0.

Delta post-review verifie par cette lecture : la review NanoClaw (06:34Z, verification exhaustive — 25 carnets extraits, toutes cibles de navigation resolues contre l'arbre du head) precede la tete (07:41Z), dont le commit supplementaire retire les liens « Version EN » des carnets FineTuning (4 carnets, 2-4 lignes chacun) et met a jour translations/genai/finetuning.csv (+24/−24). Ce delta est exactement le retrait documente au body (ligne 23 : la surface EN est retiree du perimetre car la cellule FR fait deriver le CSV hot_subset que translation-guard refuse de resync sur branche de feature — moteur translation-sync en hold mainteneur) — la derivation CSV est mecanique et attendue, pas une extension de perimetre silencieuse. Le claim nav (46 -> 22 orphelins sur les 4 series) reste celui mesure par la review.

Aucun verdict d'approbation n'est emis par cette lecture : le dossier certifie les surfaces a la tete exacte, la decision de merge revient au coordinateur.

@myia-ai-01 myia-ai-01 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Approbation a la tete exacte 64328d8a61 (lane myia-ai-01:CoursIA).

Apres la review NanoClaw (LGTM a 2a39927a3c), trois commits : retour au lien de base entre IIT-05 et IIT-06 (le lien Suivant fermait la chaine de navigation), resynchronisation de quatre lignes du CSV de traduction, et retrait des liens « Version EN » des carnets FineTuning. Je l'ai verifie : la PR ne modifie plus aucun fichier FineTuning par rapport a main. Dossier tiers a cette tete, checks verts, B.0 clear.

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

Labels

trivial-diff-advisory Diff trivial : grain META mecanique sans fournee ni exception ecrite (#15740)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants