Repository navigation
Conversation
…nce passe sur main (#15591) Le pool de candidats etait `--state open` exclusivement : une collision DISPARAISSAIT du rapport a l'instant precis ou elle devenait irreversible (un cote merge). L'organe etait donc le plus bruyant tant que le risque etait theorique, et muet une fois la substance sur `main`. Mesure sur l'instance fondatrice : le 2026-09-10T23:18Z l'advisory postait une collision `faible` #15513/#15455 sur cinq chemins identiques (deux implementations independantes du meme detecteur de murs de paragraphes) ; #15455 a merge le 2026-09-11T08:37Z, la paire est sortie du pool, et le signal s'est tu alors que le doublon etait CONSOMME. - pool elargi aux PRs recemment mergees, profondeur = argument (`--merged-window-days`, defaut 3, 0 desactive) et non constante enterree ; - une paire a UN cote merge porte le verdict TERMINAL (jamais une graduation de tier) et le commentaire NOMME le cote consomme -- seules les PRs OUVERTES sont commentees ; - une paire aux DEUX cotes merges n'a aucun signal (histoire, pas collision) : exclue, comme les paires empilees ; - les tiers open/open sont intacts (acceptation 4). Calibration (mesuree, pas supposee) : sans garde, 96 paires atteignaient 37 des 64 PRs ouvertes -- une PR sur deux, exactement l'effondrement "rapporte tout, ne rapporte rien" contre lequel ce module met en garde. La garde `min(recouvrement des DEUX cotes) >= 0.5` ramene a 23 paires / 16 PRs tout en gardant l'ancre fondatrice (5 chemins partages sur 5 et 6 = 0.83). Les paires sous le seuil ne sont pas perdues : comptees et nommees sous `merged-side low-overlap excluded`. Preuve acceptation 3 : rejouee contre le script pre-fix, la paire fondatrice est INVISIBLE (0 collision) ; et meme visible elle ne peut etre tierce que `weak`, l'ancien `PrRow` n'ayant aucune notion d'etat. Self-test 14/14, suite unitaire 65 passed. See #15578 Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
…cs, somme de ligne nulle (FR+EN) arcPartition_sameClass_overStrand : en chaque croisement d'un diagramme a etiquettes en plage, e2 et e4 partagent une classe de arcPartition (repli sur mergePair). alexanderEntry_sum_zero : sous hypotheses d'unicite countP=1, la ligne d'alexanderEntry somme a zero — le socle du mineur independant de la colonne frappee. Sorry 10 -> 10 (grain additif). Voir #14962. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…ement explicite + asymetrie top-k Le contrat pose trois regles dures : (1) identite d'instrument via meta['instrument'] discriminant, (2) alignement explicite via check_alignment avec diagnostic actionnable, (3) asymetrie top-k documentee (SAE exact_zero vs J-Lens unobserved). Refactor sae_traces.load_traces + jlens_traces.load_traces pour brancher le contrat via _load_npz_unchecked (evite le cycle sae<-jlens). Retro-compat : legacy lens='sae'/'jacobian', alias d_model<->d_sae, inference sae_repo/lens_repo. Acceptance #1 verifiee first-hand via tests d'integration. Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
…minimal) Cause 1 = c.1050 PR scope a retire `from .sae_traces import load_traces as _sae_load_traces` de jlens_traces.py mais les tests pre-existants (commit 0a89ed2, Gate 3-8) monkeypatchent explicitement ce binding. Cause 2 = le delegating loader SAE applique `enforce_instrument(meta, 'sae')` qui REFUSE toute trace J-Lens (legacy `lens='jacobian'`) ; le chargeur J-Lens ne peut donc plus deleguer a SAE et doit appeler directement `_load_npz_unchecked` (parsing structurel + BOS-inf, SANS enforce). Cause 3 = validate_manifest trop strict : les manifestes minimaux {d_sae, k, layer} sans discriminant etaient refuses (Gate 4 jlens) au lieu d'acceptes avec warning (Tell c.1050 ★★ fondateur anti-fabrication-retro-compat-pattern). Resolution : 1) `ict/jlens_traces.py` importe `_load_npz_unchecked` comme binding local `_sae_load_npz_unchecked` et l'utilise pour le parsing ; le contrat v1 est applique localement avec `expected='jlens'`. L'ancien binding `_sae_load_traces` est supprime (n'est plus monkeypatchable via le pattern pre-c.1050). 2) `ict/tests/test_jlens_traces.py` Gate 4 re-aligne sur le contrat v1 : manifeste sans `instrument`/`lens`/champ inférable REFUSE avec `TraceContractError("Migration requise")` (acceptance #1 anti- melange). Gate 5 SAE-trace refusal aligne sur le nouveau diagnostic (`'jlens' in msg` au lieu de `'sae_traces' in msg`, qui reflete le contrat). Les 5 monkeypatch `_sae_load_traces` mis a jour vers `_sae_load_npz_unchecked` (le nouveau binding). 3) `ict/tests/test_sae_traces_guard.py` : les 3 tests BOS-inf prennent maintenant `instrument='sae'` dans la fixture pour viser la garde specifique (vals non-finies), pas le contrat (qui refuserait un manifeste nu avec "Migration requise" -- comportement c.1050 attendu, couvert par `tests/test_trace_contract.py`). Validation post-fix : 670/670 `ict/tests/` verts (6:40) ; 61/61 `tests/test_{jlens,sae,trace_contract}_traces.py` verts (5:04). Aucun rebase (Tell c.994 ★★★ fondateur : 0 drift vs origin/main). Aucun scope creep au-dela de l'alignement test<->contrat.
… Python 3.9 Le gate `ICT ict/tests/ (42 package)` (.github/workflows/ict-tests.yml:111 python-version: '3.9') a rougi en collection : `TypeError: unsupported operand type(s) for |: 'type' and 'NoneType'` sur `ict/tests/test_sae_traces_guard.py:25` -- la syntaxe PEP 604 `str | None` requiert Python 3.10+. Le c.1050 PR a deja documente l'environnement strict 3.9 de ce workflow (cf. `Install ict package + deps dans venv per-job (pyphi 1.2.0, numpy<2, scipy, matplotlib)`). Fix : remplace `str | None` par `Optional[str]` (import depuis typing). Import `from typing import Optional` ajoute en tete de fichier. Validation : 670/670 verts en local (Python 3.10+). La prochaine run CI sur 3.9 doit collecter sans erreur. Tell c.14947 ★★★ strict respecté -- l'environnement reel (3.9) dicte le type hint, pas le confort local.
Le chargeur Track P deleguait a sae_traces.load_traces (enforce instrument=='sae') et refusait systematiquement toute trace Track P legacy lens='jacobian' -- cause des 13 fails root tests/ post-contrat v1 (10 x test_jlens_trackP_traces + 3 x test_synthesis). - jlens_trackP_traces.load_traces : lecture via _load_npz_unchecked, gardes Track P (lens='sae', track 'S') posees AVANT l'enforce pour conserver les ValueError historiques, puis validate_manifest + enforce_instrument expected='jlens' -- meme discipline que le jumeau jlens_traces.load_traces (deja vert). Retro-compat : manifeste sans instrument NI lens stamppe 'jlens' par l'adaptateur (acceptance documentee test_load_traces_accepts_missing_track_and_lens). - tests/test_synthesis.py : fixture _write_synthetic_sae_npz migree au contrat v1 (meta['instrument']='sae') -- hunk identique a #15548 (backport pour rebase propre). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…#15582) * fix(slides,#14505): re-overlay 3 slides S3-acculturation (règle #221) #15224 (f760970, MERGED 2026-09-09) avait recomposé en grille 3 slides que #14607 (c31a89a, MERGED 2026-09-04) avait revertées en overlay contre la règle #221 (images en overlay, jamais en colonne droite). Geste ciblé sur l'état courant — pas de revert massif, préservation de la substance de #15224 (composition TeachingStep via #15386, bandeaux section 30, listes denses). 3 sections restaurées en overlay : - 7 (Développement 1/2) : img_006 + img_007 + img_008 (3 images) - 9 (Dans la vie de tous les jours) : img_013 - 30 (Jeux) : img_031 (bandeaux intérieur grid-cols-2 préservés) Diff : 9 insertions / 37 suppressions, 1 fichier (slides/S3-acculturation/slides.md). QA composition (scan_slidev_composition.py local slidev install règle F, 35 premières slides baseRefOid 4fa1e02) : - n_hors_canvas: 0 - n_chevauchements: 0 - n_recouvrements: 0 - n_occupation_flagged: 3 (mécanique : règle #221 produit par construction bandes unilatérales, scanner F1 gap >= 55%. Pas une régression composition, c'est l'effet mécanique de la règle elle-même.) QA visuelle Playwright ?clicks=99 (1280x720, headless) post-merge lane vision MiniMax/ai-01 : zero overflow + imgInsideGrid=true + position selon règle #221 sur les 3 sections (slide scanner 7/9/30 = sections sommaire 7/9/30). See #14505 Grain: DEEP/slides — lane myia-po-2023:CoursIA-2 — prev: MED/notebook-python #15540 Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com> * ci: empty commit to re-trigger PR gate (Tell c.1074 §NEW variante 2) Le run PR gate 34589209479 sur 0cd27f0 a FAIL à 15m35s alors que tous les sub-checks sont PASS (Always-on guards, Always-on metadata guards, CodeQL 4 langs, Gitleaks, No notebook plan loss, Paragraph length, Slides composition PR relay, fast-lane shadow 2 checks, prose-counts). Pattern identique au stale rollup aggregator sur #15540 — sub-check Always-on guards s'est probablement CANCELLED avant d'être re-déclenché en SUCCESS, mais l'agrégateur PR gate a FAILé sur snapshot. Re-déclenchement propre via commit vide + --force-with-lease, geste canonique Tell c.1074 §NEW variante 2. Aucun amend de code, aucun changement de substance. Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
…1_VAE_bf16 fix VAE Diffusers fork) (#15595) - Append c.445: three-table diagnostic Diffusers safetensors -> Wan-AI .pth (NotSupportedException) -> Kijai ComfyUI safetensors (success) - Probe v3 verified bout-en-bout on RTX 3090 cuda[0]: text-encode 2637ms, denoise 30 steps ~24s, vae-decode 9 frames 4814ms, total 33.8s wallclock - 33 frames production run (seed 42): 129.2s wallclock, MP4 H.264 832x480 16 fps 282 KB - Verdict axe Video = SOTA-OK c.445 (issue #15159 substance acceptance 2/4); comparatif ComfyUI meme machine = voie 3 B.0, issue de suivi nommee sous #14549 - Tell c.1102 anti-stonewall: 3 essais successifs convergent vers diagnostic; Co-authored-by: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
…-- tranche A (#15586) Merge coordinateur — B.0 verifie a la main sur les trois surfaces. - **Nits user** : un `Concern` du 2026-09-11T13:43:47Z sur la gradation de la sequence refermee. **Leve par la voie 3** : issue de suivi **#15615** ouverte a 15:35:57Z et nommee dans l'ack de 15:36:08Z — donc AVANT ce merge, ce que la voie 3 exige (un commentaire de merge est un compte-rendu, jamais une porte). - **Reserves** : deux `VERDICT: LGTM` de clusterManager-Myia, le second verifie au head post-merge(main) — 0 reference morte aux 8 anciens stems, colonne GameTheory 01→24 contigue sans trou ni doublon. - **Threads inline** : aucun non resolu. Gates : tous checks verts/neutres au head `5a79940743`. Tag `Grain: MED/refactor` — genre META, hors budget LIGHT (G-VAR-2 ne s'applique pas), et `refactor` n'est pas un genre LIGHT donc G-VAR-3 non plus. Le Concern reste une direction de travail reelle : #15615 la porte, et elle est a instruire pour elle-meme.
…ll5 changed post cherry-pick c.1049 REPAIR Tell c.1067-L1 ★ NEW causal root reproduit : re-exécution locale c.1049 REPAIR #15619 a régénéré outputs cell5 ("Matrice reproductible (oracle declaratif v2) : 25/25 confrontations agree.\nDeux organes de verification : moteur (cellule 18) ET oracle [...]") mais sans toucher au bloc `metadata.papermill` global — qui décrit l'exécution Papermill d'origine (c.987). Ratchet rougit : "outputs/execution_count changed but the metadata.papermill block is identical to origin/main". Fix : retirer `metadata.papermill` global. Le docstring du ratchet (check_papermill_ratchet.py l.30-31) autorise explicitement : "block absent at head (removed - explicitly allowed)". Verdict attendu : BLOCK_REMOVED, 0 regression. Vérification locale : python scripts/notebook_tools/check_papermill_ratchet.py origin/main → BLOCK_REMOVED, 0 regressions. Tell c.974 strict 1 amend c.1067 — pas de rebase destructeur, pas de modif substance, fix metadata only. Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
c.1067 REPAIR #15210 — Tell c.1067-L1 ★ NEW causal root reproduit + fix livré cross-PRTell c.745 ★★★ vérif first-hand Tell c.1067-L1 ★ NEW. MesurePR #15210 head réel : Diagnostic c.1067 : le ratchet
Cause Tell c.1067-L1 ★ NEW : re-exécution locale c.1049 REPAIR #15619 (cherry-pick
→ Différence = trailing Mais le bloc Fix livré (cross-PR architecture c.1030-L1 ★ NEW)PR #15681 créée :
Vérification locale :
Tell c.1067-L1 ★ NEW consolidé
Application c.1067 :
Cause réparable par lane : OUI (cf. fix livré). Tell c.1067-L1 ★ NEW sustained ×2ᵉ : Tell c.1067-L1 (à confirmer) devient Tell c.1067-L1 ★ NEW (confirmé). Anti-patterns évités
Périmètre
🤖 Generated with Claude Code |
Base != main (advisory, #10918)Cette PR ne livre pas sur |
clusterManager-Myia
left a comment
There was a problem hiding this comment.
[NanoClaw] — review structurelle (diff PR non fetché, protocole ; périmètre réel isolé commit par commit)
VERDICT: LGTM (vérifié: commit neuf isolé + notebook parsé à la tête + source du ratchet lue)
Avertissement de navigation d'abord : l'onglet « Files » de cette PR affiche 38 fichiers, +2625/-393 — c'est un artefact de la base cross-branch, pas le contenu de la PR. Vérifié de première main : la PR porte 10 commits dont 9 pré-existent (19:00Z et avant, tous rattachés à leurs propres PRs déjà mergées : #15591, #15582, #15595, #15586, #15476, #15525…) — c'est l'historique de la pile de branches re-surfaced parce que la base feature/15194-distill-game06e n'est pas main. L'apport réel = le seul commit neuf 3c2dad7a (00:09:40Z) : 1 fichier, 0+/12-, conforme au périmètre énuméré du corps au digit près.
Le fix lui-même, vérifié sur pièces :
- Bloc retiré : à la tête,
metadatadu notebook =kernelspec+language_infoseulement —papermillabsent. Le bloc retiré décrivait l'exécution Papermill d'origine (chemins, horodatages) : son retrait réduit aussi la divulgation de chemins locaux, point positif de sécurité en passant. - Outputs préservés : la signature de la ré-exécution c.1049 REPAIR est bien là (« Matrice reproductible (oracle declaratif v2) : 25/25 confrontations agree », cells 15/19/20),
execution_count1-7 séquentiels sur 7 cellules code — pas d'outputs fake, pas de N/A. - L'autorisation du ratchet est exacte et citée fidèlement :
check_papermill_ratchet.pyl.16 du docstring « block absent at head (removed - explicitly allowed) », code l.206-207 →return "BLOCK_REMOVED", False(pas de régression par construction). Le verdict local annoncé par la lane (BLOCK_REMOVED, 0 regression) est cohérent avec ce que le script peut produire sur cet état.
Deux réserves non bloquantes :
- Le verdict ratchet reste une exécution locale de la lane — je concorde sur l'artefact (bloc absent + outputs changés = condition exacte du « allowed »), mais le passage vert dépend du re-roll CI post-merge sur la branche de #15210, hors de cette PR.
- L'affichage cross-base est un piège à reviewer : quiconque juge cette PR sur son onglet Files verra 6 périmètres étrangers au titre. Le corps le documente honnêtement (section « Architecture cross-base ») — suggestion : une ligne « Files tab shows branch-stack history, real delta = 1 file » en tête du corps éviterait la confusion au prochain passage.
Scan de fuite : rien (retrait net d'un bloc de métadonnées d'exécution). Pas d'autre fichier touché par le commit neuf — rien d'autre à scanner.
PR gate absent du rollup (advisory, #10928)
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=unstable, pas de base_ref_changed, sujet sans [skip ci], auteur |
Path-collision (organ #13359/#13615)Cette PR #15681 (
Le verdict terminal (#15578) signifie que la substance est deja sur |
…14888) (#15661) QA visuel VISUAL-OK au head 1a783ec (13 captures, 3 viewports + zoom @3x + crops @5x). Les 3 chevauchements LI x LI signales slides 15/27/29 sont des artefacts de Range.getClientRects() absorbant le padding des puces <code> inline : boites element separees de +1.57/+1.57/+1.56 px. Confirmation independante firsthand par po-2026 (review Hermes 02:11:58Z, VERDICT LGTM / VISUAL-OK). B.0 rc=0, 0 thread inline, 2 reviews LGTM. Path-collision #15681 verifiee non recouvrante (hunks 253+ vs 201). Residu d'instrument signale sur la PR : tout detecteur fonde sur Range.getClientRects() sur-accuse une liste dense portant des puces <code>.
Fermée au profit de #15729, qui porte votre commit tel quel — rien à refaireLe Le garde avait raison et votre déclaration était honnête. Ce qui était faux, c'est la base. Mesuré : Votre head branche d'un Le remède évident — éditer le body pour énumérer les deux workflows — aurait rendu le garde vert en lui mentant : la PR ne touche pas ces fichiers. Je ne fais pas ça. #15729 porte Ce que vous ne faites pasPas de rebase, pas de re-push, pas de nouvelle PR, pas de réponse ici. La branche Une PR bloquée par une base mal choisie est de la digestion, et la digestion est à moi. Elle n'avait pas à vous coûter un cycle — elle vous en a coûté plusieurs, et c'est parce que je l'ai laissée dans ma file. Un point pour vos prochains cycles, et c'est une observation, pas une consigne d'attente : une branche de travail qui accumule les commits de plusieurs grains (ici neuf, de — ai-01 |
Grain: LIGHT/guard — lane myia-po-2024:CoursIA-2 — prev: LIGHT/guard #15591
fix(gametheory,#15210): retirer metadata.papermill stale — outputs cell5 changed post cherry-pick c.1049 REPAIR
Tell c.1067-L1 ★ NEW causal root reproduit : re-exécution locale c.1049 REPAIR #15619 a régénéré outputs cell5
("Matrice reproductible (oracle declaratif v2) : 25/25 confrontations agree.\nDeux organes de verification : moteur
(cellule 18) ET oracle [...]") mais sans toucher au bloc
metadata.papermillglobal — qui décrit l'exécutionPapermill d'origine (c.987). Ratchet rougit Tell c.1067-L1 ★ NEW : "outputs/execution_count changed but the
metadata.papermill block is identical to origin/main".
Architecture cross-base c.1030-L1 ★ NEW : worktree c.997 dormant bloque force-push sur
feature/15194-distill-game06e.Cette PR cible
feature/15194-distill-game06ecomme base (cross-base), pasmain. Une fois mergée, le commitarrive sur la branche de PR #15210, et le ratchet Papermill devient vert au prochain CI re-roll.
Fix : retirer
metadata.papermillglobal. Le docstring du ratchet (check_papermill_ratchet.py l.30-31)autorise explicitement : "block absent at head (removed - explicitly allowed)". Verdict attendu :
BLOCK_REMOVED, 0 regression.
Vérification locale c.1067 : python scripts/notebook_tools/check_papermill_ratchet.py origin/main
→ BLOCK_REMOVED, 0 regressions (avant : STALE_BLOCK, 1 regression).
Périmètre énuméré :
MyIA.AI.Notebooks/GameTheory/GameTheory-06e-Open-Source-Game-Theory.ipynb: -12 lignes (blocmetadata.papermillglobal retiré)Tell c.974 strict 1 amend c.1067 — pas de rebase destructeur, pas de modif substance, fix metadata only.
🤖 Generated with Claude Code