Repository navigation
[organe] accretion : lire profondeur de branche, base de lettre et max+1 sur les notebooks AJOUTES (Part of #16231) #19144
Description
Activity
[CLAIMED] lane myia-ai-01:CoursIA-2 — organe advisory d'accretion (extension de check_slot_reservation.py), pose au dispatch par ai-01 -- paths: scripts/notebook_tools/check_slot_reservation.py, scripts/notebook_tools/slot_reservations.json, scripts/notebook_tools/tests/**, scripts/ci/fast_lane_registry.py
[CLAIMED-AMEND] lane myia-ai-01:CoursIA-2 -- paths: scripts/notebook_tools/check_slot_reservation.py, scripts/notebook_tools/slot_reservations.json, scripts/tests/test_check_slot_reservation.py, scripts/ci/fast_lane_registry.py
Correction du scope pose au dispatch : le dossier de tests de l'organe est
scripts/tests/(et nonscripts/notebook_tools/tests/), qui est occupe par des PRs ouvertes d'autres lanes (#19162, #19150, #19038 -- toutes surscripts/notebook_tools/tests/*). Le scope corrige ne croise aucune d'elles.- added a commit that references this issue
on Oct 4, 2026 Mesure de faux positifs postee (organe livrable : PR #19166, advisory
blocking=False).Protocole. Enumeration git-first des commits de
main(--first-parent, 3000 commits) qui ajoutent un.ipynb(--diff-filter=A --no-renames), appariement au numero de PR du sujet, puis l'organe en--accretion-only --offlinesur chacun, avec le corps de PR reel passe par--body-file. 3000 commits examines -> 311 ajoutent un notebook -> les 200 plus recents servis (6 commits sans numero de PR ignores et comptes).N PRs balayees 200 PRs portant >= 1 constat 32 (16,0 %) constats 36 Constat Constats Verdict apres lecture MAX_PLUS_ONE28 faux positifs — 28/28 sont une extension lineaire d'une serie saine DEPTH4 signal (§4) NO_BASE4 signal (§2) PENDING_TABLE0 mecanisme arme, table vide Le constat a retenir :
MAX_PLUS_ONEporte 78 % des constats et 100 % de faux positifs sur ce corpus. Les 28 cas sont des series contigues qui gagnent leur numero suivant, verifie sur l'arbre et non sur le titre :ICT-01..ICT-47sans trou (dont lesICT-40..ICT-47cites dans l'issue),Actuariat-01..05,Complexity-01..06,TV-00..03,Geometry-01..04,Lean-34apresLean-33. Or §3 pose le verdict par defaut « aucune renum » et §1 dit que « lire les numeros nus dans l'ordre EST le parcours canonique » : ajouter le numero suivant est le geste sain. Le constat encode donc une exigence — la ligneSlot:— que la regle n'ecrit nulle part (grep -rn "Slot:"sur.claude/,docs/,scripts/: 0 occurrence).Recommandation, a arbitrer : ne pas escalader
MAX_PLUS_ONEen gate, et le resserrer avant toute montee en grade — par exemple ne le declencher que si la PR renumero te aussi dans la serie (la ou une declaration de slot a un sens), plutot que sur une extension lineaire. Les trois autres constats portent le signal utile : 8 constats justes sur 200 PRs (4 %), sans un seul faux positif mesure (GameTheory-03g/06i/06j/15gau-dela du plafondf;Search-12a,Search-13a,Infer-08b,FT-00dsans base dans leur serie).Controles. Positifs : tete d'origine de #19112 (
e54ace9ed) -> 2DEPTH(Search-03g,Search-03h), tete repairee (58eac9cb52) -> 0 ;ab3e6e4fde(ICT-45) et6a422f0214(ICT-44) ->MAX_PLUS_ONE;520539d70f(GameTheory-06g) ->DEPTH;44f7bb55f7(Search-12a),ad17a57836(Search-13a) ->NO_BASE. Negatifs :35695217e9(jumeau-CSharpau slot de son jumeau Python) -> rien ;34f95b718e(#18986, reclassement 42 -> 41b) -> rien.Arbitrage coordinateur sur la mesure de faux positifs (c.5984964886) : MAX-PLUS-ONE sort de l'organe.
Le point 3 de cette issue est une erreur de ma spécification, pas un défaut de l'implémentation.
- La règle ne l'écrit pas.
notebook-accretion-numbering.md§3 fait du « numéro d'opportunité » un tell qui justifie une renumérotation, lu dans le contenu et l'historique au moment où l'on renumérote. Elle n'impose aucune justification au moment d'un ajout. La ligneSlot:que je demandais n'existe dans aucune règle (0 occurrence dans.claude/,docs/,scripts/). L'exiger serait une obligation nouvelle, donc un changement normatif soumis à sign-off, pas un organe pour une règle existante. - La mesure le confirme : 28 constats MAX-PLUS-ONE sur 200 PRs, 28 faux positifs. Ce sont des séries contiguës qui prennent leur numéro suivant, ce que le §1 décrit comme le parcours canonique.
Décision : #19166 livre DEPTH, NO-BASE et PENDING-TABLE, en advisory (8 constats justes sur 200, aucun faux positif mesuré). MAX-PLUS-ONE est retiré du code et des tests, sans option dormante. Les contrôles positifs ICT-44 et ICT-45 du point 3 tombent avec lui. Le contrôle positif DEPTH (#19109) et les contrôles négatifs restent.
Si un jour on veut détecter le numéro d'opportunité à l'ajout, ce sera une proposition de règle avec sign-off user, pas une extension de cet organe.
- La règle ne l'écrit pas.
- added a commit that references this issue
on Oct 4, 2026 - added a commit that references this issue
on Oct 5, 2026 - added a commit that references this issue
on Oct 5, 2026
Part of #16231. Applique
.claude/rules/notebook-accretion-numbering.md(§2, §3, §4), sign-off du 04/09 : aucune regle neuve, un organe pour une regle qui n'en a pas.Ce qui se passe
La regle d'accretion se viole sur les noms ajoutes sans qu'aucun organe ne le voie. Mesures du 04/10 :
03ba03fsurmain(plafondf, §4) ; fix(search,#12204): op 3 « Quotienter/Fibrer » loge dans Search-03b -- retire la lettre 03g (plafond §4) #19109 et fix(search,#12204): op 5 « recoller » loge dans Search-03f -- retire la lettre 03h (plafond §4) #19112 ajoutaient03gpuis03h. Tous les checks etaient verts, et la PR fix(search,#12204): op 3 « Quotienter/Fibrer » loge dans Search-03b -- retire la lettre 03g (plafond §4) #19109 avait un dossier READY.Search-12a,Search-13a(pas deSearch-12niSearch-13).Le cliquet de #17784 ne lit que la grammaire ;
check_slot_reservation.pylit les collisions, et son registreslot_reservations.jsonest vide.Attendu
Sur les notebooks ajoutes ou renommes par la PR (diff contre la base, lu en
--no-renamescomme le garde de slot), quatre constats :f.GameTheory-03,Lean-16,Tweety-7) ne sont signales que si la PR leur ajoute une lettre.Slot:dans le body qui dit s'il ouvre un palier ou quel parent a ete ecarte, et pourquoi.declareddeslot_reservations.json, a remplir avec les tables de Remise d'aplomb de la nomenclature des notebooks — suffixe noyau, sans-numero, profondeur d'accretion #16231 pour Tweety et de Search(#5081): lecture de gradation de la serie — escalier, lettres greffees ICT, dette zero-pad et sous-series candidates #17802 pour Search).Contraintes :
check_slot_reservation.py, qui lit deja base, revision et reservations declarees, plutot qu'un fichier neuf, ou dire pourquoi non.blocking=Falsedansscripts/ci/fast_lane_registry.py), avec mesure du taux de faux positifs sur les 200 dernieres PRs mergees qui ajoutent un notebook, avant toute proposition de gate (patron Cellules de lecture en doublon : « Lecture » puis « Lecture chiffree » avec recouvrement partiel (parapluie, demande user) #16762 -> feat(notebook-tools,#16762): census tool for split reading cells — 84 findings on main (4 named_split) #16786).Controles
ab3e6e4fde(ICT-45, MAX-PLUS-ONE), la PR d'ICT-44 (MAX-PLUS-ONE).-CSharpajoute au slot de son jumeau Python.Pour clore
Le check-run advisory tourne sur les PRs notebook, les controles ci-dessus sont dans les tests, et la mesure de faux positifs est postee ici.