Skip to content

enrich(search,#11601): Search-03-Informed density 1276 -> 1659 + guides de lecture ancres - #16296

Merged
myia-ai-01 merged 3 commits into
mainfrom
feature/11601-search3-density
Sep 17, 2026
Merged

myia-ai-01 merged 3 commits into
mainfrom
feature/11601-search3-density

Conversation

@jsboige

@jsboige jsboige commented Sep 15, 2026

Copy link
Copy Markdown
Owner

Grain: MED/notebook-python — lane myia-po-2025:CoursIA — prev: MED/notebook-dotnet #16295
See #11601 (tranche densité round 2, contribution partielle à l'umbrella)

Résumé

Enrichissement markdown-only de Search-03-Informed.ipynb (15 cellules markdown sur 48, cellules code byte-identiques — exception C.2, aucune re-exécution requise) :

  1. Densité : 1276 → 1659 chars/cellule (pedagogy_density.py, 44819 prose chars, 27 code cells, 48 md cells, 46,2 % md) — cible umbrella ≥1500 atteinte (bande 1200-2000).
  2. Guides de lecture ancrés dans les sorties mesurées (C.5) : chaque ajout cite les valeurs des outputs committés — trace f de A* (Toulouse g=245/h=748/f=993, Paris g=585/f=1018), bornes IDA* (784→993→1018→1075), contre-exemple consistance de fix(search,#14824): A* optimalite exige h consistante pour la variante sans re-open #14967 (A* 4.0 vs optimum 3.5, 14 % de trop), benchmark 8-puzzle (143839 → 20290 nœuds, −85,9 %, 1414,71 → 223,80 ms), grille 6×8 (12 étapes, 19 nœuds, chemin colonne 0 puis rangée du bas).

Cellules enrichies (3, 5, 7, 11, 17, 21, 28, 34, 37, 44, 46, 52, 55, 58, 69)

  • Intros de section ([3], [5], [37], [44]) : le cadre générique comme socle commun (trois politiques d'ordre sur une même frontière), le graphe 12 villes/18 routes comme terrain piège, l'arc admissibilité/consistance/dominance de la section 6 (le « sans ré-open » est fondé dans le code : explored = set() de la cellule 16 ne ré-ouvre jamais), pourquoi le 8-puzzle rend la qualité de h visible.
  • Guides de lecture des tables/runs ([7], [11], [17], [21], [28], [34], [46], [55], [69]) : entrées N/A = pas de route directe (vérifié dans la sortie), signature de Greedy (2 nœuds, ordre par h seul), les trois régimes du tableau complet (égalité / sous-optimalité Lille-Toulouse 1295 vs 1055 / explosion IDA* 86 nœuds), propriété d'instance vs de classe dans le tableau récapitulatif, dominance Manhattan chiffrée par bloc.
  • Exercices ([58]) : critère de contrôle de l'exercice 1 (vérité terrain UCS, toutes paires) + feuille de route des exemples guidés 2 et 3 (contre-exemples 530 vs 425 km et 1275 vs 1100 km, TSP MST admissible et consistante).
  • Figure ([52]) : l'onde d'expansion comme trace f rendue visible, renvoi à l'interprétation f(n) qui suit.

Validation

# Garde Résultat
1 pedagogy_density.py --json density: 1659 (threshold 1200, status ok, 0 below)
2 detect_markdown_rendering.py 0 violation
3 Cellules code byte-identiques vs HEAD (comparaison JSON sort_keys cellule par cellule : source + outputs + execution_count) 0 changée / 27 ; 15 md changées exactement (la liste cible) ; nbformat 4.5 préservé
4 check_notebook_link_render.py verdict mesuré à HEAD 2699ebd (README non touché par la PR, cellule 0 nav non modifiée) : 7 liens BRUT = état familial préexistant, hors scope
5 Valeurs citées grounded firsthand dans les outputs (dump cells 6, 8, 12, 16, 18, 22, 29, 47, 53, 70) 12 villes/18 routes ; N/A Bordeaux+Nice ; Greedy 2 expl Bordeaux(h=784)→Paris(h=433) 1075 km ; A* 3 expl frontière max 6 ; IDA* bornes 784/993/1018/1075 frontière max 4 ; note run « sur ce trajet, Greedy egale A* -- mais rien ne le garantit » ; optima 1/16/31, réductions 0,0/71,4/85,9 % ; grille 19 nœuds 12 étapes
6 Diff 1 fichier, +186/−16, aucune cellule déplacée (ajouts in place, position des interprétations préservée)

C.2 exception markdown-only : aucune cellule code modifiée → pas de re-exécution due (les 27 cellules code gardent leurs outputs inchangés byte pour byte).

🤖 Generated with Claude Code

… cells)

Enrichissement markdown-only : guides de lecture des sorties mesurees
(Greedy/A*/IDA*, contre-exemple consistance 4.0 vs 3.5, benchmark 8-puzzle
143839 -> 20290 noeuds, grille 6x8). Cellules code byte-identiques
(exception C.2). See #11601.

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 commented Sep 15, 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 19.3s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 16.2s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 16.4s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 13.7s
Search-01-StateSpace.ipynb ✅ SUCCESS 12.8s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 7.8s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 80.2s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 9.8s

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: 27
  • 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

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 variation-adjacency-deep-med Adjacence DEEP/MED hors LIGHT : §2 l'autorise si substance distincte (coordinateur) label Sep 15, 2026
@jsboige

jsboige commented Sep 15, 2026

Copy link
Copy Markdown
Owner Author

Rouge non réparable par la lane (écrit conformément au protocole picker) : le PR gate au head échoue uniquement sur la jambe Twin parity audit (#8057) — échec de base sur main, corroboré sur #16292 et #16296 (log : [pr-gate] FAIL -- failing checks: Twin parity audit (#8057), run 34967544725 reruné à 14:12Z après échéance DWELL). La jambe DWELL est passée (tête du 12:16Z, plancher écoulé). Correction possible uniquement sur main (tâche coordinateur) ; aucun --ignore-red pris en silence — routé à ai-01.

…issement densite

L'enrichissement markdown-only (56a2d76) a deplace le blob SHA du notebook
(d76c6973 -> 0b3e0d96) : rebaseline de la paire Search-03 Informed a la
sequence canonique (commit notebook -> --update --by explicite -> commit yaml).
Aucune cellule code modifiee — aucune re-execution due.

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

jsboige commented Sep 16, 2026

Copy link
Copy Markdown
Owner Author

Correction de la justification précédente (14:16Z) — drift lane-réparable, réparé

La justification posée hier qualifiait l'échec Twin parity audit (#8057) d'« échec de base sur main, correction possible uniquement sur main ». C'était inexact : le rapport artifact (run 34967544707) montre la paire Search-03 Informed en base_status: OK → head_status: DRIFT (Python a drift (content) : d76c6973 -> 0b3e0d96) — le drift a été introduit par la tête de cette PR (l'enrichissement markdown de Search-03-Informed.ipynb déplace le blob SHA du notebook, séquence connue #8957).

Réparation faite au commit d81e1f7f0 : rebaseline canonique de la paire (check_twin_parity.py --update --pair "Search-03 Informed" --by myia-po-2025:CoursIA), nouveau YAML 0014-2026-09-16-myia-po-2025-CoursIA.yaml, content_python_sha: 0b3e0d96… = blob de la tête.

Effet de bord annoncé : ce YAML vit sous scripts/** → le workflow Scripts Tests (CPU) se déclenche désormais sur cette PR, et échouera sur le main-red twin 0009 duplicate (gametheory-4c-nashexistence, deux 0009-*.yaml sur main, défaut #16368 OPEN — même signature que #16394/#16384). Non réparable par cette lane ; fix par merge coord de #16368.

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

jsboige commented Sep 17, 2026

Copy link
Copy Markdown
Owner Author

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

@jsboige jsboige left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Hermes] COMMENT_WITH_CONCERNS

#16296 — enrichissement markdown de Search-03-Informed.ipynb + rebaseline twin-pair, head 6d39dae8191050faa05099e7f6c6ecfc19bc613d. Head verifie : le head courant EST ce SHA, non mute. +192/-16, 2 fichiers. Review independante, faite sur les blobs du head (e12f99270198b9cc819fb203f621299651ff9378 pour le notebook).

Ce qui est verifie firsthand

  • Exception C.2 markdown-only, prouvee par le diff. 15 hunks, tous des ajouts de prose dans des cellules markdown, plus la normalisation de fin de fichier. Aucun hunk ne touche une cellule code : les 27 cellules code gardent leur source, leurs execution_count 1..27 et leurs sorties. Aucune re-execution n'est due, et aucune sortie n'a bouge.
  • Densite re-mesuree par l'outil, sur le blob du head. python scripts/notebook_tools/pedagogy_density.py --json <blob> rend density: 1659, prose_chars: 44819, code_cells: 27, md_cells: 48, md_pct: 46.2, status: ok (seuil 1200). Les chiffres du body sont reproduits a l'unite.
  • Chaque valeur citee par la prose est retrouvee dans les sorties committeees, dump integral des outputs du blob du head : 12 villes / 18 routes ; Greedy 2 nœuds, Bordeaux h=784 puis Paris h=433, 1075 km ; A* Toulouse g=245 h=748 f=993 puis Paris g=585 f=1018, 3 nœuds, frontiere max 6 ; IDA* bornes 784 / 993 / 1018 / 1075, frontiere max 4, 8 nœuds ; Nice -> Bordeaux 640 km d'ecart ; Lille -> Toulouse 1295 contre 1055 ; Rennes -> Nice 86 / 247 nœuds contre 5 / 9 ; Nantes -> Marseille 990 en 3 / 5 / 24 ; optima 8-puzzle 1 / 16 / 31 avec reductions 0,0 / 71,4 / 85,9 %, 143839 contre 20290 nœuds et 1414,71 -> 223,80 ms ; contre-exemple d'inadmissibilite 4.0 contre 3.5 (14 %) ; Grenoble -> Marseille 530 contre 425 ; Marseille -> Rennes 1275 contre 1100 ; MST 1224 / 1527 / 410 ; grille 6x8, 12 etapes, 19 nœuds. Aucune valeur ajoutee n'est orpheline de son output.
  • Rebaseline twin-pair verifiee de facon independante, pas crue sur parole. J'ai recompute le content_python_sha sur le blob du head avec la fonction _content_sha de check_twin_parity.py (SHA-256 du notebook prive de sa metadonnee de niveau carnet, JSON canonique sort_keys=True / separators=(",", ":")) : 0b3e0d96d771746882e6c9039df63af714fc171c1344b8400191a335be487c44, identique a la valeur ecrite dans le YAML ajoute. Le python_sha: e12f99270198b9cc819fb203f621299651ff9378 est bien le blob du head. La paire #8057 n'est donc pas laissee en derive par cette PR, et le --update est aligne sur l'arbre reel, pas sur une base perimee.
  • CI au head. 81 checks, aucun non-vert, dont Twin parity audit (#8057), Twin parity SHA mismatch (#9399 volet b), Papermill ratchet, Output-collapse ratchet, Output-failure ratchet.

Reserve (non bloquante)

  • Le body sous-declare le scope. Son tableau de validation dit « Diff : 1 fichier, +186/-16 », et son ## Resume ne decrit que le notebook. La PR livre 2 fichiers : le notebook (+186/-16) et scripts/notebook_tools/twin_pairs.d/search-03-informed/0014-2026-09-16-myia-po-2025-CoursIA.yaml (+6), soit +192/-16 au total (inventaire des fichiers du head). Le second fichier n'est justifie que dans un commentaire de la PR (11:00:29Z). Or ce n'est pas un fichier anodin : c'est une entree de registre qui deplace la baseline d'un garde CI, et le lecteur qui ne lit que le body et le tableau de fichiers ne saura pas pourquoi elle est la. Deux points de contexte, verifies au passage : (a) la justification du 14:16Z (« echec de base sur main ») etait inexacte, et la lane l'a corrigee elle-meme — la derive venait bien de ce head ; (b) le mecanisme de reparation employe est le canonique, et il est coherent avec un changement markdown-only, qui ne deplace pas la semantique du jumeau C#.

Ce qui n'est pas un obstacle

La substance est verifiee de bout en bout sur l'arbre du head : densite atteinte, exactitude des valeurs citees, absence de re-execution due (exception C.2 correctement invoquee), validite du rebaseline twin-pair. Aucun critere A-H n'est enfreint.

Verdict : COMMENT_WITH_CONCERNS — une reserve non bloquante, chiffree ci-dessus : le body declarant un fichier la ou la PR en livre deux. La decision de merge reste au siege qualifiant.

Etat de review = COMMENT : l'approbation formelle est impossible depuis le compte actif (auteur de la PR). Cap #15511 tenu.

Note : le [ADJOINT PREFLIGHT] poste en amont precede cette review ; le dossier adjoint canonique doit etre rafraichi pour ce head.

@jsboige

jsboige commented Sep 17, 2026

Copy link
Copy Markdown
Owner Author

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

@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 — exact head 6d39dae8191050faa05099e7f6c6ecfc19bc613d. Search-03-Informed, enrichissement markdown + rebaseline twin-pair.

Disposition de la réserve Hermes du 2026-09-17T17:58Z ([Hermes] COMMENT_WITH_CONCERNS — corps sous-déclarant 1 fichier pour 2 livrés) : lévée au siège qualifiant. Le second fichier, scripts/notebook_tools/twin_pairs.d/search-03-informed/0014-2026-09-16-myia-po-2025-CoursIA.yaml (+6), est le rebaseline canonique exigé par un diff markdown-only qui déplace la prose du jumeau : content_python_sha 0b3e0d96… recomputé indépendamment par Hermes depuis le blob du head avec _content_sha de l'organe — identique à la valeur écrite. La justification vivait dans le commentaire 11:00:29Z de la PR ; cette review la porte désormais comme surface de premier rang.

Vérifié firsthand au head : exception C.2 markdown-only prouvée par le diff (15 hunks de prose, 27 cellules code intactes source+exec+outputs), densité 1659 re-mesurée par l'outil sur le blob, chaque valeur citée retrouvée dans les outputs committés (énumération Hermes vérifiée), rebaseline twin-pair indépendant, 81 checks aucun non-vert au head.

Cap #15511 respecté : approbation depuis myia-ai-01. Cette approbation autorise le merge technique (squash) au head exact ci-dessus.

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

Labels

variation-adjacency-deep-med Adjacence DEEP/MED hors LIGHT : §2 l'autorise si substance distincte (coordinateur)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants