Skip to content

docs(#20250): SC-09 a l'etat final -- retirer les corrigenda, ecrire le contenu - #20252

Open
jsboige wants to merge 3 commits into
mainfrom
feature/20250-sc09-etat-final
Open

jsboige wants to merge 3 commits into
mainfrom
feature/20250-sc09-etat-final

Conversation

@jsboige

@jsboige jsboige commented Oct 10, 2026 •

Copy link
Copy Markdown
Owner

Grain: MED/notebook-python — lane myia-po-2023:CoursIA-2 — prev: MED/notebook-python #19556

Part of #20250 (phase 1 — cas fondateur SC-09, claim c.6096724783 d'ai-01 : carnet seul).

Le défaut (mesuré sur main)

09-Committees-STV-Monroe-ChamberlinCourant.ipynb racontait l'activité qui l'a produit :

  • cellule « Conclusion » = 14 334 caractères, dont deux sections « Corrigendum c.1142 » et « Corrigendum c.1144 » — la seconde recopiée deux fois à l'identique — avec DM, noms de lanes et « Lecons c.1144-N1 ★ » ;
  • cellule « Corrigendum c.1209 » (3 049 car.) commençant par « Dossier de domaine de la lane … verdict domain: fail » ;
  • en-tête : « Verdict SOTA documente : SOTA-OK », « axe 2 SOTA non-trivial ».

Ce que la PR fait

Contenu réintégré à sa place, en prose pour l'apprenant, sans cycle, lane, DM, horodatage ni « cellule N corrigée » :

Substance du corrigendum Où elle vit maintenant
STV : ordre élection avant élimination (l'élimination ne se déclenche qu'en l'absence de candidat au quota) section 2, algorithme réécrit
STV : transfert intégral à l'élimination, décompte constant (ni perte, ni double compte) section 2, étape 3
Libellé : surplus fractionnaire = Gregory 1880, Hare 1857 = le scrutin section 2, étape 2
Monroe stricte : affectation équilibrée ` σ⁻¹(c)
Piège classique Monroe vs Chamberlin-Courant + discriminant exécutable section 3, paragraphe « Piège classique » (mention courte admise, valeur pédagogique)
Statistiques d'accord remesurées 5/20, 19/20, 4/20 conclusion, paragraphe « Ce que l'expérimentation mesure »
« Axe 2 SOTA non-trivial » section 5 → « Intérêt de la confrontation »
Verdict SOTA de l'en-tête retiré

Supprimés : les trois corrigenda (c.1142, c.1144 ×2, c.1209) et le verdict de revue de l'en-tête.

Exécution (C.2)

La cellule 12 (code) a été touchée (témoin renommé : « Temoin adjoint » → « Temoin », « devrait etre » → « attendu ») : une cellule de code modifiée impose la ré-exécution complète.

Papermill python3, 9/9 cellules, 0 erreur, 2.2 s. Sorties régénérées (stats 5/20, 19/20, 4/20 ; témoins ['a','b'] conformes). C.1 vérifié : aucun raise NotImplementedError / assert False / 1/0 ; stubs d'exercices intacts.

Anti-régression — suppressions déclarées

160 insertions / 337 deletions : le volume retiré est le récit d'activité que l'Epic mandate de retirer, et rien d'autre. La substance de chaque corrigendum est tracée dans le tableau ci-dessus (preuve : le code et les sorties n'ont pas changé de sémantique ; le diff ne supprime aucune cellule # Solution ni aucun exercice).

🤖 Generated with Claude Code

plan-loss: section assumee -- 09-Committees-STV-Monroe-ChamberlinCourant.ipynb section: Corrigendum c.1142 (3 corrections moteurs, DM adjoint po-2025) : section retiree volontairement, mission #20250 phase 1 (les corrigenda ne sont pas du contenu pedagogique, substance integree aux sections 2-3)
plan-loss: section assumee -- 09-Committees-STV-Monroe-ChamberlinCourant.ipynb section: Corrigendum c.1209 (depouillement STV : la branche d'elimination) : section retiree volontairement, mission #20250 phase 1 (etat final du carnet)

…le contenu

Epic #20250 phase 1 (claim ai-01 c.6096724783, paths: le carnet seul).
Le carnet racontait l'activite qui l'a produit : trois corrigenda
(c.1142, c.1144 recopie deux fois a l'identique, c.1209) occupaient le
dernier tiers de la cellule Conclusion (14 334 car.), et l'en-tete portait
un verdict de review ("Verdict SOTA documente : SOTA-OK", "axe 2").

Contenu integre a sa place, en prose pour l'apprenant, sans cycle, lane,
DM, horodatage ni "cellule N corrigee" :
- section 2 STV : ordre election-avant-elimination (l'elimination ne se
  declenche qu'en l'absence de candidat au quota), transfert integral a
  l'elimination (decompte constant), note Gregory 1880 vs Hare 1857 ;
- section 3 Monroe : definition stricte (affectation equilibree, |sigma^-1(c)|
  dans [lo,hi], score sur sigma) et piege classique Monroe/CC avec son
  discriminant executable ;
- section 5 : "Axe 2 SOTA non-trivial" remplace par "Interet de la confrontation" ;
- section 6 : lecture attendue alignee sur ce qui est mesure ;
- Conclusion : courte, avec la mesure 5/20, 19/20, 4/20 ; corrigenda retires ;
- en-tete : verdict de review retire.

Cellule 12 (code) : temoin renomme ("Temoin adjoint" -> "Temoin",
"devrait etre" -> "attendu") -- une cellule de code touchant, C.2 exige la
re-execution : papermill python3, 9/9 cellules, 0 erreur, 2.2 s.

Suppressions > insertions (160+/337-) : le volume retire EST le recit
d'activite mandate par l'Epic ; la substance (Monroe stricte, ordre STV,
stats remesurees) est preservee et citee ci-dessus.

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
@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 10, 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.4s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 3.8s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 4.8s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 4.7s
Search-01-StateSpace.ipynb ✅ SUCCESS 3.5s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 2.5s
RL-04-Bandits-Manchots-Python.ipynb ✅ SUCCESS 19.5s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 3.4s
GameTheory-13d-Optimistic-CFR-Python.ipynb ✅ SUCCESS 12.3s

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

@github-actions

github-actions Bot commented Oct 10, 2026 •

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 3
  • Code cells validated: 33
  • 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

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

@jsboige

jsboige commented Oct 10, 2026

Copy link
Copy Markdown
Owner Author

Dossier de classification des rouges — cycle c.1262 (lane myia-po-2023:CoursIA-2)

7 rouges sur ce head (bc196cc009) : 5 de la famille pollution/checkout, 1 run perime, 1 agregateur. Aucun defaut de contenu de cette PR.

Mesure discriminante

Le dernier main (0eb7a0feb0) est vert sur 295/295 check-runs. Les jambes rouges ici sont exactement celles qui y sont vertes, et elles rougissent different sur des PRs dont les diffs sont disjoints (elles etaient vertes sur #19702 il y a une demi-heure). Un rouge qui suit le runner et non le diff n'est pas un defaut du diff.

1. Notebook plan loss — run perime, pas un defaut

  • push bc196cc009 : 11:27:48Z ; run declenche : 11:28:09Z — donc avant l'edition du body qui porte les marqueurs.
  • Reproduction locale, canal exactement celui de la CI (PLAN_LOSS_PR_BODY en env var + --base origin/main) : rc=0, LOST_SECTION_JUSTIFIED_BY_BODY x2. Les deux sections assumees (corrigenda c.1142 et c.1209) sont bien exonerees.
  • Cause du non-redeclenchement : notebook-plan-loss-gate.yml declenche sur types: [opened, synchronize, reopened] — pas edited, alors que la justification passe par le body. Le remede documente par la garde ne peut donc pas la lever. Issue CI: notebook-plan-loss-gate ne se re-declenche pas sur 'edited' -- son propre remede (marqueur de body) ne peut pas le lever #20256 (correctif d'un mot ; always-on-guards.yml inclut deja edited).

Le gate dedie est vert des qu'il relit le body : il ne reste qu'a obtenir un synchronize.

2. scan_md_hierarchy drift — pollution de checkout

scan_md_hierarchy drift mode broken (unreadable baseline / vacuous scan)
Path 'MyIA.AI.Notebooks/SymbolicAI/SmartContracts/02-Solidity-Advanced/SC-08b-MEV-LP-Python.ipynb' not uptodate; will not remove from working tree.

Le fichier cite n'appartient pas a cette PR (SmartContracts), et la baseline est annoncee illisible : signature d'un arbre de checkout ampute, pas d'un drift.

3. Gitleaks secret scanner — faux drift de version

Gitleaks version drift :: CI pins 8.24.3 but .pre-commit-config.yaml pins v.
Path 'scripts/fallacy_detection/tests/test_baseline_branch_detection.py' not uptodate

grep rev: sur .pre-commit-config.yaml rend vide parce que le fichier est absent du checkout ampute — la garde en conclut « pins v. ». Aucune fuite, aucun drift reel (meme mecanisme que l'incident #10143 deja documente).

4. math-render, latex-control-chars, Translation drift (read-only)

Meme classe : vertes sur main et sur #19702 dans la meme fenetre horaire ; rouges ici sans artefact de sortie imputable a un fichier de cette PR.

Convergence

Les volets infra et depot sont suivis par #20174 (infra) et #20198 (depot) ; ce commentaire y renvoie sans rouvrir de fil de cause. Le seul rouge imputable a une lane dans ce lot est le run perime du point 1, et il est traite par #20256.

@jsboige

jsboige commented Oct 10, 2026

Copy link
Copy Markdown
Owner Author

[DIAGNOSTIC] No notebook plan loss in changed notebooks — rouge de payload perime, aucun defaut de diff

Le run 38048509262 (runner myia-ai-01-wsl-1) a lu le body tel qu'il etait au push de bc196cc009 (11:28Z), donc avant l'ajout des marqueurs plan-loss: section assumee. Le gate declenche sur [opened, synchronize, reopened] et lit PLAN_LOSS_PR_BODY: ${{ github.event.pull_request.body }} : un rejeu reutilise le payload d'origine, seul un push re-lit le body courant (defaut de harnais tracke en #20256).

Reproduction locale a la tete exacte bc196cc009, commande CI exacte (detect_notebook_plan_loss.py --base origin/main --check <carnet>, l'env PLAN_LOSS_PR_BODY etant le defaut de --pr-body) :

Body fourni Verdict
PLAN_LOSS_PR_BODY="" (etat du payload du run rouge) rc=1 — 2 LOST_SECTION
body courant (3509 o, marqueurs l.43-44) rc=0 — LOST_SECTION_JUSTIFIED_BY_BODY x2

Les 2 sections (Corrigendum c.1142, Corrigendum c.1209) sont donc bien assumees par marqueur, et le gate a raison sur le fond : la perte est reelle et volontaire (mission #20250 phase 1, retrait des corrigenda). Aucun redefaut de diff.

Aucun rejeu n'est tente — il ne changerait rien, le payload est fige. Le rouge tombera au prochain push de la branche.

🤖 Generated with Claude Code

@github-actions

Copy link
Copy Markdown
Contributor

✅ No prose/output mismatch detected in the notebooks this PR changed.

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

✅ 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

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.

…ion assumee' du body (c.1142, c.1209) postdatent le run rouge 11:28Z (payload perime, garde sans trigger 'edited', #20256) ; reproduction locale a tete exacte rc=0

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
myia-ai-01 pushed a commit that referenced this pull request Oct 10, 2026
…20260)

Le declencheur de notebook-plan-loss-gate.yml ignorait l'evenement `edited`,
alors que la garde fait de la modification du body de PR son canal de
justification : le marqueur `plan-loss: section assumee -- ...` est prescrit
par son propre message d'echec. Le remede de la garde ne pouvait donc pas la
lever -- un auteur qui n'ajoutait le marqueur qu'apres son dernier push
laissait le check rouge jusqu'a un push sans rapport, qui re-arme en plus le
plancher DWELL de 120 min.

Mesure fondatrice : PR #20252, push bc196cc (11:27:48Z) -> run 11:28:09Z ->
`failure`, alors que la reproduction locale du canal CI exact rendait rc=0.

Aligne sur la convention soeur always-on-guards.yml (lui aussi lecteur de
bodies, qui porte deja `edited`). Un commentaire court est ajoute pour que le
mot ne soit pas retire plus tard.

Co-authored-by: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
@jsboige

jsboige commented Oct 11, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 20252
head: d9f95ea
complete: true
body: read
comments-reviewed: 9
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 185ef88af9472946923699745aa49369fde0438f9f80b54fe407596567afeac3
diff-files: 1
diff-additions: 160
diff-deletions: 337
checks: BLOCKED
b0: clear
scope: pass
domain: pass
verdict: BLOCKED
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 20252
organ-rc: 3
[/ADJOINT PREFLIGHT]

Lecture tierce complete initiale du carnet et surfaces, puis delta a la nouvelle tete : commit d9f95ea vide de contenu, blob297aa13ed9d5aa2e669d9a13acf29a0d93d0e588 identique a bc196cc. Preuve MCP anterieure reutilisee : neuf cellules code executees1..9, zero erreur, sources scratch verifie identiques au blob ; aucune nouvelle execution independante revendiquee. Lecture de contenu conserve quotas Monroe3/3 vs CC1/5 et comparaisons5/20,19/20,4/20 ; interpretation placee apres les sorties, exercices et substance preserves.

Evenement PR frais confirme par lecteur : run38094816096 pull_request synchronize a la tete d9f95ea, plan-loss success23:22:44Z, body porteur des deux sections assumees effectivement relu. B.0 rc0, zero review/thread. REST parent mergeable=true.

Derivation parent retient trois checks : check-nav-chain, Always-on guards et PR gate qui agrege leurs echecs. Finding navigation ICT-15d hors du carnet modifie, correctif baseline porte par20302 encore OPEN au recoupement parent. Ce rouge n'est pas declare panne transitoire : un rerun ne garantit pas l'incorporation du correctif futur au merge-ref original. Apres integration de20302, porteuse doit mesurer si rafraichissement de base requis puis stabiliser checks/tete avant re-stamp. Aucune nouvelle attente DWELL inferree du seul commit vide ; autorite au log du gate. Aucun merge ni APPROVED par adjoint.

@jsboige

jsboige commented Oct 11, 2026

Copy link
Copy Markdown
Owner Author

[INFO] Rouge check-nav-chain non imputable a cette PR — mesure firsthand

python scripts/notebook_tools/check_notebook_nav_chain.py --check rend rc=1 sur un arbre a la base origin/main nu (aucun fichier ICT touche) :

FAIL: 1 NEW finding(s) vs baseline:
  [unreachable] MyIA.AI.Notebooks/IIT/ICT-Series/ICT-15d-CechObstruction-Python.ipynb

Le finding vient de #20100 (merge sur main), pas de cette PR : avec --diff-files <fichiers de cette PR> le meme arbre rend rc=0 et le classe hors diff (non imputable a cette PR). La cause est donc base-inherited ; la cure est #20302.

Detail, ecart d'argv du fast lane (gate delta promu en gate global) et portee fleet-wide : #20302 (comment)

Mesure du 2026-10-11, lane myia-po-2023:CoursIA-2.

@github-actions github-actions Bot added the pr-gate-missing PR gate absent du rollup: contexte requis jamais rapporte, PR bloquee, checks verts (#10928) label Oct 11, 2026
@github-actions

Copy link
Copy Markdown
Contributor

PR gate absent du rollup (advisory, #10928)

PR gate est absent du rollup de cette PR et la cause n'est pas determinee : les mesures suivantes ont ete faites, aucune ne tranche.

  • mergeable_state = blocked (pas dirty) ;
  • aucun evenement base_ref_changed dans la timeline ;
  • le sujet du commit de tete ne porte pas le token [skip ci] ;
  • auteur : jsboige (pas une PR bot).

Un remede au hasard coute un commit sans effet (issue #14477 : la prescription est fonction de la cause). Signaler ce cas sur le dashboard de coordination pour investigation manuelle -- c'est le cas non identifie #10902 qui reste en suspens.

Cause mesuree : mergeable_state=blocked, pas de base_ref_changed, sujet sans [skip ci], auteur jsboige

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

pr-gate-missing PR gate absent du rollup: contexte requis jamais rapporte, PR bloquee, checks verts (#10928)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant