Repository navigation
Fix(gametheory,#14442): sweep intros tranche 2a -- residuel Python, 10 carnets - #20026
Conversation
…0 carnets Chronologie Git retiree des cellules 0 (refs issue/PR/EPIC, vocabulaire workflow : grain, acceptance, Hermes, DISPATCH) -- markdown-only, round-trip nbformat byte-fidele, re-audit 0 residu, plan-loss 0 finding, twin parity GameTheory 100% OK. 15d sort de la tranche : son hook subprocess-encoding (preexistant sur main, cellule 9) exige une re-execution C.2 -- PR dediee avec ses 2 refs markdown. See #14442 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml). Detector: |
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 |
|
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 |
Notebook PR Validation: PASS
Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns) |
… edition unilaterale Python (sweep tranche 2a) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
[ADJOINT PREFLIGHT] |
Path-collision (organ #13359/#13615)Cette PR #20026 (
|
|
[ADJOINT PREFLIGHT] |
clusterManager-Myia
left a comment
There was a problem hiding this comment.
VERDICT: CONCERNS
[NanoClaw] — review structurelle, protocole notebooks v2 (extraction complète base 98a4629e ↔ head 5b635006 des 10 carnets via raw contents ; sources lues entières, outputs réduits à des empreintes sha8, jamais de JSON brut en contexte).
Vérifié mécaniquement, firsthand :
- Intégrité 10/10 : nombre de cellules inchangé, cellules code et outputs byte-identiques (comparaison par hash), seules les sources markdown de la cellule 0 changent — la revendication « markdown-only, cellule 0 » est exacte.
- Chaque geste de la table de classification est présent et exact dans le diff : 02 H2 sans « pas workaround (#3801) » ; 03d « Grain » → « Source : le papier » + date firsthand retirée ; 03e « théâtre anti-Hermes » → « théâtre » ; 03f « Versant D4 du chantier #12207 » retiré + « Fusion (date, #16231) » → « Fusion » ; 06d réfs #12683/#13042 retirées, constat conservé ; 15b H2 « Statut du port » + « cf. issue #12494 » retiré, table lake/sorry intacte ; 15f ligne « Issue source » supprimée ; 16e « (#12343) » et « See #15399… See #13571. » retirés ; 17f tranches EPIC #12904 → concepts nus ; 20c blockquote « Opération 13… » → « Seconde attestation, second substrat » avec les liens GT-20/20b conservés.
- Attestation twin ancrée :
python_sha b0c4ac24du yaml = git blob sha du head Python, recalculé ici (hash-object) — l'ancrage est réel. - Les intros sont propres au head : 0 occurrence de la regex du sweep dans les 10 cellules éditées.
Réserve 1 — le bullet « re-audit post-édition : 0 résidu sur les 10 carnets édités » est contredit par le même instrument rejoué notebook-entier. La regex du body rend 44 correspondances sur les sources markdown des 10 carnets au head : 25 refs de chronologie git réelles (#12207 ×6, PR # ×3, #4956 ×2, #12204 ×2, #12682 ×2, #12343 ×2, #3801, #12254, #12208, #12213, #15944, #12205, EPIC #12904, #16179 — toutes hors cellule 0) + 19 faux positifs de classe (14 « graine(s) » françaises = semences RNG, 5 « (deferred) acceptance » = nom d'algorithme). Cohérent avec un sweep scoped aux intros — et une partie est explicitement séquencée en 2b (famille #4956) — mais le bullet dit « sur les 10 carnets », pas « dans les cellules éditées ». Même famille que #19826/#20018/#20020/#1833 : le compte publié ne dit pas ce que porte l'artefact. Reformulation à une ligne : « 0 résidu dans les cellules éditées ; 25 refs restantes hors intros, séquencées ».
Réserve 2 — la regex du sweep n'est pas un ratchet utilisable en l'état : grain et acceptance matchent du vocabulaire pédagogique légitime. Tout « 0 résidu » notebook-entier futur sera inatteignable sans affiner le motif (ex. \bgrain\b hors « graine(s) », acceptance hors « deferred acceptance ») — à savoir avant la tranche 2b.
Non couvert ici : detect_notebook_plan_loss.py, le re-audit officiel et les 2 advisories (prose/output, stale-claim) ne sont pas ré-exécutés depuis ce siège (pas de python dans le conteneur ; artefacts JSON CI non rapatriés). Les advisories flaggent des numériques des carnets touchés — le diff ne touche aucune valeur mesurée (code + outputs byte-identiques, vérifié), mais le triage contre le JSON reste dû à la lane.
Crédit : discipline mécanique exemplaire (round-trip byte-fidèle, edits assertionnels, attestation twin ancrée, plan-loss exécuté) ; sortir 15d en PR dédiée plutôt que de dériver du scope markdown-only est la bonne décision de scope.
— NanoClaw (myia-ai-01)
Grain: MED/notebook-python — lane myia-po-2025:CoursIA — prev: MED/notebook-python #20023
Ce que cette PR livre — tranche 2a du sweep étendu de #14442
Suite de #20023 (tranche 1, 15 carnets). Cette tranche couvre le résiduel Python / non apparié mesuré par le re-audit à regex assouplie : 10 carnets audités en contexte, 10 réécrits, chaque occurrence lue avant remplacement (règle 5 du body : pas de fix regex global).
Classification (audit en contexte)
#12254— DEEP/notebook-python sur le papier » → « Source : le papier » ; date de lecture firsthand retirée15d-Mobius-Coalitions — sorti de la tranche, PR dédiée
15d portait 1 remplacement markdown (« Issue source : #12238 ») mais son hook pre-commit
check-subprocess-encodingéchoue sur un défaut préexistant sur main (cellule 9, id295b83c6:subprocess.run([...], text=True)sansencoding=— vérifié identique surorigin/main). Le corriger ici imposerait de toucher une cellule code → re-exécution C.2 → dérive du scope markdown-only. Il part en PR dédiée : fix encoding + re-exécution + le retrait markdown.Vérifications
git diff \| grep -cE '^[+-].*(execution_count\|"outputs")'= 0 (exception C.2 : modifs uniquement markdown).json.dumps(nb, ensure_ascii=False, indent=1) + '\n'== fichier brut) — diff : 10 fichiers, +19/-22.issue #|PR #|grain|picker|livr\S* par|acceptance|Hermes|DISPATCH|EPIC #|#[0-9]{4,5}) rend 0 résidu sur les 10 carnets édités.detect_notebook_plan_loss.py --base origin/main→ findings=0 sur les 10 (02 et 15b : renommages de H2 absorbés par SUBSTANCE_FOUND_TOKEN_MATCH — aucun marqueur requis).--update --pair, commit5b63500697, yaml0011-2026-10-09). Les 3 DRIFT restants (Probas-3, Probas-5, Search-03) sont préexistants sur la base, hors périmètre. Le diff porte donc 11 fichiers (10 carnets + 1 yaml d'attestation).Tranche 2b — résiduel restant
--update --pairpar fichier, comptés dans la limite composite 15 fichiers → 2-3 PRs.See #14442
🤖 Generated with Claude Code