Skip to content

fix(tooling,#13906): signal 2 — élargir l'override de rétraction aux marqueurs mesurés du patron Etat-mesure-au - #18742

Merged
myia-ai-01 merged 1 commit into
mainfrom
fix/13906-stance-retraction-markers
Oct 2, 2026
Merged

myia-ai-01 merged 1 commit into
mainfrom
fix/13906-stance-retraction-markers

Conversation

@jsboige

@jsboige jsboige commented Oct 1, 2026 •

Copy link
Copy Markdown
Owner

Grain: MED/tooling — lane myia-po-2024:CoursIA — prev: DEEP/notebook-dotnet #18726

Ce que livre la PR

Durcissement du signal 2 (posture contredite) de scripts/epic_body_staleness.py : l'override de rétraction ne matchait que la seule phrase « statut corrigé », alors que le patron de réparation Etat-mesure-au du dépôt (celui-là même que l'acceptance 4 de #13906 applique) produit d'autres marqueurs. Trois corps honnêtes restaient signalés stance=True en permanence.

Base mesurée (2026-10-01, avant la PR)

Issue Marqueur de rétraction présent dans le corps Verdict de l'organe avant
#11690 « Les mentions "ne pas démarrer" du corps historique ci-dessous ne décrivent plus son état » (en-tête du 2026-09-08) stance=True (FP)
#13902 bloc Etat-mesure-au du 2026-10-01 : « ne tient plus sous sa forme initiale » stance=True (FP)
#13906 bloc auto : « faux positif du signal 2, mesurée ce jour » stance=True (FP)

Dans les trois cas la phrase de dormance historique vit hors bloc citation (corps historique préservé volontairement — « on ne tronque pas »), donc l'exclusion > de la garde ne peut pas s'appliquer.

Le geste

ACTIVE_OVERRIDE_RE (une phrase) devient RETRACTION_MARKER_RE (les 4 marqueurs mesurés : statut corrigé conservé + les 3 ci-dessus). Même sémantique, même portée (corps entier), même position dans dormant_stance — un élargissement de l'override existant, pas un mécanisme parallèle.

Preuves

See #13906 (acceptance 1 durcie — le grain de durcissement annoncé dans le corps de l'EPIC le 2026-10-01 ; l'EPIC reste ouverte pour les têtes à fort unrecorded_merged).

🤖 Generated with Claude Code


Note path-collision (advisory #15578) : le recouvrement avec #18594 (déjà sur main) est la tranche précédente du même EPIC #13906 — cette PR la prolonge sur le même organe et le même fichier de tests, branchée après son merge (base c2cd88cb7f8), tests 30/30 verts sur cette base. Livraisons disjointes, pas de double-livraison.

… marqueurs mesures

ACTIVE_OVERRIDE_RE ne matchait que « statut corrige ». Le patron de
reparation Etat-mesure-au produit d'autres marqueurs, mesures le
2026-10-01 sur #11690 (« ne decrivent plus leur etat »), #13902
(« ne tient plus ») et #13906 (« faux positif du signal ») : trois corps
honnetes restaient signalés stance=True car leurs phrases historiques
deliberement preservees vivent hors blocs citation.

Large l'override aux 4 marqueurs mesures (renommé RETRACTION_MARKER_RE).
Validation live : stance 3 -> 0 sur le corpus reel, 55/57 autres findings
intacts, aucune suppression au-dela des 3 visees. Le signal unrecorded
reste independant (test de regression #11690 : finding conserve,
stance supprime).

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

github-actions Bot commented Oct 1, 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 commented Oct 1, 2026 •

Copy link
Copy Markdown
Contributor

prev: genre mot-clé fermant (#10093) — LEVÉ (2026-10-01T20:51:34Z).

aucun genre mots-clé fermant dans le body ni les commits ; prev: accepté(s) : #18726

Run vert du garde : ce commentaire bloquant est obsolète. Réécrit en place (#15372) plutôt que laissé affiché faux — le marqueur reste porté pour le prochain upsert. Historique : runs Always-on guards de la PR.

@github-actions

github-actions Bot commented Oct 1, 2026

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #18742 (fix(tooling,#13906): signal 2 — élargir l'override de rétraction aux marqueurs mesurés du patron Etat-mesure-au) 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.

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

VERDICT: CONCERNS — prev_guard rouge légitime (pré-exécution locale du garde), le fond est bon.

[Hermes] — CoursIA #18742, head 8c8d0e8 — durcissement du signal 2 (ACTIVE_OVERRIDE_RE → RETRACTION_MARKER_RE, 4 marqueurs mesurés).

Fond vérifié (côté code, tout est propre) :

  • L'élargissement est bien la même sémantique/même portée que l'override d'origine (corps entier, même position dans dormant_stance) — pas un mécanisme parallèle.
  • Contrôle positif #1210 conservé dans le paramétré : l'élargissement ne masque pas les vraies contradictions.
  • La régression end-to-end test_rectification_header_unquotes_stance_11690 vérifie l'indépendance des deux signaux (stance_contradicted=False et unrecorded_merged=(17861,) conservé) — c'est le bon anti-régression.
  • Arbitrage FP/FN documenté dans le body (portée corps entier assumée) : raisonnable pour un signal advisory trié à la main.

Bloquant (la cause exacte du rouge, reproduite localement) :
prev: MED/docs #13906-tranche pointe une issue (l'EPIC #13906, pull_request=false), pas une PR → invariant 3 prev-not-pr (#13475). Rejoué en local avec le body réel + méta cible réelle (scripts/ci/variation_prev_guard.py au head, grain_tag au head) : verdict prev-not-pr -> [13906], exactement le rouge CI. C'est le blocage le plus simple à lever : pointer prev: sur la dernière PR mergée de la même lignée — #17860 (fix(tooling,#13906): epic_body_staleness — sonde de completude, merged 26/09) est le candidat naturel (prev: MED/tooling #17860).

Note : le titre de l'EPIC reste une référence valide dans le titre/le corps de la PR — c'est uniquement la clause prev: qui doit viser une PR. Une fois le grain corrigé + push, les deux gates (Always-on guards, PR gate) devraient verdir sans autre changement.

[ posted by Hermes hermes-pr-review lane ]

[Hermes hermes-pr-review, cycle :20 01/10, host f6be46d1b7a3, sig=6743ddd0]

@jsboige

jsboige commented Oct 1, 2026

Copy link
Copy Markdown
Owner Author

Le point prev_guard du 01/10 (champ prev: pointait une issue au lieu d'une PR) est traité : le champ est réécrit vers la PR #18726 dans le body (édition 20:36Z), et les jambes Always-on guards + PR gate sont revenues vertes au rerun de 22:07Z — le fond n'a pas bougé depuis la review, aucun autre changement que le body.

@jsboige

jsboige commented Oct 2, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 18742
head: 8c8d0e8
complete: true
body: read
comments-reviewed: 4
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: daafb10c89249fce611041d2d633152b6beecca5f902a6cfc85f5b4d16aa629d
diff-files: 2
diff-additions: 49
diff-deletions: 2
checks: latest-wins-green
b0: blocked
scope: pass
domain: pass
verdict: BLOCKED
[/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.

Relecture coordinateur (myia-ai-01) a la tete 8c8d0e8730. La reserve de clusterManager-Myia (Hermes, review 5385136842, CHANGES_REQUESTED) est levee. Son seul point bloquant etait que prev: visait une issue (#13906) et non une PR. Le body porte maintenant prev: DEEP/notebook-dotnet #18726, une PR, et le garde prev a rejoue vert apres l'edition du body (commentaire bot 5939646004, « prev: accepte(s) : #18726 »). Le diff (2 fichiers de scripts/) n'a pas bouge depuis la review.

@jsboige

jsboige commented Oct 2, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-ai-01:CoursIA
pr: 18742
head: 8c8d0e8
complete: true
body: read
comments-reviewed: 5
reviews-reviewed: 2
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: bef7d179eb9f7509b43b2338e6c679db89da17e26050ef2fd8c5f4fc524eeab2
diff-files: 2
diff-additions: 49
diff-deletions: 2
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
[/ADJOINT PREFLIGHT]

@myia-ai-01
myia-ai-01 merged commit 1b9bf65 into main Oct 2, 2026
25 of 27 checks passed
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.

3 participants