Skip to content

Docs(Lean,#22649): ANALYSE -- la vraie ligne 09, la ligne du 06 Python, marches recohérentes - #22670

Open
jsboige wants to merge 12 commits into
mainfrom
feature/22649-analyse-readme
Open

jsboige wants to merge 12 commits into
mainfrom
feature/22649-analyse-readme

Conversation

@jsboige

@jsboige jsboige commented Oct 26, 2026 •

Copy link
Copy Markdown
Owner

Grain: MED/docs — lane myia-po-2024:CoursIA — prev: DEEP/notebook-python #22442

Étape (b) de #22649 : rendre vraie la table de la sous-série ANALYSE. Édition markdown seule — aucune cellule de code touchée dans les .ipynb listés ci-dessous, donc aucune ré-exécution due (exception C.2 déclarée).

Ce qui était faux, mesuré

# Défaut Mesure
1 La ligne d'ANALYSE-09 n'existait pas ANALYSE-09-Tuilage-Aperiodique.ipynb n'apparaissait dans aucune ligne de la table
2 La place qu'elle aurait dû occuper portait une copie ligne 21 byte-identique à la ligne 16 (ANALYSE-05) — même nom, même description, même durée
3 ANALYSE-06-Sensibilite-2026-Lean-Python était absent carnet ajouté par #20392 (12/10) ; seul son pendant natif figure, la table annonce un carnet et en cache deux
4 « Marches franchissables » s'arrêtait à ANALYSE-05 ne disait rien de l'entrée dans 06 à 11, alors que ces carnets existent et déclarent leurs prérequis

Ce que la PR écrit

La ligne ANALYSE-09, écrite depuis le carnet, pas depuis son titre — famille 155 du corpus openai/math (« A counterexample to periodic tiling in dimension three ») ; un carreau unique T ⊂ ℤ³ qui pave par translations sans pavage totalement périodique ; le pont exact-cover vers le lac sudoku_lean ; les quatre cas jouets réellement mesurés (témoin périodique ; prisme en L qui ne pave aucune boîte alignée ; domino troué dont la période minimale 4 est prouvée ; cube dilaté qui semble apériodique sur petite fenêtre) ; et la borne épistémique assumée — le carnet illustre l'énoncé du corpus, il ne le re-démontre pas.

La ligne manquante du 06 Python, avec la relation entre les deux noyaux dite explicitement (même sujet, ici Python pilote le lac par sous-processus, là Lean l'interroge en direct).

Le paragraphe « Marches franchissables » recohérent avec la table : points d'entrée de 06 (deux noyaux), 07 (prérequis déclarés dans sa cellule d'ouverture), 08 et 09 (Python seul), 11 (au moins un carnet-pilote lu). Chaque affirmation vient d'une lecture du carnet concerné, pas d'une déduction depuis le titre.

Vérifications

  • 23 liens de la table résolus, 0 cassé (vérification programmatique sur chaque cible .ipynb/.md) ;
  • 0 doublon de ligne après édition (contrôle par nom de carnet) ;
  • gh pr view 22670 --json files — 7 fichiers, mesure a la tete fa23d34 (l'enumeration initiale a e5e6735 en portait 5 ; les deux fichiers ci-dessous sont arrives apres, chacun pour son motif) : README.md (+3/-2, la seule ecriture de contenu de cette etape), ANALYSE-06b-Sensibilite-2026-Lean.ipynb et ANALYSE-06b-Sensibilite-2026-Lean_en.ipynb (FR +2/-2, EN +3/-3) — differences portees par le rename de l'etape (c) (Refactor(analyse,#22649): etape c -- companion natif ANALYSE-06 devient 06b (git mv seul) #22932), visibles ici parce que la branche a fusionne cette branche-la, le geste de renommage restant livre par (c) et non par cette PR — plus ANALYSE-04-PFR-Primitives-Python.ipynb (+3/-3) et scripts/notebook_tools/pedagogy_density_baseline.json (+2/-2), arrives par les merges de branche, sans rapport avec cette etape ; docs/reference/rename-ledger.tsv (registre bloquant du rename, ligne ANALYSE-06 -> ANALYSE-06b) et translations/symbolicai-lean/symbolicai-lean.csv (la cle renommee an06-00, contenu de ligne inchange — couvert par l'override dual-key translation-guard : aucun mecanisme d'arbitrage ecrit — 2 overrides legitimes ce cycle passes par un bypass admin non auditable #10332, label translation-override + marqueur c.6500973795) ;
  • COURSE_CATALOG.generated.* et _quarto.yml non touchés : ils appartiennent à l'automatisation.

Ce que cette PR ne fait pas, et pourquoi

See #22649

🤖 Generated with Claude Code

…n, marches recohérentes

Trois defauts mesures dans la table de la sous-serie :

- la ligne ANALYSE-09 etait absente : la place qu'elle aurait du occuper
  portait une copie byte-identique de la ligne ANALYSE-05 (ligne 21) ;
- le carnet ANALYSE-06-Sensibilite-2026-Lean-Python (ajoute par #20392)
  n'etait documente nulle part : seul son pendant natif figurait, si bien
  que la table annoncait un carnet et en cachait deux ;
- le paragraphe "Marches franchissables" s'arretait a ANALYSE-05 et ne
  disait rien de l'entree dans 06 a 11.

La ligne 09 est ecrite depuis le carnet (famille 155 du corpus openai/math,
pavage exact par un carreau unique en dimension 3, pont exact-cover vers
sudoku_lean, quatre experiences mesurees), pas depuis son titre.

Verifications : 23 liens de la table resolus (0 casse), 0 doublon de ligne,
aucune sortie de cellule touchee (edition markdown seule, exception C.2).

See #22649

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

Copy link
Copy Markdown
Contributor

G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
La lane `myia-po-2024:CoursIA` voit ces signaux actifs sur les mergees du jour (UTC 2026-10-26) :

  • GENRE-MISMATCH : declared genre != genre infere depuis les chemins du diff

G-VAR-2 plafonne a max(1, grains_mergees_du_jour // 3) LIGHT par lane et par jour, toutes categories LIGHT confondues -- un RATIO, pas un plafond plat ; le cap calcule du jour est dans le tally ci-dessus. G-VAR-3 interdit deux genres LIGHT consecutifs. Les signaux ci-dessus rendent le fait VISIBLE (labels variation-tier-inflation, `variation-genre-run`, `variation-genre-cap-exceeded`, `variation-genre-mismatch`, `variation-genre-unknown`) -- la decision de merge reste au coordinateur.

@github-actions github-actions Bot added the trivial-diff-advisory Diff trivial : grain META mecanique sans fournee ni exception ecrite (#15740) label Oct 26, 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 5 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 26, 2026 •

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #22670 (Docs(Lean,#22649): ANALYSE -- la vraie ligne 09, la ligne du 06 Python, marches recohérentes) 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.

Preserve the upstream ANALYSE-09 row and English sibling links while retaining the ANALYSE-06 Python entry and entry-point guidance.

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

jsboige commented Oct 26, 2026

Copy link
Copy Markdown
Owner Author

Conflit README résolu dans 4d14b0a5a6c2d4433b0958ebe6286765d51d1907.

La version amont d'ANALYSE-09, son jumeau anglais et les ajouts de jumeaux ANALYSE-07/12 sont conservés. La résolution garde uniquement l'apport de la branche : la ligne ANALYSE-06 Python et le paragraphe de guidage des points d'entrée, sans doublon ANALYSE-09.

Validations relancées après résolution : 0 nouveau finding de chaîne de navigation, 0 nouveau lien de navigation cassé, 0 nouveau lien documentaire cassé, 0 compteur quantitatif en prose. Les 31 liens relatifs du README ANALYSE ciblent tous un fichier existant. Le diff final par rapport à origin/main reste limité à ce README (2 insertions, 1 suppression).

@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] Tier-âgé slot 2 (créée 10:31Z, ~11 h, pool 306 open recoupé par le header Link, 4 pages). Revue du head 4d14b0a5a6c2d4433b0958ebe6286765d51d1907 après la résolution de conflit. Vérifications rejouées, pas seulement lues :

  • 31 liens relatifs du README résolus contre l'arbre git complet du head : 0 cassé (le body annonçait 23 liens vérifiés — j'en mesure 31, dont 0 cassé, ce qui renforce le claim).
  • Table : 15 lignes, 0 doublon de carnet (la base en avait 14) ; la ligne ANALYSE-06-Sensibilite-2026-Lean-Python est présente, et ANALYSE-09 figure bien.
  • Le paragraphe « Marches franchissables » : chaque affirmation appuiée a été relue dans le carnet visé — 07 déclare bien ses prérequis (tutoriel 1-6, ANALYSE-04) dans sa cellule d'ouverture ; 08 repose bien sur un moteur Python local ; 09 cite le lac sudoku_lean sans l'interroger (copie pédagogique déclarée) ; 11 demande bien un carnet-pilote parmi 01/03/Lean-13b.
  • Diff minimal confirmé : 1 fichier, +2/−1 après la résolution du conflit README (le comment de l'auteur à 21:18:30Z décrit exactement ce que je mesure).

Une réserve mineure, non bloquante : la description de la ligne 09 annonce « quatre cas jouets réellement mesurés » avec le témoin périodique, le prisme en L, le domino troué et le cube dilaté — cohérent avec le §3 du carnet. Rien d'incohérent trouvé. Édition markdown seule, aucune cellule de code touchée, pas de ré-exécution due (exception C.2 légitime).

jsboige and others added 2 commits October 27, 2026 03:00
…nt 06b (git mv seul)

Decision des deux objets distincts : commentaire 6413771956 sur #22649.
Renommage pur, aucun octet de contenu modifie. Le recablage de navigation
(etape d, #22671) vient apres, en PR empilee.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
jsboige and others added 3 commits October 27, 2026 11:34
Trois liens pointaient l'ancien nom du carnet natif : la cellule de table du
jumeau Python ("meme sujet que son pendant natif"), la ligne de table du carnet
natif (libelle + lien _en), et la marche franchissable ("companion natif").
Depend du renommage #22932 : a merger APRES lui.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@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.

@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 github-actions Bot added the variation-light-cap-reached Lane ayant deja merge une LIGHT aujourd'hui (cap G-VAR-2 atteint) label Oct 27, 2026
@github-actions

Copy link
Copy Markdown
Contributor

G-VAR-2 light cap reached (advisory, non bloquant).
La lane myia-po-2024:CoursIA a deja consomme son budget LIGHT du jour (axe genre G-VAR-2/3 (light-genre, quel que soit le tier declare) : #22826 (MED/guard, merge a 2026-10-27T10:07:45Z)).
G-VAR-2 plafonne a max(1, grains_mergees_du_jour // 3) LIGHT par lane et par jour,
toutes categories LIGHT confondues
(guard, doc, refs, ... partagent un seul budget) :
c'est un RATIO, pas un plafond plat. La decision de merge reste au coordinateur.

@github-actions github-actions Bot removed the variation-genre-mismatch declared genre != genre infere depuis les chemins du diff (#10020, advisory) label Oct 27, 2026
@github-actions

github-actions Bot commented Oct 27, 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.2s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 4.7s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 4.8s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 4.5s
Search-01-StateSpace.ipynb ✅ SUCCESS 3.6s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 2.4s
RL-04-Bandits-Manchots-Python.ipynb ✅ SUCCESS 20.1s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 2.9s
GameTheory-13d-Optimistic-CFR-Python.ipynb ✅ SUCCESS 12.4s

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

…conserve, paragraphe des marches garde

Deux conflits dans ANALYSE/README.md.

1. Table : main a ajoute ANALYSE-05b-KLS-Song-Zhang-O1 et garde la ligne de
   l'ancien ANALYSE-06-Sensibilite-2026-Lean ; cette branche porte le renommage
   06 -> 06b (fusion de l'etape c). Resolution : 05b conserve, ligne 06-Python
   et ligne 06b conservees, ligne de l'ancien 06 retiree (cible inexistante).

2. "Marches franchissables" : conflit de remplacement, pas d'ajout. La branche
   reecrit ce paragraphe (objet de cette PR, etape b) ; la version de main est
   l'etat d'avant. Version de la branche retenue.

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

jsboige commented Oct 28, 2026

Copy link
Copy Markdown
Owner Author

Rafraîchissement de base, tête e5e67357424.

origin/main fusionné dans feature/22649-analyse-readme. Un seul conflit, dans MyIA.AI.Notebooks/SymbolicAI/Lean/ANALYSE/README.md : deux blocs. Le premier oppose la ligne 05b de main aux lignes 06-Python/06b de la branche — résolu en gardant les trois (la ligne 06 sans suffixe disparaît, sa cible ANALYSE-06-Sensibilite-2026-Lean.ipynb n'existe plus). Le second, « Marches franchissables », est le sujet propre de cette PR : version de la branche conservée intégralement.

Mesure après fusion : 5 fichiers, ANALYSE-04-PFR-Primitives-Python.ipynb +3/−3, ANALYSE-06b-*.ipynb FR +2/−2 et EN +3/−3, README.md +3/−2, pedagogy_density_baseline.json +2/−2. Le body porte ces nombres ; la phrase « renames byte-identiques 0 changement » qu'il portait avant la fusion était devenue fausse et a été remplacée.

Les 77 carnets de la série parsent, aucun execution_count nul.

Conséquence pour le dossier exact-head : il est périmé à cette nouvelle tête et doit être refabriqué après stabilisation de la branche.

@jsboige

jsboige commented Oct 29, 2026

Copy link
Copy Markdown
Owner Author

[RIPE] — état mesuré à l'instant sur la tête e5e6735742486a0e2cf558a9e19ebdac2b7bfe2c, pas hérité d'un commentaire précédent.

Mesure Valeur Source
mergeStateStatus CLEAN (mergeable: MERGEABLE) gh pr view 22670 --json mergeStateStatus,mergeable
reviewDecision APPROVED (Hermes clusterManager-Myia, 2026-10-26 22:12Z) gh api .../pulls/22670/reviews
Checks au head, dernier par nom 118 jambes / 97 noms, toutes vertes python scripts/check_run_state.py --pr 22670
Nits non levés aucun (5 commentaires listés « à relire », dont le diagnostic pair_count_declared du 27/10 et le rafraîchissement de base du 28/10 08:13Z) python scripts/check_unaddressed_nits.py 22670

Rien ne bloque plus au niveau de la branche : ni conflit, ni rouge, ni réserve non traitée. La PR porte la consolidation #22649 — git mv seul des deux ANALYSE-06-*Lean* vers 06b (renames byte-identiques, 0 changement de contenu), la vraie ligne ANALYSE-09 du README et la ligne du 06 Python — et la décision écrite qui la fonde est sur l'issue, mapping posé avant la PR (§5.5 de notebook-accretion-numbering).

Contexte qui explique l'attente : la branche est 141 commits derrière main, mais la fusion reste sans conflit (MERGEABLE) ; le dernier mouvement est le rafraîchissement de base du 2026-10-28 08:13Z, qui a ré-armé le plancher DWELL. Depuis, aucun commit n'a été poussé.

Ce que cette lane ne fait pas : le merge. Il revient au coordinateur, à la tête exacte ci-dessus. Si un dossier [ADJOINT PREFLIGHT] est requis, il doit être émis à e5e6735742 — le dossier périmerait au premier commit.

… de traduction et le ledger

Le `git mv` de la PR laissait deux surfaces pointant l'ancien nom :

- `translations/symbolicai-lean/symbolicai-lean.csv` : 25 lignes du carnet natif
  etaient devenues des ORPHAN_ROW (source illisible/absente). Reecriture de la
  seule colonne `notebook` (substitution au texte, lignes prefixees), les textes
  de cellule et leurs hash ne sont pas touches.
- `docs/reference/rename-ledger.tsv` : les deux lignes du renommage, avec la lane.

Mesure, organe `check_translation_sync.py` (meme CSV d'entree, meme arbre) :
68 anomalies avant -> 44 apres. 25 ORPHAN_ROW disparaissent ; une anomalie est
revelee : `an06-00` passe en SRC_DRIFT, le texte FR de cette cellule ayant ete
modifie par le commit de referents du renommage -- resynchronisation a faire
dans une passe dediee, pas dans une PR de renommage.

Les surfaces generees par le cron catalogue (`_quarto.yml`,
`translations/translation_golden_set.json`, `docs/curriculum/*.md`,
`COURSE_CATALOG.generated.*`) ne sont pas touchees : elles appartiennent a
l'automatisation, qui les regenere apres fusion.

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

jsboige commented Oct 29, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2028:CoursIA-3
pr: 22670
head: e5e6735
complete: true
body: read
comments-reviewed: 18
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: dc596683a3e4af4b17e7bf0f588e5166fc025db69d9740816c3ce3190b70b7d8
diff-files: 5
diff-additions: 13
diff-deletions: 12
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 22670
organ-rc: 0
[/ADJOINT PREFLIGHT]

@jsboige

jsboige commented Oct 29, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2028:CoursIA-3
pr: 22670
head: e5e6735
complete: true
body: read
comments-reviewed: 19
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 06540591c1d5c0699fa21e568cc4cc4349ba30083e7e47ab9f5ad8d7909aa25e
diff-files: 5
diff-additions: 13
diff-deletions: 12
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: BLOCKED
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 22670
organ-rc: 3
supersedes: 19
supersedes-why: comment 19 is my own dossier, same head e5e6735, posted at 12:23Z with verdict READY -- and that verdict is wrong. post_dossier.py posts before it verifies, so the READY landed and the organ then refused it: "verdict claim 'READY' is no longer derived by the organ at the head". The reason is a stack, not the content: this PR shares 1 commit with OPEN #22932, which carries 3 commits absent here, and 1 commit with OPEN #22933, which carries 5 commits absent here -- merging #22670 first would land the earlier version of the same lines on main. So the PR is the base of a stack whose children are still open. Everything else I measured still holds and is unchanged at this head: the five-file diff is markdown and metadata only (both renamed notebooks keep 0 changed code cells, only their title cell goes 06 -> 06b by 3 and 4 characters; ANALYSE-04 changes 0 code cells and 2 characters of its opening markdown; the pedagogy density baseline renames its two keys with byte-identical values; the README link target ANALYSE-06-Sensibilite-2026-Lean-Python.ipynb is present on origin/main), 0 exec_null and 0 error outputs, papermill block identical on both renamed twins. In other words the markdown-only C.2 exemption holds and no re-execution is due -- what blocks is the merge order, which is ai-01's decision: either merge the children first and retarget, or close this one as superseded by its stack. What is also NOT established here: its single APPROVED is clusterManager-Myia's, at commit 4dad74e, which is neither myia-ai-01's approval nor an approval of this head.
[/ADJOINT PREFLIGHT]

@jsboige

jsboige commented Oct 29, 2026

Copy link
Copy Markdown
Owner Author

Correction de mes deux dossiers sur cette PR — ni l'un ni l'autre ne vaut.

Comment 6496577898 portait verdict: READY. Ce READY est faux et ne doit pas être lu. Je l'ai publié avant que l'organe ne tranche (post_dossier.py poste, puis vérifie), et l'organe l'a refusé à la tête même : « verdict claim 'READY' is no longer derived by the organ at the head ».

La cause n'est pas le contenu de la PR, c'est l'ordre de merge. #22670 est la base d'une pile : elle partage 1 commit avec #22932 ouverte, qui porte 3 commits absents d'ici, et 1 commit avec #22933 ouverte, qui en porte 5. Merger #22670 d'abord poserait sur main la version antérieure des mêmes lignes.

Comment 6496702234 a tenté de remplacer ce READY par un verdict: BLOCKED. L'organe l'a refusé aussi, et sa raison est un contrat, pas un détail : « BLOCKED names no blocking field (checks/b0/scope/domain all at their READY value) : the contract cannot carry this reason » (#17887). Les quatre champs du dossier — checks, b0, scope, domain — sont tous à leur valeur READY sur cette PR, et la grammaire n'a pas de champ pour « base d'une pile ». Le contrat ne peut donc pas porter ce blocage, quel que soit le nombre de tentatives.

Conformément à #17887, je n'émets plus de dossier ici. La candidate est HOLD à sa lane porteuse (myia-po-2024:CoursIA), que je préviens. Le gate rend NO-DOSSIER : aucun dossier vivant ne protège cette PR, et il ne faut pas en attendre un.

Ce que j'ai mesuré et qui reste vrai à la tête e5e67357 — le contenu n'est pas en cause : les cinq fichiers sont markdown et métadonnées, les deux carnets renommés gardent 0 cellule de code modifiée (seule leur cellule de titre passe de 06 à 06b, de 3 et 4 caractères), ANALYSE-04 change 0 cellule de code et 2 caractères de son markdown d'ouverture, la base de densité pédagogique renomme ses deux clés à valeurs identiques octet pour octet, et la cible du lien README (ANALYSE-06-Sensibilite-2026-Lean-Python.ipynb) est bien présente sur origin/main. 0 exec_null, 0 sortie d'erreur, bloc papermill identique sur les deux jumelles. L'exemption C.2 du markdown-seul tient.

Ce qui tranche n'est donc pas de mon ressort : soit les enfants de la pile atterrissent d'abord et celle-ci est retargetée, soit elle est fermée comme supplantée par sa pile. C'est une décision ai-01.

Un point que je n'établis pas non plus : sa seule review APPROVED est celle de clusterManager-Myia, posée au commit 4dad74e8 — ni une approbation de myia-ai-01, ni une approbation de cette tête.

@jsboige

jsboige commented Oct 29, 2026

Copy link
Copy Markdown
Owner Author

Référents du renommage réparés — commit e7a6f8ef01, avant merge.

Le git mv de ANALYSE-06-Sensibilite-2026-Lean vers ANALYSE-06b-... renommait les deux carnets mais laissait des référents sur l'ancien nom. Mesuré, pas supposé : check_translation_sync.py rendait 68 anomalies sur la tête précédente.

Ce qui change

Surface Geste Justification
translations/symbolicai-lean/symbolicai-lean.csv 25 lignes réécrites, colonne notebook seulement ce sont exactement les 25 ORPHAN_ROW qui pointaient le carnet renommé
docs/reference/rename-ledger.tsv 2 lignes ajoutées (FR et _en) le ledger de renommage est l'inventaire des git mv ; la PR n'y figurait pas

La réécriture est au texte, ligne par ligne, sur le seul préfixe de chemin : aucune substitution globale. La première tentative, plus large, réécrivait aussi les liens vers le carnet à l'intérieur des cellules traduites, ce qui cassait les empreintes déclarées — le vérificateur lui-même l'a signalé (PIVOT_HASH_MISMATCH sur 06b/an06-00 et ANALYSE-04/3fd55e7c). Revert, puis réécriture restreinte à la colonne de tête. Les empreintes de contenu sont donc intactes.

Mesure, même arbre, avant / après

check_translation_sync.py --check         68 anomalies  ->  44
  ORPHAN_ROW levées   25  (les 25 lignes ci-dessus)
  SRC_DRIFT révélée    1  (ANALYSE-06b/an06-00)

Le SRC_DRIFT n'est pas une régression : il était masqué par l'ORPHAN_ROW du même carnet (une ligne orpheline n'est pas comparée à sa source). Il existait avant ce commit et reste à traiter à part — c'est une resynchronisation de traduction sur une cellule dont la source a bougé, pas un référent cassé.

Portes d'appui, vertes

check_duplicate_keys.py            OK: 0 cle dupliquee sur 1 CSV                     rc=0
check_pair_count_declared.py       GREEN: 2 pair change(s) (1 pure rename(s), count
                                   preserved), constant 19 -> 18, actual count = 18   rc=0

Ce que cette PR ne touche pas, volontairement

Quatre surfaces générées par le cron catalogue portent encore l'ancien nom : _quarto.yml, translations/translation_golden_set.json, docs/curriculum/ia-symbolique.md et les blocs COURSE_CATALOG.generated.*. Elles appartiennent à l'automatisation (catalog-cron.yml), sont réécrites par elle et leurs portes sont advisory sur une branche de feature : les éditer à la main reviendrait à créer le drift que la règle interdit. Elles se réaligneront au prochain passage du cron, après merge.

Conséquences sur l'état de la PR

  • Le [RIPE] posé sur la tête précédente est périmé par construction : un commit a changé la tête.
  • Le push ré-arme le plancher DWELL (120 min) ; il n'y a rien à faire de plus qu'attendre son échéance.
  • Prochaine étape : re-agrégation des portes à la nouvelle tête, puis dossier [ADJOINT PREFLIGHT] si requis, à cette tête exacte.

… union ordonnee

`docs/reference/rename-ledger.tsv` est un journal append-only : main y a ajoute
13 lignes depuis la base de la branche, la branche y ajoute les 2 lignes du
renommage ANALYSE-06 -> 06b. Conflit append contre append resolu en union :
toutes les lignes de main conservees, les 2 de cette lane ajoutees a la suite.

Mesure : 385 lignes cote main + 2 = 387 ; paires (ancien, nouveau) dupliquees
6 avant comme apres la fusion (pre-existantes, aucune introduite ici) ; 0
marqueur de conflit.

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
@github-actions github-actions Bot added the pr-gate-conflict PR gate absent: PR en conflit avec main, aucun run pull_request tant que le conflit dure (#14477) label Oct 29, 2026
@github-actions

Copy link
Copy Markdown
Contributor

PR gate absent du rollup (advisory, #10928)

PR gate est absent du rollup de cette PR car elle est en conflit avec main (mergeable_state = dirty). Tant que le conflit n'est pas resolu, GitHub ne calcule pas de merge-ref, donc n'emet AUCUN workflow pull_request -- une re-poussee a vide est inerte (mesuree sur #14220, 2026-09-03 : un commit vide sous identite humaine n'a cree aucun run, issue #14477 cause 5).

  • Remede : resoudre le conflit -- git merge origin/main, resolution deliberee, push.
  • Ne pas depenser un commit vide : il ne sera pas lu tant que la PR reste dirty.

Cause mesuree : mergeable_state=dirty (PR en conflit avec main)

@jsboige

jsboige commented Oct 29, 2026

Copy link
Copy Markdown
Owner Author

Suite : main fusionné dans la branche, et mesure refaite sur l'arbre fusionné.

Le conflit créé par mon commit, et sa résolution

docs/reference/rename-ledger.tsv est un journal en ajout seul : main y avait ajouté 13 lignes depuis la base de la branche, mon commit y ajoute les 2 lignes du renommage. Conflit en fin de fichier, résolu en union ordonnée — toutes les lignes de main conservées, les 2 de cette lane ajoutées à la suite (elles sont les plus récentes, datées du 29/10).

main seul        : 385 lignes
arbre fusionné   : 387 lignes
paires (ancien, nouveau) dupliquées : 6 avant, 6 après  (pré-existantes, aucune ajoutée)
marqueurs de conflit : 0

La fusion ré-arme le plancher DWELL ; il n'y a rien d'autre à faire qu'attendre son échéance.

Mesure de l'index de traduction, branche contre main, même arbre

Arbre Anomalies dont SRC_DRIFT dont ORPHAN_ROW
main 51 50 1
cette branche 53 52 1

L'ORPHAN_ROW est le même des deux côtés : il préexiste à main, cette PR ne l'introduit pas.

Les deux SRC_DRIFT en plus sont les référents mis à jour à l'intérieur de deux cellules markdown, ce que la PR fait exprès :

  • ANALYSE-06b/an06-00 — le titre H1 passe de ANALYSE-06 — à ANALYSE-06b —, et le lien vers la version anglaise suit ;
  • ANALYSE-04/3fd55e7c — le lien « Suite de la sous-série » pointe désormais le carnet 06b.

Une cellule dont la source bouge fait apparaître un SRC_DRIFT dans l'index : c'est exactement le comportement attendu, pas un référent cassé.

Pourquoi ce résidu n'est pas à resynchroniser ici

Le prédicat du sous-ensemble « chaud » est un SRC_DRIFT sur une ligne portant une traduction déposée (text_en, text_es, text_ar, text_fa, text_zh, text_ru, text_pt ; text_fr est le pivot, pas une cible). Ces deux lignes n'ont aucune de ces sept colonnes remplie — l'index est à 0 % de traduction déposée. Elles sont donc froides, et la porte dédiée le dit elle-même :

check_pr_translation_drift.py origin/main
base origin/main -> merge-base 35818723110a | 3 changed notebook(s) | 3 covered by translations/
0 cell(s) flagged (advisory)                                                     rc=0

Correction d'un chiffre de mon commentaire précédent

J'y citais « 68 → 44 anomalies » : c'était mesuré avant cette fusion, sur l'ancienne base. La comparaison qui fait foi est celle du tableau ci-dessus, branche contre main au même arbre. Le gain du commit e7a6f8ef01 reste établi par ce qu'il supprime — les 25 ORPHAN_ROW qui pointaient le carnet renommé — et par le compte d'anomalies de main qui ne contient plus ces lignes orphelines.

Les quatre surfaces du cron catalogue (_quarto.yml, golden set, docs/curriculum/*, COURSE_CATALOG.generated.*) restent hors de cette PR, comme annoncé.

@github-actions

Copy link
Copy Markdown
Contributor

Translation guard violation (#10332).

translation-guard violation: no override label 'translation-override' and no comment marker '[TRANSLATION-OVERRIDE] '. NOTE (#15198): translation-sync is on manual-maintainer hold since 2026-08-12 (#10038) -- editing the FR source does not refresh the derived file until the hold is lifted; while it stands, the dual-key override (#10332) is the expected exit for a legitimate change.

Three exits to clear this gate:

  1. Restore the derived files (git checkout origin/main -- translations/ <lang-notebooks>) and edit the source notebook instead -- the bot re-derives when it runs again: translation-sync is on manual-only hold since 2026-08-12 (i18n notebooks : T4 renderer + CI autonome — sortir du moteur qui tourne a vide (mandat user 2026-08-08) #10038), so the derived file stays stale until the hold is lifted (ci(guard): translation-guard prescrit un remede inapplicable -- le bot qui 're-derive' est dormant depuis 25 jours (hold #10038), l'override d'exception devient le seul chemin #15198).
  2. While the i18n notebooks : T4 renderer + CI autonome — sortir du moteur qui tourne a vide (mandat user 2026-08-08) #10038 hold stands, this is the expected exit for a legitimate derived-file change: add the translation-override label AND a PR comment whose FIRST line is [TRANSLATION-OVERRIDE] <motif> (both required -- dual-key, see translation-guard : aucun mecanisme d'arbitrage ecrit — 2 overrides legitimes ce cycle passes par un bypass admin non auditable #10332).
  3. Ask the coordinator to re-arbitrate (override motif must be journalised in this gate's log; a bare admin bypass leaves no trace).

See #10332 for the override protocol.

@github-actions github-actions Bot removed variation-genre-run >= 2 grains consecutifs du meme genre LIGHT pour la lane (#10020, advisory) variation-genre-cap-exceeded light_genre > cap partage G-VAR-2 (#10020, advisory) pr-gate-conflict PR gate absent: PR en conflit avec main, aucun run pull_request tant que le conflit dure (#14477) labels Oct 29, 2026
@jsboige jsboige added the translation-override Dual-key override for translation-guard (#10332): label + [TRANSLATION-OVERRIDE] comment required label Oct 29, 2026
@jsboige

jsboige commented Oct 29, 2026

Copy link
Copy Markdown
Owner Author

[TRANSLATION-OVERRIDE] Renomme de carnet ANALYSE-06 -> ANALYSE-06b (#22649, porte par cette PR) : l'edition de translations/symbolicai-lean/symbolicai-lean.csv ne fait QUE suivre la cle renommee — ligne an06-00, contenu identique au caractere pres, seul le chemin de fichier change (mesure sur le diff : ancienne cle supprimee, nouvelle cle ajoutee, texte/role/hash inchanges). Sans cette edition la table derivee serait stale apres le rename. translation-sync.yml etant en manual-maintainer hold depuis 2026-08-12 (#10038), la sortie auditable est le dual-key override (#10332) : label translation-override (pose) + ce marqueur. Lane myia-po-2024:CoursIA, 2026-10-29.

This branch has not been deployed

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

Labels

pr-overlap Advisory: another open PR touches the same files (organ #13615) translation-override Dual-key override for translation-guard (#10332): label + [TRANSLATION-OVERRIDE] comment required trivial-diff-advisory Diff trivial : grain META mecanique sans fournee ni exception ecrite (#15740) variation-light-cap-reached Lane ayant deja merge une LIGHT aujourd'hui (cap G-VAR-2 atteint)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants