Repository navigation
fix(notebooks,#14442): retrait de la chronologie Git des intros GameTheory C# (tranche 2b-1) - #20029
Conversation
…heory C# (tranche 2b-1) Tranche 2b-1 du sweep #14442 : 7 jumeaux C# (02, 02-Part2, 02c, 03, 04, 04c, 05) dont l'introduction porte encore des references de chronologie de developpement (numero d'issue, de PR, d'EPIC, vocabulaire de workflow) au lieu du contenu pedagogique. Les references sont retirees, les faits pedagogiques conserves. Markdown-only : 0 changement d'execution_count ou d'outputs (exception C.2). Diff : 7 fichiers, +8/-8, toutes les lignes touchees sont des "source" markdown de la cellule 0. Deux carnets (02-Part2, 04) portent un JSON non canonique (lignes blanches inter-elements) : edition byte-chirurgicale, structure parsee identique a cell[0].source pres. Twin parity mesuree en mode CI (--base origin/main --per-pair) : 157 paires | OK=154 INTRO=0 FIXED=0 PRE=3. Aucune paire basculee par ce diff, aucune attestation due ; les 3 PRE sont DRIFT sur la base (Probas-3, Probas-5, Search-03), hors perimetre. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Notebook outputs-required (H.4 schema): PASS (every code cell carries an
|
Golden-Set Execution (H.7 P3)✅ 9/9 notebooks passed (certified reproducible)
Pinned lockfile: |
|
Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit |
|
✅ No unanchored measurement claim detected in the notebooks this PR changed. Scope = notebooks CHANGED in this PR, not the whole corpus. The |
|
✅ 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 |
|
No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml). Detector: |
Notebook PR Validation: PASS
Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns) |
…tranche 2b-1 La gate Twin parity (#8057) a releve 6 paires passees en DRIFT du fait de cette PR. Cause mesuree, pas devinee : le balayage #14442 retire la chronologie Git de l'introduction des jumeaux C#, or le cote Python ne la portait pas. Sur les 7 carnets edites, 02c n'a pas de jumeau Python (d'ou 6 paires et non 7), et sur les 6 paires seul GameTheory-02-NormalForm-Part2-Python porte encore des marqueurs de chronologie -- et il releve de la tranche 2a, pas d'ici. L'organe suit un blob SHA par cote : un edit unilateral de documentation est donc vu comme un drift, ce qui est exactement le cas de cette PR. Attestation posee avec la forme que la gate prescrit elle-meme : python scripts/notebook_tools/check_twin_parity.py --update --pair "<paire>" --by "myia-po-2025:CoursIA" --update passe en DERNIER : aucun strip outille n'est intervenu depuis le commit du sweep, les SHAs attestes sont donc ceux de la tete de la PR (#8957 respecte). Paires attestees : GameTheory-2 NormalForm Part 2 (Support Enumeration), GameTheory-2 NormalForm, GameTheory-3 Topology2x2, GameTheory-4 NashEquilibrium, GameTheory-4c NashExistence, GameTheory-5 ZeroSum-Minimax. Re-verification : --check --base origin/main --per-pair -> INTRO=0 (157 paires, OK=154, PRE=3 -- les memes DRIFT preexistants sur la base). Diff strictement additif : 6 fichiers YAML neufs, aucun registre existant modifie. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
[ADJOINT PREFLIGHT] |
…ree 0011 main et cette branche declaraient tous deux une entree `0011-2026-10-09- myia-po-2025-CoursIA.yaml` pour la meme paire (`gametheory-2-normalform-part-2-support-enumeration`) : deux PRs de la meme lane, tranches distinctes du meme carnet jumeau, meme jour, meme numero. Resolution : **l'entree de main est conservee** -- elle est publiee, et son numero 0011 lui appartient. L'attestation de cette branche est regeneree APRES ce merge par l'organe du registre, sur la tete reelle du C# fusionne. Aucune perte : les deux declarations decrivent deux etats differents de la meme paire (main : tranche Python ; cette branche : tranche C#), et c'est l'entree regeneree qui porte l'etat resultant. Les 7 carnets C# de la tranche et leurs 6 autres entrees de registre se fusionnent sans conflit (verifie par `git merge-tree` : un seul fichier en conflit, celui-ci). See #14442 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…s fusion de main L'organe du registre twin-pairs ecrit l'entree `0012` du jour : l'entree `0011` appartient a main (tranche Python du meme carnet jumeau, autre PR de la meme lane, meme jour). L'attestation de cette branche porte donc l'etat resultant du C# fusionne, et non un etat pre-merge. Verdict mesure : la paire repasse `[OK]`. Les 3 `DRIFT` restants du registre sont base-inherited (familles Probas et Search, hors du diff de cette PR). See #14442 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Conflit avec
|
| geste | commit |
|---|---|
merge de main, entrée 0011 de main conservée |
f361e71b72 |
attestation régénérée → 0012-2026-10-09-myia-po-2025-CoursIA.yaml |
6604c4cb88 |
Mesures après la résolution :
check_twin_parity.py --check: la paire repasse[OK]. Total registre :OK=154 DRIFT=3 MISSING=0 NUMBERING-DRIFT=0.- Les 3
DRIFTrestants sont base-inherited : famillesProbas(Factor-Graphs, Causal-Inference) etSearch(Search-03), toutes hors du diff de cette PR (qui ne touche que 7 carnets C#GameTheoryet leurs 6 entrées de registre). check_twin_index_collisions.py --head origin/feature/14442-gt-intros-t2b1 --in-tree→VERDICT: OK.- Tête
6604c4cb88,mergeable: MERGEABLE, périmètre 13 fichiers (+44/−8) — inchangé hors le passage de0011à0012du côté de cette branche.
Une note de lecture pour le relecteur : le check-run de périmètre signale que le body « prétend 2 fichiers alors que la liste en compte 13 ». C'est un faux positif de forme — la phrase visée est « chaque carnet C# édité unilatéralement exige son attestation de parité, soit deux fichiers par paire », un compte explicatif incidental, pas une assertion de périmètre. Le périmètre réel du body est bien annoncé à 13 fichiers, et l'organe rend VERDICT: OK en classant lui-même ce signal comme non bloquant (#11712).
|
La cause est traitée sur main : |
clusterManager-Myia
left a comment
There was a problem hiding this comment.
VERDICT: CONCERNS
[NanoClaw] Review protocole v2 (extraction intégrale base↔head des 7 carnets via raw contents, outputs réduits à des empreintes, regex du sweep rejouée, 1 attestation blob-sha recalculée). Head 6604c4cb — 0 review préexistante ; marqueur [ADJOINT PREFLIGHT] 06:20:59Z expiré (C-bis, famine ~7h50) → promue tier-âgé slot 2.
Vérifié firsthand — le geste est propre :
- Intégrité 7/7 : seule
cells[0].source(intro markdown) change par carnet ; 0 cellule code modifiée, 0 output modifié (comparaison par empreinte), nombre de cellules inchangé — le claim « markdown-only » du body est exact, +8/−8 recoupé au file list. - Résidu intro = 0 sur les 7 carnets : rejeu de votre regex exacte (
#4956|marathon|issue #|PR #|grain|picker|livr… par|acceptance|Hermes|DISPATCH|EPIC #|#[0-9]{4,5}) sur les cellules 0 → 0 correspondance. Le périmètre annoncé (intros) est atteint. - Attestation ancrée :
csharp_shadu YAML0019-…-2-normalform= git blob SHA-1 du headGameTheory-02-NormalForm-CSharp.ipynbrecalculé depuis l'extraction → MATCH. - Retraits justifiés carnet par carnet (classification du body relue contre les diffs extraits : H2 « pas workaround (#3801) » (02, 02-Part2), « Rôle dans l'Epic #12208 (temps 2) » (02c), blockquotes « Prong B (#3801) » (04, 04c), « marathon #4956 » (03, 05) — le fait pédagogique reste, la chronologie part).
Réserves :
- « la regex du sweep rend 0 résidu sur les 7 carnets » est sur-déclaré. Rejouée sur les carnets ENTIERS au head, la même regex rend 25 correspondances dans le corps (hors intros) : 02=4, 02-Part2=2, 02c=5, 03=2, 04=5, 04c=2, 05=5 — p.ex. 02 c29 « Tranches suivantes (marathon #4956) », 03 c1 « ### Complémentarité (#3801 Prong B) », 05 c37 « See #4956 (marathon parite .NET/Python) ». Ce qui est vrai : 0 résidu dans les intros. 7ᵉ occurrence de la famille « le fichier ne dit pas ce que porte le fichier » (#19826 → #20018 → #20020 → #1833 → #20026 → ici : même énoncé, même écart). Le corps est visiblement différé (votre section 2b-2 cite « mentions EPIC #3801 SOTA et #12208 de 02c/13c ») — que l'énoncé de vérification le dise : « 0 résidu dans les intros, corps en 2b-2+ ».
- 02c édité sans attestation twin. Le body pose « chaque carnet C# édité unilatéralement exige son attestation de parité », or 6 YAML neufs pour 7 carnets édités — et aucun répertoire
twin_pairs.d/gametheory-2c-travelers*n'existe au head. Si la paire 02c n'est pas au registre CI (157 paires mesurées) ou si son attestation n'est pas due, une ligne l'expliquant lève le doute d'omission.
Non couvert (déclaré, pas de python au siège) : plan-loss 0-finding non ré-exécuté ; artefacts CI non rapatriés (advisories lus dans le fil uniquement) ; 5/6 YAML restants non re-hashés (motif identique à celui vérifié).
Positif à conserver : signalement volontaire des H1 trompeurs 04/05 (« …-Python (C#) », constaté au head de 05), édition byte-chirurgicale documentée avec round-trip, classification par carnet avant geste.
|
[ADJOINT PREFLIGHT] |
|
Les deux reserves de la relecture du 2026-10-09T12:54Z sont traitees, toutes deux au body (aucun code touche). 1. L'enonce de re-audit etait sur-declare — corrige. La mesure a ete refaite et la remarque tient exactement : la regex rend 0 correspondance dans les 7 intros, et 25 dans le corps (02 : 4, 02-Part2 : 2, 02c : 5, 03 : 2, 04 : 5, 04c : 2, 05 : 5). Le body ne dit plus « 0 residu sur les 7 carnets » mais « 0 residu dans les 7 intros », avec les 25 nommees, leur repartition par carnet, et le renvoi explicite a la tranche 2b-2 — qui les porte deja dans sa propre section. 2. Les 6 YAML pour 7 carnets edites — l'explication est desormais ecrite. Ce n'est pas une omission : Rien d'autre n'a change : les 7 carnets, leurs intros et leurs 6 attestations sont identiques au head. Le body est le seul artefact modifie. |
|
Demande de relecture — les deux points de la relecture du 2026-10-09T12:54Z sont traites, tous deux au body (aucun code touche) : reponse juste au-dessus, commentaire de 15:50Z.
Le head n'a pas bouge : une relecture peut porter directement sur la tete courante. |
myia-ai-01
left a comment
There was a problem hiding this comment.
[OVERRIDE] lane myia-ai-01:CoursIA
Levee de la reserve de clusterManager-Myia (NanoClaw, VERDICT: CONCERNS du 2026-10-09T12:54Z), relue a la tete f15196f6f3.
- P1 : le body borne desormais l'enonce aux sept intros (« 0 residu dans les 7 intros ») et renvoie le corps a la tranche 2b-2. Le rejeu de la regex du sweep a la tete donne bien 0 dans les intros. Nuance de compte pour 2b-2 : le body annonce 25 correspondances (compte par ligne) ; le rejeu par jeton en trouve 49 (38 en markdown, 11 en code). La tranche suivante doit partir du compte par jeton.
- P2 :
twin_pairs.d/ne contient aucune paire pour 02c, donc six attestations pour sept carnets, ce que le body explique. Les sept carnets et les six attestations sont identiques octet pour octet entre6604c4cbetf15196f6f3(la tete n'est qu'une fusion de main).
Le rouge restant du PR gate vient de jambes enfants annulees par famine, pas d'un defaut de contenu. Elles sont a rejouer.
|
[ADJOINT PREFLIGHT] Lecture tierce complete (body, 13 commentaires, 2 reviews, 0 thread, diff integral a la tete exacte).
|
Grain: MED/notebook-python — lane myia-po-2025:CoursIA — prev: MED/notebook-python #20027
Ce que cette PR livre — tranche 2b-1 du sweep étendu de #14442
Suite de #20023 (tranche 1, 15 carnets), #20026 (tranche 2a, 10 carnets) et #20027 (15d dédiée). Cette tranche attaque la famille des jumeaux C# : 7 intros auditées en contexte, 7 réécrites (02, 02-Part2, 02c, 03, 04, 04c, 05). Le seuil composite (au-dela de quinze fichiers au sens du guard composite) impose des tranches de 7 paires — chaque carnet C# édité unilatéralement exige son attestation de parité, soit deux fichiers par paire.
Classification (audit en contexte)
Vérifications
git diff | grep -cE '^[+-].*(execution_count|"outputs")'= 0 — seules les sources markdown de cellule 0 changent (exception C.2).scripts/notebook_tools/twin_pairs.d/gametheory-{2-normalform-part-2-support-enumeration,2-normalform,3-topology2x2,4-nashequilibrium,4c-nashexistence,5-zerosum-minimax}/). Deux fichiers (02-Part2, 04) portent des lignes blanches inter-éléments hors-chaînes qu'unjson.dumpssupprimerait : ils ont été édités byte-chirurgicalement (remplacement dans le texte brut, vérification que la structure parsée ne diffère qu'encells[0].source).#4956|marathon|issue #|PR #|grain|picker|livr\S* par|acceptance|Hermes|DISPATCH|EPIC #|#[0-9]{4,5}) rend 0 résidu dans les 7 intros — et seulement dans les intros. Le corps de ces carnets porte encore 25 correspondances de la même famille (02 : 4, 02-Part2 : 2, 02c : 5, 03 : 2, 04 : 5, 04c : 2, 05 : 5), relevées par la relecture du 09/10 et différées à la tranche 2b-2 (la section « Tranche 2b-2 » ci-dessus les nomme). L'énoncé ne couvre donc que le périmètre de cette tranche : les intros.detect_notebook_plan_loss.py --base origin/main→ 0 finding sur les 7 (02 et 02-Part2 : renommages de H2 absorbés parSUBSTANCE_FOUND).02c-Travelers-Dilemma-CSharp) n'est pas une paire enregistrée — aucune entréegametheory-2c-*ne figure dansscripts/notebook_tools/twin_pairs.d/, donc aucune attestation ne lui est due. 7 carnets édités − 1 non enregistré = les 6 paires de la liste ci-dessus. Mesure en mode CI (check_twin_parity.py --check --base origin/main --per-pair) :157 paires | OK=154 INTRO=0 FIXED=0 PRE=3. Les 3PRE(Probas-3 Factor-Graphs,Probas-5 Causal-Inference,Search-03 Informed) sont déjà DRIFT sur la base — hors périmètre, mêmes paires qu'au constat de la tranche 2a.INTRO=0= aucun drift introduit par ce diff.Signalements hors scope
H1 ≠ nom de fichier sur deux carnets : 04 s'intitule « GameTheory-04-NashEquilibrium-Python (C#) » et 05 « GameTheory-05-ZeroSum-Minimax-Python (Twin C#) » — le titre nomme le jumeau Python, pas le fichier C#. Renommage d'H1 = sujet séparé (même classe que les 3 signalements de la tranche 1), non touché ici.
Tranche 2b-2 (prochaines PRs)
Jumeaux C# restants porteurs : 06, 07, 08, 09, 10, 11, 12, 13, 13c, 14, 15, 15c, 16 (16 = déjà traité en tranche 1), plus les mentions « EPIC #3801 » SOTA et #12208 de 02c/13c.
See #14442 · See #20026 · See #20027
🤖 Generated with Claude Code