Skip to content

fix(genai,#18457): 14b_Paginated_Memory -- promotion MRU visible + facteurs ancres sur les sorties - #18464

Merged
myia-ai-01 merged 1 commit into
mainfrom
fix/18457-pagmem-mru
Sep 30, 2026
Merged

myia-ai-01 merged 1 commit into
mainfrom
fix/18457-pagmem-mru

Conversation

@jsboige

@jsboige jsboige commented Sep 29, 2026

Copy link
Copy Markdown
Owner

Grain: LIGHT/notebook-python -- lane myia-po-2026:CoursIA -- prev: LIGHT/tooling #18458 (self-test replay #16110)

Summary

Deux points reportés sciemment au merge de #18332, traités dans un seul commit (carnet CPU-pur, 14b_Paginated_Memory-Python.ipynb).

1. La démo LRU ne montrait jamais la promotion MRU (c.11/c.12). Le carnet touchait msgs[1], déjà évincé : touch() était un no-op et la sortie ne montrait rien du mécanisme annoncé. La démo touche désormais msgs[2], le LRU courant encore en mémoire :

On touche msgs[2], le LRU courant (encore en memoire) -> il devient MRU.
[user] message #3
[user] message #4
[user] message #2
Insertion de #5 -> le message evince est : message #3
Contenu final (le message touche a survecu a l'eviction) :
[user] message #4
[user] message #2
[user] message #5

Le message touché survit (#2), c'est #3 le LRU qui est évincé. Le cas du no-op sur message évincé reste enseigné, mais correctement étiqueté (« touch() ne ressuscite pas un message sorti »), avec sa sortie.

2. La conclusion citait un facteur absent des sorties (c.17/c.25). La phrase « divisent le coût par un facteur 5 à 20 » n'était ancrée nulle part — la mesure sur 100 tours donnait ×4.4 et ×7.6, sous la borne basse. La cellule de mesure calcule maintenant deux profils (100 et 1000 tours) et la conclusion cite les valeurs mesurées :

  100 tours : non bornee =     606,000 | fenetre =    137,690 (x  4.4) | paging =     80,000 (x  7.6)
 1000 tours : non bornee =  60,060,000 | fenetre =  1,397,690 (x 43.0) | paging =    800,000 (x 75.1)

Le gain croît avec N (cumul O(N²) contre O(N)) — c'est cette croissance, et non une plage assertion, que la conclusion énonce désormais.

Acceptance (#18457)

  • La démo LRU montre une promotion MRU positive, visible dans sa sortie ;
  • aucun facteur de la conclusion n'est absent des sorties committées (5 à 20 : 0 occurrence) ;
  • cellules modifiées ré-exécutées et committées avec leurs sorties (C.2).

Test plan

  • Cellules 11 (démo LRU) et 17 (mesure) ré-exécutées sous kernel python3 ; sorties splicées, execution_count 4 et 6 (numérotation du carnet conservée), 0 erreur ;
  • Les autres cellules de code rejouées pour l'état, sorties inchangées (diff limité aux 5 cellules visées) ;
  • Métadonnées du carnet byte-identiques à main (pas de language_info.version ajouté, pas de métadonnée papermill) ;
  • check_kernel_drift.py origin/main → OK, 0 régression ;
  • Tous les hooks pre-commit sur le fichier → Passed (gitleaks, scrub-papermill, H.3 null-exec, cell-source-parses) ;
  • nbformat.validate OK, aucun chemin machine dans les sorties ;
  • CI verte.

Closes #18457.

🤖 Generated with Claude Code

…cteurs ancres

La demo LRU touchait msgs[1], deja evince : touch() etait un no-op et la
sortie ne montrait jamais la promotion MRU (le carnet annoncait un mecanisme
qu'il ne demontrait pas). La demo touche desormais msgs[2] (LRU courant) :
la sortie montre l'ordre #3/#4/#2 apres touch, puis l'eviction de #3 a
l'insertion de #5 -- le message touche survit. Le no-op sur message evince
reste montre, correctement etiquete.

Le facteur "5 a 20" de la conclusion n'apparaissait dans aucune sortie (la
mesure sur 100 tours donnait x4.4 et x7.6). La cellule de mesure calcule
maintenant deux profils (100 et 1000 tours) : x4.4/x7.6 puis x43.0/x75.1,
et la conclusion cite ces valeurs mesurees.

Cellules 11 et 17 re-executees sous kernel python3 (sorties commitees),
metadonnees du carnet inchangees (pas de language_info.version ajoute).

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

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

Copy link
Copy Markdown
Contributor

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

@github-actions

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 1
  • Code cells validated: 9
  • 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

Golden-Set Execution (H.7 P3)

✅ 8/8 notebooks passed (certified reproducible)

Notebook Status Time
2.1-Workflow-ML.ipynb ✅ SUCCESS 7.1s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 4.8s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 5.9s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 5.4s
Search-01-StateSpace.ipynb ✅ SUCCESS 3.9s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 2.5s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 31.6s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 11.3s

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

@github-actions

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-09-29) :

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.

@jsboige

jsboige commented Sep 29, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 18464
head: 762b0d6
complete: true
body: read
comments-reviewed: 6
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 5332ccda6249472dcfdde1447e23221396fb3a24175884d81f1340b23fa6449d
diff-files: 1
diff-additions: 88
diff-deletions: 69
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.

Relu à la tête 762b0d6ae1, une fois le dossier READY en main :

  • Les 9 cellules de code sont exécutées (execution_count 1 à 9), sans aucune sortie d'erreur.
  • La démo LRU (cellule de code 11) montre bien la promotion : #3 / #4 / #2 après le touch, puis #3 évincé à l'insertion de #5. La lecture qui suit décrit exactement cette sortie, y compris le cas du touch sans effet sur un message déjà évincé.
  • Les quatre facteurs de la conclusion (4.4, 43.0, 7.6, 75.1) figurent dans la sortie committée de la cellule de mesure (100 et 1000 tours).
  • L'avis prose/sortie sur la conclusion est un faux positif de fenêtre : le détecteur ne remonte que trois cellules de code, alors que la mesure en est à huit.

Approuvé.

@myia-ai-01
myia-ai-01 merged commit 2402875 into main Sep 30, 2026
91 of 92 checks passed
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.

[GenAI] 14b_Paginated_Memory : montrer la promotion MRU et ancrer le facteur de gain (suivi #18332)

2 participants