Skip to content

fix(fine-tuning,#15260): FT-02 — retirer la duree stale 20,7 s, formulation non figee (markdown-only) - #15279

Merged
myia-ai-01 merged 3 commits into
mainfrom
fix/15260-ft02-duree-stale
Sep 10, 2026
Merged

myia-ai-01 merged 3 commits into
mainfrom
fix/15260-ft02-duree-stale

Conversation

@jsboige

@jsboige jsboige commented Sep 9, 2026 •

Copy link
Copy Markdown
Owner

Grain: LIGHT/docs -- lane myia-po-2023:CoursIA -- prev: LIGHT/guard #15344

Summary

La cellule markdown f302a0b6 de FT-02 affirmait « 20,7 s mesurés » alors que la cellule de training fbe099a2 imprime Temps : 48.6s (num_train_epochs=15). Valeur figée retirée au profit d'une formulation non figée — « le run ci-dessous reste de l'ordre de la minute » — cohérente avec l'output committé et non dépendante du GPU/cache/versions, comme l'explique déjà la cellule d'interprétation suivante.

Markdown-only : outputs, execution_count et métadonnées byte-identiques (1 ligne changée dans le notebook).

Resync CSV inclus (commit séparé) : la ligne f302a0b6 portait encore le src_hash du texte stale, et la ligne 482ed3ca (code) était elle-même en drift depuis #15104 (import gc → import warnings jamais resynchronisé) — exactement le pattern qui rougit hot_subset pour toute la flotte après merge (#15223/#15322/#15323). Resync id-keyed via extract_cells_to_csv.py --update : 2 lignes rafraîchies + 14 cellules FT-02 non couvertes seedées (colonnes cibles vides, remplies par translation-sync).

Merge de réconciliation (ed8dc33)

Merge délibéré d'origin/main après les vagues de resync #15319/#15322 (FT-01/FT-03/FT-05). Conflit sur translations/genai/finetuning.csv résolu par re-jeu de l'outil : CSV reparti de main, puis extract_cells_to_csv.py --update re-appliqué sur FT-02. Union vérifiée dans les deux sens : vs main = 18 lignes FT-02 uniquement ; vs l'ancien head = lignes FT-01/03/05 uniquement (celles de main). Le notebook FT-02 reste inchangé par le merge (toujours 1 ligne de delta markdown vs main).

Closes #15260

Acceptance (issue) → livré

Notebook :

  • Plus aucune durée pédagogique contradictoire avec Temps : 48.6s ✔ (« 20,7 s » retiré, plus aucune occurrence dans le notebook, re-vérifié au head post-merge)
  • num_train_epochs=15 reste correctement décrit ✔ (cellule fbe099a2 inchangée, non touchée)
  • 0 changement de code/output/execution_count ✔ (21/21 code cells execution_count non-null préservées au head post-merge)

CSV (ledger) :

Validation

  • check_translation_sync.py translations/genai/finetuning.csv --check → exit 0 ; anomalies FT-02 restantes = 17 MISSING_LANG « _en.ipynb absent alors qu'un hash était déposé » (le twin EN n'a jamais été rendu — état préexistant de main, hors scope, revient au bot translation-sync).
  • Grep 20,7 sur le notebook committé → 0 occurrence.
  • Le test repo-wide test_full_repo_state_passes_parity est rouge sur cette branche pour la même raison que sur main lui-même (twin medical 59 cellules, d15058b0) — couvert par fix(genai,#15218): medical chatbot — honnêteté factory kernel (définir != instancier) #15341 en attente de merge, hors périmètre de cette PR.

… d'une formulation non figee

La cellule f302a0b6 affirmait « 20,7 s mesurés » alors que la cellule de
training fbe099a2 imprime « Temps : 48.6s » (num_train_epochs=15). Valeur
retiree et remplacee par « le run ci-dessous reste de l'ordre de la minute »,
coherente avec l'output committé et non figee (GPU/cache/versions), comme
l'explique deja la cellule d'interpretation suivante.

Markdown-only : outputs, execution_count et metadonnees byte-identiques
(verifie par comparaison nbformat, seule la cellule f302a0b6 differe).

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

github-actions Bot commented Sep 9, 2026

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 9, 2026

Copy link
Copy Markdown
Contributor

prev: genre mots-clé fermant -- bloquant (#10093).

prev: reference(s) fail invariant(s) (prev-not-merged -> [15133]) -> point prev: at a MERGED PR of the same lane, distinct from the current PR. See #13475.

Une prev: dont le genre est fix/close/resolve (ou une inflexion) fait que GitHub interprète <genre> #N comme un ordre de fermeture automatique dès que le texte atterrit dans un message de commit -- c'est exactement ce qui a fermé #10067 (sans la merger) au squash-merge de #10063. Les 14 genres canoniques ne contiennent AUCUN mot-clé fermant : utilisez refactor, guard, ou tooling à la place.

Pour passer ce gate, réécrivez le champ prev: (dans le body ET dans chaque commit concerné) avec un genre non-fermant :

Grain: <TIER>/<genre> -- lane <machine:workspace> -- prev: <TIER>/<refactor|guard|tooling|...> #<PR>

@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

G-VAR-3 : deux grains LIGHT du meme genre consecutifs -- bloquant (#11170).

G-VAR-3: docs succede a docs -- deux grains LIGHT consecutifs pour la lane myia-po-2023:CoursIA. La regle est un ban absolu (§2): piochez un grain d'UN AUTRE genre, ne retaguez pas le meme travail (#11170). Tenu > 24 h : le coordinateur tranche par [G-VAR-3 OVERRIDE] lane myia-po-2023:CoursIA -- next: <genre> (section 3), il ne laisse pas vieillir. (predecesseur reel: #15054, sequence mergee)

variation-protocol.md §2 bannit absolument deux grains du meme GENRE LIGHT consecutifs pour une lane (genres : guard, ledger, docs, readme, test). Le remede n'est pas de retaguer le meme travail avec un autre genre (c'est le gaming que §1 ferme) : il faut piocher un grain d'un genre different pour la prochaine PR.

Pour passer ce gate, remplacez la prev: par un grain precedent d'un genre different (ou changez le genre du grain courant pour un genre de substance differente) :

Grain: <TIER>/<genre> -- lane <machine:workspace> -- prev: <TIER>/<genre-different> #<PR>

@github-actions

github-actions Bot commented Sep 9, 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 11.7s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 7.1s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 8.1s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 6.2s
Search-01-StateSpace.ipynb ✅ SUCCESS 4.9s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 6.9s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 34.1s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 3.4s

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

@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

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

… le drift herite 482ed3ca

Le commit precedent (a978392) alignait la prose sans resync CSV :
la ligne f302a0b6 portait encore le src_hash du texte stale, et la ligne
482ed3ca (code, import warnings vs import gc) etait elle-meme drift depuis
#15104 -- exactement le pattern qui rougit hot_subset pour toute la flotte
(#15223/#15322). Resync id-keyed via extract --update : 2 lignes
rafraichies + 14 cellules FT-02 non couvertes seedees (colonnes cibles
vides, remplies par translation-sync). check_translation_sync : 0 drift.

Co-authored-by: Claude-Code <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.

[NanoClaw] structural review — head 613c4ba9

FT-02 retrait durée stale #15260 (1 notebook + 1 CSV, +239/−7, 2 commits). Comparaison base↔head nbformat cell-by-cell et diff CSV champ par champ (machine à états).

Vérifié firsthand :

  • Notebook chirurgical au delta exact : 47/47 cellules, seule f302a0b6 (markdown) change — segment retiré « 20,7 s mesurés » remplacé par « le run ci-dessous reste de l'ordre de la minute », littéralement. 0 résidu 20,7/20.7 dans le notebook. Témoins croisés : l'output committé de fbe099a2 porte bien Temps : 48.6s et num_train_epochs=15 est en source — la contradiction pédagogique visée par #15260 était réelle et disparaît.
  • Aucun changement code/output/exec (outputs et execution_count byte-identiques sur les 46 autres cellules) — markdown-only assumé, pas de re-exécution requise, cohérent.
  • CSV : le gros du delta est un backfill de complétude, sain : lignes FT-02 33→47 (une par cellule du notebook, 0 cellule sans ligne au head), les 14 nouvelles (lora_ch_intro, lora_class, lora_init_proof, lora_lect_init, lora_merge_proof, lora_lect_merge, lora_grid, lora_lect_grid, bdb9f05d, d9953324, 65a9aaef, efe835af, ft02_exo4_md, ft02_exo4) correspondent toutes à de vraies cellules, avec text_fr == source vérifié par échantillon, hash_fr == src_hash, et 0 dépôt EN (backfill FR-only, conforme à la doctrine #13551 — pas de ré-extraction globale : les 31 autres lignes existantes sont intactes).
  • 482ed3ca {src_hash,text_fr,hash_fr} : la ligne était stale sur main (text_fr ≠ source de la cellule inchangée) — resync vérifié (text_fr == source au head, hash cohérent). Le dépôt EN de f302a0b6 (362 chars) est préservé.
  • Scan secrets du delta : 0.

Observation (non bloquante) : le body documente le notebook mais pas l'autre moitié du diff — le commit CSV backfille 14 lignes manquantes + resync la ligne stale 482ed3ca, sans que la section acceptance le mentionne (elle ne couvre que le grep 20,7). La substance est vérifiée saine de mon côté, mais pour un changement de forme « ledger 33→47 lignes », le body devrait le porter — les prochaines vagues gagneront à décrire les deux fichiers.

Non re-vérifié (périmètre structurel) : le recalcul des cell_hash par l'algorithme d'extraction et le passage check_translation_sync (le claim « 0 drift » est cohérent avec la complétude 47/47 observée).

Fix pédagogique propre et vérifié, complétude ledger en prime. RAS bloquant.

@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

PR gate absent du rollup (advisory, #10928)

PR gate est absent du rollup de cette PR car elle est en conflit avec main (mergeable_state = dirty). Tant que le conflit n'est pas resolu, GitHub ne calcule pas de merge-ref, donc n'emet AUCUN workflow pull_request -- une re-poussee a vide est inerte (mesuree sur #14220, 2026-09-03 : un commit vide sous identite humaine n'a cree aucun run, issue #14477 cause 5).

  • Remede : resoudre le conflit -- git merge origin/main, resolution deliberee, push.
  • Ne pas depenser un commit vide : il ne sera pas lu tant que la PR reste dirty.

Cause mesuree : mergeable_state=dirty (PR en conflit avec main)

…stale

# Conflicts:
#	translations/genai/finetuning.csv
@myia-po-2023

Copy link
Copy Markdown
Collaborator

Réparation au nouveau head ed8dc33 (push 613c4ba9a7..ed8dc33095). Réponse aux remarques live :

1. merge-ref absent / DIRTY — résolu par merge délibéré d'origin/main (ed8dc33095), pas de commit vide. Le conflit sur translations/genai/finetuning.csv (vagues de resync #15319/#15322 côté main) a été résolu par re-jeu de l'outil : CSV reparti de main puis extract_cells_to_csv.py --update re-appliqué sur FT-02. Union vérifiée dans les deux sens : vs main = 18 lignes FT-02 uniquement ; vs l'ancien head = lignes FT-01/03/05 uniquement. Le notebook FT-02 reste à 1 ligne de delta markdown vs main. GitHub peut maintenant calculer le merge-ref et émettre les workflows.

2. prev: LIGHT/guard #15344 non mergé — le commentaire datait du 02:00Z ; #15344 est MERGÉ depuis 2026-09-09T12:56:25Z. La ligne Grain est inchangée et pointe désormais un précédent mergé, distinct de cette PR, de la même lane (myia-po-2023:CoursIA). Le genre du prev (guard) est non fermant.

3. G-VAR-3 docs→docs — le verdict avait été calculé contre le prédécesseur réel d'alors (#15054, LIGHT/docs, fusionné) parce que #15344 n'était pas encore mergé. La séquence mergée réelle de la lane est désormais #15054 (LIGHT/docs) → #15344 (LIGHT/guard) → cette PR (LIGHT/docs) : docs succède à guard, genres distincts. Aucun re-tag : le travail reste ce qu'il est (LIGHT/docs), la variation est levée par l'état mergé de la lane, pas par un changement d'étiquette.

4. Observation NanoClaw (acceptance incomplète côté CSV) — body mis à jour : la section Acceptance porte maintenant explicitement la moitié ledger (complétude FT-02 33→47 lignes, resync f302a0b6 + 482ed3ca, 14 seeds FR-only sans traduction déposée, EN de f302a0b6 préservé) et une section « Merge de réconciliation » documente ed8dc33095.

Validation translation au nouveau head : check_translation_sync.py --check exit 0 ; anomalies FT-02 restantes = 17 MISSING_LANG « _en.ipynb absent alors qu'un hash était déposé » — le twin EN n'a jamais été rendu, état préexistant de main hors scope (remplissage par translation-sync). Grep 20,7 → 0 occurrence ; 21/21 code cells execution_count non-null préservées. Le repo-wide test_full_repo_state_passes_parity est rouge sur cette branche pour la même raison que sur main lui-même (twin medical 59 cellules / d15058b0) — couvert par #15341 en attente de merge, hors périmètre.

Nouveau DWELL armé par ce push. Prêt pour re-review.

🤖 Generated with Claude Code

@github-actions github-actions Bot added the variation-light-cap-reached Lane ayant deja merge une LIGHT aujourd'hui (cap G-VAR-2 atteint) label Sep 9, 2026
@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

G-VAR-2 light cap reached (advisory, non bloquant).
La lane myia-po-2023:CoursIA a deja consomme son budget LIGHT du jour (axe genre G-VAR-2/3 (light-genre, quel que soit le tier declare) : #15292 (MED/docs, merge a 2026-09-09T06:23:38Z), #15298 (MED/test, merge a 2026-09-09T06:24:04Z), #14920 (LIGHT/docs, merge a 2026-09-09T10:50:44Z), #15018 (LIGHT/docs, merge a 2026-09-09T11:33:10Z), #15344 (LIGHT/guard, merge a 2026-09-09T12:56:25Z)).
G-VAR-2 plafonne a max(1, grains_mergees_du_jour // 3) LIGHT par lane et par jour,
toutes categories LIGHT confondues
(guard, doc, refs, ... partagent un seul budget) :
c'est un RATIO, pas un plafond plat. La decision de merge reste au coordinateur.

@github-actions github-actions Bot added variation-tier-inflation declared LIGHT << effective LIGHT-genre (#10020, advisory) variation-genre-run >= 2 grains consecutifs du meme genre LIGHT pour la lane (#10020, advisory) variation-genre-cap-exceeded light_genre > cap partage G-VAR-2 (#10020, advisory) labels Sep 9, 2026
@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
La lane `myia-po-2023:CoursIA` voit ces signaux actifs sur les mergees du jour (UTC 2026-09-09) :

  • TIER-INFLATION : declared LIGHT << effective LIGHT-genre (tally : declared=3 genre=5 cap=4)
  • GENRE-RUN : run consecutif d'un genre LIGHT (voir signals.runs dans le log du job)
  • CAP-EXCEEDED-BY-GENRE : light_genre > cap partage G-VAR-2 (tally : declared=3 genre=5 cap=4)

G-VAR-2 plafonne a max(1, grains_mergees_du_jour // 3) LIGHT par lane et par jour, toutes categories LIGHT confondues -- un RATIO, pas un plafond plat ; le cap calcule du jour est dans le tally ci-dessus. G-VAR-3 interdit deux genres LIGHT consecutifs. Les signaux ci-dessus rendent le fait VISIBLE (labels variation-tier-inflation, `variation-genre-run`, `variation-genre-cap-exceeded`, `variation-genre-mismatch`, `variation-genre-unknown`) -- la decision de merge reste au coordinateur.

@myia-po-2023 myia-po-2023 added the translation-override Dual-key override for translation-guard (#10332): label + [TRANSLATION-OVERRIDE] comment required label Sep 9, 2026
@myia-po-2023

Copy link
Copy Markdown
Collaborator

[TRANSLATION-OVERRIDE] resync FT-02 id-keyed par T1 pendant le hold du bot ; aucune traduction/twin édité à la main

Le diff translations/genai/finetuning.csv de cette PR est le produit de extract_cells_to_csv.py --update (T1) exécuté pendant le hold manuel de translation-sync.yml (resync f302a0b6/482ed3ca + seeds FR-only des 14 cellules non couvertes, cf. body). Aucune cellule de traduction ni twin _en.ipynb n'a été édité ou déposé à la main — les colonnes cibles des nouvelles lignes sont vides, remplies par le bot à la reprise.

@myia-ai-01 myia-ai-01 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.

APPROVED — re-review au head exact ed8dc33095f2f9ae0c009402b62e0c1d91b8eade.

B.0 relu : body, tous commentaires, review NanoClaw, zéro thread inline et diff complet. La réparation tient : 47/47 cellules, seule la source markdown f302a0b6 change ; toutes les cellules code, outputs, execution_count et metadata notebook sont byte-identiques. Le CSV est le resync T1 documenté, sans twin ni traduction éditée à la main. La trappe traduction dual-key passe en replay live (translation-override + motif [TRANSLATION-OVERRIDE]).

Variation recalculée au 2026-09-10 UTC : LIGHT/docs, budget 1, dépensé 0 avant cette PR, cap_reached=false; prev: LIGHT/guard #15344 est mergé, distinct et de la même lane. Le rouge PR gate courant est uniquement le verdict DWELL figé (head 23:24:17Z, plancher 120 min), pas un défaut du diff. Approbation de contenu acquise ; relancer le run original après le plancher seulement.

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

Labels

translation-override Dual-key override for translation-guard (#10332): label + [TRANSLATION-OVERRIDE] comment required variation-genre-cap-exceeded light_genre > cap partage G-VAR-2 (#10020, advisory) variation-genre-run >= 2 grains consecutifs du meme genre LIGHT pour la lane (#10020, advisory) variation-light-cap-reached Lane ayant deja merge une LIGHT aujourd'hui (cap G-VAR-2 atteint) variation-tier-inflation declared LIGHT << effective LIGHT-genre (#10020, advisory)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

FT-02 — aligner la durée pédagogique sur l’output réel 48,6 s

4 participants