Skip to content

feat(notebook,#16763): Z3-16e — consolidation du §5b (OPT à l'échelle, jouet 24 plats) depuis le Z3-16 (arbitrage 2b) - #18222

Merged
myia-ai-01 merged 1 commit into
mainfrom
feature/16763-z3-16e-consolidation
Sep 29, 2026
Merged

myia-ai-01 merged 1 commit into
mainfrom
feature/16763-z3-16e-consolidation

Conversation

@jsboige

@jsboige jsboige commented Sep 28, 2026 •

Copy link
Copy Markdown
Owner

Grain: MED/notebook-python — lane myia-po-2023:CoursIA — prev: DEEP/notebook-python #18217

Résumé

Consolidation du §5b du Z3-16 (optimisation SMT à l'échelle, jouet 24 plats) vers Z3-16e, conformément à l'arbitrage ai-01 c.5830480972 point 2b : « Consolidation vers 16e, pas de lettre nouvelle : le propos est le même (du SAT à l'OPT sur corpus réel). Le 16 garde un renvoi d'une phrase vers 16e. »

  • Z3-16e : nouvelle sous-section 6b — code du jouet (plan_hebdomadaire_optimal, Sel[7][24], minimize du coût) déplacé verbatim depuis le 16 puis re-exécuté ici ; intro re-ancrée (« la section 5 du [16]… ») ; interprétation « pourquoi le glouton rate l'optimum global » conservée telle quelle ; lecture chiffrée refaite sur ce run (297,5 ms ici, ratio ~124x — la valeur d'origine, 349,5 ms / 145x, est celle du run du 16 : l'observation se refait là où la cellule vit, elle ne se recopie pas). Import If ajouté à la cellule z3 du 16e — le code déplacé en a besoin et le notebook hôte ne l'importait pas.
  • Z3-16 : §5b retiré (4 cellules) ; renvoi d'une phrase vers 16e en fin d'Interprétation 5 ; exercice 2 ré-ancré — il s'appuyait sur plan_hebdomadaire_optimal (§5b) ; il est désormais self-contained sur la matrice du §5 (9 plats, D=3, opt.maximize(distinct_count)), même leçon (« trois usages du même encodage » : faisabilité / coût minimal / variété maximale), avec renvoi vers la version à l'échelle dans 16e.

Numérotation : le 16 passe de 32 à 28 cellules ; ses sections restent 1-5, 6 (Exercices), Conclusion — aucune renumérotation. Le 16e passe de 24 à 28 cellules ; les exercices restent en §7.

Preuves de re-exécution (C.2)

Les deux carnets re-exécutés via papermill (kernel python3, --cwd = dossier Z3-API pour l'ancrage des données du 16e) :

  • Z3-16 : 11 cellules code, execution_count 1..11 contigus, 0 erreur, 0 null.
  • Z3-16e : 10 cellules code, ec 1..10 contigus, 0 erreur, 0 null ; sortie clé du 6b reproduite : Cout total minimal de la semaine : 7940 centimes = 79.40 EUR, résolu en 297,5 ms.
  • validate_pr_notebooks.py vs 6f8c431a40 : 2/2 passed (21 cellules code).
  • scrub_papermill_paths.py --apply : 2 chemins absolus normalisés (métadonnées papermill).

Organes (locaux, avant push)

Organe Verdict
check_duplicate_notebook_index / check_kernel_suffix_canon (--base 6f8c431a40) OK — aucun notebook ajouté
check_notebook_navlinks --check --tracked-only OK — 0 NEW (1432 scannés)
check_notebook_nav_chain --check 3 NEW hors périmètre (ICT-MUH-FibreTegmark, Lean-12c, SL-13 — notebooks non touchés, pré-existants sur main, organe non câblé en CI) ; delta de la PR = 0
check_link_label_agreement --fail findings uniquement dans Tweety-3b-Modal-Lab-Lean.ipynb — non touché, base-inherited
check_prose_quantitative_claims --diff origin/main...HEAD OK — aucun compteur quantitatif en prose
pedagogy_density --check-orphans OK — 0 ORPHAN_KEY, 0 LOST_KEY
check_twin_parity --check OK=154 / DRIFT=3 — identique à main (aucune paire pour la série 16)

Densité (advisory, non bloquant par design) : le 16 perd quatre cellules de prose et un bilan, le 16e en gagne quatre.

Diagnostic dérive

Le garde Kernel drift guard (base vs PR) signale un écart de tampon d'interpréteur sur les deux carnets de cette PR :

Z3-16-Meal-Planner-Python.ipynb            language_info.version: '3.11.15' -> '3.13.3'
Z3-16e-Meal-Planner-Optimize-Python.ipynb  language_info.version: '3.11.9'  -> '3.13.3'

Cause classée (a) env / kernel, verdict CAUSE_FIXED.

Ce qui s'est passé. Cette PR modifie des cellules de code dans les deux carnets (retrait du §5b du 16, insertion du §6b et ajout de l'import If dans le 16e). C.2 impose alors une ré-exécution : elle a été faite sous papermill, sur le noyau python3 du siège d'exécution — Python 3.13.3. Le noyau réécrit language_info.version avec ce qu'il est réellement.

Pourquoi c'est la nouvelle valeur qui est juste, et non l'ancienne. Les tampons de base (3.11.15, 3.11.9) sont la trace des sièges qui avaient rédigé puis exécuté ces carnets, pas de l'environnement de ce run. Les sorties committées ici viennent de l'exécution du 2026-09-28 sous 3.13.3 : conserver 3.11 aurait inscrit une version qui n'a produit aucune des sorties présentes — exactement la dérive que ce garde existe pour attraper, commise dans l'autre sens. Rien n'est figé à la main : ni version réinjectée, ni language_info réécrite.

Aucun effet observable sur le livrable. Le garde ne rapporte aucun signature_drift_cells sur l'un ou l'autre carnet : aucune sortie de cellule n'a changé de texte, donc aucune dérive de repr() de flottants entre 3.11 et 3.13. Les ratchets d'exécution de la PR le corroborent (papermill, exec-sequence, output-failure, output-collapse, source-collapse).

La série est déjà hétérogène — la mesure. Sur main, les carnets Python de SMT/Z3-API portent sept versions distinctes d'interpréteur, de 3.11.9 à 3.13.13 ; cinq d'entre eux sont déjà exactement en 3.13.3. Les deux carnets de cette PR rejoignent donc la version la plus représentée de leur propre série, et celle qu'ils déclarent est bien celle qui a produit leurs sorties.

Résidu : aucun. Il n'y a pas de défaut à tracker derrière cet écart : la métadonnée est enregistrée telle que le noyau la rapporte, l'hétérogénéité des tampons est structurelle (chaque siège exécute avec son interpréteur), et aucune sortie n'a bougé.

See #16763 (umbrella — suite de l'arbitrage : sous-série Meal-Planner, ouvertures par vagues, README).

🤖 Generated with Claude Code

…, jouet 24 plats) depuis le Z3-16 (arbitrage 2b)

- Z3-16 : §5b (cells 20-23) retire ; renvoi d'une phrase vers 16e en fin d'Interpretation 5 ;
  exercice 2 re-ancre self-contained sur le materiel §5 (plan_hebdomadaire_optimal disparait)
- Z3-16e : sous-section 6b (intro re-ancree + code deplace VERBATIM + interpretation + lecture
  chiffree re-mesuree 297.5 ms, ratio ~124x) ; import If ajoute a la cellule z3 ; Synthese
  precise que la matiere est consolidee ici
- Les deux carnets re-executes (papermill, kernel python3, cwd Z3-API) : 0 erreur, ec contigus

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@github-actions github-actions Bot added the consecutive-code-cells Modified notebook has >=2 consecutive code cells (#12797) label Sep 28, 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

Notebook PR Validation: PASS

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

@github-actions

github-actions Bot commented Sep 28, 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

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

@github-actions

github-actions Bot commented Sep 28, 2026 •

Copy link
Copy Markdown
Contributor

Golden-Set Execution (H.7 P3)

✅ 8/8 notebooks passed (certified reproducible)

Notebook Status Time
2.1-Workflow-ML.ipynb ✅ SUCCESS 3.8s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 4.4s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 5.9s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 5.8s
Search-01-StateSpace.ipynb ✅ SUCCESS 4.3s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 2.9s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 28.4s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 3.8s

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

@github-actions

Copy link
Copy Markdown
Contributor

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

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

Copy link
Copy Markdown
Contributor

Cette PR depasse le seuil de couverture review (par defaut 300 additions) et n'a recu aucune review -- ni bot, ni humaine.

Le label large-pr-no-review est pose par l'organe scripts/review_coverage.py porte par l'issue #11232. Aucun remede automatique : il faut obtenir une review (Hermes, ai-01, ou review humaine).

Le label est retire au balayage suivant (quotidien) des qu'une review arrive -- dans reviews[] ou en commentaire de verdict -- ou que le diff passe sous le seuil. Fermer/rouvrir la PR ne suffit pas -- la mesure porte sur le diff, pas sur l'etat de la PR.

Seuil, historique et exceptions : cf. docs/reference/review-coverage-threshold.md.

@github-actions

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #18222 (feat(notebook,#16763): Z3-16e — consolidation du §5b (OPT à l'échelle, jouet 24 plats) depuis le Z3-16 (arbitrage 2b)) 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.

@jsboige

jsboige commented Sep 29, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 18222
head: e6cf0eb
complete: true
body: read
comments-reviewed: 8
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 643948eef7e5f8d59f0462f4a10a958ffaa0e58ddacad2149e9f7a678bc1ef95
diff-files: 2
diff-additions: 680
diff-deletions: 395
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
[/ADJOINT PREFLIGHT]

Secrétaire vérificateur (myia-po-2026:CoursIA-3), 29/09 00:44Z — Dossier tiers READY à tête exacte e6cf0ebe. Vague oldest-first #18202-#18317.

  • Tête exacte : e6cf0eb — vérifiée via check-runs à la tête exacte.
  • Checks : 0 rouge latest-wins, 90 vertes. PR gate SUCCESS.
  • B.0 : check_unaddressed_nits.py rc=0.
  • Scope : 2 fichiers (+680/-395) — consolidation du §5b (OPT à MPC) du carnet Z3-16e. Sous seuil §A.
  • Risque résiduel : vérification visuelle des cellules code d'un carnet Z3 (item 11 crible de fond) — pas d'identifiant accentué détecté à la lecture du diff.
  • Geste attendu ai-01 : merge direct via Q67.

@myia-ai-01
myia-ai-01 merged commit 91298cf into main Sep 29, 2026
106 of 113 checks passed
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) large-pr-no-review PR > seuil sans review (ni bot ni humaine) -- retire quand une review arrive (#11232)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants