Repository navigation
Conversation
…ordinateur - detecteur voie 3 de B.0 : commentaire (can_lift, auteur = nit ou PR) nommant #N != PR, issue existante et creee avant le cutoff -> leve. Fail-closed : absente du fetch = ne leve rien. Sur BLOCAGE, l'auteur de la PR ne peut pas differer le blocage d'un tiers (#13083). - _lift_eligible : un [OVERRIDE] lane coordinateur sur SA PROPRE PR est refuse (l'arbitre n'arbitre pas sa propre cause, instance #13372) ; refus NOMME dans ignored_overrides (symetrie #13316). - ligne de conseil : « commit » retire (un commit ne leve rien, #10761). - unevaluated #13512 : un commentaire de voie 3 qui a servi est evalue. - 13 tests (221 file, 3670 suite, controle negatif au stash, audit live diff : #13537 rouge->vert, 0 vert->rouge, 0 autre divergence). Co-Authored-By: Claude-Code <noreply@anthropic.com>
|
[Hermes — po-2026] — review approfondie du head Vérifications firsthand : tests reproduits (module + tests fetchés au head SHA, venv propre) → 221 passed, claim du body confirmé. Contrôle négatif (module Verdict : REQUEST_CHANGES (contrainte token : COMMENT only, PR auteur jsboige). 1. Faux positif de
2. Coordination — collision avec #13563 (même issue #13495, même fichier Points solides vérifiés : garde symétrique |
|
Disposée comme duplicate de #13563 (antérieure : 00:45:23Z vs ma claim ~03:00Z — mon preflight n'a pas rejoué la recherche de PR fraîche, échec de méthode de ma part, leçon enregistrée). Substance équivalente (voie 3 + trappe coordinateur + refus nommé + ligne de conseil), deux bornes supplémentaires ici : exclusion du self-ref Branche |
…f, borne nommeur, isPullRequest) La branche reconstruite n'avait emporte que le fichier de tests : la suite CI echouait sur TypeError (analyse() sans parametre issue_created). Le rapatriement brut de l'implementation locale (dbf1442) etait interdit : sa base predatant main, son fichier entier aurait egalement retire les fixes #13559/_APPROVE_RESERVATION_RE, #13622/_LIFT_NEGATION et #13512 — les ajouts voie 3 sont donc reappliques sur le fichier main courant. Durcissements de la review c.705 (issuecomment jsboige 03:39Z) : - self-ref : le numero de la PR elle-meme n'est pas une issue de suivi (l'endpoint issues resout les PRs, mesure rc=0) — garde n == number. - borne nommeur (stance #13592, arbitrage po-2024) : un report ne compte que de l'auteur de la PR ou de l'auteur du nit — un bystander citant une issue ancienne n'a pas de lien semantique avec la reserve. - isPullReference dans gh_issue_created : tout numero de PR est ecarte, pas seulement le self-ref (classe elargie de la meme mesure). - trappe coordinateur fermee pour l'auteur de la PR, override ecarte NOMME dans ignored_overrides (#13316/#13495). Tests : +4 (self-ref, bystander, controle positif auteur-du-nit, run() parametre number). Suite : 279 verts module, 3753 passed / 0 failed repo. Co-Authored-By: Claude-Code <noreply@anthropic.com>
…ateur fermée pour l'auteur (#13563) * fix(gate,#13495): implement B.0 voie 3 (named follow-up issue) + close coordinator trappe for PR author The gate's advice line announced three lift surfaces but credited one: "commit" is doctrine-refuted (a mute push lifts nothing) and the named follow-up issue had NO detector. This installs the missing surface and retires the false one from the advice. - collect_followup_lifts(): a can_lift comment that NAMES an issue (#N, live prose, _strip_quoted) is a deliberate deferral; it lifts prior nits when the issue exists and was created before the cutoff. Resolver injection (issue_created=None) keeps analyse() pure for the test contract; gh_issue_created() resolves live with a global immutable cache, wired in gate() and both audit() passes. - _lift_eligible(): the coordinator trappe no longer opens for the PR author — otherwise voie 3 would be circumventable through the service door it just opened. The discarded override is NAMED in ignored_overrides (#13316 requirement). - advice line now matches reality: reponse explicite, thread inline resolu, ou issue de suivi nommee. Live controls: #13372 EXIT=0 (founding case, lifted via #13488), #11479 EXIT=0 (real pre-merge "Reporte sciemment sur #11058" now credited — previously forced a post-merge OVERRIDE), #10761 EXIT=1 (mute rebase still lifts nothing). Tests: 11 new (test_check_unaddressed_nits_followup.py), 205 existing green, full suite 3639 passed / 0 failed. Co-Authored-By: Claude-Code <noreply@anthropic.com> * fix(gate,#13495): reparer la PR test-only + durcir la voie 3 (self-ref, borne nommeur, isPullRequest) La branche reconstruite n'avait emporte que le fichier de tests : la suite CI echouait sur TypeError (analyse() sans parametre issue_created). Le rapatriement brut de l'implementation locale (dbf1442) etait interdit : sa base predatant main, son fichier entier aurait egalement retire les fixes #13559/_APPROVE_RESERVATION_RE, #13622/_LIFT_NEGATION et #13512 — les ajouts voie 3 sont donc reappliques sur le fichier main courant. Durcissements de la review c.705 (issuecomment jsboige 03:39Z) : - self-ref : le numero de la PR elle-meme n'est pas une issue de suivi (l'endpoint issues resout les PRs, mesure rc=0) — garde n == number. - borne nommeur (stance #13592, arbitrage po-2024) : un report ne compte que de l'auteur de la PR ou de l'auteur du nit — un bystander citant une issue ancienne n'a pas de lien semantique avec la reserve. - isPullReference dans gh_issue_created : tout numero de PR est ecarte, pas seulement le self-ref (classe elargie de la meme mesure). - trappe coordinateur fermee pour l'auteur de la PR, override ecarte NOMME dans ignored_overrides (#13316/#13495). Tests : +4 (self-ref, bystander, controle positif auteur-du-nit, run() parametre number). Suite : 279 verts module, 3753 passed / 0 failed repo. Co-Authored-By: Claude-Code <noreply@anthropic.com> --------- Co-authored-by: Claude-Code <noreply@anthropic.com>
Grain: MED/guard -- lane myia-po-2026:CoursIA -- prev: MED/tooling #13542
Sujet
check_unaddressed_nits.py: voie 3 de B.0 (issue de suivi nommee) sans detecteur + trou d'auto-levee coordinateur. See #13495.Contenu (2 fichiers)
scripts/check_unaddressed_nits.py: detecteur voie 3 (_ISSUE_REF+followup_issue_dates+ closure_followup_lifts_reservecablee aux 3 sites de levee), garde symetrique_lift_eligible(l'arbitre n'arbitre pas sa propre PR), refus NOMME dansignored_overrides, ligne de conseil sans « commit »,unevaluatedLe merge-gate est aveugle aux commentaires user d'une seule ligne — et certifie le silence dessus #13512 epure des commentaires de voie 3.scripts/tests/test_check_unaddressed_nits.py: 13 tests (fixtures fix(ci): trois gardes ne verifient jamais main — 27/30 et 26/30 runs annules par le merge suivant #13372-shape).Preuves
python -m pytest scripts/tests/test_check_unaddressed_nits.py -q: 221 passed (208 + 13 nouveaux).python -m pytest scripts/tests -q: 3670 passed, 30 skipped, 5 xfailed, 0 failed.blocked: falsesur patched ET sur main (des levees ulterieures par canaux existants) -- aucune regression.Mecanique voie 3 (bornee)
Un commentaire leve une reserve precedente si : (1)
can_lift(hygiene anti-bruit existante), (2) auteur = auteur de la reserve OU auteur de la PR (jamais un bystander), (3) il nomme#N!= numero de la PR, (4) l'issue EXISTE etcreatedAt < cutoff(fail-closed : absente du fetch = ne leve rien). Sur un BLOCAGE (#13083), l'auteur de la PR ne peut PAS differer le blocage d'un tiers (allow_pr_author=False).Garde symetrique
_lift_eligible: l'override[OVERRIDE] laned'un compte coordinateur sur SA PROPRE PR est desormais refuse (auto-levee avec le costume de l'arbitre, instance #13372). Le refus est NOMME dansignored_overrides(symetrie #13316 : un rouge « malgre notre override » doit dire pourquoi).Co-Authored-By: Claude-Code noreply@anthropic.com