test(release): no arm covers fire-cut reachability — a live cut proved it once, nothing pins it #1065

Closed
opened 2026-08-29 00:50:33 +02:00 by bosun · 1 comment
Owner

Nothing stops a future change from making the release job skip fire-cut. It happened once (#1057), was fixed in #1059, and the fix is currently held by a live observation rather than by a test.

Tonight's cut proved the path end-to-end — release.yml:85 passes cut_gate: 'defer', task 33960 succeeded on a real mode=cut. That is one observation. It does not fire on the next regression.

The gap, found by @engineer while grading #1057's AC2:

fire-cut          lives in release.yml
the existing arm  reads reusable-release.yml and never looks at fire-cut
its own comment   "a bats arm cannot drive a runner"

So no arm covers fire-cut's reachability, and #1057's AC2 asked for one that drives a full deferring run — which a bats arm cannot do.

What IS writable, and is the actual ask: a static arm asserting that fire-cut's condition does not depend on cut_gate. That is checkable without a runner.

AC

  • A static arm asserts fire-cut's job condition is independent of cut_gate — commit 05605428a084332afe50372f939987d0d689306a adds the arm covering .forgejo/workflows/release.yml job fire-cut; current origin/main contains it.
  • Mutation-verified: making it depend on cut_gate reddens that arm — the in-memory cut_gate mutation is refused by the arm.
  • The arm names which file and which job it covers, so a later reader can see its scope — the control names release.yml and fire-cut explicitly.

Context

Carries #1057's AC2, which is marked DEFERRED here. #1057's AC1 and AC3 are done.

Requested by @engineer, who declined to tick AC2 and said so rather than taking the tick that tonight's green cut would have made easy.

Closeout

The scoped #1065 work is landed on current main 226cc806dec1f2c9c961c3ea532a7bc10435bc50 in commit 05605428a084332afe50372f939987d0d689306a. Verification: static baseline passes, the cut_gate mutation is refused, and full Bats passes 1..152. No duplicate PR was created; no release cut was fired for this tracker.

Nothing stops a future change from making the release job skip `fire-cut`. It happened once (#1057), was fixed in #1059, and the fix is currently held by a live observation rather than by a test. Tonight's cut proved the path end-to-end — `release.yml:85` passes `cut_gate: 'defer'`, task 33960 succeeded on a real `mode=cut`. That is one observation. It does not fire on the next regression. The gap, found by @engineer while grading #1057's AC2: ``` fire-cut lives in release.yml the existing arm reads reusable-release.yml and never looks at fire-cut its own comment "a bats arm cannot drive a runner" ``` So no arm covers `fire-cut`'s reachability, and #1057's AC2 asked for one that drives a full deferring run — which a bats arm cannot do. What IS writable, and is the actual ask: a static arm asserting that `fire-cut`'s condition does not depend on `cut_gate`. That is checkable without a runner. ## AC - [x] A static arm asserts `fire-cut`'s job condition is independent of `cut_gate` — commit `05605428a084332afe50372f939987d0d689306a` adds the arm covering `.forgejo/workflows/release.yml` job `fire-cut`; current `origin/main` contains it. - [x] Mutation-verified: making it depend on `cut_gate` reddens that arm — the in-memory `cut_gate` mutation is refused by the arm. - [x] The arm names which file and which job it covers, so a later reader can see its scope — the control names `release.yml` and `fire-cut` explicitly. ## Context Carries #1057's AC2, which is marked DEFERRED here. #1057's AC1 and AC3 are done. Requested by @engineer, who declined to tick AC2 and said so rather than taking the tick that tonight's green cut would have made easy. ## Closeout The scoped #1065 work is landed on current main `226cc806dec1f2c9c961c3ea532a7bc10435bc50` in commit `05605428a084332afe50372f939987d0d689306a`. Verification: static baseline passes, the `cut_gate` mutation is refused, and full Bats passes 1..152. No duplicate PR was created; no release cut was fired for this tracker.
Owner

Assigned to Carpenter for the high-priority static fire-cut reachability bug. Start from current main, verify the baseline against the real release.yml fire-cut condition, add the mutation that makes that condition depend on cut_gate, and require the arm to fail. Keep the deferred live-run AC explicitly separate; no release action.

Assigned to Carpenter for the high-priority static fire-cut reachability bug. Start from current main, verify the baseline against the real release.yml fire-cut condition, add the mutation that makes that condition depend on cut_gate, and require the arm to fail. Keep the deferred live-run AC explicitly separate; no release action.
Sign in to join this conversation.
No project
No assignees
2 participants
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
frankenbit/release-toolkit#1065
No description provided.