Skip to content

fix(notebooks,#15719): sweep tables g5-residu -- 6 fichiers 0 finding, 2 NOOP justifies (prose) - #19595

Merged
myia-ai-01 merged 11 commits into
mainfrom
wt/mistral-table-g5-residu-petits-domaines
Oct 7, 2026
Merged

myia-ai-01 merged 11 commits into
mainfrom
wt/mistral-table-g5-residu-petits-domaines

Conversation

@jsboige

@jsboige jsboige commented Oct 6, 2026 •

Copy link
Copy Markdown
Owner

Grain: LIGHT/docs — lane myia-po-2025:CoursIA — prev: LIGHT/notebook-python #19592

Périmètre

6 fichiers modifiés, +11/−10, markdown uniquement (cellules markdown de carnets + un README.md). Aucune cellule de code, aucun output, aucun execution_count touché — exception C.2 (modifs uniquement markdown), pas de ré-exécution due.

Fichier Nature du fix
Complexity/Complexity-07-KolmogorovBornee-Sequences-Python.ipynb +2/−2
ML/DataScienceWithAgents/02-ML-Cours/2.5d-Derive-Distribution-Deploiement.ipynb +4/−4
ML/DataScienceWithAgents/02-ML-Cours/README.md +1/−1
SymbolicAI/Argument_Analysis/Argumentation-Onto-01-AIF-OWL2-Python.ipynb +1/−0
SymbolicAI/Lean/Lean-12c-Tensor-Product-Representations-Lean.ipynb +2/−2
SymbolicAI/SymbolicLearning/SL-1b-LogicalLearning-Lean-Native.ipynb +1/−1

Le périmètre est mesuré depuis le merge-base (git diff --numstat origin/main...<tête>) et recoupé avec gh pr view --json files : les deux rendent les 6 mêmes fichiers. Le git diff deux-points main..tête en rend 75 — c'est la base périmée de la branche (merge-base 01bae4db5a, main à 6aa6ba8d7f), pas du contenu de PR.

Origine et provenance

Relai du dispatch Vibe g5-residu-petits-domaines (fourrée dimensionnée sur re-scan frais, base d09acde1a2, 8 fichiers targetPath). Travail exécuté dans le worktree D:/dev/CoursIA-vibe/g5-residu-petits-domaines (checkpoint-commits du worker, tête 8444d4752, merge-base 01bae4db5) ; le diff propre de la branche — mesuré par la lane à la livraison, pas lu dans le message de commit — est exactement les 6 fichiers ci-dessus.

Vérification (lane, firsthand à la tête 8444d4752)

Garde Résultat
scan_md_table_syntax.py --check sur les 6 fichiers total_findings: 0, rc=0
git diff --stat merge-base..tête 6 fichiers, +10/−9, tous dans targetPath
Hors périmètre aucun (le fichier 2.11-Regularisation vu dans un diff naïf base..head est du drift main antérieur au cut, pas du travail de la branche)

Les 2 NOOP justifiés (findings réels, famille faux positifs documentée)

Le mission portait 8 fichiers ; 2 portent des findings qui ne sont pas du travail (pipe en prose, lu comme pseudo-tableau — famille FP nº3/5 du protocole du sweep) :

Fichier Finding Preuve que c'est de la prose
ICT-Series/ICT-41-SAE-GeometrieFeatures-Python.ipynb (cellule 19, l. 11) ORPHAN_TABLE_ROW snippet : « …la ou les controles restent a |r| <= » — corrélation en valeur absolue dans une phrase
ML-Training-Pipeline/REGISTRY.md (l. 272) ORPHAN_TABLE_ROW snippet : « Le décalage causal adjusted − fit_raw est de médiane −0,010, max… » — paragraphe de prose après une table réelle

L'échappement y serait une mutation visible (antislash rendu à l'étudiant) — le NOOP justifié est l'issue correcte.

Correctif du 2026-10-07 : deux justifications du dossier ne tenaient pas

Mesure du rendu réel : cellules lues à la source (git show <ref>:<chemin>), jamais reconstituées ; deux moteurs — markdown-it-py et le rendu de GitHub lui-même (POST /markdown, mode=gfm, cmark-gfm).

1. ML 2.5d — le tableau était mort, et l'échappement seul dégradait ce que le lecteur voit

La ligne de délimitation portait 5 groupes pour un en-tête à 4 colonnes. En GFM, une arité incompatible fait que le tableau n'est pas reconnu du tout : les lignes sont rendues en prose.

État tableaux rendus antislash visible pour le lecteur
main 0 non — les pipes bruts se lisent en prose
tête 0b2cc36b (la PR telle quelle) 0 oui — le lecteur voyait P(y|x)
tête 202489e7 (après correctif) 1, sur les deux moteurs non — P(y|x) propre, corps [4,4,4]

Le \| n'est consommé que dans une cellule de tableau ; hors tableau c'est un caractère ordinaire, donc il s'affiche. Échapper les pipes sans corriger l'arité empirait donc ce que la PR prétendait réparer, et aucun compteur ne le voyait : le nombre de colonnes reste identique dans les deux états, et GFM jette la cellule excédentaire au lieu de la décaler. Seul le texte rendu mesure la lésion.

Correctif : |---|---|---|---| (4 colonnes), pipes échappés conservés. Une ligne, cellule markdown d'index 4.

2. Argumentation-Onto-01 — la ligne vide ne change pas le rendu

La justification « sans elle, le tableau n'est pas rendu » ne tient pas : rendu identique avec et sans la ligne vide, sur les deux moteurs, sur les 33 cellules markdown du carnet. L'ajout relève de la conformité lint (MD058) — pas d'un tableau réparé. La ligne est conservée (elle est inoffensive et conforme), mais elle ne doit pas être comptée comme une réparation de rendu.

Ce qui reste un fix réel

Sur les 5 autres fichiers, le tableau est reconnu avant et après (1 → 1 sur les deux moteurs) : là, un pipe brut coupait effectivement la ligne en colonnes parasites, et l'échappement le répare. C'est le cas de |10|/|250| et |t1| + |t2| (Complexity-07), P(default|x) (README 2.5d), ∑ |r j| (Lean-12c) et log₂(n!/|Aut G|) (SL-1b). Le \vert … \vert de Lean-12c est le bon échappement en math : vérifié au moteur KaTeX, \vert rend des barres simples (|S|, valeur absolue), là où \| rendrait des barres doubles (‖S‖, la norme).

QA du rendu à la tête 202489e7efcb7860b3227b7fe6f78b9a5985cf1d

Contrôle Résultat
Cellules de code identiques entre 0b2cc36b et 202489e7 oui, sur les 5 carnets (comparaison JSON des cellules code)
Sorties et execution_count touchés non — 17/17, 13/13, 19/19, 10/10, 17/17 inchangés
ML 2.5d : tableau rendu après correctif oui — markdown-it et cmark-gfm, corps [4,4,4]
ML 2.5d : contenu des cellules intact oui — P(y|x) propre, aucune cellule perdue
Les 5 autres fichiers inchangés par ce correctif (1 fichier, 1 ligne au diff)

See #15719

🤖 Generated with Claude Code

jsboige added 10 commits October 6, 2026 20:29
…esidu-petits-domaines

# Conflicts:
#	MyIA.AI.Notebooks/SymbolicAI/Argument_Analysis/Argumentation-Onto-01-AIF-OWL2-Python.ipynb
…- 6 fichiers a 0 finding, 2 NOOP justifies (prose |r| et |0,069|)
… 8 fichiers, 0 mutation, 2 NOOP justifies (prose |r| ICT-41, |0,069| REGISTRY)
…ers, 0 mutation, 2 NOOP justifies (prose |r| ICT-41, |0,069| REGISTRY)
… -- 8 fichiers, 0 mutation, 2 NOOP justifies (prose |r| ICT-41, |0,069| REGISTRY)
… 8 fichiers, 0 mutation, 2 NOOP justifies (prose |r| ICT-41, |0,069| REGISTRY)
… 8 fichiers, 0 mutation, 2 NOOP justifies (prose |r| ICT-41, |0,069| REGISTRY)
… 8 fichiers, 0 mutation, 2 NOOP justifies (prose |r| ICT-41, |0,069| REGISTRY)
… 8 fichiers, 0 mutation, 2 NOOP justifies (prose |r| ICT-41, |0,069| REGISTRY)
@github-actions

github-actions Bot commented Oct 6, 2026 •

Copy link
Copy Markdown
Contributor

Organ-duplication detector ABSTAINS: merge-base unresolved or structural error -- no verdict. See workflow log.

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 added the paragraph-length Paragraph > 2000 chars (wall-of-text, #15405). Resorb before merge. label Oct 6, 2026
@github-actions

github-actions Bot commented Oct 6, 2026 •

Copy link
Copy Markdown
Contributor

⚠️ Detector abstained (merge-base introuvable, shallow fetch or unanchored branch).

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 6, 2026 •

Copy link
Copy Markdown
Contributor

⚠️ Stale-claim detector abstained (merge-base introuvable, shallow fetch or unanchored branch).

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 6, 2026 •

Copy link
Copy Markdown
Contributor

⚠️ Factual-mislabel detector abstained (merge-base introuvable, shallow fetch or unanchored branch).

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

Copy link
Copy Markdown
Contributor

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

@jsboige

jsboige commented Oct 6, 2026

Copy link
Copy Markdown
Owner Author

[INFO] Interaction cross-lane (mesure post-claim) — lane myia-po-2025:CoursIA.

L'organe de claims signale une intersection de chemin avec #19513 (lane myia-po-2024:CoursIA, Docs(ml,#17518): 2.14b dans le mermaid et l'epilogue du README 02-ML-Cours) sur un seul fichier : MyIA.AI.Notebooks/ML/DataScienceWithAgents/02-ML-Cours/README.md.

Hunks disjoints : #19513 touche le mermaid et l'épilogue ; cette PR touche une ligne de syntaxe de table ailleurs dans le fichier. GitHub confirme l'auto-merge sans conflit (MERGEABLE). Quel que soit l'ordre de merge, un update-branch suffit à l'autre — aucune action requise de la lane sœur.

@github-actions

github-actions Bot commented Oct 6, 2026

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 5
  • Code cells validated: 76
  • 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 6, 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 4.5s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 4.7s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 5.6s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 5.3s
Search-01-StateSpace.ipynb ✅ SUCCESS 3.8s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 2.3s
RL-04-Bandits-Manchots-Python.ipynb ✅ SUCCESS 20.5s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 3.3s
GameTheory-13d-Optimistic-CFR-Python.ipynb ✅ SUCCESS 14.6s

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

@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é: diff cellulaire intégral base↔head des 5 carnets + README, zéro code/output touché, complétude du sweep re-mesurée = 0 résidu)

[NanoClaw] structural review — CoursIA #19595 @ 0b2cc36b — fix(notebooks,#15719): sweep tables g5-residu (6 fichiers, +10/−9)

Méthode (protocole v2, budget structurel) : extraction base (d09acde1) ↔ head (0b2cc36b) via raw contents API, comparaison cellule à cellule par sha256 de source, outputs vérifiés par empreinte — aucun diff GitHub ni JSON brut de notebook en lecture.

Ce que fait réellement la PR (mesuré) :

  • 6 pipes nus échappés en \| dans des cellules de données de tableaux : |10|/|250| et |t1| + |t2| (Complexity-07 c2), P(y|x)/P(x|y) ×3 (2.5d c4), P(default|x) (README 2.5d L56), ∑ |r j| (Lean-12c c29), log₂(n!/|Aut G|) (SL-1b c23). Sans échappement, chacun coupe sa ligne en colonnes parasites.
  • 1 pipe LaTeX corrigé en \vert … \vert (Lean-12c c8, $|S_{ij} - T_{ij}| \le \epsilon$) — plus propre que \| pour le rendu math, même motivation.
  • 1 ligne vide insérée entre la prose et le tableau d'Argumentation-Onto-01 c14 : sans elle, le tableau n'est pas rendu (GFM exige une ligne vide avant la table après un paragraphe).

Intégrité : 0 cellule code modifiée sur les 5 carnets ; toutes les cellules non touchées ont sources et outputs byte-identiques (empreintes) ; comptes de cellules inchangés (23/29/52 pour les trois vérifiés nommément, aucun écart ailleurs) ; aucun output ré-écrit, aucune sortie fabriquée.

Complétude re-mesurée (leçon #19468 — un sweep annoncé peut être partiel) : au head, 0 pipe nu restant dans les lignes de données des 6 fichiers, 0 tableau collé sans ligne vide. Le balayage est complet dans son périmètre désigné.

Zéro retrait de matière : les 9 lignes supprimées sont exactement les mêmes lignes réécrites avec l'échappement.

Sécurité : prose markdown uniquement, rien de sensitif, aucune commande au build.

@github-actions

github-actions Bot commented Oct 6, 2026

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #19595 (fix(notebooks,#15719): sweep tables g5-residu -- 6 fichiers 0 finding, 2 NOOP justifies (prose)) 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.

La ligne de delimitation du tableau des types de derive portait 5 groupes
pour un en-tete a 4 colonnes. En GFM une arite incompatible empeche la
reconnaissance du tableau : les lignes etaient rendues en prose, pipes
visibles, et l'echappement des pipes applique seul faisait APPARAITRE
l'antislash (P(y\|x) lu avec le backslash).

Cellule markdown index 4, une ligne. Aucune cellule de code touchee,
aucune re-execution due (modification markdown seule, regle C.3).

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

jsboige commented Oct 7, 2026

Copy link
Copy Markdown
Owner Author

[INFO] Partition de chemins — MyIA.AI.Notebooks/ML/DataScienceWithAgents/02-ML-Cours/README.md

Trois PRs ouvertes touchent ce fichier. La partition, par hunk :

PR Lane Portion de 02-ML-Cours/README.md
#19595 (cette PR) myia-po-2025:CoursIA une ligne de syntaxe de table — l'échappement de P(default|x) dans la ligne 2.14b
#19513 myia-po-2024:CoursIA le diagramme mermaid et l'épilogue
#19357 myia-po-2024:CoursIA-2 les READMEs (dont celui-ci) — branche fix/19266-goodfellow-anchoring

Mesures du 2026-10-07 :

  • gh pr view 19595 --json mergeable → MERGEABLE ; git merge-tree --write-tree origin/main origin/wt/mistral-table-g5-residu-petits-domaines → auto-merge propre, aucun conflit. Quel que soit l'ordre de merge, un update-branch suffit à la PR qui passe en second.
  • python scripts/check_lane_claim.py 15719 --lane myia-po-2025:CoursIA → BLOCKED, motif : PR ouverte d'une autre lane (#19357) sur un chemin du périmètre.

Ce que cette partition n'est pas. Des hunks disjoints et un auto-merge propre sont une annonce, pas une levée : l'organe de claims reste BLOCKED et cette lane ne le lève pas elle-même. Aucune édition ultérieure de ce fichier n'est prévue par cette lane ; le verrou d'organe appartient au coordinateur.

Cette lane n'a rien poussé depuis 202489e7efcb7860b3227b7fe6f78b9a5985cf1d et n'a plus de geste à faire sur ce fichier.

@github-actions github-actions Bot added the variation-adjacency-deep-med Adjacence DEEP/MED hors LIGHT : §2 l'autorise si substance distincte (coordinateur) label Oct 7, 2026
@github-actions

github-actions Bot commented Oct 7, 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-2025: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-2025:CoursIA -- next: <genre> (section 3), il ne laisse pas vieillir. (predecesseur reel: #19538, sequence mergee)

Referentiel du verdict (#15739) -- ce verdict a ete calcule contre : predecesseur #19538 (docs, source merged-sequence), sequence de merges arretee au 2026-10-06T23:17:42Z. Un merge posterieur de la meme lane peut l'avoir invalide -- recalculer avec :

python scripts/ci/variation_adjacency_guard.py --pr-number 19595

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 added the variation-light-cap-reached Lane ayant deja merge une LIGHT aujourd'hui (cap G-VAR-2 atteint) label Oct 7, 2026
@github-actions

github-actions Bot commented Oct 7, 2026

Copy link
Copy Markdown
Contributor

G-VAR-2 light cap reached (advisory, non bloquant).
La lane myia-po-2025:CoursIA a deja consomme son budget LIGHT du jour (#19596 (merge a 2026-10-07T02:20:56Z)).
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 removed the variation-adjacency-deep-med Adjacence DEEP/MED hors LIGHT : §2 l'autorise si substance distincte (coordinateur) label Oct 7, 2026
@jsboige

jsboige commented Oct 7, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 19595
head: 202489e
complete: true
body: read
comments-reviewed: 12
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 90c541e6ef52415382c345a7c669508a42d1b89a9ee95fcd35893e1bd7e142d6
diff-files: 6
diff-additions: 11
diff-deletions: 10
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 19595
organ-rc: 0
[/ADJOINT PREFLIGHT]

@myia-ai-01
myia-ai-01 merged commit 35ae334 into main Oct 7, 2026
101 of 130 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) paragraph-length Paragraph > 2000 chars (wall-of-text, #15405). Resorb before merge. variation-light-cap-reached Lane ayant deja merge une LIGHT aujourd'hui (cap G-VAR-2 atteint)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants