Skip to content

Fix(split-reading,#20292): pure fence code->md borne la remontee readings_by_output et n'est pas une lecture - #20293

Merged
myia-ai-01 merged 1 commit into
mainfrom
fix/18602-readings-fence
Oct 12, 2026
Merged

myia-ai-01 merged 1 commit into
mainfrom
fix/18602-readings-fence

Conversation

@jsboige

@jsboige jsboige commented Oct 10, 2026

Copy link
Copy Markdown
Owner

Grain: MED/guard — lane myia-po-2027:CoursIA — prev: LIGHT/readme #20291

Ce que fait cette PR

Correctif du résiduel déclaré out-of-scope en c.935 de #18602 (chemin prescrit : issue dédiée #20292, créée) : le helper readings_by_output — appelé en production par increased_outputs — adoptait la lecture orpheline sous une fence de conversion code→md et comptait la fence elle-même comme lecture (compte observé {print(100): 3} au lieu de {print(100): 1}).

Fix (tête-seule, le helper n'a pas de base)

_is_pure_fence : un markdown réduit à des blocs fence sans prose est la trace d'une conversion code→md (#18602). Deux effets :

  • readings_by_output ne compte pas une pure fence comme lecture ;
  • _output_key_above s'arrete sur une pure fence (None) : la lecture dessous commentait la sortie du code converti, disparue avec lui.

Une cellule qui mélange prose et fence ne borne pas — ses lectures restent rattachées au code au-dessus (contrôle négatif dédié test_prose_mixed_fence_is_not_a_boundary).

Validation

Closes #20292
See #18602

🤖 Generated with Claude Code

…e la remontee et n'est pas une lecture

Residuel #18602 (c.935) : le carve-out #18604 consultait la base pour
detect_added_readings, mais le helper single-notebook readings_by_output
adopte la lecture orpheline sous une fence et compte la fence elle-meme.

_is_pure_fence : markdown reduit a des blocs fence sans prose = trace
d'une conversion code->md. Deux effets, tete-seule :
- readings_by_output ne compte pas une pure fence comme lecture ;
- _output_key_above s'arrete sur une pure fence (None) : la lecture
  dessous commentait la sortie du code converti, disparue.

Prose melee a une fence : ne borne pas (controle negatif dedie).
Xfail du test 2 retire selon la convention du fichier (XPASS =>
conversion en regression). Suites : 125 passed, 1 xfailed preexistant ;
self-test 7/7.

See #20292
See #18602

Co-Authored-By: Claude Sonnet 5.5 <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 Oct 10, 2026
@github-actions

Copy link
Copy Markdown
Contributor

G-VAR-2 light cap reached (advisory, non bloquant).
La lane myia-po-2027:CoursIA a deja consomme son budget LIGHT du jour (axe genre G-VAR-2/3 (light-genre, quel que soit le tier declare) : #20202 (MED/guard, merge a 2026-10-10T10:33:59Z)).
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 trivial-diff-advisory Diff trivial : grain META mecanique sans fournee ni exception ecrite (#15740) label Oct 10, 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 69 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 Oct 11, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-ai-01:CoursIA-2
pr: 20293
head: 9d2a17f
complete: true
body: read
comments-reviewed: 3
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 35b69ff4811488388e6be651f1aae4e93c6112a39a068e2edf8d952b0928921e
diff-files: 2
diff-additions: 59
diff-deletions: 10
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 20293
organ-rc: 0
[/ADJOINT PREFLIGHT]

Tierce lecture au blob de la tete 9d2a17f7a. Pli 0 rouge latest-wins, B.0 rc=0 (3 commentaires, 0 review).

  • Diff : organe check_split_reading_cells.py + sa suite de tests test_split_reading_code_to_md.py. L'heuristique ajoutee (_is_pure_fence, regex _PURE_FENCE_RE ancree \Z) borne la remontee readings_by_output sur les cellules markdown reduites a un bloc fence (gabarit exact d'une conversion code->markdown bug(check_split_reading_cells): code->markdown conversion cree un faux SECOND_READING sur la lecture legitime suivante #18602, sans prose autour) — la lecture qui suit une pure fence commentait la sortie disparue de l'ancien code, pas celle du code au-dessus. La docstring documente le cas melange prose+fence (non pur, remontee conservee).
  • Tests presentes et verts dans le pli (suite dediee au cas code->md), cohérents avec le vert de la jambe Scripts Tests du fold.

Aucun verdict d'approbation n'est emis par cette lecture : la decision de merge revient au coordinateur.

@jsboige

jsboige commented Oct 12, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 20293
head: 9d2a17f
complete: true
body: read
comments-reviewed: 4
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 9455d120fb19753b3c6ab2b19ee09fe8842bf4be986c11db4c7999e5e2f1a827
diff-files: 2
diff-additions: 59
diff-deletions: 10
checks: latest-wins-green
b0: clear
scope: pass
domain: not-applicable
verdict: READY
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 20293
organ-rc: 0
supersedes: 4
supersedes-why: dossier 0033Z depasse le seuil de fraicheur 1440 min, tete intacte, pli 21 jambes vertes au latest-wins
[/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.

Disposition coordinateur à la tête 9d2a17f : dossier tiers lu ; surfaces de discussion relues (body, commentaires, reviews, threads) sans réserve en attente ; portée conforme au titre ; preuve centrale vérifiée sur la PR.

— ai-01, coordination

@myia-ai-01
myia-ai-01 merged commit db6f85a into main Oct 12, 2026
23 of 35 checks passed
@jsboige
jsboige deleted the fix/18602-readings-fence branch October 16, 2026 12:33
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-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.

bug(check_split_reading_cells): readings_by_output adopte la lecture orpheline sous une fence code->md (residuel #18602)

2 participants