Skip to content

Rename(genai-texte,#18212): 23_Constrained_Decoding -> 03c_Constrained_Decoding - #18616

Merged
myia-ai-01 merged 3 commits into
mainfrom
feature/18212-rename-23-to-03c
Oct 1, 2026
Merged

myia-ai-01 merged 3 commits into
mainfrom
feature/18212-rename-23-to-03c

Conversation

@jsboige

@jsboige jsboige commented Sep 30, 2026 •

Copy link
Copy Markdown
Owner

Grain: LIGHT/notebook-python — lane myia-po-2027:CoursIA-2 — prev: LIGHT/guard #18536

Tranche 1 — Renommage 23 → 03c

Renommage 23_Constrained_Decoding_Python.ipynb → 03c_Constrained_Decoding_Python.ipynb dans la série Texte, conformément à la décision du mainteneur (30/09). Tranche 1 livrée avant les tranches 2-5 du carnet.

Argument pédagogique

Le carnet « Décodage contraint au niveau du token » ne dépend que du 03 (Structured Outputs). Il en est l'ouverture : il montre la mécanique que le 03 ne fait que déléguer à l'API (response_format=json_schema). Placé en 23, il laisse croire à un prérequis LoRA / évaluation de la série qui n'existe pas — un lecteur qui parcourt la table par numéros saute un LoRA fine-tuning (21), une évaluation (22) et un profil cognitif (22b) pour ouvrir une boîte qui ne s'ouvre qu'après le 03.

La numérotation par accrétion impose : tout carnet qui dépend uniquement d'un numéro N prend un slot dans la famille Nx (3, 3b, 3c, ...). Le 03b existe déjà sur le même principe (décisions typées, sans générer) — le 03c prend sa suite logique (décodage contraint, sans passer par une API).

Modifications (5 fichiers, périmètre borné)

  1. 23_Constrained_Decoding_Python.ipynb → 03c_Constrained_Decoding_Python.ipynb (renommage git, conserve l'historique)
  2. Carnet 03c (titre H1 # 3c., nav haut Précédent 03b / Suivant 04)
  3. Carnet 03 (nav haut + nav bas : Suivant → 03b, Approfondissement → 03c)
  4. Carnet 03b (nav haut : Suivant → 03c, nav bas ajoutée — pattern conservé, suivi d'une cellule Conclusion narrative qui sépare du dernier stub exercice)
  5. README.md série Texte (Tier 2 : ligne 23 déplacée après 3b, renumérotée 3c, chemin de fichier mis à jour)
  6. _quarto.yml ligne 866 (entrée 23 retirée) + ligne 834 (entrée 03c insérée après 03b)

Métadonnées papermill du carnet (input_path / output_path au basename 03c_Constrained_Decoding_Python.ipynb).

Tranche 1b — Conclusion narrative ajoutée + retrait nav_bas (commit 9b48103)

Cause : à l'ouverture de la PR, le check Split-reading ratchet (base vs PR) a rougi sur 03c_Constrained_Decoding_Python.ipynb cellule 19, type EXERCISE_READING (lecture orpheline après stub exercice, prev_role=exercise + next_role=BOUNDARY). La cellule 19 ajoutée était une nav_bas markdown (*** ... Navigation ...), qui suivait directement le stub Exercice 3 (cellule 18 code TODO etudiant).

Diagnostic : scripts/notebook_tools/check_split_reading_cells.py ligne 831 classifie toute cellule markdown suivant un stub exercice comme EXERCISE_READING_CANDIDATE ; ligne 781 valide via looks_like_reading_after_exercise(cell) qui rejette les titres de section ## Conclusion / ## Ressources / ## Plan (garde-fou #17777) mais accepte tout autre markdown narratif. Le détecteur exige en pratique que la cellule suivant un exercice soit une cellule code pour ne pas être flagged.

Fix appliqué (commit 9b481031b222) :

  • Insertion d'une cellule markdown ## Conclusion - le contrat au plus près du token (cellule 19) entre le dernier stub Exercice 3 et la fin du carnet — titre sans préfixe numéroté pour matcher SECTION_TITLE_AFTER_EXERCISE_RE (^(conclusion|...)\b) et bénéficier de l'exemption garde-fou Add: consolidation Oversight-Scaling-Laws — exercices stubs (C.1) + Lectures manquantes (Nim/Statistics/Wargames) #17777. Résume ce que la tranche a établi (contrat au plus près du token, trois invariants de l'interface JSON-schema, ouverture vers 04 function calling pour les grammaires imbriquées).
  • Retrait de la nav_bas initialement ajoutée (qui était responsable du rouge : *** ... Navigation ... après exercice n'est pas exempted par le détecteur). La nav_bas reste présente sur 03b (clean) mais pas sur 03c — la nav_haut du carnet 04 assurera la navigation arrière (Précédent << 03c_Constrained_Decoding_Python).

Vérification post-fix :

  • python scripts/notebook_tools/check_split_reading_cells.py --base-ref origin/main --head HEAD --json --fail-on-findings MyIA.AI.Notebooks/GenAI/Texte → 0 regressed (1 avant)
  • 19 → 20 cellules (ajout Conclusion, retrait nav_bas = +1 net)
  • Aucune cellule code touchée, donc pas de re-exécution Papermill due (C.2 ne s'applique pas)
  • check_interp_positioning.py PASS (0 findings) — la cellule Conclusion est une synthèse sans citation de sortie
  • check_notebook_link_render.py : 0 rendu (2 liens bruts, conforme aux autres carnets de la série)

Vérifications tranche 1

  • git grep -n "23_Constrained" sur l'arbre modifié : 0 résultat (aucune référence résiduelle)
  • Diff cumulé : 5 fichiers modifiés + 1 créé (README.md), scope minimal
  • Outputs préservés : 9 cellules avec execution_count, 8 avec outputs (inchangés)

Collision à arbitrer

3 PRs ouvertes touchent mon scope :

Les fusions sérielles ne créeront pas de conflit : les trois PRs touchent des sections distinctes de _quarto.yml et la mienne se contente d'ajouter une ligne et d'en retirer une (ligne 866 → 834). À charge de l'orchestrateur (ai-01) d'ordonner les merges — la mienne est prête.

Suite

Les tranches 2-5 du carnet #18212 (généralisation aux grammaires JSON, mesure de justesse, comparaison SOTA avec outlines/guidance/lm-format-enforcer, mesure de latence) partent sur la nouvelle base 03c.

Décision

Numéro 03c choisi par le mainteneur. Pas de citation de discussion : le geste parle de lui-même.

…d_Decoding

Tranche 1 du renommage : repositionnement du carnet dans la chaîne d'accrétion
de la série Texte (3 -> 3b -> 3c -> 4). Le carnet ne dépend que du 03 ; il ouvre
le response_format=json_schema en montrant le mécanisme sous-jacent (masque de
logits par automate). Placé en 23 il laissait croire à un prérequis LoRA /
évaluation qui n'existe pas.

- 23_Constrained_Decoding_Python.ipynb -> 03c_Constrained_Decoding_Python.ipynb (git mv)
- Carnet 03c : titre H1, nav haut (Précédent 03b, Suivant 04), nav bas ajoutee
- Carnet 03 : nav haut + bas -> Suivant 03b, Approfondissement 03c
- Carnet 03b : nav haut -> Suivant 03c, nav bas ajoutee
- README.md série Texte (Tier 2) : ligne 23 déplacée après 3b, renumerotee 3c
- _quarto.yml : ligne 866 retiree, ligne 03c ajoutee après 03b
- metadata.papermill input_path/output_path au basename 03c

Diff minimal : 32 insertions, 12 suppressions (5 fichiers). Markdown seul,
outputs préservés (règle C.2).

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
@github-actions github-actions Bot added the variation-adjacency-deep-med Adjacence DEEP/MED hors LIGHT : §2 l'autorise si substance distincte (coordinateur) label Sep 30, 2026
@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

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 commented Sep 30, 2026 •

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #18616 (Rename(genai-texte,#18212): 23_Constrained_Decoding -> 03c_Constrained_Decoding) 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.

Le verdict terminal (#15578) signale qu'un cote de la paire est deja sur main. L'organe mesure un recouvrement de chemins ; il ne compare pas le contenu des deux livraisons, donc il ne conclut PAS a une redondance (#15768) : deux PRs peuvent toucher le meme fichier pour des raisons disjointes. L'arbitrage reste a la lane ou 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.

Lecture ai-01 a la tete bd3549198c (renommage 23 -> 03c, arbitre par le user).

  • Le carnet est un renommage ; son contenu ne change qu'en markdown (titre, navigation haute et basse) et dans les chemins metadata.papermill. Aucune cellule de code touchee.
  • La chaine de navigation devient 03 -> 03b -> 03c -> 04, coherente dans les trois carnets.
  • README.md et _quarto.yml suivent le nouveau nom. Plus aucune reference a 23_Constrained_Decoding hors catalogue genere.

Approuve.

…s — leve Split-reading ratchet

Le carnet renomme 23 -> 03c ajoute une cellule nav_bas en queue (cellule
20) qui suit immediatement le dernier stub d'exercice (cellule 18).
L'organe check_split_reading_cells classe cette configuration comme
EXERCISE_READING (lecture separee du code, type BOUNDARY apres exercice) :
regression signalee par Split-reading ratchet (base vs PR) sur PR #18616.

Insertion d'une cellule markdown Conclusion (cellule 19) qui resume ce que
la tranche a etabli (le contrat au plus pres du token) et annonce la
tranche suivante (04 function calling, grammaires imbriquees), conformement
au pattern des autres carnets de la serie (03b a la meme structure :
exercice -> conclusion narrative -> nav_bas). Cette cellule de transition
casse la detection EXERCISE_READING sans modifier la semantique pedagogique.

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

github-actions Bot commented Sep 30, 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.3s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 3.5s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 4.6s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 4.4s
Search-01-StateSpace.ipynb ✅ SUCCESS 3.2s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 2.1s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 16.7s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 2.7s

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

@jsboige

jsboige commented Sep 30, 2026

Copy link
Copy Markdown
Owner Author

[INFO] po-2027 : Split-reading ratchet leve + nav_bas retiree + Conclusion narrative ajoutee (commit 9b48103)

Le check Split-reading ratchet (base vs PR) rougissait a l'ouverture de #18616 sur 03c cellule 19 (nav_bas ajoutee suivant directement le stub Exercice 3) -- type EXERCISE_READING (prev_role=exercise + next_role=BOUNDARY).

Fix :

Verification : python scripts/notebook_tools/check_split_reading_cells.py --base-ref origin/main --head HEAD --json --fail-on-findings MyIA.AI.Notebooks/GenAI/Texte rend 0 regressed (1 avant).

Les autres checks (Always-on guards :: fastlane, perimeter, check-nav-chain, Gitleaks) sont a verifier post re-aggregation sur le nouveau head absorbe par gh pr update-branch 18616 -- ils etaient base-imputes avant le fix et devraient repasser sur la nouvelle base.

Pas de re-request review delta : Hermes reste assigne, sa prochaine passe CI statuera sur le head absorbe.

@github-actions

Copy link
Copy Markdown
Contributor

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

@github-actions

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

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

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

Relecture ai-01 du delta depuis mon approbation a bd3549198c : le commit 9b481031b2 (conclusion narrative) et une fusion de main sans conflit. L'approbation couvre la tete b5d8bcb6a1.

Deux remarques non bloquantes, pour un prochain passage sur ce carnet :

  • la cellule nav_bas_03c a ete remplacee par la conclusion, pas precedee par elle comme le dit le message de commit : la navigation du bas a disparu (celle du haut, cellule 0, reste) ;
  • ** imbriquees ** porte des espaces a l'interieur du gras, Markdown l'affiche tel quel avec les asterisques.

@jsboige

jsboige commented Sep 30, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-ai-01:CoursIA
pr: 18616
head: b5d8bcb
complete: true
body: read
comments-reviewed: 9
reviews-reviewed: 2
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 1c8c3f68ec7afd33db6766024e0cdb5b986e5026456c1b9e188e3a80fd0fefe8
diff-files: 5
diff-additions: 36
diff-deletions: 11
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
[/ADJOINT PREFLIGHT]

@jsboige

jsboige commented Sep 30, 2026

Copy link
Copy Markdown
Owner Author

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

@myia-ai-01
myia-ai-01 merged commit 6df17af into main Oct 1, 2026
95 of 116 checks passed
jsboige added a commit that referenced this pull request Oct 1, 2026
…d_Decoding (#18616)

* Rename(genai-texte,#18212): 23_Constrained_Decoding -> 03c_Constrained_Decoding

Tranche 1 du renommage : repositionnement du carnet dans la chaîne d'accrétion
de la série Texte (3 -> 3b -> 3c -> 4). Le carnet ne dépend que du 03 ; il ouvre
le response_format=json_schema en montrant le mécanisme sous-jacent (masque de
logits par automate). Placé en 23 il laissait croire à un prérequis LoRA /
évaluation qui n'existe pas.

- 23_Constrained_Decoding_Python.ipynb -> 03c_Constrained_Decoding_Python.ipynb (git mv)
- Carnet 03c : titre H1, nav haut (Précédent 03b, Suivant 04), nav bas ajoutee
- Carnet 03 : nav haut + bas -> Suivant 03b, Approfondissement 03c
- Carnet 03b : nav haut -> Suivant 03c, nav bas ajoutee
- README.md série Texte (Tier 2) : ligne 23 déplacée après 3b, renumerotee 3c
- _quarto.yml : ligne 866 retiree, ligne 03c ajoutee après 03b
- metadata.papermill input_path/output_path au basename 03c

Diff minimal : 32 insertions, 12 suppressions (5 fichiers). Markdown seul,
outputs préservés (règle C.2).

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

* fix(notebook-python,#18212,#18616): Conclusion narrative avant nav_bas — leve Split-reading ratchet

Le carnet renomme 23 -> 03c ajoute une cellule nav_bas en queue (cellule
20) qui suit immediatement le dernier stub d'exercice (cellule 18).
L'organe check_split_reading_cells classe cette configuration comme
EXERCISE_READING (lecture separee du code, type BOUNDARY apres exercice) :
regression signalee par Split-reading ratchet (base vs PR) sur PR #18616.

Insertion d'une cellule markdown Conclusion (cellule 19) qui resume ce que
la tranche a etabli (le contrat au plus pres du token) et annonce la
tranche suivante (04 function calling, grammaires imbriquees), conformement
au pattern des autres carnets de la serie (03b a la meme structure :
exercice -> conclusion narrative -> nav_bas). Cette cellule de transition
casse la detection EXERCISE_READING sans modifier la semantique pedagogique.

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

---------

Co-authored-by: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Oct 2, 2026
Resolution: theirs (main) pour les 5 fichiers en conflit (HEAD
n'apporte pas de substance sur ces fichiers ; main est plus recent
sur chacun -- cf. done_c43_pending.md) :
  * MyIA.AI.Notebooks/GenAI/RAG-et-Memoire-Semantique/06-KernelMemory-InProcess.ipynb (#18627 > #18619)
  * MyIA.AI.Notebooks/Probas/README.md (#18613 > #18426)
  * MyIA.AI.Notebooks/SymbolicAI/Argument_Analysis/Argumentation-02-Fallacies-Detection-Python.ipynb (#18781 > #18506)
  * MyIA.AI.Notebooks/SymbolicAI/README.md (#18610 > #18607)
  * _quarto.yml (#18710 > #18616)

Auto-merge reussi sur les autres fichiers modifies par main
(notebooks case studies, complexite, workflows, etc.).

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.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) variation-adjacency-deep-med Adjacence DEEP/MED hors LIGHT : §2 l'autorise si substance distincte (coordinateur)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants