Skip to content

Fix(translation,#20232): chaque organe nomme l'autre -- cliquet <-> garde - #21395

Open
jsboige wants to merge 2 commits into
mainfrom
fix/20232-organs-name-each-other
Open

jsboige wants to merge 2 commits into
mainfrom
fix/20232-organs-name-each-other

Conversation

@jsboige

@jsboige jsboige commented Oct 19, 2026

Copy link
Copy Markdown
Owner

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

Fichier Édition
scripts/translation/tests/test_hot_subset_ratchet.py docstring + message d'échec : la resync per-cell exigée modifie translations/**, que translation-guard.yml refuse à un auteur non-bot → renvoi au double-clé (label translation-override + marqueur [TRANSLATION-OVERRIDE] <motif>, #10332), avec la précision que translation-sync.yml est en hold (#15198/#10038)
.github/workflows/translation-guard.yml annotation de l'étape override : nomme le cliquet test_hot_subset_ratchet.py (#13551) comme organe de contrepartie ; le résumé d'échec (« How to fix ») porte la même phrase

Aucun 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)

$ python -c "import yaml; yaml.safe_load('.github/workflows/translation-guard.yml')"
YAML OK, jobs: ['guard']

$ python -m pytest scripts/translation/tests/test_hot_subset_ratchet.py -q
2 passed in 7.74s

Statut variation

variation_light_cap.py --genre-signals : genre docs, 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

…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>
@github-actions

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 added the variation-light-cap-reached Lane ayant deja merge une LIGHT aujourd'hui (cap G-VAR-2 atteint) label Oct 19, 2026
@github-actions

Copy link
Copy Markdown
Contributor

G-VAR-2 light cap reached (advisory, non bloquant).
La lane myia-po-2023:CoursIA-2 a deja consomme son budget LIGHT du jour (#21366 (merge a 2026-10-19T07:14:01Z)).
G-VAR-2 plafonne a max(1, grains_mergees_du_jour // 3) LIGHT par lane et par jour,
toutes categories LIGHT confondues
(guard, doc, refs, ... partagent un seul budget) :
c'est un RATIO, pas un plafond plat. La decision de merge reste au coordinateur.

@github-actions github-actions Bot added the variation-genre-cap-exceeded light_genre > cap partage G-VAR-2 (#10020, advisory) label Oct 19, 2026
@github-actions

Copy link
Copy Markdown
Contributor

G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
La lane `myia-po-2023:CoursIA-2` voit ces signaux actifs sur les mergees du jour (UTC 2026-10-19) :

  • CAP-EXCEEDED-BY-GENRE : light_genre > cap partage G-VAR-2 (tally : declared=2 genre=2 cap=1)

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 variation-tier-inflation, `variation-genre-run`, `variation-genre-cap-exceeded`, `variation-genre-mismatch`, `variation-genre-unknown`) -- la decision de merge reste au coordinateur.

@github-actions github-actions Bot added the trivial-diff-advisory Diff trivial : grain META mecanique sans fournee ni exception ecrite (#15740) label Oct 19, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Trivial-diff advisory (#15740, non bloquant).
genre docs dans la famille META (docs/guard/ledger/readme/test) + diff de 21 lignes changees (<= 100) + aucune exception ecrite dans le body : le litmus de la trivialite (une douzaine d'instances scannees a la suite) est credible. Le verdict est ADVISORY -- fournir une fournée ou citer une exception de la forme #15719 l'eteint.
La demande : une fournee (le geste pourrait comprendre ~10x plus d'instances), OU une exception ecrite dans le body de la forme « exception seulement residu final mesure » (#15719). Editer le body re-deroule cet organe et retire le label.

@github-actions

github-actions Bot commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359) — résolue

La collision de chemins signalée sur #21395 n'existe plus au passage du 2026-10-23T12:54Z : aucune autre PR ouverte ne partage désormais de chemin de fichier avec elle. Note laissée en place de l'avertissement (retraction non destructive).

@github-actions github-actions Bot added the variation-tier-inflation declared LIGHT << effective LIGHT-genre (#10020, advisory) label Oct 20, 2026

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

[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 -q en 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'], et bash -n sur les 5 blocs run: 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 branch tous success (le dernier validant précisément que cette PR ne touche pas translations/**). 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]

This branch has not been deployed

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

Labels

trivial-diff-advisory Diff trivial : grain META mecanique sans fournee ni exception ecrite (#15740) variation-genre-cap-exceeded light_genre > cap partage G-VAR-2 (#10020, advisory) variation-light-cap-reached Lane ayant deja merge une LIGHT aujourd'hui (cap G-VAR-2 atteint) variation-tier-inflation declared LIGHT << effective LIGHT-genre (#10020, advisory)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants