test(release): guard fire-cut reachability condition #1085

Merged
pullings merged 1 commit from i/1065-fire-cut into main 2026-08-30 01:26:54 +02:00
Owner

Refs #1065

Add a static guard for the fire-cut job in .forgejo/workflows/release.yml.

The arm checks that jobs.fire-cut.if gates on needs.release.outputs.mode == 'cut' and contains no cut_gate dependency. Its mutation control adds && inputs.cut_gate == 'execute' and requires the same predicate to fail. The control names the exact file and job scope.

This is deliberately a static reachability guard. It does not claim that a real runner reaches or completes the dispatched release-cut.yml; that live-run boundary remains deferred with #1057 AC2. No release action was fired.

Verification:

  • bats --print-output-on-failure tests/workflows.bats -f '#1065' -> 1..1, pass; the mutation is refused.
  • bats --print-output-on-failure tests/ -> 1..157, all pass.
  • go build ./..., go vet ./..., and go test ./... -> pass.
  • go run ./cmd/rt fragment-check changelog.d -> density PASS.
  • PyYAML parse -> YAML parsed: 22 workflow files; git diff --check -> pass.

The repository-wide ShellCheck invocation still reports the pre-existing SC2016 info in scripts/contract-paths-check.sh; this PR changes no shell script.

Refs #1065 Add a static guard for the `fire-cut` job in `.forgejo/workflows/release.yml`. The arm checks that `jobs.fire-cut.if` gates on `needs.release.outputs.mode == 'cut'` and contains no `cut_gate` dependency. Its mutation control adds `&& inputs.cut_gate == 'execute'` and requires the same predicate to fail. The control names the exact file and job scope. This is deliberately a static reachability guard. It does not claim that a real runner reaches or completes the dispatched `release-cut.yml`; that live-run boundary remains deferred with #1057 AC2. No release action was fired. Verification: - `bats --print-output-on-failure tests/workflows.bats -f '#1065'` -> `1..1`, pass; the mutation is refused. - `bats --print-output-on-failure tests/` -> `1..157`, all pass. - `go build ./...`, `go vet ./...`, and `go test ./...` -> pass. - `go run ./cmd/rt fragment-check changelog.d` -> density PASS. - PyYAML parse -> `YAML parsed: 22 workflow files`; `git diff --check` -> pass. The repository-wide ShellCheck invocation still reports the pre-existing SC2016 info in `scripts/contract-paths-check.sh`; this PR changes no shell script.
test(release): guard fire-cut condition
All checks were successful
ac-closure-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 16s
changelog-body-check / changelog body Cold-Read linter (pull_request) Successful in 6s
changelog-body-check / check (pull_request) Successful in 0s
fragment-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 4s
check-self-bootstrap / check (pull_request) Successful in 16s
fragment-check / changelog fragment-kind (pull_request) Successful in 6s
fragment-check / check (pull_request) Successful in 0s
manifest-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 4s
manifest-check / manifest-vs-tag consistency (pull_request) Successful in 6s
manifest-check / check (pull_request) Successful in 0s
register-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 4s
register-check / register-drift check (pull_request) Successful in 8s
register-check / check (pull_request) Successful in 0s
tests / workflow-schema (pull_request) Successful in 5s
go-ci / lint + build + test (pull_request) Successful in 53s
tests / bats (pull_request) Successful in 18s
tests / shellcheck (pull_request) Successful in 3s
workflow-parse-check / toolkit-self parse guard and controls (pull_request) Successful in 3s
workflow-parse-check / workflow parse and schema (pull_request) Successful in 4s
workflow-parse-check / check (pull_request) Successful in 0s
tests / dated-examples (pull_request) Successful in 25s
check-self-bootstrap / check (push) Successful in 17s
go-ci / lint + build + test (push) Successful in 24s
tests / workflow-schema (push) Successful in 3s
tests / bats (push) Successful in 18s
tests / dated-examples (push) Successful in 4s
tests / shellcheck (push) Successful in 3s
release / decide + act (push) Successful in 43s
release / release (push) Successful in 0s
release / fire-cut (push) Has been skipped
05605428a0
sentry approved these changes 2026-08-30 01:25:42 +02:00
sentry left a comment

Exact-head review: APPROVED. The static arm names release.yml and jobs.fire-cut.if, verifies the mode=cut condition is independent of cut_gate, and its mutation appending a cut_gate dependency reddens the arm. The explicit separation from #1057 AC2 is correct: this test does not claim that a live runner dispatch reaches or completes release-cut.yml. Targeted Bats, YAML parsing, and diff checks pass; Forgejo CI is terminal 25/25.

Exact-head review: APPROVED. The static arm names release.yml and jobs.fire-cut.if, verifies the mode=cut condition is independent of cut_gate, and its mutation appending a cut_gate dependency reddens the arm. The explicit separation from #1057 AC2 is correct: this test does not claim that a live runner dispatch reaches or completes release-cut.yml. Targeted Bats, YAML parsing, and diff checks pass; Forgejo CI is terminal 25/25.
sentry approved these changes 2026-08-30 01:26:26 +02:00
sentry left a comment

Exact-head review: APPROVED. The static arm names release.yml and jobs.fire-cut.if, verifies the mode=cut condition is independent of cut_gate, and its mutation appending a cut_gate dependency reddens the arm. The explicit separation from #1057 AC2 is correct: this test does not claim that a live runner dispatch reaches or completes release-cut.yml. Targeted Bats, YAML parsing, and diff checks pass; Forgejo CI is terminal 25/25.

Exact-head review: APPROVED. The static arm names release.yml and jobs.fire-cut.if, verifies the mode=cut condition is independent of cut_gate, and its mutation appending a cut_gate dependency reddens the arm. The explicit separation from #1057 AC2 is correct: this test does not claim that a live runner dispatch reaches or completes release-cut.yml. Targeted Bats, YAML parsing, and diff checks pass; Forgejo CI is terminal 25/25.
pullings deleted branch i/1065-fire-cut 2026-08-30 01:26:54 +02:00
Sign in to join this conversation.
No description provided.