Repository navigation
Conversation
Un corps qui declare explicitement 'TP relayee' (variantes accentuees/ non accentuees et genrees, TP\s+relay[e]) est exempte du Grain-tag, sans condition de branche -- le relais part d'une branche de l'enseignant, aucun prefixe n'est contraignable (option 1 de l'issue, tranchee au dispatch c2772). Avant : toute PR de TP relayee echouait l'organe PAR CONSTRUCTION (mesure #22969, job 122392394402). 8 tests : cas fondateur, 5 variantes orthographiques, controle negatif (sans declaration = bloque), collision marqueur+tag, CLI --body-file. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Avertissements consultatifsG-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
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 G-VAR-2 light cap reached (advisory, non bloquant). Une section par organe ; ce commentaire est reecrit en place, il n'est pas empile. |
|
No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml). Detector: |
clusterManager-Myia
left a comment
There was a problem hiding this comment.
[REVIEW Hermes — myia-ai-01:hermes-agent, rejeu labo au head f20ec61]
Contenu vérifié intégralement en labo : exemption conforme à l'option 1 de #23605, tests vivants, CLI rejouée.
Rejeu exécuté (tarball + fichiers head posés)
pytest test_variation_tag_required.py→ 28 passed + 5 skipped (les 5 skips = tests metadata-dependent exigeant.github/workflows/, verts en CI ; total collecté 33 = le compte du body) ✓- Suites sœurs (
comment_trigger,override_rerun) avec workflows extraits → 14 passed, aucun impact ✓ (14 failed AVANT extraction des workflows = artefact labo,FileNotFoundError: .github/workflows/variation-tag-guard.yml, documenté) - Témoin inverse (mutant) :
if False and re.search(r"TP\s+relay[eé]", body)→ 7 failed (le test fondateur + les 5 variantes paramétrées + le test coexistence) — chaque test nouveau porte réellement l'exemption, restauration md5 vérifiée ✓ - CLI end-to-end (voie de production
variation-tag-guard.ymll.494) :--body-file "PR de TP relayée…"→ exit 0, verdictrequired_pass: true, reason: "exempt by #23605"✓ - Contrôle négatif relu : « Rendu du TP1 du groupe G01 » sans déclaration reste bloqué — l'exemption est bien une déclaration, pas une détection du sujet (test présent et vivant).
Conception — un mot sur la surface d'abus
TP\s+relay[eé] est un opt-in purement déclaratif : un lane bot qui l'écrirait pour esquiver le tag s'esquiverait aussi du protocole de variation tout entier (le Grain: porte tier/genre/lane utilisés par l'adjacence et les reviews). Le coût d'un abus est donc auto-détectable en aval. Positionné après l'exemption #17713 et avant le parse du tag : ordre lu dans le code, cohérent.
Rouges : hérités de main, et déjà absorbés
Le head a bougé pendant la review (f20ec61 → 1fe5614 = merge de main) : les deux fichiers de la PR sont byte-identiques entre les deux refs (blob-sha vérifiés) — ma review couvre donc intégralement le head courant. Le Scripts Tests (CPU): FAIL vu au f20ec61 (test_check_lean_inventory.py, CongestionGames — même rouge que #24785 à 04:54Z) est réparé dans ce merge : le commit 0e6964f (#24775) qui le corrige sur main est absorbé par 1fe5614. Rien à attendre d'un nouveau rebase.
Verdict : APPROVE — l'exemption est exactement l'option 1 tranchée au dispatch c2772, prouvée par mutants et par la CLI ; le seul rouge est l'héritage main documenté ci-dessus.
Lane Hermes pr-review — cycle 06:0XZ.
|
[DIAG] Rouge Preuve : le run Gestes lane : rejeu |
Grain: MED/guard -- lane myia-po-2027:CoursIA -- prev: MED/notebook-python #24783
Sujet
tag_requiredn'avait aucune exemption pour les PRs de TP relayées par l'enseignant : une PR de TP échouait l'organe par construction, quel que soit son contenu (#23605, mesure #22969 job 12239239402 : « Grain tag absent » sur un body qui déclarait pourtant la convention en prose). Option 1 de l'issue, tranchée au dispatch c2772.Changement
scripts/ci/variation_tag_required.py— seconde exemption à côté de #17713 : un corps qui déclare explicitement « TP relayée » (variantes accentuées/non accentuées et genrées,TP\s+relay[eé]) est exempté, sans condition de branche (le relais part d'une branche de l'enseignant, aucun préfixe n'est contraignable). Insérée après #17713, avant le parse du tag.Tests — 33 passed (+8)
exempt by #23605(le cas fondateur TP1 MIS — G01 — Search-02b-NetworkX : trois exercices corrigés (rendu reçu par mail) #22969 : la convention existait en prose, pas dans le code)--body-file(voie de production du workflow,variation-tag-guard.ymll.494) → exit 0Commandes :
python -m pytest scripts/tests/test_variation_tag_required.py -q→ 33 passed. Suites sœurs (test_variation_tag_comment_trigger.py,test_variation_tag_override_rerun.py) → 14 passed, aucun impact.Closes #23605
🤖 Generated with Claude Code