Skip to content

Fix(qc,#23787): QC-Py-29 -- convergence du carnet sous le canon CPython 3.13 - #23886

Merged
jsboige merged 1 commit into
mainfrom
fix/23787-qc-py-29-canon313
Nov 1, 2026
Merged

jsboige merged 1 commit into
mainfrom
fix/23787-qc-py-29-canon313

Conversation

@jsboige

@jsboige jsboige commented Nov 1, 2026

Copy link
Copy Markdown
Owner

Grain: DEEP/notebook-python — lane myia-po-2028:CoursIA — prev: DEEP/docs #23786

Resume

Convergence du carnet QC-Py-29-Derivatives-Valuation.ipynb de Python 3.11.9
vers le canon CPython 3.13 sous kernelspec python3, re-execution papermill
bout-en-bout et sorties reelles commitees (C.2).

Tranche de la famille QuantConnect de #23384, conformement au contrat de
#23787.

Preuve d'execution (H.1)

Metrique Valeur
Commande papermill ... --kernel python3 (papermill 2.7.0)
Cellules executees 26/26 (12 code, 14 markdown)
Duree du run 421.7 s
Sorties d'erreur 0
execution_count nuls 0
language_info.version 3.11.9 -> 3.13.16
kernelspec.name python3 (inchange)

Le kernel python3 de cette machine resout vers
miniconda3/envs/mcp-jupyter/python.exe, mesure a CPython 3.13.16 avant
le run.

Perimetre du diff : rien de numerique ne bouge

Les sources des 12 cellules de code sont byte-identiques au blob de
origin/main (0 ligne "source" ajoutee). Sur les 12 sorties de code, 11
sont identiques au caractere ; la douzieme est la cellule de benchmark, dont
seule la colonne de chronometrage derive.

moteur                     prix put     erreur       temps
BS ferme                   9.102864        ref    155.4 us -> 451.4 us
arbre CRR n=2000           9.102941   7.69e-05     13.3 ms ->  29.6 ms
MC antithetique 2e5        9.114584   1.17e-02      7.6 ms ->  10.6 ms

Prix, ecarts a la reference et borne de Monte-Carlo (+/-0.023550, 1 SE)
sont inchanges : la transition de kernel ne touche aucun resultat
numerique, seulement des durees murales dependantes de la machine.

Diagnostic derive

Diagnostic C.4 pour les deux valeurs qui derivent, et pour elles seules :

  • Colonne temps du tableau — cause (a) environnement/machine. Un
    chronometrage time.perf_counter n'est pas reproductible d'une machine a
    l'autre ni d'un kernel a l'autre ; il ne constitue pas un resultat du
    carnet. Verdict CAUSE_INTRINSIC pour la valeur, et la cellule continue de
    la mesurer a chaque execution plutot que de la figer.
  • Prose de la cellule de lecture qui epingle ces trois temps —
    consequence de la ligne precedente. Elle est re-derivee par script
    depuis la sortie executee (451.4 us, 29.6 ms, 10.6 ms, soit 65,6 et
    23,5 fois moins), jamais re-epinglee a la main : l'ancrage est la sortie,
    pas une constante ecrite dans le markdown.

Aucune autre derive : les 11 autres sorties et les 13 autres cellules
markdown sont identiques a main.

Gardes locales (vertes, lancees dans le worktree apres le commit)

Garde Verdict
check_kernel_drift origin/main OK: 0 regression sur 1 carnet modifie
check_prose_quantitative_claims --diff [OK] aucun compteur quantitatif en prose
check_activity_leak --diff [OK] aucun passage d'activite dense ajoute
check_output_collapse origin/main 1 carnet modifie, 0 flagged
check_source_collapse origin/main 1 carnet modifie, 0 flagged (advisory)

Aucune entree de garde a ajouter : la convergence 3.10/3.11/3.12 -> 3.13 sous
kernelspec python3 est canonique globalement (#19181).

Notes de perimetre

  • metadata.papermill.input_path / output_path ramenes a la forme
    relative au depot deja presente sur main (jamais un chemin machine).
    Duree et horodatages sont ceux du run reel.
  • Aucune cellule de solution retiree, aucun stub d'exercice modifie : les
    trois exercices du carnet restent non resolus et executables.

See #23787
Part of #23384

🤖 Generated with Claude Code

…on 3.13

Re-execution papermill bout-en-bout sous `kernelspec python3` (CPython
3.13.16) : 12/12 cellules de code executees, 0 sortie d'erreur, 0
execution_count nul, sorties reelles commitees (C.2).

Les sources des 12 cellules de code sont byte-identiques au blob de
`origin/main`. Seule la colonne de chronometrage de la cellule de
benchmark derive (155.4 -> 451.4 us) : prix, erreurs et borne de
Monte-Carlo restent identiques au caractere.

La prose qui epinglait ces trois temps est re-derivee par script depuis la
sortie executee, jamais re-epinglee a la main : 451.4 us, 29.6 ms et
10.6 ms, soit 65,6 et 23,5 fois moins.

metadata.papermill.input_path/output_path ramenes a la forme relative au
depot deja presente sur main ; duree et horodatages sont ceux du run.

See #23787
Part of #23384

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

github-actions Bot commented Nov 1, 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 Nov 1, 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 3.1s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 3.0s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 3.3s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 3.1s
Search-01-StateSpace.ipynb ✅ SUCCESS 2.7s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 2.6s
RL-04-Bandits-Manchots-Python.ipynb ✅ SUCCESS 14.4s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 2.1s
GameTheory-13d-Optimistic-CFR-Python.ipynb ✅ SUCCESS 8.5s

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

@github-actions

github-actions Bot commented Nov 1, 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 Nov 1, 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 Nov 1, 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 Nov 1, 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 Nov 1, 2026

Copy link
Copy Markdown
Contributor

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

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 commented Nov 1, 2026

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

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

@jsboige

jsboige commented Nov 1, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 23886
head: 148c7b6
complete: true
body: read
comments-reviewed: 8
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 286ac870b62b4a27eea5b086f48507237d7b3264c295425ff08cf2b015a7b811
diff-files: 1
diff-additions: 171
diff-deletions: 142
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 23886
organ-rc: 0
[/ADJOINT PREFLIGHT]

@jsboige
jsboige merged commit 2046d69 into main Nov 1, 2026
93 of 94 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.

1 participant