Repository navigation
fix(guards,#17777): carve-out section-header etendu a EXERCISE_READING - #18447
Conversation
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>
|
No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml). Detector: |
|
G-VAR-2 light cap reached (advisory, non bloquant). |
|
G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
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 |
|
Trivial-diff advisory (#15740, non bloquant). |
|
Mesure tierce (adjoint Rejeu de
Les deux cellules de #18410 sont des en-têtes de section ( 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 : |
|
[ADJOINT PREFLIGHT] |
Path-collision (organ #13359/#13615)Cette PR #18447 (
Le verdict terminal (#15578) signale qu'un cote de la paire est deja sur |
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 dansEXERCISE_READING_CANDIDATE, etlooks_like_reading_after_exercisela classait lecture dès que son corps dépassait 80 caractères.Mesure fondatrice : #18410,
ANALYSE-04-PFR-Primitives-Python.ipynbà la tete457b8ca8ca. 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_CANDIDATEquand la cellule suivante est un code à sortie et queis_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).test_diff_section_header_apres_stub_devant_code_non_flaggeéchoue avec l'organe demainet passe avec le correctif. Garde-fous :..._apres_stub_citant_sortie_flaggeet..._entre_deux_stubs_flaggerestentEXERCISE_READINGdans les deux versions.--base-ref origin/main --head <tete> --fail-on-findings) : rc=0. Avec l'organe demain: rc=2 sur les deux cellules.Voir #17044 (le cliquet) et #17777 (la décision de carve-out).
🤖 Generated with Claude Code