Skip to content

Add: lectures ancrees SymbolicAI g85 — capstone 954->1314, Z3-18-Sudoku-Modes 1172->1502 - #17235

Closed
jsboige wants to merge 1 commit into
mainfrom
wt/vibe-g85-symbolicai-1
Closed

jsboige wants to merge 1 commit into
mainfrom
wt/vibe-g85-symbolicai-1

Conversation

@jsboige

@jsboige jsboige commented Sep 21, 2026

Copy link
Copy Markdown
Owner

Grain: MED/notebook-python — lane myia-po-2025:CoursIA — prev: MED/notebook-dotnet #17227

Objet

Relever les deux carnets de la fournée g85-symbolicai-1 au-dessus du seuil de densité pédagogique (1200 caractères de prose par cellule de code), en ancrant chaque lecture sur une sortie déjà committée — sans ré-exécution, sans cellule de remplissage. La règle 2 durcie de #13410 est appliquée à la lettre : une sortie de cellule a UNE cellule de lecture ; on ajoute une lecture seulement là où il n'y en a pas, on RÉÉCRIT celle qui existe.

Carnet Avant Après Δ prose Cellules Code
Argument_Analysis_Agentic-4-capstone.ipynb 954 1314 +5040 29 → 32 14 (inchangées)
Z3-18-Sudoku-Modes-Python.ipynb 1172 1502 +2305 19 → 21 7 (inchangées)

python scripts/notebook_tools/pedagogy_density.py <les deux> → Below 1200 c/cell: 0 · All judged notebooks meet the density floor.

Substitution à déclarer : le dispatch nommait Z3-Python-18-Sudoku-Modes.ipynb, qui n'existe pas dans l'arbre. Le fichier réel est Z3-18-Sudoku-Modes-Python.ipynb (suffixe de kernel canonique) : c'est celui-ci qui est traité, et c'est bien la cible visée.

Classification des gestes (règle 2 de #13410)

python scripts/notebook_tools/check_split_reading_cells.py <chaque carnet> → clean sur les deux, avant et après édition : aucune lecture orpheline, aucun doublon de lecture. Le champ était donc libre pour des NOUVELLE, et j'ai vérifié cellule par cellule lesquelles portaient déjà une lecture.

NOUVELLES (5) — la sortie n'avait aucune lecture

Carnet Cellule Ce que la lecture ajoute
capstone après [3] (sortie « 7 phrases : S1…S7 ») la cellule suivante est un titre de section, pas une lecture. Les indices S1..S7 imprimés ici sont le sentence_index (base 0) qui sert de système de coordonnées à toutes les méthodes et à la convergence ; et S5 (« le reglement n est pas si urgent ») s'oppose frontalement à S6 (« la catastrophe est certaine »)
capstone après [14] (smoke test des value-gates) la cellule n'annonce que l'échec de VG-2 ; la lecture relève que VG-3 échoue aussi, en silence, et pourquoi — la chaîne de démonstration cite deux artefacts mais ne porte aucun des quatre titres requis, c'est le conjonct de sections qui cède, pas la densité de citations ; et que VG-4 passe avec un seul paragraphe
capstone après [27] (pont vers l'état partagé) le rapport entre les deux 5 : l'état ne porte pas les 13 détections mais exactement les 5 de M1 (un sophisme par finding de m1_results) ; M2 et M3 ne créent aucun sophisme ; la force de convergence n'entre que comme texte dans la justification, omise quand elle vaut 1
Z3 après [5] (mode Constants) le titre ## 3. précède la cellule et ne lit pas sa sortie. La lecture vérifie les quatre givens contre la grille imprimée ((0,0)=1 en tête de [1, 3, 4, 2], (1,3)=3 en fin de [4, 2, 1, 3], (2,2)=2, (3,1)=4) et lit les quatre colonnes
Z3 après [7] (mode Array) s_const et s_arr sont deux Solver() indépendants : l'égalité mesurée plus loin compare deux résolutions distinctes, pas deux lectures du même modèle. Et grid n'est contraint que sur les indices 0..15 (aucun Store) — écart avec Constants qui deviendrait visible sur un indice arbitraire

RÉÉCRITES (5) — une lecture existait, elle est remplacée

Carnet Cellule Ce qu'elle disait → ce que la réécriture ajoute
capstone [9] 1b0c6e85 (328 → 1117) « chaque méthode regarde sous un angle différent… aucune n'est exhaustive » → chiffre l'asymétrie (M1 = 5, M2 = 3, M3 = 5, soit 13 détections pour 7 phrases), nomme S6 comme la seule phrase où les trois convergent, S1 (M2 seule) et S4 (M1 seule, un ad_hominem) comme détections non corroborées, et constate que M3 ne détecte jamais seule
capstone [12] 346aba37 (536 → 967) citait « la force maximale 3 » en général → donne la distribution : sur 5 verdicts, un seul atteint 3 (S6, la phrase de l'appel à la peur), les quatre autres plafonnent à 2 et associent M1 + M3 ou M2 + M3
capstone [19] f068425e (1051 → 1598) décrivait les quatre gates → ajoute l'isolement du témoin : la baseline porte bien les quatre titres requis, donc le test de structure de VG-3 la laisserait passer ; c'est son conjonct de citations (0) qui la classe boilerplate. VG-3 ne détecte donc pas « sections manquantes » mais « la forme sans la traçabilité »
Z3 [3] 3d797c4f (794 → 926) correction factuelle — voir ci-dessous
Z3 [10] c0cd9a69 (1202 → 1490) s'ouvrait sur un hedge (« ou sont toutes deux valides si plusieurs solutions existent ») → cite les trois True mesurés et l'égalité entre deux solveurs indépendants, et borne explicitement la portée du résultat : le carnet n'établit pas l'unicité de la solution

Une prose fausse corrigée (Z3, section 2)

La section 2 annonçait :

La grille suivante a trois givens ; le solveur doit compléter le reste.

Le dictionnaire GIVENS en porte quatre — (0,0)=1, (1,3)=3, (2,2)=2, (3,1)=4 — et la grille ASCII affichée juste au-dessus en montre quatre. Une troisième source corrobore le compte sans ambiguïté : l'exercice 1 du même carnet demande d'en « ajouter un 5e ». La phrase est corrigée et nomme les quatre positions.

C'est le même genre de défaut que celui relevé sur Search-07 au cycle précédent (un nombre de prose contredit par le code) — sauf qu'ici le code et un exercice concordent, donc la prose est seule en tort.

Preuves

  • Diff : 2 fichiers, +83 / −6 (git diff --numstat) — capstone +53 / −3 (3 insertions de cellule, 3 sources réécrites), Z3 +30 / −3 (2 insertions, 2 réécritures). Ce sont des lignes de JSON ; les cellules de code n'en portent aucune.
  • Byte-identité (contrôle indépendant contre HEAD, pas seulement l'assertion du script) : cellules de code 14 → 14 et 7 → 7, byte-identiques ; sorties 14 → 14 et 7 → 7 ; execution_count [1..14] et [1..7] inchangés ; metadata notebook et nbformat 4.5 inchangés.
  • Markdown : 3 nouvelles + 3 réécrites + 0 supprimée (capstone), 2 + 2 + 0 (Z3).
  • source en forme liste sur toutes les cellules, str uniquement, aucun id manquant ni dupliqué (les 5 cellules neuves reçoivent un id déterministe ; les deux carnets sont en nbformat 4.5, où l'id est requis).
  • check_split_reading_cells.py : clean sur les deux carnets (avant et après).
  • detect_solution_leaks.py --scan : 0 HIGH (leaks), 0 MEDIUM (duplicates), 0 errors sur les deux. Aucune cellule d'exercice n'est narrée : les trois blocs ### Exercice N du capstone et les trois du carnet Z3 restent intacts.
  • enrich_quality_ci.py (invocation CI reproduite : --base <fichier base> --head <chemin dans l'arbre>) : rc=0 sur les deux, contrôle positif effectué — la même commande sur une copie où j'injecte 20 x 10 = 2125 rend [ARITH_WRONG] stated '20 x 10 = 2125' is false: 20 x 10 = 200 et rc=1. L'instrument mesure réellement, son silence est une mesure.
  • Aucune ré-exécution : les sorties citées sont celles déjà committées ; la re-sérialisation JSON est byte-fidèle (json.dumps(nb, indent=1) + "\n" == raw vérifié sur les deux fichiers avant édition, donc le diff ne porte aucun bruit de format).

Signalé, non traité ici (sujet séparé)

Le carnet Z3 compare les deux encodages sur un Sudoku 4x4, où les deux modes se résolvent instantanément — la section 5 le dit honnêtement (« verdict honnête Prong-B : la différence de performance est invisible ») et l'exercice 3 propose une comparaison empirique, mais celle-ci se limite au 4x4. Une comparaison discriminante demanderait le 9x9 de l'exercice 2 mesuré dans les deux modes, ce qui sort du périmètre markdown-only de cette fournée. Rien n'est maquillé : le carnet déclare lui-même la limite.

See #13410

🤖 Generated with Claude Code

…ku-Modes 1172->1502

Fournee g85-symbolicai-1, markdown-only, aucune re-execution.

Argument_Analysis_Agentic-4-capstone : 3 lectures NOUVELLES (segmentation des
7 phrases et son role de systeme de coordonnees ; smoke test des value-gates ou
VG-3 echoue sans que la cellule le signale ; pont vers l'etat partage, 5
sophismes pour 5 detections M1) et 3 lectures REECRITES (les trois perspectives
chiffrees 5/3/5 = 13 et l'exclusivite de S4 ; la distribution des forces de
convergence, un seul verdict a 3 ; l'isolement du temoin baseline sur VG-3).

Z3-18-Sudoku-Modes-Python : 2 lectures NOUVELLES (resultat Constants, givens
verifies contre la grille imprimee ; resultat Array, deux solveurs independants
et indices non contraints) et 2 REECRITES, dont la correction d'une prose fausse
— la section 2 annoncait « trois givens » pour un dictionnaire GIVENS de QUATRE
entrees, ce que corrobore l'exercice 1 (« ajouter un 5e given »).

Batterie : pedagogie_density 0 sous le plancher ; check_split_reading_cells
clean ; detect_solution_leaks 0 HIGH / 0 MEDIUM ; cellules de code et sorties
byte-identiques ; enrich_quality_ci rc=0 avec controle positif vivant.

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

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.6s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 4.0s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 4.0s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 3.8s
Search-01-StateSpace.ipynb ✅ SUCCESS 3.2s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 2.1s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 18.1s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 2.7s

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: 2
  • 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)

@myia-ai-01

Copy link
Copy Markdown
Collaborator

Fermée au titre du veto #17040 (campagne de densité #13410 gelée). Face à main, cette PR ajoute des cellules de lecture en solde net. La lane porteuse a mesuré ce solde le 23/09, et ai-01 l'a recoupé sur trois PRs du lot (#17042, #17085, #17235).

Elle avait échappé au filtre du gel parce que ni son titre ni son body ne citent #13410 : c'est un relais g-XX de la campagne.

La branche est conservée, donc la PR peut être rouverte. Une lecture qui apporte une information qu'aucune cellule existante ne porte peut revenir hors campagne, réécrite et placée juste après sa cellule (point 4 de #17040). Les cellules que la PR modifie sans en ajouter peuvent revenir sous la forme d'une PR de correction pure.

@myia-ai-01 myia-ai-01 closed this Sep 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants