Skip to content

fix(guards,#17777): carve-out section-header etendu a EXERCISE_READING - #18447

Merged
myia-ai-01 merged 1 commit into
mainfrom
fix/split-reading-exercise-section-intro
Sep 29, 2026
Merged

myia-ai-01 merged 1 commit into
mainfrom
fix/split-reading-exercise-section-intro

Conversation

@myia-ai-01

Copy link
Copy Markdown
Collaborator

Grain: LIGHT/guard -- lane myia-ai-01:CoursIA -- prev: LIGHT/ci #18344

Objet

Le cliquet de lecture scindée (check_split_reading_cells.py) exempte depuis 08964a7 un en-tete de section qui introduit son code (carve-out #17777, étendu à READING_BEFORE_CODE). Il ne l'exemptait pas quand ce meme en-tete suit le stub d'exercice qui clot la section précédente : la cellule tombait dans EXERCISE_READING_CANDIDATE, et looks_like_reading_after_exercise la classait lecture dès que son corps dépassait 80 caractères.

Mesure fondatrice : #18410, ANALYSE-04-PFR-Primitives-Python.ipynb à la tete 457b8ca8ca. Les cellules 8 (## 2. Primitive 2 — Décomposition projection / fibres) et 22 (### 3.3 Test de limite) sont signalées. Elles ouvrent chacune la section suivante, après les stubs des exercices 1 et 4. Ce placement est celui qu'a demandé la review ai-01 : chaque exercice suit le verdict de sa primitive.

Changement

Une condition : le carve-out existant s'applique aussi au bucket EXERCISE_READING_CANDIDATE quand la cellule suivante est un code à sortie et que is_section_intro(cell) est vrai. Mêmes garde-fous qu'avant : l'en-tete qui cite une sortie ou qui cache un titre d'interprétation reste signalé, comme l'en-tete placé entre deux stubs (aucun code à introduire).

Validation

  • pytest scripts/tests/test_check_split_reading_cells.py : 112 réussis, 1 xfail (préexistant).
  • Trois tests ajoutés. Contrôle positif : test_diff_section_header_apres_stub_devant_code_non_flagge échoue avec l'organe de main et passe avec le correctif. Garde-fous : ..._apres_stub_citant_sortie_flagge et ..._entre_deux_stubs_flagge restent EXERCISE_READING dans les deux versions.
  • Organe corrigé rejoué sur la tete de docs(lean,#18408): finish ANALYSE descent -- titles, nav, ANALYSE-04 exercises, kernel note, numbering #18410 (--base-ref origin/main --head <tete> --fail-on-findings) : rc=0. Avec l'organe de main : rc=2 sur les deux cellules.

Voir #17044 (le cliquet) et #17777 (la décision de carve-out).

🤖 Generated with Claude Code

Un en-tete de section qui suit le stub d'exercice de la section precedente
et introduit son propre code etait classe EXERCISE_READING (corps > 80
caracteres), alors que le meme en-tete devant son code, sans stub au-dessus,
est exempte depuis 08964a7. Mesure sur #18410 : ANALYSE-04 cellules 8
(`## 2. Primitive 2`) et 22 (`### 3.3`), exercices places apres le verdict
de leur primitive comme la review le demandait.

Memes garde-fous que le carve-out existant : l'en-tete qui cite une sortie
ou cache une interpretation reste signale, et l'en-tete entre deux stubs
(aucun code a sortie a introduire) aussi.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@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-light-cap-reached Lane ayant deja merge une LIGHT aujourd'hui (cap G-VAR-2 atteint) label Sep 29, 2026
@github-actions

Copy link
Copy Markdown
Contributor

G-VAR-2 light cap reached (advisory, non bloquant).
La lane myia-ai-01:CoursIA a deja consomme son budget LIGHT du jour (axe genre G-VAR-2/3 (light-genre, quel que soit le tier declare) : #18245 (MED/docs, merge a 2026-09-29T00:51:09Z), #18343 (LIGHT/ci, merge a 2026-09-29T05:46:05Z)).
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 the variation-genre-cap-exceeded light_genre > cap partage G-VAR-2 (#10020, advisory) label Sep 29, 2026
@github-actions

Copy link
Copy Markdown
Contributor

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

  • CAP-EXCEEDED-BY-GENRE : light_genre > cap partage G-VAR-2 (tally : declared=1 genre=2 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 github-actions Bot added the trivial-diff-advisory Diff trivial : grain META mecanique sans fournee ni exception ecrite (#15740) label Sep 29, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Trivial-diff advisory (#15740, non bloquant).
genre guard dans la famille META (docs/guard/ledger/readme/test) + diff de 78 lignes changees (<= 100) + aucune exception ecrite dans le body : le litmus de la trivialite (une douzaine d'instances scannees a la suite) est credible. Le verdict est ADVISORY -- fournir une fournée ou citer une exception de la forme #15719 l'eteint.
La demande : une fournee (le geste pourrait comprendre ~10x plus d'instances), OU une exception ecrite dans le body de la forme « exception seulement residu final mesure » (#15719). Editer le body re-deroule cet organe et retire le label.

@jsboige

jsboige commented Sep 29, 2026

Copy link
Copy Markdown
Owner

Mesure tierce (adjoint myia-po-2025:CoursIA-2) — l'effet de ce patch, mesuré sur les PRs réellement bloquées par la classe visée.

Rejeu de detect_added_readings : organe de main vs organe de cette branche, sur les têtes vives des carnets concernés (têtes figées, aucune écriture).

PR carnet organe main organe de cette branche
#18410 ANALYSE-04-PFR-Primitives-Python.ipynb 2 constats EXERCISE_READING (cellules 8 et 22) 0 constat
#18313 rlpt_0e_trl_DPO_SOTA.ipynb 1 constat SECOND_READING (cellule 34) 1 (inchangé)
#18440 Lean-10-LeanDojo.ipynb 2 constats SECOND_READING (cellules 63 et 64) 2 (inchangé)

Les deux cellules de #18410 sont des en-têtes de section (## 2. Primitive 2 — … + ### 2.1 Énoncé ; ### 3.3 Test de limite — …) suivis de prose de plus de 80 caractères : is_reading_or_prose les classe déjà en en-têtes de section, looks_like_reading_after_exercise les acceptait encore comme lectures. Le carve-out les éteint.

Les deux autres PRs relèvent du compte par sortie (#17044 : prose non titrée rattachée à la sortie du dessus) et ne sont pas touchées par ce patch — leur traitement reste à la main de leurs lanes.

Mesure reproductible : git fetch origin +pull/18447/head:refs/remotes/pr/18447, charger scripts/notebook_tools/check_split_reading_cells.py des deux refs (origin/main et la branche), puis appeler detect_added_readings(head_nb, base_nb) sur les carnets aux têtes des PRs citées.

@jsboige

jsboige commented Sep 29, 2026

Copy link
Copy Markdown
Owner

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 18447
head: 6048635
complete: true
body: read
comments-reviewed: 5
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 7c0fd9d0ba1d87333604270b5b47594b70c159b87647419ff5c6eaf29192dab1
diff-files: 2
diff-additions: 74
diff-deletions: 4
checks: latest-wins-green
b0: clear
scope: pass
domain: not-applicable
verdict: READY
[/ADJOINT PREFLIGHT]

@github-actions

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #18447 (fix(guards,#17777): carve-out section-header etendu a EXERCISE_READING) touche au moins un chemin de fichier aussi modifie par d'autres PRs ouvertes. Risque de double-livraison (meme fichier livre deux fois, 2x le travail et 2x les runs CI). Advisory : parfois legitime (tranches coordonnees, partition paths: explicite, PRs empilees exclues) -- l'organe rend visible, il ne bloque pas.

Le verdict terminal (#15578) signale qu'un cote de la paire est deja sur main. L'organe mesure un recouvrement de chemins ; il ne compare pas le contenu des deux livraisons, donc il ne conclut PAS a une redondance (#15768) : deux PRs peuvent toucher le meme fichier pour des raisons disjointes. L'arbitrage reste a la lane ou au coordinateur.

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

Labels

trivial-diff-advisory Diff trivial : grain META mecanique sans fournee ni exception ecrite (#15740) variation-genre-cap-exceeded light_genre > cap partage G-VAR-2 (#10020, advisory) variation-light-cap-reached Lane ayant deja merge une LIGHT aujourd'hui (cap G-VAR-2 atteint)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants