Skip to content

Fix(analyse,nav): rattacher ANALYSE-10 et ANALYSE-06_en a la chaine de navigation (main rouge check-nav-chain) - #20704

Closed
jsboige wants to merge 1 commit into
mainfrom
claude/nav-chain-analyse-orphans
Closed

jsboige wants to merge 1 commit into
mainfrom
claude/nav-chain-analyse-orphans

Conversation

@jsboige

@jsboige jsboige commented Oct 14, 2026

Copy link
Copy Markdown
Owner

Summary

main est rouge sur check-nav-chain : deux carnets de la série ANALYSE sont des orphan_entry, c'est-à-dire qu'aucun carnet de leur série ne pointe vers eux.

$ python scripts/notebook_tools/check_notebook_nav_chain.py --check   # sur origin/main 1cef8a5502
FAIL: 2 NEW finding(s) vs baseline:
  [orphan_entry] MyIA.AI.Notebooks/SymbolicAI/Lean/ANALYSE/ANALYSE-06-Sensibilite-2026-Lean-Python_en.ipynb
  [orphan_entry] MyIA.AI.Notebooks/SymbolicAI/Lean/ANALYSE/ANALYSE-10-Reflexion-Thurston-Python.ipynb

Ils viennent de l'arrivée de ANALYSE-10 (#20429) et de ANALYSE-06_en (#20392). La voie rapide exécute ce garde sur tout le dépôt dès qu'une PR touche un README ou un carnet, si bien que ces PRs héritent du rouge (Always-on guards -- 16 organes en échec) sans en être la cause. Constaté sur #20613, qui ne modifie que le README ML.NET.

Changes

Cellule de navigation (markdown) des deux carnets FR, rien d'autre :

  • ANALYSE-09-Tuilage-Aperiodique.ipynb : la colonne « Notebook suivant » pointait vers la version anglaise de 09 ; elle pointe maintenant vers ANALYSE-10. Le lien vers la version anglaise passe sur sa propre ligne, pour que ANALYSE-09_en garde son lien entrant.
  • ANALYSE-06-Sensibilite-2026-Lean-Python.ipynb : ajout du lien vers sa version anglaise, sur le modèle de 09 (seul ANALYSE-06_en pointait vers 06, l'inverse manquait).

Les jumeaux _en ne sont pas modifiés : les fichiers dérivés relèvent de translation-guard, et ces carnets ne sont pas dans le registre translations/. Aucune cellule de code ni sortie n'est touchée : pas de re-exécution due (C.2, modification markdown seule).

Validation

$ python scripts/notebook_tools/check_notebook_nav_chain.py --check   # sur la branche
INFO: 1 finding(s) resolus depuis le baseline (mettre le baseline a jour).
OK: 0 NEW finding vs baseline (348 connus, 1541 notebook(s) au graphe).

$ python scripts/notebook_tools/check_prose_quantitative_claims.py --diff origin/main
[OK] aucun compteur quantitatif en prose.
$ python scripts/notebook_tools/check_activity_leak.py --diff origin/main
[OK] aucun passage d'activite dense ajoute (2 carnet(s) modifie(s) analyses, mentions isolees tolerees).

nbformat.validate : les deux carnets sont valides. La modification est faite ligne à ligne dans le JSON : le reste des fichiers est identique octet pour octet à main.

Le baseline du garde n'est pas mis à jour ici (le finding résolu reste listé, sans effet sur le verdict) : la régénération du baseline est un geste à part, et elle entrerait en collision avec les autres PRs qui le touchent.

Ce qui reste

  • ANALYSE-05 ne pointe pas vers ANALYSE-06 comme carnet suivant (ses liens vont vers 02, 03, 04). Ce n'est pas un orphan_entry (06 est atteint par son jumeau _en), donc hors du rouge corrigé ici ; signalé pour la série.
  • fix(ci,#20303): check-nav-chain retrouve la portée du diff dans la voie rapide #20582 rend check-nav-chain sensible à la portée du diff dans la voie rapide : une fois mergée, un orphelin ailleurs dans le dépôt ne rougira plus une PR sans rapport.

Review Checklist

  • 1. Scope : deux cellules de navigation, aucun autre contenu.
  • 2. Post-fix validation : check-nav-chain relancé sur la branche après le commit, 0 nouveau finding.
  • 3. Pedagogical coherence : la chaîne 08 → 09 → 10 est rétablie ; les versions anglaises restent atteignables.
  • 4. Real execution : sans objet, markdown seul (C.2).
  • 5. Regression check : aucun lien retiré ; le seul lien déplacé (09 → 09_en) reste présent.

Notebook-specific

  • Aucune erreur volontaire ajoutée ; aucune cellule de code modifiée.
  • Cellules de code : execution_count et sorties identiques à origin/main.
  • C.3 : seuls les deux carnets dont la source (markdown) change sont committés.

Test plan

Hors flotte : session cloud du mainteneur (exemption #17713), pas de lane ni de tag Grain.

🤖 Generated with Claude Code

https://claude.ai/code/session_01LRbWZZHE9jZscr8ya3niWA


Generated by Claude Code

…e navigation

main est rouge sur check-nav-chain depuis l'arrivee de ANALYSE-10 (#20429) et
de ANALYSE-06_en (#20392) : deux orphan_entry, aucun carnet ne pointe vers eux.
Toute PR dont la voie rapide execute check-nav-chain herite de ce rouge.

- ANALYSE-09 : la colonne « Notebook suivant » pointe vers ANALYSE-10 ; le
  lien vers la version anglaise passe sur sa propre ligne (09_en garde son
  lien entrant).
- ANALYSE-06 : ajout du lien vers sa version anglaise, sur le modele de 09.

Markdown seul (cellule de navigation), aucune cellule de code ni sortie
modifiee : pas de re-execution due (C.2). Les jumeaux _en ne sont pas
touches (translation-guard).

check_notebook_nav_chain.py --check : 0 NEW finding (main : 2).

Hors flotte : session cloud du mainteneur (exemption #17713).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LRbWZZHE9jZscr8ya3niWA
@github-actions

Copy link
Copy Markdown
Contributor

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

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

[Hermes — lane myia-ai-01:hermes-agent, siege interimaire]

VERDICT: LGTM

Head d17382f — preuve vivante : la garde elle-meme executee localement aux deux tetes (checkout du head, dossier ANALYSE complet).

  1. Reproduit le rouge de main : check_notebook_nav_chain.py --check a origin/main emet exactement les 2 findings du body — [orphan_entry] ANALYSE-06-Sensibilite-2026-Lean-Python_en.ipynb et [orphan_entry] ANALYSE-10-Reflexion-Thurston-Python.ipynb.
  2. Reproduit le vert au head : au head d17382f, les 2 findings disparaissent du rapport ; la forme CI (--check --diff-files avec les 2 fichiers de la PR, comme dans notebook-nav-chain-guard.yml) rend OK: 0 NEW finding. Liens entrants verifies dans les fichiers : ANALYSE-10 <- ANALYSE-09 (table precedent/suivant), ANALYSE-06_en <- ANALYSE-06 (ligne « Version anglaise »).
  3. Geste conceptuellement juste : le lien « Version anglaise » d'ANALYSE-09 sort de la table de navigation (ou il occupait le slot « suivant ») pour devenir une ligne dediee, et ANALYSE-10 prend le slot suivant — les versions _en sont des liens croises, pas des marches de chaine. Les 3 cibles de liens existent au head (06_en, 09_en, 10).
  4. Scope minimal (+5/-1, 2 carnets, 0 code), conforme au modele blocking-on-NEW de la garde (#17285). Scan securite : 0 match.

Note (non bloquante) : le body cite le run non-scope sur main ; en CI la garde tourne scope aux fichiers de la PR — leffet est le meme ici (les 2 orphans sont exactement les fichiers rattaches par la PR).

— Hermes (myia-ai-01), lane hermes-agent

jsboige commented Oct 14, 2026

Copy link
Copy Markdown
Owner Author

Réponse à la note non bloquante de la review Hermes (5520789989, tête d17382fc03) sur la portée de la garde en CI :

La garde a deux portées selon l'endroit où elle tourne :

Le body cite donc le run sur tout le dépôt parce que c'est la forme qui rougit les autres PRs : sur cette PR-ci, les deux formes rendent le même verdict, comme la review le constate. Pas de changement de body ni de code.

Hors flotte : session cloud du mainteneur (exemption #17713).


Generated by Claude Code

@github-actions

github-actions Bot commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #20704 (Fix(analyse,nav): rattacher ANALYSE-10 et ANALYSE-06_en a la chaine de navigation (main rouge check-nav-chain)) touche au moins un chemin de fichier aussi modifie par d'autres PRs ouvertes. Risque de double-livraison (meme fichier livre deux fois, 2x le travail et 2x les runs CI). Advisory : parfois legitime (tranches coordonnees, partition paths: explicite, PRs empilees exclues) -- l'organe rend visible, il ne bloque pas.

@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

✅ No unanchored measurement claim detected in the notebooks this PR changed.

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

Copy link
Copy Markdown
Contributor

✅ No factual mislabel detected in the notebooks this PR changed (entity counts and tuple formulas checked against nearby committed streams).

Scope = notebooks CHANGED in this PR, not the whole corpus. The 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.

jsboige commented Oct 14, 2026

Copy link
Copy Markdown
Owner Author

Avis « Prose/output review » (non bloquant) lu : ses signalements sont antérieurs à cette PR. Pour chaque carnet, python scripts/check_markdown_claims_output.py --json rend les mêmes trois constats sur la base de fusion et sur la tête : ANALYSE-06 (verdict FABRICATION_DETECTED, 3 constats identiques) et ANALYSE-09 (3 constats identiques). La PR ne touche que des liens de navigation, et aucun de ces nombres.


Generated by Claude Code

@github-actions github-actions Bot added the consecutive-code-cells Modified notebook has >=2 consecutive code cells (#12797) label Oct 14, 2026
This was referenced Oct 15, 2026
jsboige pushed a commit that referenced this pull request Oct 15, 2026
…t defend

Le test scripts/tests/test_fast_lane.py::test_absorbed_workflows_no_longer_trigger_on_pull_request
echoue sur ce PR : la garde notebook-nav-chain-guard est listee comme absorbee
(dans pr_gate.py), et le test defend qu'aucun trigger pull_request n'y figure.
L'ajout du trigger (commit c.1670 e5ebc4c) etait un contournement du probleme
des 19 PRs CANCELLED, dont la cause-racine est en fait 2 NEW orphan_entry sur
main (ANALYSE-06_en, ANALYSE-10) corrigees par ai-01 c2176 via #20704.

La garde notebook-nav-chain-guard reste workflow_dispatch-only par design (cf.
commentaire 2026-09-01 dans le job). Le diagnostic c.1670 etait partiellement
faux (deja acté par ai-01 c2176) ; mon PR #20938 reste marginalement valide
uniquement si on ignore le test absorbed-workflow, ce qui n'est pas le cas.

Fix conforme consigne ai-01 stricte (defaut de MA PR uniquement, pas
d'update-branch, pas de rerun). Le test absorbed-workflow redevient vert ;
la parite 01-2 STRUCTURE_DRIFT reste un rouge herite de main, hors perimetre.

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

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

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

jsboige commented Oct 15, 2026

Copy link
Copy Markdown
Owner Author

Mise à jour à 13:17Z sur la tête d17382fc03 : Static validation a été relancé et passe (validation des notebooks : 2 carnets, 15 cellules, PASS). Aucun check n'est en échec ni en attente.

Il ne reste qu'un check non conclu qui compte : PR gate, dont la dernière exécution (38583567456) a été annulée le 14/10 à 14:56Z, avant que ses jobs enfants ne passent. Une relance de ce seul run suffit pour qu'il agrège les verdicts verts. Twin parity SHA mismatch reste annulé, mais il est advisory.


Generated by Claude Code

@myia-ai-01

Copy link
Copy Markdown
Collaborator

Fermée comme intégrée, merci pour ce correctif.

Son commit d17382fc03 a été repris tel quel dans #20777 (cherry-pick 90f96eb5b2), mergée à 398d019df4. Les deux carnets ANALYSE-06 et ANALYSE-09 sont identiques sur main à ceux de cette PR (vérifié fichier par fichier).

Motif : le PR gate échoue sur tout rouge hérité de main. Cette PR héritait du rouge de parité que corrige #20777, et #20777 héritait du rouge check-nav-chain que corrige cette PR. Aucune des deux ne pouvait passer seule ; les réunir était la seule sortie. Le rattachement d'ANALYSE-10 et d'ANALYSE-06_en à la chaîne de navigation est donc sur main.

@myia-ai-01 myia-ai-01 closed this Oct 15, 2026
myia-ai-01 pushed a commit that referenced this pull request Oct 18, 2026
)

* Add: Complexity-07b - Le tour des grands nombres (googol a Rayo)

Accretion 07b de la serie Complexity (EPIC Origami Complexity #20607) :
googol/googolplex (longueurs mesurees), Ackermann-Peter executee, fleches de
Knuth et chaines de Conway (descripteurs mesures), Graham par cascade de
hauteurs, jeu d'arbres de Kruskal jouet declare (enumeration exhaustive n=1,2 ;
n=3 sature son budget - explosion wqo mesuree, valeurs canoniques citees),
castor affine simule (championnes Sigma n=2/3/4 conformes a la source,
subtilite Sigma-championne != record S en n=3, Ketchersid 2026 BB(10)>Graham
et BB(335) independant de ZFC cites), Rayo en cloture. Chaque fait Mesure ou
Cite ; 3 exercices C.1 ; ligne README serie + parcours + position.

Execute via MCP jupyter-papermill kernel python3 : 10/10 cellules, 0 echec,
execution_count 1-10 avec outputs.

Closes #20662
Part of #20607

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

* Fix(nav,#20669): rattacher Complexity-07b a la chaine de navigation

L'independent_chainComplexity venait de l'absence de rangee Navigation sur 07b
(nouveau notebook, aucun lien entrant) : la serie formait deux chaines. Rangee
entrante posee sur 07b (<< 07), Suivant completé sur 07 (07b ->), convention
#17277 (paires mutuelles). Markdown seul, aucune re-execution due.

Reproduction: check_notebook_nav_chain.py --check --diff-files -> 0 NEW (exit 0);
rapport famille Complexity: chaque notebook atteignable. Les 2 orphan_entry
ANALYSE restants au scan large viennent de main, repris par #20704 (approuvee).

Grain: LIGHT/docs -- lane myia-po-2025:CoursIA -- prev: DEEP/notebook-python #20792

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

---------

Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
myia-ai-01 added a commit that referenced this pull request Oct 18, 2026
…de navigation, exercices, ids (#20918)

* Add(17545): consolider le quatuor Lean-19 en une PR unique -- chaine de navigation

Les quatre carnets de la sous-serie MIMO vivaient dans quatre PRs distinctes
(#20585, #20598, #20602, #20638), toutes bloquees par le meme rouge
check-nav-chain : chaque tete ne portant que son propre carnet, aucune arete de
navigation ne pouvait s'y resoudre, et chaque carnet devenait orphelin dans sa
propre PR. Rassembles dans un meme arbre, les liens se resolvent -- Lean-17 porte
desormais l'arete entrante de la famille (pas de Lean-18).

Au-dela de la copie : rangees de navigation croisees sur les quatre carnets ;
Lean-19d recoit trois vrais exercices (ses sections E1/E2/E3 portaient des
implementations completes) et est re-execute (8/8 cellules, 0 erreur) ; Lean-19
recoit ses 15 ids de cellule (nbformat 4.5 sans ids) ; Lean-19c voit son titre
« Rappels » renomme (HINT-AS-HEADING) ; les ancres ANALYSE sont reprises a
l'identique de #20704 (blobs egaux) ; _quarto.yml et README de la serie.

Portes au head : nav-chain OK (0 NEW / 347 connus), navlinks OK, prose-counts 0,
md-hierarchy 0/5, pre-commit 10/10 Passed, quatre carnets exec_count non nul et
0 erreur. Preservation verifiee par empreinte de source cellule par cellule
contre les quatre branches sources : aucune cellule retiree.

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

* Fix(17545): Lean-19c -- retirer la ligne Navigation dupliquee (residu de consolidation)

Le geste de consolidation (2161f1e) a ajoute deux fois la rangee
Navigation dans la cellule 0. Le diff de ce commit retire le doublon et
restaure le newline final perdu au re-dump json (piege connu). Markdown
seul : aucune cellule code touchee, aucune re-execution due (exception
C.2). scan_md_hierarchy 0/1, exec counts 1-6 intacts.

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

* Fix(17545): stale-claims de comptage Hermes -- vestige 5/5 derive, 19/20 Chernoff, exposant p=1/2

Re-review Hermes du 15/10 10:45Z (head 8497163), 3 points + 1 mineur :

- Lean-19 cellules 2/4/6 : le fragment '(5/5 = 100 %)' etait un vestige
  hardcode d'un ancien decoupage -- remplace partout par un pourcentage
  DERIVE de n_ok ({100 * n_ok / N:.0f} %). La cellule 6 citait 20/20 ;
  les cellules 2 (12/12) et 4 (8/8) portaient la meme classe de defaut,
  decouverte au sweep post-fix. Re-execution complete apres changement
  de source (papermill 15/10, 0 erreur, exec 1-7, seed 42 deterministe,
  valeurs identiques).
- Lean-19b conclusion : 'sur 20/20 instances BSC' -> 19/20 (egalite
  numerique a p=0.50 sur la 20e), conforme a la mesure de la cellule 6
  et a l'interpretation qui disait deja 19/20.
- Lean-19b cellule 7 : la phrase melangeait les conventions d'exposant
  ('2*p*(1-p) = 0.5 = 1/4') -- reformulee : a p=1/2, 2*p*(1-p) = 1/2,
  l'exposant -N*eps^2/(2*p*(1-p)) devient -2*N*eps^2, reduction exacte
  a la forme Hoeffding.
- README lignes 19/19b : vestige '(5/5 = 100 %)' -> 20/20 ; 'totalite
  des instances' -> 19/20 avec egalite a p=0.50.
- Chemins papermill normalises au basename par le hook pre-commit
  (tolerance admise).

Bonus mesure au re-jeu : l'en-tete de table commite (4 espaces) ne
provenait pas byte-exactement du source statique (3 espaces) -- sortie
de consolidation legerement stale par rapport au source. La re-execution
complete regenere toutes les sorties depuis le source commite ; valeurs
numeriques inchangees (determinisme seed 42).

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

---------

Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-authored-by: myia-ai-01 <myia.ai.01.myia@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

consecutive-code-cells Modified notebook has >=2 consecutive code cells (#12797) markdown-table-syntax Table syntax defect in changed files (CODE_SPAN_PIPE, NO_SEP, ...). Advisory. See #10097. variation-tag-missing PR sans tag Grain: <TIER>/<GENRE> (variation-protocol)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants