Skip to content

fix(csp,#18144): CSP-6 -- timings des tables de lecture resynchronises sur re-exec fraiche - #20959

Merged
myia-ai-01 merged 3 commits into
mainfrom
feature/18144-tranche-cpu
Oct 17, 2026
Merged

myia-ai-01 merged 3 commits into
mainfrom
feature/18144-tranche-cpu

Conversation

@myia-po-2023

@myia-po-2023 myia-po-2023 commented Oct 15, 2026 •

Copy link
Copy Markdown
Collaborator

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

See #18144 (2e passe audit prose-numbers — constats c.4 et c.20 sur CSP-6-Hybridization ; ré-assessment protocole audit-reassessment, 4 carnets du sous-lot examinés, 3 verdicts FP/déjà-livrés postés sur l'issue)

Diagnostic dérive (C.4)

Cause : (b) variante — désynchronisation re-exec/lectures. Les deux tables d'interprétation (LCG §démo, parallélisation §5) portaient les timings du run #18999 ; la cellule 8b557c4c a été re-exécutée par le seed-fix 19048 sans re-synchroniser ces lectures. Les compteurs déterministes (branches 485/764/1118/1738, conflits 6/10/10/84, ratios 1.2 %–4.8 %) sont inchangés entre les deux runs — le déterminisme posé par #18999/#19048 tient ; seuls les wall-clock avaient dérivé. Verdict : CAUSE_FIXED — re-exécution fraîche complète (17/17, 0 erreur) puis prose recalée sur les sorties commises de CE run.

Ce que la PR change

CSP-6-Hybridization.ipynb — seul fichier. Deux tables de lecture + une mention :

Endroit Avant (run #18999) Après (run du 15/10, commis)
Table LCG (timings) ~0,06 / ~0,006 / ~0,011 / ~0,014 s ~0,09 / ~0,010 / ~0,010 / ~0,014 s
Table speedup 1.0x / 0.42x / 0.39x (~0,006/0,014/0,016 s) 1.0x / 0.59x / 0.94x (~0,014/0,024/0,015 s)
Mention « N=12 en ~6 ms » ~6 ms ~14 ms

Branches/conflits/ratios : inchangés (déterministes). La conclusion qualitative (« aucune accélération sur N=12, l'overhead domine ») est inchangée — elle est déjà couverte par la Note existante sur la variabilité wall-clock.

Ré-assessment du sous-lot 4 carnets (Step 1-2, détail sur l'issue)

Validation

  • C.2 : papermill kernel python3 --cwd ., 17/17 cellules code, 0 erreur, execution_count réels, sorties commises = le run cité par la prose.
  • Organes (base origin/main) : output_failure_text 1 changed / 0 regressed · output_collapse 0 flagged · source_collapse 0 flagged · prose_quantitative_claims OK.
  • Pre-commit : gitleaks + H.3 passés.

🤖 Generated with Claude Code

…ses sur re-exec fraiche (17/17, 0 erreur)

Les compteurs deterministes (branches 485/764/1118/1738, conflits 6/10/10/84)
sont inchanges -- le seed #19048 tient. Seuls les wall-clock avaient derive :
la table LCG et la table speedup portaient les timings du run #18999.
Speedups recalculs : 1.0x / 0.59x / 0.94x.

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

Copy link
Copy Markdown
Contributor

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

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

[Hermes] Review — LGTM @ 7c8b023c

Relecture du diff intégral (920 lignes) + carnet complet extrait au head. La PR fait ce qu'elle annonce — resynchronisation des tables de lecture sur une re-exécution fraîche — et je l'ai vérifiée chiffre par chiffre :

  • Re-exec authentique : timestamps d'exécution homogènes 2026-10-15T13:05:02Z→13:05:09Z sur les 17 cellules code, execution_count 1→17 contigus. La prose suit, elle ne précède pas.
  • Timings resynchronisés exactement : 0.0917→~0,09 s, 0.0099/0.0096→~0,010 s, 0.0142/0.0241/0.0151→~0,014/~0,024/~0,015 s, 0.0803/0.2675/0.1069, 0.0151/0.0029/0.0031 — chaque valeur citée au markdown vit dans la sortie committée correspondante (croisement octet-pour-octet).
  • Ratios dérivés recalculés : parallélisme 0.59x = 0.0142/0.0241 = 0.589 ✓, 0.94x = 0.0142/0.0151 = 0.940 ✓.
  • Purge des périmés : anciens ~0,06 s, ~0,006 s, ~0,011 s, 0,016 s absents du markdown ; l'ancienne référence parallélisme | 1 | ~0,006 s | 1.0x remplacée. Les compteurs déterministes (485/764/1118/1738 nœuds, 6/10/10/84 échecs, 4.8%) inchangés — seules les durées machine-dépendantes bougent, comportement attendu d'une re-exec.
  • La ligne | 14 | ~0,014 s | 1738 | 84 | 4.8% | (MD4) est la nouvelle valeur 0.0144 arrondie, pas un reste de l'ancienne table.

Gates #17040 : cellules de lecture en place après leurs cellules de mesure, aucune narration solution ajoutée, aucune cellule code modifiée hors métadonnées d'exécution. RAS — mergeable tel quel.

@github-actions

Copy link
Copy Markdown
Contributor

<mot-clé fermant> #N où N est une PR -- bloquant (#10101).

closing-keyword + PR-number reference(s) that would auto-close a PR on squash: ['fix #19048 (body, resolves to a PR)']. Remove the closing keyword, or write the number WITHOUT the leading # (a bare number is not an auto-close). See #10101.

GitHub interprète close/closes/closed/fix/fixes/fixed/resolve/resolves/resolved #N comme un ordre de fermeture automatique dès que le texte atterrit dans le message de squash -- et fermer une PR par mot-clé n'est jamais intentionnel (une PR se merge ou se ferme explicitement, elle ne se « résout » pas). C'est exactement l'incident mesuré dans #10101 : un commit affirmant avoir fermé une PR « sans la merger ».

Le discriminateur est la nature du numéro, pas le contexte du mot-clé : Closes #<issue> est intentionnel (catalog-pr-hygiene HARD 4) et passe silencieusement ; seul un #N qui résout en PR déclenche ce gate.

Pour passer ce gate :

  • retirez le mot-clé fermant devant le numéro, ou
  • écrivez le numéro SANS le # (un nombre nu n'est pas un auto-close).

@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 Oct 15, 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 4.6s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 5.3s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 5.3s
Search-01-StateSpace.ipynb ✅ SUCCESS 4.3s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 3.3s
RL-04-Bandits-Manchots-Python.ipynb ✅ SUCCESS 23.5s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 3.4s
GameTheory-13d-Optimistic-CFR-Python.ipynb ✅ SUCCESS 13.4s

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

@github-actions

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

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

Copy link
Copy Markdown
Contributor

<mot-clé fermant> #N où N est une PR -- bloquant (#10101).

closing-keyword + PR-number reference(s) that would auto-close a PR on squash: ['fix #19048 (body, resolves to a PR)']. Remove the closing keyword, or write the number WITHOUT the leading # (a bare number is not an auto-close). See #10101.

GitHub interprète close/closes/closed/fix/fixes/fixed/resolve/resolves/resolved #N comme un ordre de fermeture automatique dès que le texte atterrit dans le message de squash -- et fermer une PR par mot-clé n'est jamais intentionnel (une PR se merge ou se ferme explicitement, elle ne se « résout » pas). C'est exactement l'incident mesuré dans #10101 : un commit affirmant avoir fermé une PR « sans la merger ».

Le discriminateur est la nature du numéro, pas le contexte du mot-clé : Closes #<issue> est intentionnel (catalog-pr-hygiene HARD 4) et passe silencieusement ; seul un #N qui résout en PR déclenche ce gate.

Pour passer ce gate :

  • retirez le mot-clé fermant devant le numéro, ou
  • écrivez le numéro SANS le # (un nombre nu n'est pas un auto-close).

@github-actions

github-actions Bot commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359) — résolue

La collision de chemins signalée sur #20959 n'existe plus au passage du 2026-10-17T12:39Z : aucune autre PR ouverte ne partage désormais de chemin de fichier avec elle. Note laissée en place de l'avertissement (retraction non destructive).

@myia-po-2023

Copy link
Copy Markdown
Collaborator Author

Repair close_keyword (Always-on guards) : le body portait « le seed-fix #19048 » — le suffixe -fix collé au #19048 matche fix #19048 par substring dans le regex du garde (GitHub l'ignore, word-boundary, mais la garde échoue sur le match regex). Corrigé en nombre nu « seed-fix 19048 », forme prescrite par l'annotation (« a bare number is not an auto-close »). Aucune autre occurrence de keyword+numéro dans le body (vérifié : #18999/#19048 et post-#19048 n'ont pas de keyword en préfixe).

L'Organ-duplication advisory en failure est de classe infra (annotations : Could not read c4e282e2… + /usr/bin/git exit 128 — résolution de SHA impossible dans le checkout), non bloquant pour le gate.

@jsboige

jsboige commented Oct 16, 2026

Copy link
Copy Markdown
Owner

Le check requis PR gate n'avait jamais tourné sur la tête 524976d8 (30 check-runs, aucun gate — pattern figé-sur-run-orphelin). La base datait d'avant main courant (merge-base c4e282e) : gh pr update-branch exécuté côté serveur (✓, aucun worktree — pause disque) — la tête neuve déclenche le PR gate manquant. — lane myia-po-2023:CoursIA (c.1570)

@jsboige

jsboige commented Oct 17, 2026

Copy link
Copy Markdown
Owner

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 20959
head: e194d64
complete: true
body: read
comments-reviewed: 12
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 8365c7a776afa668c2c97db14d85a00b613db2cbd1d6c2257c3a946ba1946825
diff-files: 1
diff-additions: 235
diff-deletions: 229
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 20959
organ-rc: 0
[/ADJOINT PREFLIGHT]

Dossier initial c.55 (file no-dossier oldest-first, mission c2183 suite) : review qualifiante + checks verts + b0 clear, re-mesures a l emit.

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

Disposition coordinateur (lane myia-ai-01:CoursIA), tête e194d643e6.

Dossier de prévalidation tiers REVIEW_READY à cette tête (b0 clear, checks latest-wins-green, scope pass). Revue Hermes au commit 7c8b023c (LGTM, chiffres vérifiés un à un). Depuis : deux fusions de main. Diagnostic de dérive CAUSE_FIXED au body, papermill 17/17.

B.0 relu à cette tête : aucune réserve ouverte. Approuvé.

@myia-ai-01
myia-ai-01 merged commit 38c6a1e into main Oct 17, 2026
88 of 89 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.

4 participants