Skip to content

fix(genai,#17066): redressement critique 25_CRF — retitrage 15 lectures + fusion ablation (15 dup -> 0) - #17076

Merged
myia-ai-01 merged 1 commit into
mainfrom
fix/17066-crf-dedup
Sep 22, 2026
Merged

myia-ai-01 merged 1 commit into
mainfrom
fix/17066-crf-dedup

Conversation

@jsboige

@jsboige jsboige commented Sep 20, 2026 •

Copy link
Copy Markdown
Owner

Grain: LIGHT/notebook-python -- lane myia-po-2023:CoursIA -- prev: LIGHT/tooling #17018

Exception ecrite (G-VAR-3 adjacency + trivial-diff #15740), ajout 2026-09-21. L'organe adjacency mesure des grains LIGHT/notebook-python consecutifs pour la lane en sequence de merges (#17076 -> #17100 -> #17101 -> #17106). C'est voulu : la campagne #17066 (duplicate-sections, dispatch ai-01) est une serie coordonnee livree en PRs separees (one-notebook-per-PR, regle atomique), chaque PR etant la consolidation d'un notebook distinct mesuree par le meme organ (check_duplicate_sections.py : porteurs 10-15 -> 0 chacun, verifie dans chaque body). Le diff court (~20-45 lignes de titres) est le format attendu d'une consolidation markdown-only (retitres subject-specific, corps byte-identiques) : la substance de chaque PR est documentee dans son corps et preuvee (SHA1 cellules code, outputs intacts).

Redressement critique #17066 — GenAI/Texte/25_CRF_Etiquetage_Sequentiel.ipynb

Porteur mesuré par check_duplicate_sections.py : 15 dup_reading — 16 cellules titrées à l'identique « Lecture du résultat » (cellules 4, 7, 10, 12, 15, 17, 19, 22, 24, 27, 29, 32, 35, 37, 40, 42).

Lecture critique préalable (le compteur ne suffit pas)

Contrairement à d'autres porteurs de la campagne, le contenu des 16 lectures est riche et ancré (chaque lecture cite les valeurs mesurées de SA sortie : 178 tokens/45 entités, erreur relative < 10⁻⁷, F1 0.947→0.667, etc.). Le défaut est structurel, pas éditorial : un titre générique répété 16 fois qui interdit la navigation (sommaire, recherche « Lecture de X »). Les 3 exercices sont des stubs C.1 conformes (print + return None), aucune fuite de solution (vérifié cellule par cellule), chaque lecture suit bien SON code, aucune inversion d'ordre.

Consolidations (aucune suppression à pile ou face)

# Geste Détail
1-15 Retitrage sujet-spécifique Chaque lecture conservée reçoit un titre unique qui la rend localisable : « le corpus fil rouge », « une dizaine d'indicatrices actives », « trois décisions d'implémentation », « le gradient vérifié », « la NLL décroît », « les poids extrêmes », « la grammaire BIO apprise », « trois niveaux : plancher/émissions/structure », « zéro violation mesurée », « le verdict entité-level », « l'étalon seqeval », « le témoin CRFsuite », « l'ablation à l'échelle du banc », « l'unique erreur + trois familles », « le croisement des trois systèmes ». Corps inchangés (aucune prose retirée, aucune ajoutée).
16 Fusion 35+37 Les deux lectures de la section 8 (ablation) lisaient le MÊME résultat sous deux angles : cellule 35 le tableau des F1 par famille, cellule 37 le bar-chart des mêmes F1 — avec le titre dupliqué pour unique frontière. Fusionnées en UNE cellule après le plot (dernier des deux codes), corps intégral des deux conservé, un seul titre. −1 cellule.

Plan du notebook après réparation

9 sections progressives inchangées (corpus BIO → features → CRF from scratch + gradient-check → apprentissage → baseline token-wise → métriques entité-level + étalonnage seqeval → témoin CRFsuite → ablation → analyse d'erreurs croisée), puis 3 exercices conformes et conclusion. 50 cellules (51 avant), aucune cellule déplacée hors la fusion 35/37.

Verdict de séquence (honnête)

La progression pédagogique est saine et préservée : chaque concept (features → scores → gradient → apprentissage → comparaison → ablation → erreurs) repose sur le précédent, les lectures maintenant localisables par leur sujet. Le fait d'échelle « une entité ≈ 10 points de F1 » apparaît 3 fois (métriques §6, ablation §8, conclusion) — assumé : première pose, lecture dédiée, synthèse finale sont trois rôles distincts, pas un doublon.

Mesures

Contrôle Résultat
check_duplicate_sections.py (organe #17068) 15 findings → 0
Cellules code (19) byte-identiques (SHA1 avant/après égaux)
Outputs 29 intacts, 19/19 execution_count — 0 re-exécution requise (C.2 : exception markdown-only, aucune cellule code modifiée)
Headings dupliqués restants (tout le notebook) 0
nbformat VALID
Périmètre 1 fichier, +27/−109 (−109 = titres génériques retirés + cellule fusionnée ; aucune prose perdue)

See #17066 (contribution partielle à la campagne — 1 notebook sur 218 porteurs ; tranche QC-Python réservée à po-2025:CoursIA-2, SW-11 sauté car PR #17059 ouverte le touche).

🤖 Generated with Claude Code

…es sujet-specifiques + fusion ablation (16 titres identiques -> 0)

Consolidation markdown-only : 19 cellules code byte-identiques (sha1),
29 outputs intacts, 0 re-execution requise (C.2 exception markdown).
Organe check_duplicate_sections.py : 15 dup_reading -> 0.

See #17066

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 added the variation-tag-missing PR sans tag Grain: <TIER>/<GENRE> (variation-protocol) label Sep 20, 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).

@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 added the markdown-table-syntax Table syntax defect in changed files (CODE_SPAN_PIPE, NO_SEP, ...). Advisory. See #10097. label Sep 20, 2026
@github-actions

github-actions Bot commented Sep 20, 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 4.8s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 5.3s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 6.7s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 8.9s
Search-01-StateSpace.ipynb ✅ SUCCESS 4.8s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 3.4s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 38.4s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 4.1s

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

@github-actions

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 1
  • Code cells validated: 19
  • 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 commented Sep 20, 2026 •

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #17076 (fix(genai,#17066): redressement critique 25_CRF — retitrage 15 lectures + fusion ablation (15 dup -> 0)) 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 21, 2026

Copy link
Copy Markdown
Owner Author

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

@jsboige

jsboige commented Sep 22, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 17076
head: a829f7d
complete: true
body: read
comments-reviewed: 7
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: acbde5a214701776d8dc1a63ba407c4551b022b9a81cc76ce925ec95f3857ace
diff-files: 1
diff-additions: 27
diff-deletions: 109
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
[/ADJOINT PREFLIGHT]

@myia-ai-01
myia-ai-01 merged commit 9b94bae into main Sep 22, 2026
95 of 99 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

markdown-table-syntax Table syntax defect in changed files (CODE_SPAN_PIPE, NO_SEP, ...). Advisory. See #10097.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants