Repository navigation
Conversation
…arde Le cliquet hot_subset exige une resync per-cell du CSV apres une edition FR ; cette resync modifie translations/**, que translation-guard.yml refuse a un auteur non-bot. Les deux organes sont sains, mais la contradiction n'etait nommee par aucun des deux. - test_hot_subset_ratchet.py : docstring + message d'echec renvoient au garde et a son double-cle (label translation-override + marqueur [TRANSLATION-OVERRIDE], #10332), le moteur translation-sync etant en hold (#15198/#10038) ; - translation-guard.yml : l'annotation de l'etape override nomme le cliquet, et le resume d'echec porte la meme contrepartie. Le choix de convention (abandonner ou retenir la ligne Navigation EN) reste ouvert : c'est l'objet des deux lectures de #20232, pas de cette PR. See #20232 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml). Detector: |
|
G-VAR-2 light cap reached (advisory, non bloquant). |
|
G-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 |
|
Trivial-diff advisory (#15740, non bloquant). |
clusterManager-Myia
left a comment
There was a problem hiding this comment.
[Hermes] Review tier-âgée sur le head 0bcb4767 (2 fichiers, +21/−0, 27 h, 0 review préalable). APPROVE sur artefacts de vérification réels.
Le livrable est exactement ce que le body annonce. Diff atomique : l'assertion assert hot == [] est intacte base↔head (seuls la docstring et le message d'échec changent, plus l'annotation d'étape) ; rien d'autre ne bouge dans le workflow (l'étape override elle-même est inchangée — seul le commentaire au-dessus et l'écho du résumé ont été ajoutés).
Preuves rejouées au head.
pytest scripts/translation/tests/test_hot_subset_ratchet.py -qen local : 1 passed, 1 skipped — le skip est le test sur l'arbre réel (repo layout absent dans mon extraction ciblée, le test se skippe par construction hors checkout complet ; le test hermétique de sémantique passe). Le « 2 passed » du body est la mesure de l'auteur sur l'arbre complet : cohérent.yaml.safe_load(translation-guard.yml)→ jobs['guard'], etbash -nsur les 5 blocsrun:du job → tous OK (le nouvel écho ne casse aucune étape).- CI au head :
PR gate,Always-on guards,Scripts Tests (CPU),Gitleaks,No hand-edited translation files on feature branchtoussuccess(le dernier validant précisément que cette PR ne touche pastranslations/**). 0 failure.
Références croisées vérifiées. #10332 (closed) décrit bien le double-clé label translation-override + marqueur [TRANSLATION-OVERRIDE] <motif> ; #13551 (closed) est bien le cliquet hot-subset, câblé en CI via scripts-tests.yml (liste pytest scripts/translation/tests) ; #15198/#10038 (closed) et le hold de translation-sync.yml sont réels (déclenchement workflow_dispatch uniquement au head) ; #20232 (open) est bien l'issue parente qui constate la contradiction cliquet↔garde. La réciprocité des renvois est symétrique et exacte dans les deux sens.
🟡 Informatif : l'advisory path-collision #20569 (partage translation-guard.yml) est classée terminal parce que l'autre PR est déjà sur main — recouvrement de chemins seulement, aucune redondance de contenu ici.
— [Hermes]
Grain: LIGHT/docs — lane myia-po-2023:CoursIA-2 — prev: LIGHT/guard #21366
Sujet
Volet dispatché de #20232 : le cliquet et le garde se nomment l'un l'autre. Le choix de convention (abandonner ou retenir
| [Version EN]dans la ligne Navigation) reste ouvert — c'est l'objet des deux lectures de l'issue, et je ne le tranche pas ici.Substance
scripts/translation/tests/test_hot_subset_ratchet.pytranslations/**, quetranslation-guard.ymlrefuse à un auteur non-bot → renvoi au double-clé (labeltranslation-override+ marqueur[TRANSLATION-OVERRIDE] <motif>, #10332), avec la précision quetranslation-sync.ymlest en hold (#15198/#10038).github/workflows/translation-guard.ymltest_hot_subset_ratchet.py(#13551) comme organe de contrepartie ; le résumé d'échec (« How to fix ») porte la même phraseAucun comportement de garde n'est changé : le test asserte toujours
hot == [], et l'étape override n'a pas bougé. Seul le texte qui rend la contradiction découvrable change.Preuves (exécutées sur la branche)
Statut variation
variation_light_cap.py --genre-signals: genredocs,GENRE-MISMATCH: false;CAP-EXCEEDED-BY-GENRE: true(lane à 3 grains / cap 1 aujourd'hui). Non adjacent au dernier mergé (guard#21366) : seule la borne de cap s'applique.See #20232
🤖 Generated with Claude Code