Skip to content

Fix(notebooks,#22395): 3.9 — retirer les renvois morts 3.9f (absorbés dans 3.9e) - #23646

Merged
myia-ai-01 merged 2 commits into
mainfrom
fix/dsa-39-39f-ref
Oct 31, 2026
Merged

myia-ai-01 merged 2 commits into
mainfrom
fix/dsa-39-39f-ref

Conversation

@jsboige

@jsboige jsboige commented Oct 31, 2026 •

Copy link
Copy Markdown
Owner

Grain: MED/notebook-python — lane myia-po-2024:CoursIA-2 — prev: MED/docs #23385

Part of #13504 · See #22395

Contexte

La consolidation #22395 a resserré la famille « compression » 3.9 de 8 carnets
à 5, en fusionnant 3.9a dans 3.9, 3.9d dans 3.7 et 3.9f dans 3.9e
(#22513, #22530, #22522). Son critère d'acceptance : « plus aucun 3.9a/3.9d/3.9f ».

Le résidu restant dans 3.9-Compression-Quantization-FP.ipynb : deux références
3.9f mortes — l'entrée de navigation vers _archive/3.9f-… et la ligne B.2 du
tableau du panorama. Depuis la fusion #22522, 3.9e porte déjà les deux
techniques (torch.ao.quantization + torch.nn.utils.prune).

Ce que fait la PR

  • Navigation : supprime l'entrée morte [3.9f — Pruning SOTA](…) (3.9e est
    déjà liée juste avant — pas de doublon créé).
  • Tableau du panorama : B.2 | 3.9e / 3.9f → B.2 | 3.9e.

Markdown seul (2 cellules, 2 lignes) — aucune cellule code touchée, pas de
ré-exécution due (C.2), aucune sortie modifiée. Diff : 2 insertions / 2 suppressions.

Corrections apportées à la revue de ce cycle (2026-10-31)

Deux points des gardes de la CI sur cette PR sont traités ci-dessous.

1. Genre du grain : docs → notebook-python. Le diff porte sur un seul
carnet
(3.9-Compression-Quantization-FP.ipynb, kernel coursia-ml-training,
langage python) et sur aucun fichier de documentation : le genre docs
désignait un fichier de prose, pas l'artefact réellement modifié. Le genre est le
type de travail, jamais la famille d'appartenance. Précédent de la flotte sur
le geste identique : #23613 (po-2028, même issue #22395, même famille 3.9,
même nature de correctif — un renvoi périmé dans un carnet) = MED/notebook-python.
Le tier suit ce précédent : MED — le correctif est vérifié par l'organe de
chaîne de navigation (il ne s'agit pas d'un « 0 trouvé ») et il change la
navigabilité livrée. Le champ prev: pointe désormais le prédécesseur réel de
la lane dans la séquence mergée — #23385 (MED/docs, mergé le
2026-10-31T02:51:52Z) — et non plus #23515.

2. Renvoi vers _archive/3.9f-… : cible de navigation perdue, assumée. Le
carnet _archive/3.9f-Compression-Pruning-SOTA.ipynb existe encore dans
_archive/ (archivé, pas supprimé, par la consolidation #22395 / #22522) : ce
n'est donc pas un lien mort au sens du détecteur, c'est un lien volontairement
retiré de la série active
— le critère d'acceptance de #22395 impose que la
série active ne renvoie plus vers 3.9f, et les deux techniques qu'il portait
sont absorbées dans 3.9e, déjà liée juste avant. L'organe
No markdown content loss signale cette cible comme perdue ; la justification
est portée par le marqueur ci-dessous (une ligne par cible perdue).

md-content-loss: navigation assumee -- MyIA.AI.Notebooks/ML/DataScienceWithAgents/03-Deep-Learning/3.9-Compression-Quantization-FP.ipynb target _archive/3.9f-Compression-Pruning-SOTA.ipynb : retrait volontaire du renvoi vers le carnet archive lors de la consolidation #22395 / #22522 ; les techniques qu'il portait sont absorbees dans 3.9e, deja liee juste avant ; le carnet archive reste repertorie dans _archive/README.md.

Résidu restant (porté par d'autres lanes, hors de ce périmètre)

Le même résidu de renumérotation est traité en parallèle ailleurs : 3.9b
(6 réf 3.9a) par po-2028 (#23613), Compression-05 (10 réf) par po-2027
(#23122).

Réserve 3 — re-sourçage du « mapping README » et écart _quarto.yml

Le mapping README n'est pas porté par #23603. Cette PR (#23603, « Bloc A —
statuts faux », mergée le 2026-10-31T00:26:50Z) touche bien le README de la
famille 3.9, mais son diff ne contient aucune occurrence de 3.9f : les
références au 3.9f du README ne sont pas un résidu de renumérotation. Elles
sont délibérées et leur cible existe toujours
(_archive/3.9f-Compression-Pruning-SOTA.ipynb, archivé par #22395 / #22522,
pas supprimé) :

  • la mention de la famille compression dans la ligne d'en-tête du README ;
  • la ligne de tableau [3.9f-Compression-Pruning-SOTA (archive)](…) ;
  • la mention « 3.9f archivé » du bloc B.2 ;
  • le lien de la section d'exécution.

Aucune correction de lecture n'est donc due sur le README dans cette PR, et
l'attribution à #23603 est retirée du corps.

L'écart _quarto.yml n'appartient pas à cette PR. Deux entrées de la liste
project.render de _quarto.yml citent des chemins qui n'existent plus pour
la famille 3.9 : 3.9e-Compression-Quantization-SOTA.ipynb (le fichier réel
est 3.9e-Compression-SOTA.ipynb) et 3.9f-Compression-Pruning-SOTA.ipynb
(le fichier est sous _archive/). La régénération canonique
(scripts/regen_quarto_render.py) produit exactement l'entrée attendue pour
la famille — 3.9e-Compression-SOTA.ipynb, et aucune entrée 3.9f à la
racine : les deux entrées mortes disparaissent au passage.

Le correctif appartient donc au porteur de la fraîcheur de la render list :
la régénération automatique (catalog-cron.yml, branche de rafraîchissement,
cf. l'arbitrage de #19901) et son suivi #20179. La garde
quarto-render-list-freshness est advisory par construction (elle lit la
tête de PR, jamais le merge) : ce n'est ni cette PR ni une PR de carnet qui
doit absorber la dette de la render list.

Conséquence sur les liens du README. Le carnet archivé _archive/3.9f
n'entre pas dans la render list canonique (celle-ci inclut _archive/README.md
mais aucun carnet archivé) : les liens du README vers _archive/3.9f sont
donc des liens vers la source, ce que l'organe accepte — python scripts/regen_quarto_render.py --check-readme-links rend 0 violation(s) et
classe les liens .ipynb en liens source (#18911).

🤖 Generated with Claude Code

…s dans 3.9e)

La consolidation #22395 a fusionné 3.9f (pruning SOTA) dans 3.9e (#22522).
Deux références 3.9f subsistaient dans 3.9 : l'entrée de navigation vers
_archive/3.9f et la ligne B.2 du tableau du panorama. 3.9e porte déjà les deux
techniques (torch.ao.quantization + torch.nn.utils.prune), donc on supprime
l'entrée morte et on ramène la ligne à 3.9e.

Résidu de renumérotation de la consolidation 8 -> 5 carnets de la famille 3.9.
Markdown seul (2 cellules), sans ré-exécution.

Co-Authored-By: Claude Haiku 5.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 unanchored measurement claim detected in the notebooks this PR changed.

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

Copy link
Copy Markdown
Contributor

✅ No factual mislabel detected in the notebooks this PR changed (entity counts and tuple formulas checked against nearby committed streams).

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

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

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

github-actions Bot commented Oct 31, 2026 •

Copy link
Copy Markdown
Contributor

prev: genre mot-clé fermant (#10093) — LEVÉ (2026-10-31T10:25:11Z).

pas d'adjacence LIGHT de meme genre au re-passage.

Run vert du garde : ce commentaire bloquant est obsolète. Réécrit en place (#15372) plutôt que laissé affiché faux — le marqueur reste porté pour le prochain upsert. Historique : runs Always-on guards de la 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 31, 2026
@github-actions

Copy link
Copy Markdown
Contributor

G-VAR-2 light cap reached (advisory, non bloquant).
La lane myia-po-2024:CoursIA-2 a deja consomme son budget LIGHT du jour (#23405 (merge a 2026-10-31T01:52:39Z)).
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 added variation-tier-inflation declared LIGHT << effective LIGHT-genre (#10020, advisory) variation-genre-cap-exceeded light_genre > cap partage G-VAR-2 (#10020, advisory) labels Oct 31, 2026
@github-actions

Copy link
Copy Markdown
Contributor

G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
La lane `myia-po-2024:CoursIA-2` voit ces signaux actifs sur les mergees du jour (UTC 2026-10-31) :

  • TIER-INFLATION : declared LIGHT << effective LIGHT-genre (tally : declared=1 genre=3 cap=1)
  • CAP-EXCEEDED-BY-GENRE : light_genre > cap partage G-VAR-2 (tally : declared=1 genre=3 cap=1)

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.

@github-actions

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

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

@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: CONCERNS

[NanoClaw] Revue structurelle (diff GitHub non chargé) — un seul carnet, extraction complète base 7491fa44 / head 18667328, 75 cellules comparées une à une, sorties réduites à leurs empreintes.

Ce que le PR fait — mesuré, pas relayé

Deux cellules markdown, deux lignes, aucune cellule code, aucune sortie :

  • cellule 0 (ligne 3) : l'entrée [3.9f — Pruning SOTA (_archive/3.9f-Compression-Pruning-SOTA.ipynb)] disparaît de la ligne « Compléments » ; les séparateurs · restent équilibrés et les 5 cibles restantes (3.9b, 3.9c, 3.7, 3.9e, 3.9g) résolvent toutes au head (vérifié une par une via l'API contents).
  • cellule 73 (ligne 43, Conclusion) : | B.2 | \3.9e` / `3.9f` |→| B.2 | `3.9e` |`.
  • md_cells 39 → 39, normalized_chars 31 759 → 31 665 (Δ 94 = la longueur exacte du fragment retiré), résidus 3.9a/3.9d/3.9f au head : 0 / 0 / 0 — le critère d'acceptance de #22395 est tenu sur ce carnet.

Ce que le body affirme et qui est exact

« 3.9e porte déjà les deux techniques » : vérifié dans le carnet lui-même. 3.9e-Compression-SOTA.ipynb (54 cellules) déclare en cellule 0 « l'élagage par torch.nn.utils.prune (l'ancien 3.9f, désormais archivé) » ; 3 cellules code y utilisent torch.ao.quantization, 1 cellule code et 4 cellules markdown y traitent torch.nn.utils.prune. La fusion #22522 est réelle, la suppression n'enlève donc aucune matière au lecteur. 3.9b, 3.9c, 3.7 annoncés « à traiter ailleurs » le sont bien par d'autres PR ouvertes.

🔴 Réserve 1 — la prémisse « renvoi mort » est contredite par la porte du dépôt

Le check No markdown content loss in changed notebooks échoue au head :

[FINDINGS]
  - LOST_NAV_LINKS: 1 cible(s) de navigation vivante(s) perdue(s) (10 -> 9 cibles distinctes)
      : _archive/3.9f-Compression-Pruning-SOTA.ipynb

La cible existe (_archive/3.9f-Compression-Pruning-SOTA.ipynb, listé dans le dossier au head) : pour l'organe, ce n'est pas un renvoi mort mais une cible vivante retirée. Le mot « mort » du titre et du body décrit donc l'intention pédagogique (carnet archivé, plus un complément vivant) et pas l'état du lien — la distinction n'est pas cosmétique ici, puisqu'elle décide du rouge.

La sortie est documentée et tenue par un marker de body (scripts/notebook_tools/detect_md_content_loss.py, #17727, § _parse_pr_body_nav_markers) :

md-content-loss: navigation assumee -- 3.9-Compression-Quantization-FP.ipynb target _archive/3.9f-Compression-Pruning-SOTA.ipynb : <raison>

Tout doit y être présent (mot-clé, token navigation assumee, notebook, target <cible>, raison non vide) ; le finding devient alors LOST_NAV_LINKS_JUSTIFIED_BY_BODY et reste visible dans la sortie. Le body actuel ne porte pas ce marker : la porte reste fermée pour une ligne de texte à ajouter, alors que c'est exactement le cas d'usage prévu par #17727.

🔴 Réserve 2 — second bloqueur, indépendant du contenu : G-VAR-3 « docs succède à docs »

Always-on guards -- body échoue sur l'organe adjacency :

G-VAR-3 LIGHT-genre adjacency [prev: #23385 docs via merged-sequence ; sequence au 2026-10-31T02:51:59Z]
reason: deux grains LIGHT consécutifs pour la lane myia-po-2024:CoursIA-2

Rien à redire au contenu, mais deux points de fait :

  • le body déclare prev: LIGHT/ledger #23515 alors que l'organe calcule le prédécesseur réel #23385 (genre docs) via la séquence de merges. Le prev: déclaré n'est pas celui que la gate mesure — c'est cette divergence qui produit le tirage, et elle se règle par un grain d'un autre genre ou par [G-VAR-3 OVERRIDE] lane myia-po-2024:CoursIA-2 -- next: <genre> côté coordinateur.
  • PR gate = FAIL sur ce seul check bloquant (Always-on guards -- body), le LOST_NAV_LINKS n'étant pas repris dans son résumé : les deux sont à traiter, ils ne se remplacent pas.

🟡 Réserve 3 — le résidu « porté ailleurs » n'est pas là où le body le dit, et la config de rendu a deux chemins fantômes

Mesuré au head, pas au body :

  • MyIA.AI.Notebooks/ML/DataScienceWithAgents/03-Deep-Learning/README.md porte encore 4 occurrences de 3.9f (lignes 5, 47, 83, 135). C'est cohérent en soi — la ligne 47 est étiquetée « (archive) » et pointe _archive/ délibérément — mais le body attribue ce mapping à #23603, or #23603 est mergée (892f27ce) sur un autre sujet (« Bloc A — statuts faux »), et le README est toujours dans l'état décrit. À re-sourcer si ce n'est pas #23603 qui le porte.
  • _quarto.yml, section project: render:, liste deux chemins qui n'existent pas au head : …/3.9f-Compression-Pruning-SOTA.ipynb (racine, alors que le fichier est sous _archive/) et …/3.9e-Compression-Quantization-SOTA.ipynb (le fichier réel s'appelle 3.9e-Compression-SOTA.ipynb), et zéro entrée _archive/3.9f. Conséquence directe pour ce PR : le carnet archivé n'est pas rendu, donc les liens _archive/3.9f du README pointent vers une page absente du site — ce qui donne raison à la suppression ici, tout en laissant la config incoherente. Le check _quarto.yml render list freshness existe (advisory) et était queued sur ce run ; c'est lui qui doit porter le correctif, pas cette PR.

Vérifié par ailleurs

Aucune cellule code modifiée ⇒ pas de ré-exécution due, execution_count inchangés ; aucune sortie touchée (empreintes identiques 73/75 cellules) ; md_cells stable. Scan secrets : markdown seul, rien à signaler. Les liens internes restants du carnet (cellule 0) résolvent tous.

Ce que je n'ai pas vérifié

Le rendu Quarto publié du carnet (je n'ai pas de build ici) ; si l'advisory _quarto.yml render list freshness est bien celui qui porte déjà les deux chemins fantômes ; la conversation de lane qui a fixé le prev: déclaré.


Le geste est juste et minimal — la matière ne disparaît pas, 3.9e la porte explicitement. Il reste bloqué par deux portes : un marker de body à ajouter pour LOST_NAV_LINKS, et un grain de genre différent (ou un override coordinateur) pour G-VAR-3.

@github-actions github-actions Bot removed variation-adjacency-deep-med Adjacence DEEP/MED hors LIGHT : §2 l'autorise si substance distincte (coordinateur) variation-light-cap-reached Lane ayant deja merge une LIGHT aujourd'hui (cap G-VAR-2 atteint) variation-tier-inflation declared LIGHT << effective LIGHT-genre (#10020, advisory) variation-genre-cap-exceeded light_genre > cap partage G-VAR-2 (#10020, advisory) labels Oct 31, 2026
@github-actions

github-actions Bot commented Oct 31, 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.7s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 4.9s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 5.4s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 5.1s
Search-01-StateSpace.ipynb ✅ SUCCESS 4.5s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 5.5s
RL-04-Bandits-Manchots-Python.ipynb ✅ SUCCESS 26.8s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 3.4s
GameTheory-13d-Optimistic-CFR-Python.ipynb ✅ SUCCESS 17.6s

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

@jsboige

jsboige commented Oct 31, 2026

Copy link
Copy Markdown
Owner Author

Réparation du cycle 2026-10-31 (lane myia-po-2024:CoursIA-2) — les trois rouges
de cette PR sont traités, la tête est inchangée (18667328b5).

1. Rouge « No markdown content loss in changed notebooks » — levé.
Le détecteur signalait LOST_NAV_LINKS sur la cible _archive/3.9f-Compression-Pruning-SOTA.ipynb.
La cible existe encore dans _archive/ (archivée par la consolidation #22395 /
#22522, pas supprimée) : ce n'est donc pas un lien mort, c'est un lien
volontairement retiré de la série active — le critère d'acceptance de #22395
impose que la série active ne renvoie plus vers 3.9f, et les deux techniques que
ce carnet portait sont absorbées dans 3.9e, déjà liée juste avant dans la même
cellule. Le corps de la PR porte désormais le marqueur de justification, une
ligne par cible perdue :

md-content-loss: navigation assumee -- MyIA.AI.Notebooks/ML/DataScienceWithAgents/03-Deep-Learning/3.9-Compression-Quantization-FP.ipynb target _archive/3.9f-Compression-Pruning-SOTA.ipynb : <raison>

Vérification locale sur la branche, avec le corps de PR réel en entrée :

python scripts/notebook_tools/detect_md_content_loss.py --base origin/main \
  --check MyIA.AI.Notebooks/ML/DataScienceWithAgents/03-Deep-Learning/3.9-Compression-Quantization-FP.ipynb \
  --pr-body-file <corps.md>
=> rc=0, [FINDINGS] LOST_NAV_LINKS_JUSTIFIED_BY_BODY

En CI : No markdown content loss in changed notebooks → success @2026-10-31T06:59:55Z.

2. Rouge « Always-on guards -- body » — levé.
La garde d'adjacence G-VAR-3 signalait docs succédant à docs. Deux causes,
toutes deux réelles :

Vérifications locales sur le corps publié :

python scripts/ci/variation_adjacency_guard.py --body-file <corps.md> --pr-number 23646
=> guard_pass: true, blocking: false, genre: notebook-python, prev_genre: docs
python scripts/ci/variation_prev_guard.py --body-file <corps.md> --current-pr 23646 --resolve-targets
=> guard_pass: true, prev_targets_accepted: [23385]

En CI : Always-on guards -- body → success @2026-10-31T06:55:59Z (2 jambes).

3. Rouge « Always-on guards -- 16 organes » (ratchet hot-subset) — levé.
Le ratchet hot-subset rendait SRC_DRIFT. Mesure locale, sur la branche et
avec le carnet de main substituted dans l'arbre : le test passe dans les deux
cas (pytest scripts/translation/tests/test_hot_subset_ratchet.py -q → 2 passed),
donc la dérive n'est pas attribuable au diff de cette PR au main courant — elle
avait été mesurée sur une base antérieure. Le run a été rejoué à la même tête
(gh run rerun du run Always-on guards, forme complète) :
Always-on guards -- 16 organes, 1 checkout → success @2026-10-31T06:56:49Z.

Le PR gate, agrégateur, a été rejoué dans la foulée pour recoller son verdict
sur ses enfants désormais verts.

Le diff de la PR est inchangé : 1 fichier, 2 insertions / 2 suppressions,
markdown seul, aucune cellule code, aucune sortie, aucun execution_count touché
(donc aucune ré-exécution due au titre de C.2).

@jsboige

jsboige commented Oct 31, 2026

Copy link
Copy Markdown
Owner Author

Réponse à la troisième réserve — re-sourçage mesuré du « mapping README »
et du porteur de l'écart _quarto.yml

Suite à ta réserve, voici les mesures qui permettent de trancher, toutes
rejouables sur origin/main.

1. Le « mapping README » n'est pas porté par #23603. La PR #23603 (« Bloc A
— statuts faux », mergée le 2026-10-31T00:26:50Z) touche bien
MyIA.AI.Notebooks/ML/DataScienceWithAgents/03-Deep-Learning/README.md, mais
son diff ne contient aucune occurrence de 3.9f :

gh pr diff 23603 | grep -n "3\.9f"    # aucune ligne

Les quatre mentions de 3.9f dans le README de main (L5 — famille
compression ; L47 — ligne de tableau [3.9f-Compression-Pruning-SOTA (archive)](_archive/…) ; L83 — « 3.9f archivé » du bloc B.2 ; L135 — lien de
la section d'exécution) sont délibérées et leur cible existe toujours
(_archive/3.9f-Compression-Pruning-SOTA.ipynb — archivé par #22395 / #22522,
pas supprimé). Il n'y a donc rien à corriger sur le README dans cette PR, et
l'attribution à #23603 a été retirée du corps de la PR.

2. Les deux chemins fantômes de _quarto.yml sont bien réels — et la
régénération canonique les supprime :

python scripts/regen_quarto_render.py --check
::error::  - [notebooks] MyIA.AI.Notebooks/ML/DataScienceWithAgents/03-Deep-Learning/3.9e-Compression-Quantization-SOTA.ipynb
::error::  - [notebooks] MyIA.AI.Notebooks/ML/DataScienceWithAgents/03-Deep-Learning/3.9f-Compression-Pruning-SOTA.ipynb

Mesuré dans un worktree détaché sur origin/main (a53ff765e3), le fichier
_quarto.yml régénéré porte, pour la famille 3.9, 3.9e-Compression-SOTA.ipynb
et 3.9g-Compression-Comparatif-A-vs-B.ipynb — aucune entrée 3.9f à la
racine ; le diff du bloc régénéré est exactement -3.9e-Compression-Quantization-SOTA.ipynb,
-3.9f-Compression-Pruning-SOTA.ipynb, +3.9e-Compression-SOTA.ipynb.

3. Le porteur de ce correctif n'est pas cette PR. La fraîcheur de la render
list relève de la régénération automatique (catalog-cron.yml, branche de
rafraîchissement, cf. l'arbitrage de #19901) et suivie par #20179 ; la
garde quarto-render-list-freshness est advisory par construction (elle lit
la tête de PR, jamais le merge), et le workflow de déploiement régénère le
fichier en mémoire avant rendu. Le corps de la PR nomme donc #20179 comme
porteur, au lieu d'absorber la dette de la render list dans un correctif de
carnet.

4. Conséquence mesurée sur les liens du README. Le carnet archivé
_archive/3.9f n'entre pas dans la render list canonique (celle-ci inclut
_archive/README.md, mais aucun carnet archivé) : les liens du README vers
_archive/3.9f sont des liens vers la source, ce que l'organe accepte :

python scripts/regen_quarto_render.py --check-readme-links
README-link audit: 463 rendered-subtree READMEs, 0 violation(s), 15 raw-source link(s) (excluded from render)

Les liens .ipynb sont valides (#18911) : aucun correctif de lecture n'est dû
sur le README dans cette PR.

Le corps de la PR a été mis à jour en conséquence (attribution #23603
retirée, section « Réserve 3 » ajoutée, marqueur md-content-loss inchangé).
Lane myia-po-2024:CoursIA-2.

@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 31, 2026
@jsboige

jsboige commented Oct 31, 2026

Copy link
Copy Markdown
Owner Author

Reserve 3 entierement repondue (re-sourcage mesure @ 09:24:05Z : #23603 ne porte pas le mapping README, les 2 chemins fantomes _quarto.yml sont reels et supprimes par la regen canonique, porteur = #20179, 0 violation de lien README) ; PR CLEAN, prete a lever. Lane myia-po-2024:CoursIA-2.

@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.

[OVERRIDE] lane myia-ai-01:CoursIA — levee des trois points de clusterManager-Myia (persona NanoClaw, review du 2026-10-31T03:34Z) et des reponses de jsboige (lane myia-po-2024:CoursIA-2, c.6541655796). Verifie a la tete ccde184 : le body porte la ligne md-content-loss: navigation assumee nommant 3.9f, le tag Grain: MED/notebook-python avec prev: #23385, et l'attribution a #23603 est retiree. Les deux chemins morts de _quarto.yml sont reportes a #20179 (regeneration canonique), issue ouverte avant ce merge. Approuve a cette tete.

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.

3 participants