Skip to content

G-VAR-3 : l'organe bloque un MED/guard que la regle autorise (deux overrides le meme jour pour la meme cause) #14376

Description

@myia-ai-01

variation-protocol.md §3 et variation_light_cap.py ne disent pas la meme chose sur un MED/guard consecutif a un LIGHT/guard. La regle laisse passer, l'organe bloque -- et c'est l'organe qui decide.

Les deux textes

La regle (.claude/rules/variation-protocol.md, G-VAR-3) :

Ban absolu sur les genres LIGHT (guard · ledger · docs · readme · test) : bloque des 2. Pour un genre DEEP ou MED dans le domaine-coeur d'une lane specialiste, deux consecutifs sont autorises si chacun est une substance genuinement distincte [...] Tell decisif : le litmus LIGHT -- generable en scannant l'instance d'a-cote -> bloque meme sous une etiquette DEEP.

Deux phrases qui se contredisent sur le cas MED/guard : la premiere l'interdit par le NOM du genre, la seconde l'autorise par le LITMUS. Le tell explicite (« bloque meme sous une etiquette DEEP ») ne serait pas ecrit si le nom du genre suffisait -- il n'a de sens que si le tier compte.

L'organe (scripts/variation_light_cap.py:591) tranche par le nom, sans regarder le tier :

LIGHT_GENRES = frozenset({"docs", "readme", "guard", "ledger", "test"})

Consequence : un MED/guard genuinement distinct est bloque comme un LIGHT/guard scan-generable, et la seule sortie est un [G-VAR-3 OVERRIDE] du coordinateur.

Ce que ca coute, mesure

Sur le cycle du 2026-09-02, la lane myia-po-2026:CoursIA a du escalader deux fois pour deux grains que la regle autorisait :

PR tag predecesseur reel verdict organe verdict litmus
#14330 MED/guard #13869 LIGHT/guard BLOQUE passe (+176/-3, differentiel sur 264 corps)
#14322 MED/guard #13869 LIGHT/guard bloquera au recalcul passe (classe de FP distincte)

Les deux ajoutent une position de detection a l'organe qui garde B.0 lui-meme. Le predecesseur, lui, est une correction de regex _LANE_RE -- generable en serie, LIGHT a juste titre. L'organe ne voit pas la difference.

Deux overrides poses le meme jour pour la meme cause n'est pas de l'arbitrage, c'est un symptome.

Le choix a faire est editorial, pas technique

Trois issues possibles, et aucune ne doit etre prise par une lane seule (tout ajout ou modification de .claude/rules/ passe par sign-off user, CLAUDE.md §A) :

  1. L'organe suit la regle : rendre is_light_genre tier-conscient -- un genre de LIGHT_GENRES declare DEEP/MED n'est plus soumis au ban absolu, seulement au litmus (qui reste, lui, non mecanisable et donc porte par le coordinateur au merge-gate).
  2. La regle suit l'organe : retirer la seconde phrase de G-VAR-3 et assumer que guard/ledger/docs/readme/test sont bannis en adjacence quel que soit le tier. L'override reste alors la voie nominale, et il faut l'ecrire comme telle plutot que comme une exception.
  3. Statu quo assume : garder l'ecart et documenter que l'override est le mecanisme attendu pour les lanes specialistes du harnais.

Ma preference, non decisoire : (1). L'attribut que la regle rend decisif est le litmus, et le litmus n'est pas le nom du genre -- c'est precisement ce que dit « bloque meme sous une etiquette DEEP ». Mais (1) affaiblit un garde, et affaiblir un garde se decide en haut, pas en passant.

Ce que ce ticket ne demande pas

Pas de retag des PRs concernees : le verdict de l'organe l'interdit lui-meme (« ne retaguez pas le meme travail »), et ce serait du blanchiment -- le travail EST un grain guard.

Constate en tranchant #14330 et #14322 le 2026-09-02.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions