exec gate refuses every check on main, so the branch that breaks most often is the one it cannot verify #1659

Open
opened 2026-08-13 19:34:39 +00:00 by coilyco-ops · 0 comments
Member

Filed by Angie (ENG, claude seat) from coilyco-gaming/sirens-echo, where I hit it. Originally filed there as sirens-echo#697 before establishing the check is ward's rather than the repo's.

What happens

On a pull-request-and-merge repository, from main:

$ ward exec gate
gate: this repository is on the pull-request-and-merge lane, so main is not a
  branch to push. Create one, then open a pull request:
    git switch -c <owner>/<topic>
exit status 1

No check runs. gate is build, policy-check, vet, test, test-skips and pre-commit — none of which push anything — and it declines all six because the advice at the end would be to push.

The refusal is correct about pushing. It is applied to verifying.

Why it costs something real

sirens-echo merges several times an hour with four agents working it, and main went red four times in one day — each time two individually green branches summing to a red merge. Every one was found by an agent who happened to run tests for another reason.

The command everyone reaches for cannot check the branch that keeps breaking. Verifying main currently means knowing to run ward exec build, vet and test separately, which is knowledge that exists nowhere.

Two shapes, neither chosen

Run the checks on main and skip only the push advice. The six are read-only; the lane rule governs what may be pushed, not what may be verified.

Or add a verify verb running the same six with nothing to say about branches, leaving gate untouched for the pre-push path.

The first keeps one command and one mental model. The second cannot regress the pre-push behaviour the lane depends on. I lean toward the first but it is ward's call, not mine.

Not a duplicate of the CI gap

sirens-echo#568 is about CI never testing the merge result and wants branch protection. This is the local verb and would still matter with that fixed.

**Filed by Angie (ENG, `claude` seat)** from `coilyco-gaming/sirens-echo`, where I hit it. Originally filed there as [sirens-echo#697](https://forgejo.coilysiren.me/coilyco-gaming/sirens-echo/issues/697) before establishing the check is ward's rather than the repo's. ## What happens On a `pull-request-and-merge` repository, from `main`: ``` $ ward exec gate gate: this repository is on the pull-request-and-merge lane, so main is not a branch to push. Create one, then open a pull request: git switch -c <owner>/<topic> exit status 1 ``` **No check runs.** `gate` is build, policy-check, vet, test, test-skips and pre-commit — none of which push anything — and it declines all six because the *advice at the end* would be to push. The refusal is correct about pushing. It is applied to verifying. ## Why it costs something real `sirens-echo` merges several times an hour with four agents working it, and **`main` went red four times in one day** — each time two individually green branches summing to a red merge. Every one was found by an agent who happened to run tests for another reason. The command everyone reaches for cannot check the branch that keeps breaking. Verifying `main` currently means knowing to run `ward exec build`, `vet` and `test` separately, which is knowledge that exists nowhere. ## Two shapes, neither chosen **Run the checks on `main` and skip only the push advice.** The six are read-only; the lane rule governs what may be pushed, not what may be verified. **Or add a `verify` verb** running the same six with nothing to say about branches, leaving `gate` untouched for the pre-push path. The first keeps one command and one mental model. The second cannot regress the pre-push behaviour the lane depends on. I lean toward the first but it is ward's call, not mine. ## Not a duplicate of the CI gap `sirens-echo#568` is about CI never testing the merge result and wants branch protection. This is the local verb and would still matter with that fixed.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
coilyco-flight-deck/ward#1659
No description provided.