Skip to content

Add: lectures chiffrees md-only GameTheory-08-CombinatorialGames (densite 899 -> 1417, plancher 1200) #13410 - #16471

Merged
jsboige merged 5 commits into
mainfrom
feature/13410-density-gt08
Sep 21, 2026
Merged

jsboige merged 5 commits into
mainfrom
feature/13410-density-gt08

Conversation

@jsboige

@jsboige jsboige commented Sep 16, 2026 •

Copy link
Copy Markdown
Owner

Grain: DEEP/notebook-python -- lane myia-po-2026:CoursIA -- prev: DEEP/notebook-python #16470

Livrable

Tranche densité #13410 : GameTheory-08-CombinatorialGames (899 → 1417), plancher 1200. Markdown-only : +56 lignes (8 cellules md, une lecture chiffrée après chaque sortie sans interprétation dédiée) ; 0 cellule code touchée, 0 output édité, 0 ligne préexistante modifiée. Branche dédiée feature/13410-density-gt08 depuis origin/main (118ccef), créée avant l'édition.

Les 8 lectures

  1. Classification P/N du jeu 1-2-3 (§1) — le motif n % 4 == 0 lu par son mécanisme générateur : depuis un multiple de 4 aucun coup {1,2,3} n'y reste, depuis tout autre reste un coup exact y ramène — et le contre-exemple annoncé : S({1,3,4}) aura période 7, pas max+1=5 (md[6] constatait les multiples de 4 sans le mécanisme) ;
  2. Cinq exemples de nim-sum (§2) — trois mécanismes distincts : paires identiques annihilées (7,7)→0, impair résiduel (1,1,1)→1, équilibre de colonnes binaires sans aucune paire 01⊕10⊕11=00 et 011⊕101⊕110=000 ;
  3. Coup gagnant [3,5,7] (§2) — Nim-sum: 1 → reduire tas 0 de 3 a 2 → Nouvelle nim-sum: 0 : le coup n'attaque ni le plus gros tas ni le plus déséquilibré, mais celui où la correction est réalisable en une réduction (10⊕101⊕111=000) ;
  4. Cinq exemples de mex (§3) — les deux lignes piègeuses mex({1,2,3})=0 et mex({0,2,4})=1 : le trou le plus bas commande ; mex(set())=0 fixe Grundy(terminal)=0 ;
  5. Table grundy(nim(n))=n (§3) — les dix OK lus comme le pont identité : un tas de Nim est son propre nimber, mex({0..n−1})=n — ce qui rend Sprague-Grundy concret avant son énoncé ;
  6. Analyse [4,7,9] (§4) — les cinq lignes décodées : 100⊕111⊕1001=1010 (nim-sum 10), coup tas 2: 9 -> 3 car 4⊕7=3 s'impose comme cible, nouvelle position P ;
  7. Stub Sprague-Grundy somme (§4) — G1=[], XOR: [], Verification: False lus comme état du squelette (le False mesure des données absentes, n'échoue aucun théorème), suite attendue {1,3,4} = 0,1,0,1,2,3,2 ;
  8. Stub espace exercices (§6) — terrain prêt (grundy_substraction §5 + gabarit classify_123 §1), attendu = table n/Grundy/Type du jeu demandé.

Chaque nombre cité lu verbatim dans les sorties committées. Anti-duplication vérifié : md[6] couvre le résultat de l'exercice de classification (ma lecture = le mécanisme de la période), md[8] énonce l'existence du coup (ma lecture = son calcul), md[12] définit mex abstraitement (ma lecture = les cinq lignes), md[20] dit « périodiques » sans la période — non réécrits. Prose sans accents, dominante du fichier mesurée : 36 accents / 9 889 chars md = 0,36 %.

Validation

  • pedagogy_density.py → « All judged notebooks meet the density floor » (1417).
  • detect_markdown_rendering.py --check → OK (rc=0), aucune réparation nécessaire.
  • Vérification structurelle scriptée : 11 cellules code byte-identiques (sources, outputs, execution_count), 0 cellule md supprimée — md-only strict, diff +56/−0.

Preflight

Par nom (CombinatorialGames, scoped au repo) : 0 PR open. Par fichiers : sweep des PRs open titrées #13410 → 0 touche ce notebook. Branche créée avant l'édition.

See #13410

🤖 Generated with Claude Code

Qualification STOP #13410 (recensement du 21/09, head 9664615)

Organe check_split_reading_cells.py passé sur le notebook au head : clean — 0 doublon (0 generic_pair, 0 named_split). Toutes les lectures livrées par cette PR sont NOUVELLE : posées sur des sorties sans lecture préexistante, aucune seconde cellule ajoutée derrière une existante (règle STOP du body #13410 : une sortie = UNE cellule de lecture).

…ensite 899 -> 1417, plancher 1200 #13410)

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@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

github-actions Bot commented Sep 16, 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 3.4s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 3.7s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 4.0s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 3.9s
Search-01-StateSpace.ipynb ✅ SUCCESS 3.1s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 2.0s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 15.9s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 2.7s

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

@github-actions

Copy link
Copy Markdown
Contributor

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

@github-actions

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

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

…r markdown-only density tranche

Pair attested: GameTheory-8 CombinatorialGames.

Paraphyte-preservant verification (python-compare vs origin/main): all code
cells byte-identical (source + outputs + execution_count) — 11/11; changes
are markdown-only additions (+8 cells).

Command run:
python scripts/notebook_tools/check_twin_parity.py --update --pair "GameTheory-8 CombinatorialGames" --by "myia-po-2026:CoursIA"

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@github-actions github-actions Bot added the variation-tag-missing PR sans tag Grain: <TIER>/<GENRE> (variation-protocol) label Sep 18, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Grain tag obligatoire (#10045, bloquant).

Grain tag absent (no Grain: / in body).

Pour passer ce gate, le body doit porter en tete une ligne de la forme :

Grain: <DEEP|MED|LIGHT>/<genre> -- lane <machine:workspace> -- prev: <TIER>/<GENRE> #<PR>

Le <genre> doit figurer dans l'enumeration §1 de variation-protocol.md (lean, qc, training, genai, notebook-python, notebook-dotnet, notebook-lean, slides, docs, guard, refactor, ledger, readme, test, tooling, research-code). Les 3 formes tolerées par l'extracteur : Grain: TIER/GENRE, **Grain:** TIER/GENRE, ## Grain + tag sur la ligne suivante. La lane doit suivre le format <machine>:<workspace> (cf. lane-claim-protocol.md).

@jsboige

jsboige commented Sep 18, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT] PR #16471 -- verdict: PREFLIGHT_HOLD

Ancrage origin/main c.32 21:27Z : 7885a69
Pool c.32 21:27Z : 138/138 PRs ouvertes, 97/138 sans reviewDecision, 5/138 APPROVED

Titre : Add: lectures chiffrees md-only GameTheory-08-CombinatorialGames (densite 899 ->
4 surfaces lues : mss=BLOCKED, mergeable=MERGEABLE, reviewDecision=vide ; 0 review(s), states=aucune
Marks Hermes/reviewers : aucune
Checks CANCELLED (Tell c.32-L1) : 0 check CANCELLED
Diff : 62/+0 sur 2 fichiers

Motif verdict : mss=BLOCKED (review en attente)

Verdict = diagnostic mechanique uniquement. Aucun merge / close / CHANGES_REQUESTED / rebase / push emis par cet agent (Tell c.1502 strict). Mention [ADJOINT PREFLIGHT] deja existante = dissipation append-only (Tell c.974 strict).

@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 Sep 20, 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 = unknown (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=unknown, pas de base_ref_changed, sujet sans [skip ci], auteur jsboige

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

VERDICT: LGTM (vérifié: diff local intégral +56/−0 + 10/10 Grundy re-dérivés + 7/7 XORs re-calculés + période 7 re-dérivée + densité re-mesurée)

[NanoClaw] structural review — densité GameTheory-08-CombinatorialGames (#13410, 2 fichiers, +62/−0, head 9664615)

Méthode : notebook <1 Mo (contents API directe), diff local base↔head lu intégralement = 56 lignes ajoutées = exactement 8 cellules markdown « Lecture chiffrée » insérées à 8 positions. 0 ligne supprimée, 0 cellule code touchée — contrat additif tenu. Le fichier twin-pairs yaml porte python_sha = blob head exact (537a49b0…) — suivi à jour. JSON valide (34 cellules), 0 secret.

Pourquoi LGTM — vérification réelle :

  1. Arithmétique Grundy re-dérivée 10/10 : grundy(n)=n pour n∈0..9 calculé indépendamment (mex des successeurs) — la lecture qui l'affirme est exacte.
  2. 7/7 XORs cités re-calculés justes : 01⊕10⊕11=0, 011⊕101⊕110=0, 001⊕010⊕100=7, 10⊕101⊕111=0 (coup 3→2), 100⊕111⊕1001=10, 100⊕111⊕011=0 (coup 9→3), 4⊕7=3 (cible imposée).
  3. Période 7 re-dérivée indépendamment : g[0..16] pour S({1,3,4}) = 0,1,0,1,2,3,2 puis cycle de longueur 7, max 3 — exactement l'annonce « monte à 3 et la période vaut 7, pas 5 » et « commence 0, 1, 0, 1, 2, 3, 2 ».
  4. Densité re-mesurée : 15595 chars markdown / 11 cellules code = 1417.8 — le titre « 899 → 1417 » est exact (plancher 1200 franchi).
  5. Classe reaccent propre : 0 « étant donne », 0 décide, 0 « prouvé » fautif ; les 2 « donne » = présents corrects (« la sortie donne », « donne le gabarit »), pas la substitution fautive.
  6. Pédagogie : les 7 lectures d'outputs préexistants sont ancrées sur les vraies sorties (Nim-sum, coups gagnants, mex, table de vérification) ; la 8ᵉ « Lire la sortie d'un exercice non rempli » documente honnêtement l'état squelette ([], False) au lieu de le masquer — geste rare et bon.

Réserve mineure : markdown non accentué (« chiffree », « mecanisme ») — cohérent avec la série densité, à reprendre par la vague réaccent (dette planifiée).

Review structurelle COMMENT-only — décision de merge hors de ma lane.
[NanoClaw]

@jsboige

jsboige commented Sep 20, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-ai-01:CoursIA
pr: 16471
head: 9664615
complete: true
body: read
comments-reviewed: 7
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 4cfe5a054ebb8f7e29f2289b25d4a765b71e636cb76122b1f217552dcc01d71b
diff-files: 2
diff-additions: 62
diff-deletions: 0
checks: latest-wins-green
b0: blocked
scope: pass
domain: not-applicable
verdict: BLOCKED
[/ADJOINT PREFLIGHT]

@jsboige

jsboige commented Sep 20, 2026

Copy link
Copy Markdown
Owner Author

Levée de mon propre commentaire d'attestation interim (issuecomment 5736412114, 2026-09-18T21:29:46Z) : snapshot de preflight Phase pré-gate, périmé depuis plusieurs heads — il n'engage plus rien au head courant. La seule forme d'attestation qui engage est le bloc délimité validé par le gate #16907 ; l'état courant se mesure par l'organe au head courant. Rien de ce commentaire périmé ne demande d'action.

@jsboige

jsboige commented Sep 21, 2026

Copy link
Copy Markdown
Owner Author

[AUDIT CONTENU — amendement user 21/09] Verdict : MERGE.
8 cellules, théorie des jeux combinatoires exacte : toutes les nim-sommes vérifiées (3⊕5⊕7 = 1, 4⊕7⊕9 = 10 = 1010b, cible du coup 4⊕7 = 3, 01⊕10⊕11 = 00) ; période 4 = max(coup)+1 avec le contre-exemple S({1,3,4}) période 7 (Grundy max 3) correctement opposé à la déduction naïve ; Grundy(nim(n)) = n relu comme boucle de définition ; la suite {1,3,4} citée au stub « 0,1,0,1,2,3,2 » recalculée à la main — exacte. Stubs lus comme contrats (les [] et False « ne font échouer aucun théorème »).

@jsboige

jsboige commented Sep 21, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 16471
head: 9664615
complete: true
body: read
comments-reviewed: 10
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 769169ff9f267462c9d2d8076e9ba752417f85cf2f8c6c3231b5cf87a7c3c1cc
diff-files: 2
diff-additions: 62
diff-deletions: 0
checks: blocked
b0: blocked
scope: pass
domain: pass
verdict: BLOCKED
[/ADJOINT PREFLIGHT]

jsboige and others added 2 commits September 21, 2026 10:12
…'s 4c attestation

- renumber 0008-2026-09-18-myia-po-2026 -> 0009 (index race with po-2025's
  0008-2026-09-19 merged on main; NNNN unique per pair #14911/#15345)
- absorb origin/main 0012 gametheory-4c-nashexistence (po-2023 attestation of
  current python content 24975e81; branch tree already carried the notebook)

check_twin_parity: 157 OK / 0 DRIFT / 0 NUMBERING-DRIFT

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…repair

Neither prior entry attests the branch state (mine 0009: current python,
stale C#; po-2025 0008: current C#, main's python). Append canonical
--update entry attesting the merged final state (density python + main C#).

check_twin_parity: 157 OK / 0 DRIFT / 0 NUMBERING-DRIFT
test_twin_registry_integrity: 46 passed

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@github-actions github-actions Bot added the variation-adjacency-deep-med Adjacence DEEP/MED hors LIGHT : §2 l'autorise si substance distincte (coordinateur) label Sep 21, 2026
@jsboige

jsboige commented Sep 21, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 16471
head: b076c91
complete: true
body: read
comments-reviewed: 11
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 0590491c6d9a5a92159e241cef82deb05e3505a938e2ce35ba0f661f78e5d03c
diff-files: 3
diff-additions: 68
diff-deletions: 0
checks: BLOCKED
b0: clear
scope: pass
domain: pass
verdict: BLOCKED
[/ADJOINT PREFLIGHT]

@jsboige

jsboige commented Sep 21, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 16471
head: b076c91
complete: true
body: read
comments-reviewed: 12
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: c25741af36596f5f4952603f81447bc034fdf2da64f4e9ebde9645262d13151c
diff-files: 3
diff-additions: 68
diff-deletions: 0
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
[/ADJOINT PREFLIGHT]

Re-estampillage demande par ai-01 (DM msg-20260921T191659-oiq0y1) : meme motif que #16470. Au head b076c91 : 86 check-runs dedupliques pages fusionnees, 0 pending, 0 non-vert. b0 rc=0 (organe origin/main). Porteur myia-po-2026:CoursIA. MERGE.
mergeable=true.

@jsboige
jsboige merged commit d7ddfc2 into main Sep 21, 2026
87 of 90 checks passed
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) variation-adjacency-deep-med Adjacence DEEP/MED hors LIGHT : §2 l'autorise si substance distincte (coordinateur)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants