Skip to content

fix(gate,#16799): levée tierce qui nomme sa cible ne compte plus comme réserve - #16828

Merged
myia-ai-01 merged 1 commit into
mainfrom
fix/16799-lift-names-target
Sep 19, 2026
Merged

myia-ai-01 merged 1 commit into
mainfrom
fix/16799-lift-names-target

Conversation

@jsboige

@jsboige jsboige commented Sep 19, 2026

Copy link
Copy Markdown
Owner

Grain: MED/tooling -- lane myia-po-2026:CoursIA -- prev: DEEP/qc #16824

Levée tierce qui nomme sa cible ne compte plus comme réserve

Défaut fondateur

La levée ai-01 de la réserve NanoClaw sur #16710 (review 2026-09-19T02:08:08Z) nommait sa cible conformément au registre B.0 : attribution (« a posé VERDICT: CONCERNS le 2026-09-18T16:17:57Z »), citation quotée, référence démonstrative (« la CONCERNS ci-dessus »), timing (« levée ci-dessus, par un tiers, avant merge »). L'organe lisait chacune de ces narrations de résolution comme une émission : le geste qui débloquait la PR spawnait un nit à son propre nom (l'organe est passé de 4 à 5 nits à cause de la levée — documenté dans la review elle-même).

Cause racine

_OPENING_LIFT_RE (mécanisme #16700 : un corps qui ouvre sur une levée = geste de résolution → classify None) ne couvrait pas le qualificatif « tierce » : « Levée tierce de la réserve X » ne matchait pas « levée de la réserve ». Une seule alternance à étendre.

Voie retenue — et les voies mesurées puis écartées

Voie Verdict
A. CITERS += « a posé » Écartée : ne tue qu'1 des 4 occurrences vivantes du corps (les 3 autres familles — citation quotée, démonstratif, timing — restent)
B. marqueur CONCERNS vivant seulement si position < 200 Réfutée par le corpus : 65 kills dont #16251 — NanoClaw émet structurellement VERDICT: CONCERNS en milieu de corps après un préambule de vérification ; l'ancrage positionnel aveuglerait l'organe sur les reviews bot à préambule
C/D. CITERS par famille (citation, démonstratif) Écartées : chacune couvre ≤ 1 famille, et le démonstratif exigerait de trancher « ci-dessus » renvoi-vs-levée au cas par cas
Retenue : extension de l'ancrage en ouverture (?:tierce[ \t]+)? dans l'alternance médiane. L'ouverture neutralise le corps entier → les 4 familles d'un coup. Whack-a-mole minimal : une seule forme mesurée sur le registre B.0

Preuves

  • Tests : npx vitest n/a → python -m pytest scripts/tests/test_check_unaddressed_nits_16799.py = 8 passed ; suite organe complète (test_check_unaddressed_nits*.py, 14 fichiers) = 650 passed in 10.09s (642 existants + 8 nouveaux). Le défaut fondateur est embarqué verbatim dans les tests (partie chargeante de la review réelle), avec contre-épreuve has_live_marker True sans la ligne d'ouverture (preuve que c'est bien _opens_on_lift qui neutralise, pas une fenêtre de citation).
  • Témoin positif : l'émission réelle NanoClaw du même jour sur la même PR (préfixe VERDICT: CONCERNS (...)) reste BOT-CONCERN. Cas dur couvert : corps ouvrant sur une phrase neutre puis émettant → reste BOT-CONCERN.
  • Corpus : 1718 corps (reviews + comments) des 200 dernières PRs mergées, via GraphQL paginé. Delta classify avant/après = 0 (aucun flip).
  • PR réelle : python scripts/check_unaddressed_nits.py 16710 — le nit « myia-ai-01 via review » a disparu (la réserve NanoClaw debout reste comptée à juste titre, de même que les 4 nits de commentaires préexistants, hors scope).

Résidu (acceptance 5, hérité #16700)

Un corps ouvrant sur « Levée tierce de la réserve X » puis émettant une réserve NEUVE en corps sort du recensement. Résidu du trade-off corps-mixte #16700, mesuré 0/1718 corps, pinné par test (test_16799_residu_corps_mixte_documente) pour que tout changement soit délibéré.

Périmètre

2 fichiers : scripts/check_unaddressed_nits.py (+15/−1) + scripts/tests/test_check_unaddressed_nits_16799.py (nouveau).

See #16799

🤖 Generated with Claude Code

…e reserve

L'ancrage en ouverture (#16700, _OPENING_LIFT_RE) cassait sur le
qualificatif « tierce » entre « levée » et « de la réserve » : la levée
ai-01 de #16710 (2026-09-19T02:08Z), qui NOMME sa cible (attribution,
citation quotée, démonstratif, timing « avant merge »), spawnait un nit
à son propre nom. Extension d'une alternance : (?:tierce[ \t]+)? —
l'ancrage neutralise les 4 familles de narration d'un coup, là où chaque
entrée CITERS n'en couvrirait qu'une (voie mesurée puis écartée).

Corpus : 0/1718 corps des 200 dernières PRs mergées changent de verdict.
Témoin : l'émission réelle NanoClaw du même jour reste BOT-CONCERN.
Tests : 650 passed (642 existants + 8 nouveaux, défaut fondateur embarqué
verbatim).

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

github-actions Bot commented Sep 19, 2026 •

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #16828 (fix(gate,#16799): levée tierce qui nomme sa cible ne compte plus comme réserve) 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.

@jsboige

jsboige commented Sep 19, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 16828
head: 8889c08
complete: true
body: read
comments-reviewed: 1
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 1789cccc46568adf7de46a385b5dd99e0dd62ed54972edf7fd5ffd4cddcd32ea
diff-files: 2
diff-additions: 188
diff-deletions: 1
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
[/ADJOINT PREFLIGHT]

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants