Skip to content

fix(notebook,#17419): Z3-08 deadline J1 mesurée (Cmax 8→9) + nav canonique 01→01b→02→…→08→09 - #18792

Merged
myia-ai-01 merged 2 commits into
mainfrom
fix/17419-z3-08-nav-deadline
Oct 2, 2026
Merged

myia-ai-01 merged 2 commits into
mainfrom
fix/17419-z3-08-nav-deadline

Conversation

@jsboige

@jsboige jsboige commented Oct 2, 2026

Copy link
Copy Markdown
Owner

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

Tranche corrective isolée de la campagne Hermes #17419 : les deux findings du 22/09 sur Z3-08-Ordonnancement-Python.ipynb, re-vérifiés firsthand puis corrigés sur preuve mesurée.

Finding 1 — Exercice 2 : promesse d'effet non tenue

Re-vérification. L'énoncé demandait J0 <= 7 en promettant que le makespan optimal augmente. Dans l'ordonnancement optimal commité (cellule solution), J0 termine à t = 6 : la contrainte est inactive — Cmax reste 8, la promesse est fausse. Variante Hermes (t = 5 sur J0) écartée par la mesure : INFEASIBLE (J0 a 6 unités de travail).

Mesure au vrai solveur (Z3 4.16.0, modèle fidèle de solve_jobshop, scratchpad hors repo) :

Variante Cmax Verdict
baseline (sans deadline) 8 —
J0 ≤ 7, J0 ≤ 6 8 contrainte inactive (J0 finit déjà à 6)
J0 ≤ 5 — INFEASIBLE
J1 ≤ 6 (retenue) 9 la contrainte mord — J1 finissait à 8
J2 ≤ 6 8 inactive

Correctif. L'énoncé vise désormais J1 : « le job J1 vient de passer urgent : imposez qu'il termine avant t = 6 (…J1 termine à t = 8). Mesuré au solveur, Cmax passe de 8 à 9 ». Indices, commentaires de stub, signature (deadline_j1=6) et docstring alignés. Stubs C.1 conservés (TODO, return None) ; carnet ré-exécuté intégralement.

Finding 2 — flèche de navigation 08 → 01b au lieu de 09

Corrigé : flèche avant de Z3-08 → Z3-09-Enigme-Einstein-Python.ipynb (cohérent avec la flèche retour ← 08 de Z3-09).

Complément requis par l'organe nav-chain. La flèche erronée 08→01b était le seul rattachement de Z3-01b à la série (l'ordre canonique 01 → 01b → 02 n'était pas câblé : la flèche avant de Z3-01 pointait directement vers 02). Corrigée seule, elle fabriquait une régression : check_notebook_nav_chain.py passait de 1 finding (baseline main) à 3 — Z3-01b devenait une seconde entrée orpheline (et révélait l'entrée préexistante Z3-13b, invisible à 1 entrée). La flèche avant de Z3-01-Python pointe désormais vers 01b, rétablissant l'ordre canonique : la série revient au baseline exact de main (1 finding independent_chain préexistant, 0 orphelin). Édition markdown-only sur Z3-01 (ligne Navigation de la cellule 0) — pas de ré-exécution due.

Validation

  • C.2 : Z3-08 ré-exécuté via papermill (kernel python3, --cwd série) — 9 cellules code, 0 erreur, execution_count 1-9, kernel 3.13.7 (stamp série). Sorties commitées.
  • C.2 compliance (check_c2_compliance.py --path) : OK sur les deux carnets.
  • H.3 pre-commit : passé (gitleaks, probe banner, papermill paths scrub, H.3 exec-check).
  • nav-chain : retour au baseline main exact (1 finding préexistant, 0 nouveau).
  • Navlinks cassés : 0. exec_sequence : 0 finding. cell_source_parses : OK.
  • Scope claim amendé sur l'issue (c.5944049520), organ check_lane_claim.py CLEAR sur les deux chemins.

See #17419 (tranche corrective Z3-08 — la campagne reste ouverte sur les autres carnets).

🤖 Generated with Claude Code

…->9) + nav 08->09 et 01->01b

Finding 1 : l'enonce promettait une hausse de Cmax pour J0<=7 alors que J0
finit deja a 6 dans l'ordonnancement optimal (contrainte inactive). Variante
retenue sur mesure Z3 reelle (z3 4.16.0) : deadline J1 <= 6 -- J1 finit a 8
dans l'optimal, la contrainte mord, Cmax passe de 8 a 9. Enonce, indices et
stub alignes (stubs C.1 conserves), carnet re-execute integrale (C.2).

Finding 2 : fleche nav 08 pointait vers 01b au lieu de 09. Corrigee, puis
compltee : la fleche 01-Python -> 01b retablit l'ordre canonique 01 -> 01b
-> 02 (01b etait rattache uniquement par la fleche erronee de 08 ; sans ce
complement, 01b devenait une seconde entree orpheline -- check_notebook_nav_
chain.py 1 -> 3 findings ; avec, retour au baseline exact 1 finding).

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

github-actions Bot commented Oct 2, 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 2, 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 5.9s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 5.8s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 6.1s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 5.2s
Search-01-StateSpace.ipynb ✅ SUCCESS 4.2s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 3.2s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 36.6s
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

github-actions Bot commented Oct 2, 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 2, 2026

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

github-actions Bot commented Oct 2, 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 2, 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 2, 2026

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

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

… (nav Python seul)

L'edition markdown-only de Z3-01-Python (fleche avant 01->01b, fix nav-chain
du finding 2) deplace le blob SHA du cote Python : attestation --update
posee APRES le commit des edits (#8957, #8570), ligne known_differences en
tete expliquant l'edition. Cote C# inchange.

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

jsboige commented Oct 2, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 18792
head: b4ce065
complete: true
body: read
comments-reviewed: 7
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 7ba5a9f852170a2aef1026529eda59ba9ddbbf63c733f9643e02691f41ef53ce
diff-files: 4
diff-additions: 131
diff-deletions: 124
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
[/ADJOINT PREFLIGHT]

note: Re-exec notebook Z3-08 Ordonnancement ; cellule 8 = 1840 chars, 9 cells code tous exec 1..9, outputs presents. Diff notebook +123/-123 (symetrique) = re-execution complete. Twin_pairs 2 fichiers ajoutes pour golden-set.

@myia-ai-01
myia-ai-01 merged commit 72d2686 into main Oct 2, 2026
96 of 100 checks passed
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