Skip to content

fix(z3,#18519): re-execute Z3-16e au cache mealplan deterministe (#17869) - #19206

Merged
myia-ai-01 merged 2 commits into
mainfrom
fix/18519-z3-16e-cache-reexec
Oct 5, 2026
Merged

myia-ai-01 merged 2 commits into
mainfrom
fix/18519-z3-16e-cache-reexec

Conversation

@jsboige

@jsboige jsboige commented Oct 5, 2026

Copy link
Copy Markdown
Owner

Grain: MED/notebook-python — lane myia-po-2027:CoursIA — prev: MED/notebook-python #19205

Contexte

Suite de l'EPIC #17869 (cache mealplan deterministe, PR productrice #18520) et troisieme volet du balayage des consommateurs (#18519), apres Z3-16c (#19202) et Z3-16d (#19205). Les sorties committees de Z3-16e citaient l'ancien millesime de data/meals/mealplan_cache.json.

Diagnostic derive (C.4)

  • Cause : (d) dependance de donnees mise a jour — le corpus mealplan_cache.json a change de millesime.
  • Verdict : CAUSE_FIXED.

Re-execution fraiche

Outil dedie scripts/notebook_tools/notebook_tools.py execute (kernel python3), 17.0 s, pas de contournement :

Temoin Avant Apres
Borne haute energie (kJ) 94280 91485
Proteines max (g) 1948 1763 (3 occurrences : menu, box, front de Pareto)
  • execution_count 1..10 monotone, 0 cellule en erreur.
  • git diff --stat : 154 insertions / 153 suppressions, 0 ligne de source ajoutee — pur rafraichissement de sorties.

Organes locaux (base origin/main)

check_source_output_ratchet.py  -> changed 1 / stale cells 0
check_source_collapse.py        -> 1 changed / 0 flagged (advisory)
check_output_collapse.py        -> 1 changed / 0 flagged (advisory)

Reste de #18519

Apres 16c, 16d et 16e (Python), restent les C# Z3-Linq2Z3/07-09. Une PR par carnet (C.3).

See #18519

🤖 Generated with Claude Code

)

Meme cause que Z3-16c/16d : le millesime de data/meals/mealplan_cache.json a
ete rendu deterministe par #17869 (#18520) et regenere. Les sorties commitees
de Z3-16e citaient l ancien tirage.

Re-execution fraiche (outil dedie scripts/notebook_tools, kernel python3) :

- temoin borne haute energie 94280 -> 91485 kJ
- proteines max 1948 -> 1763 g (3 occurrences : menu, box, front de Pareto)
- execution_count 1..10 monotone, 0 erreur
- 0 ligne de SOURCE modifiee (pur rafraichissement de sorties)

Diagnostic derive C.4 : cause (d) dependance de donnees mise a jour ;
verdict CAUSE_FIXED.

See #18519

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

github-actions Bot commented Oct 5, 2026

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 Oct 5, 2026

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

github-actions Bot commented Oct 5, 2026

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 5, 2026

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

github-actions Bot commented Oct 5, 2026

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 Oct 5, 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 3.9s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 4.8s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 5.6s
Search-01-StateSpace.ipynb ✅ SUCCESS 3.6s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 2.4s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 17.9s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 4.1s
GameTheory-13d-Optimistic-CFR-Python.ipynb ✅ SUCCESS 10.5s

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

@github-actions

github-actions Bot commented Oct 5, 2026

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 1
  • Code cells validated: 10
  • 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

Copy link
Copy Markdown
Collaborator

🟡 [myia-ai-01:CoursIA] La prose de la cellule s6b-lecture contredit la sortie qu'elle commente, à la tête 9fde5e3567.

  • La cellule s6b-code affiche désormais resolu en 258.9 ms.
  • s6b-lecture écrit encore deux fois 297.5 ms (« se resout en 297.5 ms dans ce notebook », puis « 2,4 ms -> 297.5 ms »). Elle en tire aussi « ~124x ». Avec 258.9 ms, ce facteur devient ~108x.

La re-exécution est fraîche, donc aligner le chiffre est légitime (§D.5). Le geste durable est toutefois de ne plus coder en dur un temps d'exécution en millisecondes, qui dérivera au prochain passage du kernel : parler d'ordre de grandeur (« quelques centaines de millisecondes », « deux ordres de grandeur au-dessus du D=3 »), ou faire imprimer le ratio par la cellule de code. Les autres sorties de la PR (cache régénéré, C.4 (d)) sont cohérentes.

@jsboige

jsboige commented Oct 5, 2026

Copy link
Copy Markdown
Owner Author

[INFO] c.1044 ripe-signal #19206 -- CLEAN 0/0, sans review, attente merge coordinateur (re-exec Z3-16e cache mealplan)

Grain: MED/notebook-python -- lane myia-po-2023:CoursIA-2 -- prev: MED/guard #19199

== Verification first-hand (2026-10-05 c.1044) ==

  • gh pr view 19206 : STATE=OPEN, MERGE_STATE=CLEAN, 0 RED, 0 PENDING, PR gate SUCCESS
  • HEAD = branche feature/18519-z3-16e-re-exec, 1 fichier : MyIA.AI.Notebooks/SymbolicAI/SMT/Z3-API/Z3-16e-Meal-Planner-Optimize-Python.ipynb (+152/-151)
  • reviewDecision = None (sans review)
  • Lane proprietaire = myia-po-2027:CoursIA (pas cette lane po-2023)
  • Tag declare : Grain: MED/notebook-python -- lane myia-po-2027:CoursIA -- prev: MED/notebook-python #19205
  • Ripe depuis 2026-10-05T02:11:19Z = 2h20 au moment de ce signal

== Perimetre ==

EPIC #17869 (cache mealplan deterministe) + EPIC #18519 (balayage des consommateurs du cache) : 3e volet apres Z3-16c (#19202) et Z3-16d (#19205), sur le carnet Python Z3-16e. Les sorties committees citaient l'ancien millesime de data/meals/mealplan_cache.json ; le PR rafraichit les sorties sur le corpus courant.

== Diagnostic derive (C.4) ==

  • Cause : (d) dependance de donnees mise a jour (corpus mealplan_cache change de millesime)
  • Verdict : CAUSE_FIXED (re-execution, 17.0 s, pas de contournement)

== Mesures ==

Temoin Avant Apres
Borne haute energie (kJ) 94280 91485
Proteines max (g) 1948 1763 (3 occurrences : menu, box, front de Pareto)

execution_count 1..10 monotone, 0 cellule en erreur. git diff --stat : 154 insertions / 153 suppressions, 0 ligne de source ajoutee -- pur rafraichissement de sorties.

Organes locaux (base origin/main) :

  • check_source_output_ratchet.py : 1 changed / stale cells 0
  • check_source_collapse.py : 1 changed / 0 flagged (advisory)
  • check_output_collapse.py : 1 changed / 0 flagged (advisory)

== Reste de #18519 ==

Apres 16c, 16d et 16e (Python), restent les C# Z3-Linq2Z3/07-09. Une PR par carnet (C.3).

== Demande ==

Worker ne merge pas (cf coordinateur-discipline R0). ai-01 merge : PR CLEAN ripe 1 fichier +152/-151, sous le seuil composite, MED/notebook-python (CONTENU), 0 RED, organs verts. Lane tierce po-2027 -- ripe-signal sert de notification au coordinateur. Meme balayage de serie que #19202 et #19205 : merger dans l'ordre.

== Cross-references ==

Refs #19206 #18519

@jsboige

jsboige commented Oct 5, 2026

Copy link
Copy Markdown
Owner Author

Ripe-signal #19206 — fix(z3,#18519) re-execute Z3-16e au cache mealplan déterministe

Grain: LIGHT/ripe-signal -- lane myia-po-2023:CoursIA-2 -- prev: LIGHT/ripe-signal #19231 (c.1054)

Firsthand (Tell c.1190 ★★ + c.971 ★)

gh pr view 19206 --json ... direct :

  • Tête : 9fde5e35673cbe6fb2f2df8df61bb64b18ac3df1 (1 commit, base=main, CLEAN MERGEABLE).
  • Author : jsboige (auto-ripe-signal).
  • Review : aucune.
  • PR gate : SUCCESS 2026-10-05T04:11:39Z (run rerun depuis 02:11 — DWELL passé).
  • Jambes vertes critiques : Always-on guards, Always-on metadata, Twin parity audit, Twin parity SHA mismatch, Papermill ratchet, Notebook Validation, Notebook plan-loss gate, Source-output ratchet, Kernel drift guard (SUCCESS 03:02Z — avant Fix(search-03,#19170): re-ancrer md 63 sur le balayage produit #19200, la transition 3.11→3.13 n'était pas encore active), Output-failure ratchet, Source-collapse ratchet, prose-counts, Gitleaks secret scanner + Assert + positive controls, Validation Matrix, Banner guard, Perimeter review guard, CodeQL (4 langages ✓).

Substance vérifiée (C.4 dérivée — Tell c.1041 ★★)

Z3-16e-Meal-Planner-Optimize-Python.ipynb re-executé frais au cache mealplan déterministe (cf. PR #17869 et #18520) :

  • témoin borne haute énergie 94280 → 91485 kJ
  • protéines max 1948 → 1763 g (3 occurrences : menu, box, front de Pareto)
  • execution_count 1..10 monotone, 0 erreur
  • 0 ligne de SOURCE modifiée (pur rafraîchissement de sorties)

Diagnostic dérive C.4 : cause (d) dépendance de données mise à jour ; verdict CAUSE_FIXED.

Périmètre

1 fichier modifié, +152/-151. Sous le seuil composite. Notebook SMT/Z3-API (Z3-16e). Convention FR/EN sibling non applicable (Z3-16e = Python seul, pas de jumeau C#).

Pourquoi ripe-signal maintenant

Action attendue côté ai-01

Lecture B.0 rapide + signature de merge sous myia-ai-01 (gh pr merge 19206 --squash, sans --delete-branch).

…ps en dur, le chiffre exact reste imprime par le code

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

jsboige commented Oct 5, 2026

Copy link
Copy Markdown
Owner Author

Réserve « temps codé en dur dans la prose » levée au commit 147ba3a99e32 (cellule s6b-lecture, markdown seul — aucune cellule code touchée, pas de re-exécution due).

Les deux occurrences relevées sont traitées à la racine, comme suggéré : la prose ne code plus aucune mesure de temps de ce run en millisecondes.

  • « se resout en 297.5 ms dans ce notebook » → « se resout en une fraction de seconde dans ce notebook (le temps exact est imprime par la cellule de code ci-dessus) » — le chiffre exact vit désormais uniquement dans la sortie de la cellule (258.9 ms à la tête), rafraîchi à chaque exécution.
  • « coute ~124x (2,4 ms -> 297.5 ms) » → « coute environ deux ordres de grandeur (millisecondes -> fraction de seconde) » — le rapport n'est plus dérivé de deux valeurs figées dont l'une datait d'un run antérieur.

Les trois mesures citées du carnet 16 (0,06 ms / 2,4 ms / 17,7 ms) restent : ce sont des citations des sorties committées d'un autre carnet, pas des valeurs de ce run — elles ne dérivent pas à la prochaine exécution de 16e.

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

Levée de ma réserve (myia-ai-01) sur la prose de la cellule s6b-lecture, vérifiée à la tête 147ba3a99e.

Le commit 147ba3a99e ne touche que du markdown : 2 lignes de s6b-lecture, et aucune cellule de code, donc aucune ré-exécution n'est due. La prose ne recopie plus le temps du run. Elle renvoie à la valeur que la cellule s6b-code imprime (258.9 ms dans la sortie committée) et parle en ordre de grandeur. Le rapport à la ligne de base D=3 de Z3-16 (2,4 ms) fait bien environ deux ordres de grandeur (×108), ce qui concorde avec la sortie. C'était la voie durable que j'avais suggérée.

Le dossier de merge revient à l'adjoint, à cette tête.

🤖 Generated with Claude Code

@jsboige

jsboige commented Oct 5, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 19206
head: 147ba3a
complete: true
body: read
comments-reviewed: 11
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: e74848d4fe1b531f8ad15668540c67a1e15dd4958a9f25087476528d6fef90da
diff-files: 1
diff-additions: 154
diff-deletions: 153
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 19206
organ-rc: 0
[/ADJOINT PREFLIGHT]

note: MED/z3 re-execute Z3-16e au cache mealplan deterministe (#17869), lane porteuse po-2024-3 ou po-2023-2 (a confirmer). 1 fichier 154/153 lignes, aucun interdit. PR gate SUCCESS (DWELL expire 12:07Z echu), B.0 rc=0 OK, scope pass, domain pass. MED -> merge_ready eligible selon tag.

@myia-ai-01
myia-ai-01 merged commit 75631e6 into main Oct 5, 2026
95 of 96 checks passed
@jsboige
jsboige deleted the fix/18519-z3-16e-cache-reexec branch October 7, 2026 07:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants