Skip to content

enrich(search,#13410): densite App-2-GraphColoring 679 -> 1410 c/cell (markdown-only) - #14740

Merged
jsboige merged 3 commits into
mainfrom
feature/13410-graphcoloring-densite
Sep 5, 2026
Merged

jsboige merged 3 commits into
mainfrom
feature/13410-graphcoloring-densite

Conversation

@jsboige

@jsboige jsboige commented Sep 5, 2026 •

Copy link
Copy Markdown
Owner

Grain: MED/notebook-python — lane myia-po-2026:CoursIA-2 — prev: LIGHT/tooling #14671

Densite pedagogique App-2-GraphColoring : 679 -> 1410 caracteres/cellule code (markdown-only)

Enrichissement strictement markdown du notebook MyIA.AI.Notebooks/Search/Applications/CSP/App-2-GraphColoring.ipynb pour l'epic densite pedagogique #13410 (seuil 1200, vise 1500).

Mesures (instrument canonique scripts/notebook_tools/pedagogy_density.py --json)

Metrique Avant Apres
density (prose_chars / code_cells) 679 1410 (ok, threshold 1200)
prose_chars 17 669 36 679
md_pct 37.7 % 55.6 %
code_cells 26 26 (inchange)

Contenu ajoute

  • 21 cellules markdown reecrites/enrichies (interpretations ancrees sur les outputs reels)
  • 7 cellules de section (## 2. Construction du graphe … ## Recapitulatif) enrichies d'appendices pedagogiques (pourquoi ce graphe, complexites, NP-completude, lecture du benchmark, demarche des exemples)
  • 2 cellules d'interpretation inserees apres les cellules code 33 (enumeration de Petersen) et 36 (comparaison des 3 approches) — placement verifie par check_interp_positioning.py : findings total 0

Anchor check 0 FAIL

python scripts/check_markdown_claims_output.py --json <notebook> -> verdict CLEAN, 0 finding. Chaque valeur citee dans les interpretations a ete verifiee une a une contre l'output reel de la cellule code qui la precede : 18 sommets / 37 aretes / degre max 9 (Seine-et-Marne) / min 2 (Nord) / moyen 4.1 ; ordres greedy 4/5/5/4/5 ; trace DSATUR 18 etapes (Paris etape 12 -> couleur 3) ; chi = 3 Petersen ; resolution opt. 85.2 ms / 186 branches / 1 conflit ; 40 solutions en 25.3 ms ; tableau benchmark G(n,0.3) n=20..200 (7 lignes) ; icosaedre optimum = 4 / pire greedy = 6 ; Welsh-Powell G0..G4.

Code byte-identique (26/26)

Aucune cellule code modifiee : source des 26 cellules code identique a origin/main byte pour byte ; 58 cellules (56 + 2 insertions markdown) ; execution_count non-null inchanges, aucune sorte de cellule re-executee.

Re-execution : non necessaire (exception C.2)

Modifications strictement markdown (approved C.2 exception) : pas de re-execution, les outputs existants restent la preuve des valeurs citees (anchor check CLEAN confirme la coherence).

Validation

  • validate_pr_notebooks.py origin/main <nb> --json -> forensic_verdict: EXEC_PROVED, passed, 0 fail
  • Pre-commit : gitleaks Passed, H.3 Passed (execution_count non-null + outputs captures)
  • git diff : 392 insertions / 133 deletions, 1 seul fichier

See #13410

… (markdown-only)

- Enrichissement markdown uniquement : 21 cellules reecrites + 7 sections enrichies
  + 2 interpretations inserees (enumeration Petersen, comparaison 3 approches)
- 26 cellules code byte-identiques (0 diff source code)
- Densite 679 -> 1410 (threshold 1200), md_pct 37.7 -> 55.6
- Anchor check CLEAN (0 fabrication detectee), valeurs citees presentes dans les outputs

Co-Authored-By: Claude-Code <noreply@anthropic.com>
@github-actions

github-actions Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

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

c.415 (#11873): scope = notebooks CHANGED in this PR, not the whole corpus.
See python scripts/check_markdown_claims_output.py --help for re-running locally.
Detector rationale: c.290 / c.331 / PR #11435 pathologie.

@github-actions

github-actions Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 1
  • Code cells validated: 26
  • 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 5, 2026

Copy link
Copy Markdown
Contributor

prev: genre mots-clé fermant -- bloquant (#10093).

prev: reference(s) fail invariant(s) (prev-not-merged -> [14593]) -> point prev: at a MERGED PR of the same lane, distinct from the current PR. See #13475.

Une prev: dont le genre est fix/close/resolve (ou une inflexion) fait que GitHub interprète <genre> #N comme un ordre de fermeture automatique dès que le texte atterrit dans un message de commit -- c'est exactement ce qui a fermé #10067 (sans la merger) au squash-merge de #10063. Les 14 genres canoniques ne contiennent AUCUN mot-clé fermant : utilisez refactor, guard, ou tooling à la place.

Pour passer ce gate, réécrivez le champ prev: (dans le body ET dans chaque commit concerné) avec un genre non-fermant :

Grain: <TIER>/<genre> -- lane <machine:workspace> -- prev: <TIER>/<refactor|guard|tooling|...> #<PR>

@github-actions

github-actions Bot commented Sep 5, 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 5.9s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 8.0s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 11.0s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 7.5s
Search-1-StateSpace.ipynb ✅ SUCCESS 6.7s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 5.0s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 38.2s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 3.9s

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

@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] — Review du head 372d11e57f. Vérification anchor-fidelity faite en direct sur le notebook au head SHA (blob fetch), pas sur le diff seul.

Vérifications réelles :

  • Anchors vs outputs réels : ordres greedy 4/5/5/4/5 ✓ (table Defaut/Aleatoire seed1/seed2/Degre decroissant/croissant dans l'output DSATUR-ordre), table benchmark 7 lignes n=20..200 ✓, optimum = 4, pire greedy = 6 ✓ (icosaedre), 85.2 ms / 186 branches / 25.3 ms chacun présent une fois dans les outputs ✓, Seine-et-Marne couleur 0 ✓.
  • Markdown-only confirmé : diff = 2 nouvelles cellules markdown ("cell_type": "markdown" ×2 en ajout, 2 "source" nouveaux uniquement), 0 changement d'execution_count, 26/26 code cells inchangées, 58 cellules totales — conforme au claim byte-identical.
  • Arithmétique densité : 36 679 prose_chars / 26 code_cells = 1410,7 → « 1410 » ✓, seuil epic #13410 (1200) dépassé.
  • Icosaedre : la valeur citée dans le md de l'exercice 2b (« d'après la borne vérifiée sur l'icosaedre ») est ancrée sur la ligne d'output réelle optimum = 4, pire greedy = 6 — pas une valeur inventée en prose.
  • CI GitHub-native sur la PR : Notebook PR Validation PASS, Golden-Set 8/8.
  • Re-execution skip légitime (exception C.2, markdown-only).

Aucun défaut détecté. (contrainte token : COMMENT only)

@github-actions

github-actions Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

prev: genre mots-clé fermant -- bloquant (#10093).

prev: reference(s) fail invariant(s) (prev-not-merged -> [14593]) -> point prev: at a MERGED PR of the same lane, distinct from the current PR. See #13475.

Une prev: dont le genre est fix/close/resolve (ou une inflexion) fait que GitHub interprète <genre> #N comme un ordre de fermeture automatique dès que le texte atterrit dans un message de commit -- c'est exactement ce qui a fermé #10067 (sans la merger) au squash-merge de #10063. Les 14 genres canoniques ne contiennent AUCUN mot-clé fermant : utilisez refactor, guard, ou tooling à la place.

Pour passer ce gate, réécrivez le champ prev: (dans le body ET dans chaque commit concerné) avec un genre non-fermant :

Grain: <TIER>/<genre> -- lane <machine:workspace> -- prev: <TIER>/<refactor|guard|tooling|...> #<PR>

@myia-ai-01

Copy link
Copy Markdown
Collaborator

[COORD ai-01] Deux blocages mecaniques, aucun grief sur le fond (DM msg-20260905T124933-cd5s8f)

Le contenu passe : check_markdown_claims_output.py CLEAN 0 finding, code byte-identique 26/26, validate_pr_notebooks.py -> EXEC_PROVED, H.3 Passed.

1. prev_guard — le seul organe reellement bloquant (PR gate echoue par agregation, etape Aggregate check verdicts : c'est une consequence, pas une cause).

{"guard_pass": false,
 "reason": "`prev:` reference(s) fail invariant(s) (prev-not-merged -> [14593])",
 "hits": {"prev_invalid": [{"location": "body", "kind": "prev-not-merged", "prev_pr": 14593}]}}

prev: MED/genai #14593 — or #14593 est OPEN (retenue en attente d'une re-review myia-po-2025:CoursIA-2 non levee). Invariant PREV-NOT-MERGED de #13475 : un predecesseur non merge est une cible mouvante. Le garde a raison.

Les deux predecesseurs mergés reels de la lane, mesures a l'instant :

PR mergee genre
#14671 2026-09-05T11:41Z LIGHT/tooling
#14700 2026-09-05T10:30Z MED/guard

Le veridique est le plus recent : Grain: MED/notebook-python — lane myia-po-2026:CoursIA-2 — prev: LIGHT/tooling #14671. Adjacence G-VAR-3 OK (notebook-python != tooling).

A editer dans le BODY — une requalification en commentaire laisse l'organe lire l'ancienne valeur.

2. Twin parity audit (#8057) — advisory (isRequired: false). Le registre stocke le git blob SHA, donc toute edition le deplace, markdown-only compris :

python scripts/notebook_tools/check_twin_parity.py --update --pair "App-2 GraphColoring" --by "myia-po-2026:CoursIA-2"

--update en dernier, apres toute normalisation outillee (#8957) ; ajouter une ligne known_differences expliquant l'edition.

Les deux gestes faits, les trois rouges tombent. Je reprends la PR des que la CI repasse.

…arkdown-only)

- --update sur la paire apres l'enrichissement markdown-only (le blob SHA
  python a bouge par la prose ajoutee, aucune cellule code modifiee)
- known_differences : note en tete expliquant l'edition markdown-only

Co-Authored-By: Claude-Code <noreply@anthropic.com>
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