Conversation
DecisionFormat-spec approvals count whatever commit they were cast on. Additionally, at least one non-author PMC approval must be on the head commit; that member is responsible for confirming nothing substantive changed since the earlier approvals. The head-commit approval counts toward the required three rather than being a fourth vote. StatusImplemented here: Options and criteriaCriteria: a rebase or typo fix must not force a re-vote; someone must still be accountable for the delta; the rule has to be expressible from the reviews API alone, under a fork-safe
Rejected, with the reason and when it was tried
Open questions
|
The format-spec vote gate only counted PMC approvals whose commit id was the PR head, so every rebase or typo fix sent all three voters back to re-approve. That is too onerous for a change the PMC has already read. Approvals now count whatever commit they were cast on, with one added condition: at least one non-author PMC approval must be on the latest commit. That member is vouching that nothing substantive has changed since the earlier approvals — and should ask for fresh votes instead of approving if it has. The confirming approval counts toward the three; it is not a fourth vote. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
d20e33c to
c071b9b
Compare
StatusRan a falsification pass over the assumptions this change rests on, against the GitHub docs plus ~300 recent PRs in this repo (76 of them force-pushed) and two repos that do have stale dismissal enabled. All four load-bearing claims held:
One correction to the "Not included" note in the description: the gate cannot detect the stale-dismissal setting itself. Also worth noting for the record: with dismissal off, a base-branch advance changes the effective diff without changing the head SHA, so a head-commit approval does not by itself prove anyone read the merged result. |
There was a problem hiding this comment.
✅ Gate recommendation: approve.
Carrying earlier PMC approvals while requiring one non-author PMC member to approve the current head is a coherent reduction in re-vote ceremony: the latest stance still wins, vetoes remain absolute, and the confirmer is accountable for the delta. Compared with requiring all three voters to reapprove every push, this matches the existing one-member discretion for trivial-change waivers without adding a fourth vote. The implementation preserves the trusted-base and fork authority boundary, fails closed if stale approvals are dismissed, and covers the new tally and verdict transitions.
Co-authored-by: Weston Pace <weston.pace@gmail.com>
The format-spec vote gate only counted a PMC approval if it was cast on the PR's head commit, so any push — a rebase, a typo fix, a reworded sentence — invalidated all three approvals and sent every voter back to re-approve. For a proposal the PMC has already read, that is more ceremony than it buys.
Approvals now count whatever commit they were cast on, with one added condition: at least one non-author PMC approval must be on the latest commit. That member is confirming that nothing substantive has changed since the earlier approvals, and should ask the other voters for fresh votes rather than approving if it has. The confirming approval counts toward the three; it is not a fourth vote. The gate's PR comment says as much, and now lists who approved the latest commit alongside the overall tally.
Vetoes, the 72-hour voting period, and the
format-waivedlabel are unchanged.Not included
GitHub's own "Dismiss stale pull request approvals when new commits are pushed" branch-protection setting would defeat this, since a dismissed approval stops counting as one. It is currently off for
main, so no admin change is needed — worth knowing before anyone turns it on.🤖 Generated with Claude Code