Skip to content

fix(arg,#18945): Obs-03 Recollement strate 6 — prose ancrée sur la mesure (jointure FR, compte AIF réel, exercices satisfaisables) - #18952

Merged
myia-ai-01 merged 2 commits into
mainfrom
fix/18945-recollement-strate6
Oct 3, 2026
Merged

myia-ai-01 merged 2 commits into
mainfrom
fix/18945-recollement-strate6

Conversation

@jsboige

@jsboige jsboige commented Oct 3, 2026

Copy link
Copy Markdown
Owner

Summary

Recollement de la prose du carnet Obs-03 (strate 6) sur sa mesure réelle — issue #18945 (fille #18390). La cause racine diagnostiquée par l'audit : prose écrite pour un plan A (jointure Latin ↔ localname, témoin OWL-only) jamais livré par le code (plan B : jointure FR normalisé, 0 OWL-only, 20 CSV-only). 27 corrections byte-level + re-exécution complète.

Constat -> correction (les 7 points de la portée)

# Constat audit Correction (commit d6930137e7)
1 S4 2a2d97a4 : jointure « Latin ↔ localname » jamais implémentée ; « 24 » ×3 vs 25 mesuré Prose réécrite sur la clé réelle (label FR normalisé via _norm, seul champ porté des deux côtés ; Latin = 25/1 408 vrais noms latins, pas camelCase) ; table décrite indexée par PK ; les 3 « 24 » corrigés — le print codé en dur de 2b4872f5 devient dynamique : Jointure locale par 'Latin' … : 1.8% (25/1408 peuple). (sortie mesurée)
2 S5 0bca61c3 : 1 293 / 1 313 / 1 313 arithmétiquement impossible 1 293 / 1 293 / 1 313 (cohérent avec « OWL \ CSV : 0 » imprimé) ; millésime « commit courant 2026-08 » → substances resynchronisées (OWL 30/08, CSV 04/09)
3 S3 « moins d'un Mo », « 102 colonnes » Déjà absents de main à la relecture (corrigés en amont) — vérifié par grep avant édition ; rien à faire
4 « 18 284 triplets AIF » ×2 — c'est le total des annotations (18 388 à HEAD), pas des triplets AIF (145 aifAttackedNode) Option « re-mesure et impression » retenue : la cellule §2 imprime désormais Assertions d'annotation (total fichier) : 18,388 et dont predicat aifAttackedNode : 145 (le compte AIF reel) ; chapeau/sommaire reformulés (« ~18 400 annotations dont les AIF attack ») ; citation du carnet frère 7 773 → 7 825 état courant
5 Exercices 2-3 insatisfaisables (exigeaient un élément de OWL \ CSV = ensemble vide) ; indice Ex 1 « utiliser localname » (le CSV n'en a pas) Ex 2 : un témoin CSV \ OWL + un élément de l'intersection (comparaison FR/EN/famille, asymétrie irréductible vs correspondance saine) ; Ex 3 : nœuds = CSV \ OWL (les 20 mesurés) + familles, arêtes via categorize_csv ; Ex 1 : indice sur _norm + restriction par Famille. Stubs inchangés (print("Exercice a completer") ×3, C.1)
6 C.4 §1/§2 : direction du témoin inversée, « heuristique (colonne Latin) » §2 : témoin mesuré CSV-only (20 vs 0), deux hypothèses nommées (retard de régénération de l'OWL / marge de génération) ; §1 : vraie clé nommée ; §3 : millésime des deux substances ; renvoi « §7 OWL-only » → « §2, comptes AIF imprimés »
7 Sorties figées à l'état d'écriture Les sorties étaient déjà à l'état HEAD sur main (6 791 708 / 7 825 / 4 144 860 / 104) — re-exécution complète effectuée quand même (ci-dessous), millésime à jour

Bonus couverts : §6 221f875a honnête sur le graphe réellement produit (OWL \ CSV vide → seule la branche CSV se matérialise, 20 répond, neutralise 0, categorize_owl = machinisme disponible) ; §4 318e7cc8 « par localname » → « par label FR normalisé » ; « 96 K lignes » ×3 → dynamique/108 K ; ~6 MB → ~6,8 Mo.

Preuve d'exécution (H.1 / C.2 / §D)

Executing notebook with kernel: python313
100%|██████████| 26/26 [00:04<00:00,  5.54cell/s]
  • 26/26 cellules, 0 erreur, 0 cellule sans execution_count (vérifié par script sur l'artefact).
  • Stamp language_info : 3.13.13 (base 3.13.13 — même major.minor, kernel-drift OK).
  • Verdict central intact (robustesse confirmée par l'audit) : Intersection : 1,293 (98.5%), témoin Accroche -> PK CSV 944, repond : 20, Dont neutralise : 0, Total relations : 20.
  • Nouvelles sorties mesurées : 6,791,708 octets / 107,895 lignes (désormais imprimées dynamiquement) / AA-resource 7,825 / 18,388 annotations / 145 aifAttackedNode / 4,144,860 / 1,408 x 104.
  • C.1 : 0 raise NotImplementedError / assert False / 1/0 dans le code (l'unique match grep est la markdown qui documente la règle) ; les 3 stubs d'exercices restent des stubs.

Anti-régression

Aucune cellule # Solution / # Exemple résolu supprimée ; les cellules code ne changent que par : 1 print rendu dynamique (jointure Latin), 4 lignes ajoutées (comptes AA/AIF imprimés), commentaires 24→25. Le reste = markdown + sorties régénérées.

Closes #18945

Grain: MED/notebook-python -- lane myia-po-2026:CoursIA -- prev: DEEP/lean #18950

🤖 Generated with Claude Code

…sure (jointure FR, compte AIF reel, exercices satisfaisables)

Issue #18945 (fille #18390) : la prose decrivait un plan A (jointure
Latin<->localname, temoin OWL-only) que le code n'a jamais livre (jointure
FR normalise, 0 OWL-only, 20 CSV-only). Corrections :

- S4/S13 : la cle reelle est le label FR normalise (_norm) ; la table CSV
  est indexee par PK ; Latin = 25/1 408 vrais noms latins, pas des
  localnames camelCase ; '24' -> 25 (3 occurrences, dont le print code en
  dur -> desormais mesure dynamiquement : '1.8% (25/1408 peuple)').
- S5 : arithmetique impossible 1 293/1 313/1 313 corrigee en
  1 293/1 293/1 313 ; millesime -> substances resynchronisees 30/08+04/09.
- S2 : impression du total AnnotationAssertion (18 388) et du compte
  aifAttackedNode reel (145) ; '18 284 triplets AIF' (x2, chapeau+sommaire)
  -> '~18 400 annotations dont les AIF attack'. Citation frere 7 773 ->
  7 825 etat courant.
- Tailles : ~6 MB -> ~6,8 Mo ; '96 K lignes' (x3) -> dynamique/108 K.
- S6 : honnetete sur le graphe reellement produit (OWL\CSV vide, 20
  'repond', neutralise 0, categorize_owl = machinisme disponible).
- Exercices 1-3 rendus satisfaisables (Ex2 exigeait un element d'un
  ensemble vide ; Ex3 un graphe sans noeuds) : temoin CSV\OWL + element
  d'intersection ; noeuds = CSV\OWL + familles via categorize_csv.
- C.4 S1/S2 : direction du temoin inversee (CSV-only = retard de
  regeneration de l'OWL), vraie cle de jointure nommee.
- Re-execution complete papermill python313 (26/26, 0 erreur) : verdict
  central intact (1 293 / 98,5% / temoin Accroche PK 944 / repond x20).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@github-actions github-actions Bot added the consecutive-code-cells Modified notebook has >=2 consecutive code cells (#12797) label Oct 3, 2026
@github-actions

github-actions Bot commented Oct 3, 2026

Copy link
Copy Markdown
Contributor

No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml).

Detector: python scripts/audit/detect_organ_duplication.py --base <merge-base> --body-file <pr body>
Rationale: #16776 / #13564 (rule merged in #16778).

@github-actions

github-actions Bot commented Oct 3, 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 Oct 3, 2026

Copy link
Copy Markdown
Contributor

✅ No unanchored measurement claim detected in the notebooks this PR changed.

Scope = notebooks CHANGED in this PR, not the whole corpus. The stale-claim-report run artifact holds the structured JSON.
Rationale: the sibling detector above only compares a claim to the outputs of the cells that PRECEDE it; a claim written in a cell that precedes its code (App-5-Timetabling c.2/c.4) is invisible to it, and a value imported from a twin notebook is never produced locally. See python scripts/check_stale_claims.py --help.

@github-actions

github-actions Bot commented Oct 3, 2026

Copy link
Copy Markdown
Contributor

✅ 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 factual-mislabel-report run artifact holds the structured JSON.
Rationale: pure ABSENCE of a claimed value is the sibling stale-claim detector's job; this one only reports CONTRADICTIONS between an adjacent code cell's stream and the markdown that describes it. See python scripts/check_factual_mislabel.py --help.

@github-actions

github-actions Bot commented Oct 3, 2026

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 1
  • Code cells validated: 12
  • 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 Oct 3, 2026

Copy link
Copy Markdown
Contributor

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

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.

@github-actions

github-actions Bot commented Oct 3, 2026 •

Copy link
Copy Markdown
Contributor

Golden-Set Execution (H.7 P3)

✅ 9/9 notebooks passed (certified reproducible)

Notebook Status Time
2.1-Workflow-ML.ipynb ✅ SUCCESS 7.2s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 6.9s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 7.8s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 7.3s
Search-01-StateSpace.ipynb ✅ SUCCESS 5.4s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 3.7s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 39.2s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 4.9s
GameTheory-13d-Optimistic-CFR-Python.ipynb ✅ SUCCESS 25.9s

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

@github-actions

github-actions Bot commented Oct 3, 2026

Copy link
Copy Markdown
Contributor

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

…nes par des predicats (le taux est imprime par la sortie)

Rouge prose-counts sur la PR : 2 compteurs quantitatifs ajoutes en prose
(regle #9377 -- la mesure vit dans les sorties CI, pas dans la prose).
Les 3 occurrences du fait deviennent des predicats pointant vers la
sortie de la cellule de couverture Latin qui imprime le taux exact.

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

jsboige commented Oct 3, 2026

Copy link
Copy Markdown
Owner Author

Rouge prose-counts réparé au commit b5583215d8 : les 2 compteurs ajoutés en prose (« 25/1 408 lignes », cellules 12 et 25) deviennent des prédicats pointant vers la sortie de la cellule de couverture Latin qui imprime le taux exact (règle #9377 — la mesure vit dans les sorties). Occurrence de la cellule 13 alignée par cohérence. Garde re-passé localement sur le diff committé : [OK] aucun compteur quantitatif en prose. Markdown-only, sorties inchangées (exception C.2).

@jsboige

jsboige commented Oct 3, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 18952
head: b558321
complete: true
body: read
comments-reviewed: 9
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 9f07bfac787637d7d95fe7288f6f33422e0ef5254bc8c7ef52cfe6b81994be8d
diff-files: 1
diff-additions: 169
diff-deletions: 160
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
[/ADJOINT PREFLIGHT]

note: Dossier c393 sur PR #18952 (fix(arg,#18945): Obs-03 Recollement strate 6 -- prose ancree sur la mesure (jointure FR, compte AIF reel, exercices satisfaisables)). Lane porteuse myia-po-2026:CoursIA (tierce attestation). MED/notebook-python, 1 fichier MyIA.AI.Notebooks/SymbolicAI/Argument_Analysis/Argumentation-Obs-03-Recollement-Lectures-Python.ipynb +169/-160, tete b558321. PR gate SUCCESS. B.0 clear (1 commentaire non-evalue 06:26:31Z = reponse lane porteuse sur redacteur prose-counts, pas un finding bloquant non leve). Scope pass (1 .ipynb sous Argumentation_Obs-03/, PAS sous .claude/, .github/, ni CLAUDE.md). domain: pass (substance notebook Argumentation Obs-03 Recollement strate 6, audit prose alignee sur plan B livre jointure FR normalise, compte AIF reel, exercices satisfaisables, re-exec Papermill). Cible READY post-audit : substance prete (colmatage recollement Obs-03 plan B livre, prose alignee sur la mesure reelle, label consecutive-code-cells informatif). Eligible merge direct ou APPROVED sur la tete.

@myia-ai-01
myia-ai-01 merged commit 54a0766 into main Oct 3, 2026
92 of 94 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

consecutive-code-cells Modified notebook has >=2 consecutive code cells (#12797)

Projects

None yet

2 participants