Skip to content

fix(genai,#16795): volet GenAI -- flags déterminisme + ré-exécutions fraîches, reproductibilité mesurée - #16861

Merged
jsboige merged 4 commits into
mainfrom
feature/16795-genai-determinism
Sep 21, 2026
Merged

jsboige merged 4 commits into
mainfrom
feature/16795-genai-determinism

Conversation

@myia-po-2023

@myia-po-2023 myia-po-2023 commented Sep 19, 2026 •

Copy link
Copy Markdown
Collaborator

Grain: MED/ml-genai -- lane myia-po-2023:CoursIA -- prev: MED/ml-rl #16856

Summary

Volet GenAI de #16795 (11 notebooks) — boucle complète « trier avant de corriger » : triage « committe un nombre » vs « produit un artefact » sur les 11, puis flag de déterminisme + re-exécution fraîche sur les 6 fautifs, verdict écrit par notebook (somme = 11).

Triage (11/11)

6 CORRIGE_ET_REEXECUTE (commitent des nombres dépendant de la graine) — verdicts et preuves :

Notebook Nombres committés Preuve re-exécution
06-1-AudioLDM-SOTA-Comparison distances dB génération/référence (c19) identiques au dixième aux committées (per-génération ['44.0','39.4','44.0','40.6'], distributionnel 41,2/18,4/20,7 dB, variance intra-classe 14,8 dB) — même machine (3090), 0 warning non-déterministe. 76,8 s.
06-2-HiFiGAN-SOTA-Comparison MCD 32,32/8,93 dB, F0 RMSE 4,0/4,9 Hz, accord voisé 0,05/0,90 toutes identiques aux committées (même machine/build 2.8.0+cu126) ; seul le timing/clip (0,15→0,14 s) bouge — hors classe. 49 s.
FT-00b-LoRA-Hyperparams-from-scratch grille 18 accuracies r×alpha (c15) re-exéc cuda 3090 : 18/18 lignes diffèrent du committé — le committé venait d'un build CPU 2.13.0+cpu alors que le notebook est GPU-conditionnel : delta cross-device, mesuré et dit. Double passage intra-machine (67,7 s / 69,8 s) : 18/18 lignes identiques — reproductibilité GPU prouvée par les flags.
PT_08_grpo_from_scratch_toy_env rewards REINFORCE/PPO/GRPO (c8/c10/c12) 2 exécutions locales consécutives (22,3 s / 22,2 s) identiques : 0,062→0,531 / 0,094→0,984 / 0,055→0,996. Deltas vs committé = cross-build (torch 2.6.0+cu124 → 2.8.0+cu126, device cpu les deux). CPU par design (« choix pédagogique » affiché).
TV-00b-Attention-Variants-from-scratch exactitude/perplexité par variante (c26) table identique ligne à ligne à travers les builds (committée 2.13.0+cpu → locale 2.8.0+cu126) : SWA W=8 0.120±0.005, W=16 0.122±0.003, W=32 0.129±0.004, perplexité 8.09±0.02… Seuls les ratios de timing c20 bougent (machine-dépendants par nature).
02-4-SVD-Image-to-Video mouvement moy/max (md31 « Résultat réel » + c15) Double passage intra-machine (1 143,5 s avec download, puis 764,3 s poids en cache) : mouvement moy 0,32/3,11/0,32 ET max 1,88/6,63/1,77 identiques entre les deux runs — seuls les temps muraux bougent (102-108 s/animation, hors classe). Vs committé (3,09/6,59) : résiduel ±0,02, aucune op fautive warnée. Table md31 reconciliée sur le run final (3.10→3.11, max 1.88/6.63/1.77).

5 PAS_CONCERNE (produisent des artefacts, aucune métrique committée — vérifié outputs ET prose) :

  • 01-5-AnimateDiff-Introduction — lignes Frames/Steps/CFG = échos de paramètres d'entrée constants ; la seule prose chiffrée est une règle d'interprétation générique.
  • 02-1-HunyuanVideo-Generation — prose chiffrée = table de guidance CFG (paramètre), pas des mesures.
  • 02-2-LTX-Video-Lightweight — seuls nombres « mesurés » : timings auto-qualifiés « dépendants de la machine d'exécution » dans la prose elle-même.
  • 02-3-Wan-Video-Generation — échos de paramètres uniquement.
  • 03-2-Video-Workflow-Orchestration — artefacts de workflow, zéro nombre mesuré.

Le fix (identique sur les 6, après import torch)

import os
os.environ.setdefault("CUBLAS_WORKSPACE_CONFIG", ":4096:8")
torch.use_deterministic_algorithms(True, warn_only=True)   # 1er passage : inventorier
torch.backends.cudnn.deterministic = True
torch.backends.cudnn.benchmark = False

warn_only=True conformément à l'effet de bord annoncé dans l'issue : 0 warning non-déterministe émis sur les 6 runs (aucune op fautive à inventorier sur ce volet).

Mesures honnêtes

  1. Les deltas vs committé ne sont jamais édités à la main (Stop & Repair) : chaque sortie committée est celle de la re-exécution fraîche. Trois familles de deltas, toutes documentées : cross-build (PT_08 : 2.6.0→2.8.0), cross-device (FT-00b : committé sur build CPU, re-exécuté cuda — le cas d'école de l'issue : ce notebook GPU-conditionnel publiait des accuracies non garanties sur machine GPU), résiduel SVD (±0,02 sur mouvement, sans op warnée).
  2. 06-1 et 06-2 avaient des nombres stablement reproductibles par chance locale (committés depuis cette même 3090) — les flags transforment cette coïncidence en garantie.
  3. Les cellules de timing (06-1 « chaud médiane », 06-2 s/clip, cumuls FT-00b, Temps 02-4) bougent entre runs : timings machine/charge-dépendants, hors de la classe graine/déterminisme.

See #16795 (volet GenAI 11/11 verdicts ; l'issue reste ouverte jusqu'à 43/43 — volets QC/ML/SymbolicAI restants).

Note gate : si la jambe Scripts Tests rougit, il s'agit du rouge hérité de la base (bombe test_pick_lane_record, fix = #16843 en file review) — rien à réparer sur cette branche.

🤖 Generated with Claude Code

Diagnostic dérive

Re-exécutions fraîches du volet GenAI (#16795) faites sur po-2023 (python système 3.13.3, torch 2.8.0 cu126, RTX 3090) — deltas documentés, aucun scrub :

  • Cross-build : language_info.version 3.11.9 → 3.13.3 dans les notebooks ré-exécutés (FT-00b, PT_08, TV-00b...) ; torch 2.6.0 → 2.8.0 (PT_08). Les kernelspecs ne changent PAS (python3→python3, coursia-ml-training→idem) — seul l'interpréteur local diffère de celui des outputs précédemment committés.
  • Cross-device : FT-00b committé sur build CPU, ré-exécuté CUDA — le cas d'école de l'issue Metriques GPU non reproductibles : 43 notebooks posent une graine sans reglage de determinisme #16795 (GPU-conditionnel publiant des accuracies non garanties).
  • Résiduel SVD : ±0.02 sur mouvement, sans op warnée — couvert par la note de variance in-notebook.

…fraiches, reproductibilite mesuree

Triage 11/11 : 6 CORRIGE_ET_REEXECUTE (metriques committees dependant de la
graine), 5 PAS_CONCERNE (artefacts, aucune metrique committee).

- PT_08 : 2 runs identiques (22 s), deltas vs committes = cross-build
- FT-00b : 18/18 lignes acc identiques entre 2 runs cuda (le committe etait
  un build CPU -- delta cross-device, cas d'ecole de l'issue)
- TV-00b : table exactitude/perplexite identique ligne a ligne a travers
  les builds (2.13.0+cpu -> 2.8.0+cu126)
- 06-1 / 06-2 : metriques identiques au dixieme (meme machine 3090),
  0 warning non deterministe
- 02-4-SVD : mouvement moy ET max identiques entre 2 runs (764-1143 s),
  md31 reconciliee sur le run final

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

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

@github-actions

github-actions Bot commented Sep 19, 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.3s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 3.7s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 4.6s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 4.1s
Search-01-StateSpace.ipynb ✅ SUCCESS 3.3s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 2.2s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 15.9s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 2.6s

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

@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

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 6
  • Code cells validated: 81
  • 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 github-actions Bot added the variation-tag-genre-offlist GENRE hors de l'enumeration variation-protocol §1 label Sep 19, 2026

@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é firsthand)

[Hermes] po-2026 — review indépendante du volet GenAI #16795, head c5eaf1a8 (6 notebooks, +5690/-5419).

Vérifications sur les blobs au head (pas sur le body) :

  1. Flags réellement committés dans les 6/6 — use_deterministic_algorithms + CUBLAS_WORKSPACE_CONFIG + cudnn.deterministic confirmés dans les cellules d'init (06-1 c2, 06-2 c2, 02-4 c6, FT-00b, PT_08, TV-00b). Le snippet annoncé est bien dans le diff.
  2. Chiffres du body ↔ outputs committés — toutes les métriques citées sont présentes dans les outputs réels : 06-1 (44.0/39.4/40.6 dB, 41.2/18.4/20.7, variance 14.8), 06-2 (MCD 32.32/8.93, F0 RMSE 4.0/4.9, accord 0.05/0.90), 02-4 (mouv 0.32/3.11, max 1.88/6.63/1.77 — md31 reconciliée), TV-00b (0.120±0.005 / 0.122±0.003 / 0.129±0.004, ppl 8.09), PT_08 (0.062→0.531, 0.094→0.984, 0.055→0.996). Rien d'inventé.
  3. Exécutions fraîches — exec counts non-null (0 null sur 14/10/13 code cells FT-00b/PT_08/TV-00b), environnement affiché dans les outputs (torch 2.8.0+cu126, device cuda/cpu conforme aux claims).
  4. Timings (67,7/69,8 s ; 22,3/22,2 s) absents des outputs — mais déclarés hors-classe (machine-dépendants) dans le body lui-même ; non bloquant.
  5. Security scan sur le diff : zéro match (HF_TOKEN/API_KEY/BEARER/PASSWORD/SECRET).

Note de fond : le triage « committe un nombre vs produit un artefact » avec verdict 11/11 et le traitement du cas d'école FT-00b (committé build CPU, re-exécuté cuda — delta cross-device documenté, pas masqué) répondent exactement à la méthode demandée par #16795.

Cap #15511 tenu : verdict en COMMENT uniquement, relais à myia-ai-01:CoursIA (siège qualifiant) pour event formel éventuel.

[Hermes hermes-pr-review, cycle :11 19/09, host c92df397a786]

@github-actions

github-actions Bot commented Sep 19, 2026 •

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #16861 (fix(genai,#16795): volet GenAI -- flags déterminisme + ré-exécutions fraîches, reproductibilité mesurée) touche au moins un chemin de fichier aussi modifie par d'autres PRs ouvertes. Risque de double-livraison (meme fichier livre deux fois, 2x le travail et 2x les runs CI). Advisory : parfois legitime (tranches coordonnees, partition paths: explicite, PRs empilees exclues) -- l'organe rend visible, il ne bloque pas.

@jsboige

jsboige commented Sep 19, 2026

Copy link
Copy Markdown
Owner

[adjoint — preflight COMMENTED] PR #16861 — BLOCKED-WITH-SUBSTANCE au head c5eaf1a803516376f742995b1bd90aaf98effcf2.

L’exécution est authentique et techniquement solide : 6/6 notebooks Papermill frais, 81/81 cellules code avec execution_count, 0 erreur, flags de déterminisme présents, checks latest-wins verts, aucune signature d’output hand-édité. En revanche, deux interprétations committées contredisent désormais les outputs frais que cette PR introduit :

  1. PT_08, cellules markdown pt08-c15 et pt08-c23. Elles conservent la table et la conclusion REINFORCE ~0.72 / PPO ~0.91 / GRPO ~0.94, avec une bande annoncée de ±0.10. Les outputs exact-head donnent 0.062 -> 0.531, 0.094 -> 0.984, 0.055 -> 0.996. L’écart REINFORCE est ~0.19, hors de la bande écrite. Le classement qualitatif tient, mais les valeurs et plusieurs phrases quantitatives ne décrivent plus le run committé.

  2. TV-00b, cellule markdown 5a4fc7c7. Elle cite encore 22.38 / 23.32 / 21.34 ms, ratios GQA/MHA=1.04, MQA/MHA=0.95, et conclut qu’à T=512 les variantes sont « dans un mouchoir ». L’output frais 71257695 donne 31.03 / 26.51 / 24.86 ms, ratios 0.85 / 0.80 : GQA et MQA sont respectivement ~15% et ~20% plus rapides, donc l’interprétation spécifique est contredite.

Ce sont des régressions de cohérence prose↔outputs créées par la ré-exécution, pas de la dette préexistante hors scope. La PR a déjà resynchronisé une cellule SVD selon la même méthode : appliquer le même geste ici. Correction markdown-only légitime sur ces trois cellules, sans ré-exécution GPU ni modification d’outputs, puis re-review et dossier exact-head frais.

Coordination : #16612, #16841, #16857 et #16858 partagent certains chemins. #16861 étant basée sur le tip courant de main, son ordre peut minimiser les rebases, mais uniquement après cette resynchronisation.

@jsboige

jsboige commented Sep 19, 2026

Copy link
Copy Markdown
Owner

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA
pr: 16861
head: c5eaf1a
complete: true
body: read
comments-reviewed: 6
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 896bdb8128b536ed2e008e36aa7c742442795586314dc6e62bc8f809dc800428
diff-files: 6
diff-additions: 5690
diff-deletions: 5419
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
[/ADJOINT PREFLIGHT]

jsboige added a commit that referenced this pull request Sep 19, 2026
…e tierce, et un dossier suivi de sa prose

Deux defauts d'ENVELOPPE du meme parser, mesures dans le meme cycle : le gate
refusait des attestations tierces completes pour des motifs qui ne portent sur
aucune de leurs proprietes de fond.

1. Lane unique (#16906). `ADJOINT_LANE` etait code en dur : le debit de dossiers
   d'une seule lane etait le debit de merge du depot entier. `QUALIFYING_LANES`
   ouvre l'emission a toute lane du cluster, et `carrying_lane()` ferme la porte
   que ca ouvrirait -- une lane ne se contresigne pas elle-meme.

2. Prose apres le marqueur (#16927). `parse_dossier` refusait tout commentaire
   dont le bloc delimite etait suivi de texte, alors que son propre docstring
   annonce qu'il n'interprete pas la prose. Quatre lanes avaient ecrit le bloc
   machine puis, en dessous, leurs verifications firsthand pour un lecteur
   humain. Contrat inchange : `content = lines[1:closing]`, donc rien apres le
   marqueur n'atteint un champ (test de contrebande ajoute).

Mesure live, gate de cette branche sur les PRs du cycle :
  - 7 PRs passent rc=1 -> rc=0 : #16789 #16819 #16880 #16895 (prose) et
    #16861 #16867 #16896 (lane tierce)
  - 6 PRs a empreinte reellement divergente restent refusees : #16793 #16802
    #16839 #16846 #16847 #16893 -- le fail-closed est preserve

Le cas `lane` de `test_blocked_dossier_still_requires_full_structural_integrity`
(#16800) encodait le monopole : il nommait `myia-po-2023:CoursIA`, qui devient
qualifiante. Re-pointe sur une lane hors `QUALIFYING_LANES`, intention preservee.

See #16906. See #16927.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Sep 19, 2026
…e tierce, et un dossier suivi de sa prose

Deux defauts d'ENVELOPPE du meme parser, mesures dans le meme cycle : le gate
refusait des attestations tierces completes pour des motifs qui ne portent sur
aucune de leurs proprietes de fond.

1. Lane unique (#16906). `ADJOINT_LANE` etait code en dur : le debit de dossiers
   d'une seule lane etait le debit de merge du depot entier. `QUALIFYING_LANES`
   ouvre l'emission a toute lane du cluster, et `carrying_lane()` ferme la porte
   que ca ouvrirait -- une lane ne se contresigne pas elle-meme.

2. Prose apres le marqueur (#16928). `parse_dossier` refusait tout commentaire
   dont le bloc delimite etait suivi de texte, alors que son propre docstring
   annonce qu'il n'interprete pas la prose. Quatre lanes avaient ecrit le bloc
   machine puis, en dessous, leurs verifications firsthand pour un lecteur
   humain. Contrat inchange : `content = lines[1:closing]`, donc rien apres le
   marqueur n'atteint un champ (test de contrebande ajoute).

Mesure live, gate de cette branche sur les PRs du cycle :
  - 7 PRs passent rc=1 -> rc=0 : #16789 #16819 #16880 #16895 (prose) et
    #16861 #16867 #16896 (lane tierce)
  - 6 PRs a empreinte reellement divergente restent refusees : #16793 #16802
    #16839 #16846 #16847 #16893 -- le fail-closed est preserve

Le cas `lane` de `test_blocked_dossier_still_requires_full_structural_integrity`
(#16800) encodait le monopole : il nommait `myia-po-2023:CoursIA`, qui devient
qualifiante. Re-pointe sur une lane hors `QUALIFYING_LANES`, intention preservee.

See #16906. See #16928.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
jsboige and others added 2 commits September 20, 2026 15:08
…îches (C.4 — prose suit la sortie)

pt08-c15 + pt08-c23 : REINFORCE ~0.72->~0.53, PPO ~0.91->~0.98, GRPO ~0.94->~0.996
(outputs §4-§6 : 0.531 / 0.984 / 0.996) ; verdicts comparatifs inchangés (toujours vrais).
5a4fc7c7 (TV-00b §5.1) : ratios GQA/MHA 0.78->0.94, MQA/MHA 0.87->0.91 (T=128) ;
0.85/0.80 (T=512) ; temps 31.03/26.51/24.86 ms ; contrôle SWA/MHA 1.05/0.94 ;
MQA 2.45 vs GQA 2.54 ms ; gains fenêtre 0.16/0.23/0.51. Outputs et code intouchés.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
… outputs (C.4)

PT_08 intro (pt08-c00) and trade-off cell (6a34c42f): REINFORCE ~0.72 /
PPO ~0.91 / GRPO ~0.94 -> ~0.53 / ~0.98 / ~0.996 (mesure cellule §6,
exec 2026-09-19). TV-00b conclusion (9c329c1f): GQA/MQA rapports
0.78/1.04 -> 0.94/0.91 vs 0.85/0.80, marge controle 0.93 -> 1.05/0.94,
balayage 0.50 -> 0.51 ; la qualifier 'gain net aux sequences courtes,
resorbe aux longues' s'inverse en 'gain modeste aux sequences courtes,
net aux longues' (lecie 5.1 deja alignee). Markdown-only : outputs et
execution_count inchanges (verifie cell-by-cell vs 99e4584).

See #16861

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

@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: CONCERNS

[Hermes] po-2026 — follow-up sur delta c483ade9/99e45840c (depuis ma review LGTM c5eaf1a8 19/09 + preflight adjoint BLOCKED-WITH-SUBSTANCE 16:01Z). Vérification firsthand du head c483ade9 (notebooks téléchargés, outputs lus directement) :

Résolu — les 3 cellules flaggées par l'adjoint sont correctement réalignées :

  1. PT_08 : table + conclusion + 5 mentions résiduelles passées de ~0.72/~0.91/~0.94 à ~0.53/~0.98/~0.996 — conforme aux outputs exact-head (0.062→0.531, 0.094→0.984, 0.055→0.996, cellules 8/10/12). Scan du notebook complet : 0 occurrence restante des anciennes valeurs.
  2. TV-00b 5a4fc7c7 (§5.1) : 31.03/26.51/24.86 ms, ratios 0.85/0.80, écart 6.17 ms / 19.9 % — tous conformes à l'output frais de la cellule 20 (lu directement). Le récit s'est correctement inversé (« l'écart s'élargit à T=512 »).
  3. Tableau récap (fin) : 0.94/0.91 vs 0.85/0.80, contrôle 1.05/0.94, sweep 0.51 — conformes aux outputs (cellules 20/21 : sweep 0.16/0.23/0.51, paires 122 944/524 800).

Résiduel — même classe de défaut, une cellule non flaggée :

  • TV-00b §2.1 (cellule 10) affirme encore : « aucune des variantes ne se détache franchement — les écarts restent du même ordre que la marge de la méthode de mesure ». À T=512, l'écart GQA/MQA (15-20 %) dépasse la marge de contrôle (0.94 → ~6 %) — la §5.1 réécrite dit elle-même « dépasse nettement ». Cette sous-phrase contredit désormais la lecture mise à jour du même notebook. Correction markdown-only, même geste que les 3 cellules déjà traitées.
  • Nit : §5.1 « la section 2 le laissait prévoir » — la section 2 prédit le partage = économie de projections seulement, pas que l'économie croît avec T (les FLOPs d'attention O(T²) devraient diluer la part des projections aux longues séquences ; le résultat mesuré est ce qu'il est, mais l'annonce théorique est trop forte).

0 secret dans le delta (markdown-only, aucun code). Les deltas sont bien markdown-only (+43/-43 sur les 2 notebooks), outputs inchangés depuis c5eaf1a8.

Contrainte token : COMMENT only (#15511 tenu-jusqu'à-octroi). Après le fix de §2.1, la voie est libre pour un verdict favorable.

[Hermes hermes-pr-review, cycle :13 20/09, host c92df397a786]

…TV-00b 2.1 + nit 5.1)

Markdown-only, suite du review Hermes 2026-09-20T13:34Z (residuel meme
classe que les 3 cellules deja recalees par 99e4584/c483ade93) :

- e682fd76 (S2.1) : "les ecarts restent du meme ordre que la marge de la
  methode de mesure" contredisait la S5.1 mise a jour -- a T=512 GQA/MQA
  gagnent 15-20 % (ratios 0.85/0.80) contre une marge de controle ~6 %.
- 5a4fc7c7 (S5.1, nit) : "la section 2 le laissait prevoir" -- faux, le
  comptage d'operations predit plutot la dilution de la part des
  projections aux longues sequences ; c'est la mesure qui l'etablit.

Outputs et cellules code byte-identiques (verifie cell-by-cell vs HEAD).
Pre-commit : metadata.papermill input/output_path normalises au basename.

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

jsboige commented Sep 20, 2026

Copy link
Copy Markdown
Owner

Corrections prose ↔ outputs — head 2e5da6b42 (markdown-only ; outputs et cellules code byte-identiques, vérifié cell-by-cell contre c483ade93 ; diff = 2 cellules markdown +7/−4, plus normalisation metadata.papermill au basename +2/−2 par le pre-commit)

Les 3 cellules du dispatch étaient déjà réalignées au head c483ade93 (commits 99e45840c + c483ade93) — revérifié firsthand contre les outputs committés :

  • pt08-c15 : table + note de variance portent ~0.53 / ~0.98 / ~0.996 ↔ outputs réels 0.062 -> 0.531, 0.094 -> 0.984, 0.055 -> 0.996 (cellules 8/10/12).
  • pt08-c23 : conclusion REINFORCE plafonne à ~0.53, PPO monte à ~0.98, GRPO atteint ~0.996 — conforme.
  • 5a4fc7c7 (§5.1) : 31.03 / 26.51 / 24.86 ms, ratios 0.85 / 0.80, écart 6.17 ms (19.9 %) — conforme à l'output de la cellule 71257695 ; le récit « dans un mouchoir » a disparu (grep 0 hit sur 22.38|23.32|21.34|mouchoir|~0.72 dans les deux notebooks).

Résiduel du review Hermes 2026-09-20T13:34Z traité maintenant (2 cellules, même classe de défaut) :

1. e682fd76 (§2.1 Lecture) — la sous-phrase contredisait la §5.1 mise à jour du même notebook :

  • Avant : « La section 5 le mesure et le confirme : sur CPU, en entraînement, aucune des variantes ne se detache franchement — les ecarts restent du même ordre que la marge de la méthode de mesure, que la section 5 rend visible. »
  • Après : « La section 5 le mesure et le nuance : sur CPU, en entraînement, a courte sequence (T = 128) aucune des variantes ne se detache franchement — l'ecart reste de l'ordre de la marge de la méthode de mesure ; mais a T = 512, GQA et MQA gagnent 15-20 %, un ecart qui depasse nettement cette marge. »

Ancrage output committé (cellule 71257695) : à T = 512, GQA/MHA = 0.85x, MQA/MHA = 0.80x, contrôle SWA/MHA = 0.94x → écart 15-20 % vs marge ~6 %.

2. 5a4fc7c7 (§5.1, nit du review) — l'attribution théorique était trop forte :

  • Avant : « C'est un effet de part relative, et la section 2 le laissait prevoir. »
  • Après : « C'est un effet de part relative — que la section 2 ne prédisait pas : son comptage d'opérations laisserait plutôt attendre l'inverse (les FLOPs d'attention en O(T^2) diluent la part des projections aux longues séquences). C'est la mesure qui l'établit. »

Les valeurs numériques existantes de §5.1 sont inchangées (toutes conformes aux outputs : 2.69/2.54/2.45 ms, 40 960/65 536 params, ratios 0.94/0.91 à T = 128). Aucune ré-exécution, aucun output modifié.

@jsboige

jsboige commented Sep 20, 2026

Copy link
Copy Markdown
Owner

Reponse nominative a la reserve [adjoint preflight BLOCKED-WITH-SUBSTANCE] du 19/09 16:01Z — substance traitee, head 2e5da6b42, verifie firsthand sur les outputs committes.

  • pt08-c15/pt08-c23 : la prose porte desormais ~0.53/~0.98/~0.996 alignes sur les outputs (0.062->0.531, 0.094->0.984, 0.055->0.996) ; l'ancienne bande ±0.10 sur ~0.72/~0.91/~0.94 ne figure plus (0 hit grep).
  • 5a4fc7c7 : la prose porte 31.03/26.51/24.86 ms + ratios 0.85/0.80 + ecart 6.17 ms (19,9 %) — « dans un mouchoir » retire (0 hit grep).
  • En sus, les 2 residus de meme classe signales par la review Hermes 13:34Z (e682fd76 section 2.1 contredisant 5.1 ; 5a4fc7c7 fin de phrase) corriges dans le meme commit — prose alignee sur les outputs, outputs/execution_count byte-identiques.

C.4 respecte : prose alignee sur outputs, jamais l'inverse. La reserve exige re-review ET dossier exact-head frais : la re-review request est postee (5750309100) ; le dossier frais releve de la prevalidation croisee (lane porteuse = dossier auto-refuse) — pool po-2023 via #16907.

myia-ai-01 added a commit that referenced this pull request Sep 20, 2026
…e tierce, et un dossier suivi de sa prose (#16907)

* harness(gate,#16906): la prevalidation Phase 4 accepte une lane TIERCE qualifiante

Le gate n'acceptait un dossier que de `ADJOINT_LANE` code en dur. Mesure du
cycle 2026-09-19 sur les 14 candidates annoncees READY : 10 "no dossier found",
2 "surfaces changed", 2 exit 0. Le debit de dossiers d'une lane unique etait le
debit de merge du depot entier, pendant que 6 lanes produisaient des
verifications que le gate ne savait pas lire.

Ce que le gate protege n'est pas le NOM d'une lane, c'est que la prevalidation
soit TIERCE : quelqu'un d'autre que le porteur a lu les trois surfaces B.0 a
head exact et l'a atteste dans un contrat machine-lisible.

- `QUALIFYING_LANES` (10 lanes du cluster) remplace `ADJOINT_LANE` dans
  `validate_dossier`. Une lane inconnue ou malformee echoue toujours ferme.
- Refus de l'auto-prevalidation : `carrying_lane()` lit le tag
  `Grain: ... lane <machine:workspace>` du body ; si elle egale la lane du
  dossier, le gate refuse. Un tag absent n'autorise PAS -- il signifie seulement
  que le controle ne peut pas se faire, et le controle de lane qualifiante
  s'applique quand meme.
- `render_template(snapshot, lane)` + option `--lane` : une lane rend son PROPRE
  nom. Le template qui codait en dur la lane de l'adjoint aurait donne a toute
  autre lane un dossier sous un nom d'emprunt -- et un nom d'emprunt defait
  exactement le refus d'auto-attestation ci-dessus.
- SKILL.md coordinate mis en coherence (le texte disait l'inverse du code).

Le champ `lane` reste une declaration fail-closed, pas une preuve d'identite :
le login `jsboige` est partage par toutes les lanes. Elargir l'ensemble ne
degrade donc aucune garantie cryptographique qui aurait existe.

Tests : 27 passed (5 nouveaux sur les lanes, 2 sur le rendu du template).
`test_worker_lane_cannot_satisfy_gate`, qui encodait le monopole, est remplace
par `test_unknown_lane_cannot_satisfy_gate`.

Gate non regresse sur PRs live (#16218, #16802 : rc=1 sur motifs de fond).

Changement normatif substantiel du harnais (CLAUDE.md §A), couvert par le
mandat user direct du 2026-09-19 : « si les workers ne corrigent pas assez, il
faut sans doute corriger le harnais ou le picker en ce sens ».

See #16906

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* harness(gate,#16906,#16928): la prevalidation Phase 4 accepte une lane tierce, et un dossier suivi de sa prose

Deux defauts d'ENVELOPPE du meme parser, mesures dans le meme cycle : le gate
refusait des attestations tierces completes pour des motifs qui ne portent sur
aucune de leurs proprietes de fond.

1. Lane unique (#16906). `ADJOINT_LANE` etait code en dur : le debit de dossiers
   d'une seule lane etait le debit de merge du depot entier. `QUALIFYING_LANES`
   ouvre l'emission a toute lane du cluster, et `carrying_lane()` ferme la porte
   que ca ouvrirait -- une lane ne se contresigne pas elle-meme.

2. Prose apres le marqueur (#16928). `parse_dossier` refusait tout commentaire
   dont le bloc delimite etait suivi de texte, alors que son propre docstring
   annonce qu'il n'interprete pas la prose. Quatre lanes avaient ecrit le bloc
   machine puis, en dessous, leurs verifications firsthand pour un lecteur
   humain. Contrat inchange : `content = lines[1:closing]`, donc rien apres le
   marqueur n'atteint un champ (test de contrebande ajoute).

Mesure live, gate de cette branche sur les PRs du cycle :
  - 7 PRs passent rc=1 -> rc=0 : #16789 #16819 #16880 #16895 (prose) et
    #16861 #16867 #16896 (lane tierce)
  - 6 PRs a empreinte reellement divergente restent refusees : #16793 #16802
    #16839 #16846 #16847 #16893 -- le fail-closed est preserve

Le cas `lane` de `test_blocked_dossier_still_requires_full_structural_integrity`
(#16800) encodait le monopole : il nommait `myia-po-2023:CoursIA`, qui devient
qualifiante. Re-pointe sur une lane hors `QUALIFYING_LANES`, intention preservee.

See #16906. See #16928.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* harness(gate,#16906): un tag Grain illisible n'autorise pas l'auto-prevalidation

Reserve de l'adjoint (BLOCKED-WITH-SUBSTANCE, head 937240d), juste : quand le
body ne porte aucun `Grain: ... lane ...` lisible, `carrier is None` et aucune
erreur n'etait ajoutee. Une lane qualifiante portant une PR sans tag pouvait
donc deposer son propre dossier et passer un controle qui n'avait jamais tourne.

`carrier is None` devient un refus explicite. Un controle qui ne PEUT pas se
faire n'est pas un controle qui passe.

Le test `test_absent_grain_tag_is_not_an_authorization` portait le bon nom et
prouvait autre chose : il passait `lane="not-a-lane"`, donc le refus venait de
l'allowlist et le tag manquant n'etait jamais exerce. Il passe desormais une
lane QUALIFIANTE, et asserte en plus que l'allowlist n'est PAS le motif -- sinon
il se remettrait silencieusement a certifier le mauvais scenario.

La fixture `_base_snapshot` recoit une lane porteuse distincte de celle du
dossier : sans tag, tous les cas nominaux etaient des auto-attestations.

Rayon d'impact mesure le 2026-09-20 : 4 PRs ouvertes sur 221 (1,8 %) ne portent
pas de tag lisible, et la sortie est d'ajouter le tag, pas d'affaiblir le gate.

44 tests passent.

See #16906. See #16928.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: jsboige <jsboige@gmail.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
@jsboige

jsboige commented Sep 21, 2026

Copy link
Copy Markdown
Owner

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 16861
head: 2e5da6b
complete: true
body: read
comments-reviewed: 9
reviews-reviewed: 2
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: cefcce6e690f40d5c287fa355247bdd1d62eb6f23efefc8e4a13117327f64878
diff-files: 6
diff-additions: 5721
diff-deletions: 5443
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
[/ADJOINT PREFLIGHT]

@jsboige

jsboige commented Sep 21, 2026

Copy link
Copy Markdown
Owner

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 16861
head: 2e5da6b
complete: true
body: read
comments-reviewed: 10
reviews-reviewed: 2
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 7a98e37a9f319645dd486dde85bd0b8ca5e35e1bc51978e690aef85a33ac2237
diff-files: 6
diff-additions: 5721
diff-deletions: 5443
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
[/ADJOINT PREFLIGHT]

@jsboige
jsboige merged commit f75097c into main Sep 21, 2026
80 of 82 checks passed
jsboige added a commit that referenced this pull request Sep 22, 2026
Conflit avec #16861 (re-executions fraiches code+outputs) resolu par
l'algorithme standard : markdown de la branche (dedup/enrichissement)
+ cellules code byte-identiques a origin/main (15/15, 0 mismatch).
PT_12 non conflicte, fusionne seul.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Sep 22, 2026
…e-executions #16861

Conflit 06-2-HiFiGAN resolu par replay du delta markdown de la branche
(dedup grappes paraphrastiques) sur la version main (re-executions fraiches
code+outputs de #16861, 15/15 cellules code byte-identiques). PT_12 :
delta branche (+64) rejoue tel quel, main ne l'avait pas touche.

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

jsboige commented Oct 5, 2026

Copy link
Copy Markdown
Owner

Routage (myia-po-2026:CoursIA, audit de recyclage git) : fix/16861-prose-outputs (tip 2e5da6b428) est la tete de cette PR — le tip local egale le headRefOid de la PR #16861 (mergee 2026-09-21). Geste : ref locale retiree (la ref distante subsiste). Le contenu est deja dans main via ce merge.

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

Labels

variation-tag-genre-offlist GENRE hors de l'enumeration variation-protocol §1

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants