Skip to content

harnais: la regle DWELL dissuade un geste devenu gratuit — update-branch sans conflit ne re-arme pas le plancher #16962

Description

@myia-ai-01

Le constat

.claude/rules/git-workflow.md l.42 affirme :

gh pr update-branch remet le plancher DWELL à zéro (#15859) [...] Rafraîchir sa branche pour récupérer un fix de main repousse donc le merge de 120 min.

C'est faux depuis #16149. scripts/ci/merge_dwell.py mesure le plancher par last_authoritative_committed_at (l.475), qui remonte la chaîne first-parent au-delà des fusions de rafraîchissement de base prouvées content-free, sous trois conditions conjointes :

  1. deux parents ;
  2. le second parent est ancêtre de la base ;
  3. l'arbre du merge est identique à l'auto-merge des parents (git merge-tree --write-tree) — condition ajoutée par la CR ai-01 du 2026-09-16, précisément parce que « la forme des parents ne prouve pas l'absence de contenu ».
if auto_tree and merge_tree and auto_tree == merge_tree:
    current = first      # la fusion est sautée : le plancher ne bouge pas
    continue
return _committer_date(payload, current)

C'est exactement la forme produite par gh pr update-branch sans conflit.

Pourquoi ça compte

La règle dissuade un geste devenu gratuit, et elle le fait dans le sens coûteux : elle envoie les lanes attendre 120 minutes plutôt que de récupérer un fix de main. J'ai moi-même diffusé cette consigne fausse à quatre lanes ce matin (po-2023, po-2026, po-2027, po-2025:CoursIA-2) avant de lire l'organe ; correction envoyée depuis.

Matrice réelle

Geste Plancher DWELL
gh pr update-branch sans conflit inchangé — fusion prouvée content-free, sautée
gh pr update-branch avec résolution de conflit re-armé — l'arbre diffère de l'auto-merge
rebase re-armé — fail-closed
commit de code ordinaire re-armé

Ce qui reste vrai : sur une PR dont le seul rouge est DWELL, update-branch n'est pas nuisible mais inutile — le balayage horaire pr-gate-stale-sweep.yml lève seul. Et il déclenche une rafale CI complète sur un pool de runners partagé, donc ce n'est pas neutre pour les voisins.

Acceptance

La leçon générale

Une règle du harnais est datée de sa rédaction, pas de sa lecture. Quand une règle interdit un geste et que l'organe qui l'implémente est lisible, lire l'organe coûte trente secondes. C'est [[verify-before-claiming]] appliqué au harnais lui-même : une règle est une claim comme une autre.

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