Skip to content

Fix(guard,#24721): activity-leak blanchit les Lnnn ancrés dans les outputs antérieurs - #24727

Merged
myia-ai-01 merged 1 commit into
mainfrom
fix/activity-leak-lesson-tag-window
Nov 5, 2026
Merged

myia-ai-01 merged 1 commit into
mainfrom
fix/activity-leak-lesson-tag-window

Conversation

@jsboige

@jsboige jsboige commented Nov 4, 2026

Copy link
Copy Markdown
Owner

Grain: MED/guard -- lane myia-po-2025:CoursIA -- prev: MED/lean #24714

Ce que fait la PR

Troisieme famille de masque lesson_tag dans check_activity_leak.py : un match Lnnn dans une cellule markdown est masque ssi le token (bornes de mots) figure dans les outputs aplatis d'une cellule code strictement anterieure du meme carnet.

Motif mesure (#24654, KNOTS-03, 2026-11-04)

Une citation « (L1380) » dans une « Lecture du resultat » renvoie a une ligne du listing que la cellule code AU-DESSUS vient d'imprimer -- meme forme que le renvoi aux lecons, sens inverse. Sur les 6 ancres qui faisaient rougir le marqueur : 3 etaient des citations d'output legitimes (L1053/L1380/L3657 presentes dans le listing imprime au-dessus), 3 des renvois de lignes de FICHIER source (restent comptes -- forme canonique : la prose « ligne 234 »). Consequence observee sur main : le carnet committe a du REFORMULER ses citations en review ; la garde poussait hors du carnet la forme de citation naturelle d'une lecture de resultat.

Implementation

Piece Role
_ANCHORED_TOKEN_RE + _output_text_tokens extraction des tokens L<d> des outputs d'une cellule code ; text d'output = chaine OU liste de lignes (piege TypeError mesure sur #24654)
anchored_line_tokens(cells, upto) tokens des cellules code strictement anterieures -- une citation suit sa preuve
markers_in_text(text, anchored) masque par substitution de meme longueur, bornes de mots (L138 ancre ne blanchit pas L1380), pour lesson_tag SEULEMENT
scan_notebook / scan_diff accumulation incrementale des ancres au fil des cellules ; un markdown ne voit que les outputs anterieurs

Toutes signatures a defaut retro-compatible (anchored=frozenset()) : aucun appelant existant ne change de comportement sans ancres.

Acceptance (issue #24721)

  • Fenetre documentee en commentaire, style des deux familles precedentes (permaliens fix(guards,#21024): un fragment de permalien n'est pas un renvoi aux lecons #21510, cibles de lien activity-leak : faux positif lesson_tag sur les tailles de reseau dans les noms de fichiers #23004), ecart assume nomme par son test
  • Test positif blanchi : test_lesson_tag_anchored_in_prior_output_is_masked (+ jumeau negatif sans ancres, comportement pre-24721 preserve)
  • Negatif coordination : un token ancre ne blanchit pas lane/verdict voisins (test_anchored_mask_is_scoped_to_lesson_tag)
  • Negatif output posterieur : un token imprime PLUS BAS n'ancrant rien (test_posterior_output_does_not_anchor)
  • Regression url figee verte (test_url_fragment_frozen_regression_stays_green)
  • Aplatissement liste de lignes (test_output_text_list_form_is_flattened), borne de mot (test_word_boundary_anchored_l138_does_not_mask_l1380), threading bout en bout (test_scan_notebook_threads_anchors_in_order)

Validation

  • python -m pytest scripts/tests/test_check_activity_leak.py : 47 passed (40 preexistants + 7 nouveaux), 0 fail
  • python -m py_compile : OK
  • check_activity_leak.py --diff origin/main...HEAD : [OK] aucun passage d'activite dense ajoute (0 carnet modifie)
  • Etat mesure sur le cas fondateur : main courant ne porte plus de Lnnn en markdown de KNOTS-03 (reformules en review de SymbolicAI #17040: relais g141 — densite 1251 + 1221 #24654) ; ses outputs portent les ancres (L1088..L3657 cellule 8, L1013..L1053 cellule 14) -- la garde desormais ACCEPTERA la forme de citation naturelle au lieu de l'exclure

Non-goals (fondes sur l'issue)

  • Aucun changement de poids de marqueurs ni de seuils de densite
  • Pas de blanchiment des renvois de lignes de FICHIER source (L234 etc. sans output anterieur) : restent comptes

Closes #24721

🤖 Generated with Claude Code

Une citation (L1380) dans une « Lecture du resultat » renvoie a une ligne
du listing que la cellule code AU-DESSUS vient d'imprimer : meme forme que
le renvoi aux lecons, sens inverse. Mesure du 2026-11-04 (KNOTS-03,
PR #24654) : 3 des 6 ancres qui faisaient rougir lesson_tag etaient des
citations d'output (L1053/L1380/L3657 presentes dans le listing imprime
au-dessus) ; le carnet committe les a reformulees en review, la garde
poussait hors du carnet la forme de citation NATURELLE.

3e famille de masque lesson_tag, apres les permaliens (#23004 first
famille) et les cibles de lien fichier :

- _ANCHORED_TOKEN_RE + _output_text_tokens (text d'output = chaine OU
  liste de lignes, piege TypeError mesure sur #24654) ;
- anchored_line_tokens(cells, upto) : tokens des cellules code
  STRICTEMENT anterieures -- une citation suit sa preuve ;
- markers_in_text(text, anchored) masque par bornes de mots (L138 ancre
  ne blanchit pas L1380), pour lesson_tag SEULEMENT ;
- scan_notebook et scan_diff accumulent les ancres au fil des cellules.

Tests : 7 nouveaux (47 verts au total) -- ecart assume figure par
test_lesson_tag_anchored_in_prior_output_is_masked, portee stricte,
controle negatif coordination, output posterieur n'ancrant rien,
aplatissement liste, borne de mot, threading bout en bout scan_notebook,
regression url figee.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Nov 4, 2026

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-tier-inflation declared LIGHT << effective LIGHT-genre (#10020, advisory) label Nov 4, 2026
@github-actions

github-actions Bot commented Nov 4, 2026

Copy link
Copy Markdown
Contributor

Avertissements consultatifs

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

  • TIER-INFLATION : declared LIGHT << effective LIGHT-genre (tally : declared=1 genre=3 cap=4)

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.

Une section par organe ; ce commentaire est reecrit en place, il n'est pas empile.

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

APPROVED — revue coordinateur (lane CI/harnais) à la tête exacte 379768f322.

Diff de check_activity_leak.py lu en entier :

  • la troisième famille de masque ne touche que lesson_tag, comme les permaliens (#21510) et les cibles de lien (#23004) ; lane/verdict restent comptés, et un test le prouve ;
  • l'ancre ne vient que des sorties des cellules code strictement antérieures : l'accumulation est incrémentale dans scan_notebook et dans scan_diff, et la base ne fournit aucune ancre ;
  • les bornes de mots tiennent : L138 ne blanchit pas L1380. La forme liste de text est aplatie, ce qui écarte le piège TypeError de #24654 ;
  • signatures à défaut frozenset() : aucun appelant existant ne change de comportement.

Checks à cette tête : Scripts Tests (CPU) et activity-leak verts. B.0 rc=0.

Remarque pour une suite éventuelle, sans effet sur ce merge : seuls les outputs stream (text) fournissent des ancres. Un listing rendu comme valeur de dernière expression (execute_result, data["text/plain"]) n'ancre rien et restera compté. C'est le côté sûr (fail-closed), à étendre seulement si un cas mesuré le demande.

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

Labels

variation-tier-inflation declared LIGHT << effective LIGHT-genre (#10020, advisory)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Guard] activity-leak: blanchir les Lnnn ancrés dans les outputs d'une cellule precedente (collision lesson_tag)

2 participants