feat(manifest-postcondition): persist verdict status #911

Merged
bosun merged 1 commit from rigger/747-durable-manifest-marker into main 2026-08-26 14:45:25 +02:00
Owner

Summary

Persist the manifest post-condition verdict as a durable Forgejo commit status on the cut SHA.

Marker contract

  • Context: release-toolkit/manifest-postcondition.
  • Description: manifest-postcondition verdict=landed|pr-open|fatal|ungraded.
  • State: success for landed/pr-open, failure for fatal, error for ungraded.
  • The marker is written before rt returns, including fatal and could-not-grade refusals.
  • A marker-write failure remains visible and exits 2 rather than claiming the evidence exists.
  • The status is attached to the cut SHA and can be read through the Forgejo statuses API after workflow logs expire.

Exact server lineage and scope

  • PR: #911
  • Server readback: base main @456ceb877a; head rigger/747-durable-manifest-marker @b651ba2239.
  • Live branches/main readback: 456ceb877a (40 hex characters).
  • Branch parent before main advanced: 32f4bfe49d.
  • No rebase: block_on_outdated_branch=false; the branch was opened against the base available at push time.
  • Changed files: 9.
  • No changes to #876, #852, or #862.
  • No review requested and no merge performed.

Verification

  • Live source probe: GET /api/v1/repos/frankenbit/release-toolkit/statuses/ returned 200; live Swagger defines POST /repos/{owner}/{repo}/statuses/{sha} and CreateStatusOption states pending/success/error/failure/warning.
  • go test ./...
  • go vet ./...
  • golangci-lint run --timeout=5m (0 issues)
  • gofmt -l . and git diff --check
  • shellcheck --severity=warning on scripts
  • bats tests/ (73/73)
  • Python YAML parse and forgejo-runner validate --directory .
  • go run ./cmd/rt fragment-check changelog.d (PASS)
## Summary Persist the manifest post-condition verdict as a durable Forgejo commit status on the cut SHA. ## Marker contract - Context: release-toolkit/manifest-postcondition. - Description: manifest-postcondition verdict=landed|pr-open|fatal|ungraded. - State: success for landed/pr-open, failure for fatal, error for ungraded. - The marker is written before rt returns, including fatal and could-not-grade refusals. - A marker-write failure remains visible and exits 2 rather than claiming the evidence exists. - The status is attached to the cut SHA and can be read through the Forgejo statuses API after workflow logs expire. ## Exact server lineage and scope - PR: https://git.frankenbit.de/frankenbit/release-toolkit/pulls/911 - Server readback: base main @456ceb877a7a978eb36a00858c7b1567c87433e8; head rigger/747-durable-manifest-marker @b651ba223997274e4729039ec474c1164cb4e578. - Live branches/main readback: 456ceb877a7a978eb36a00858c7b1567c87433e8 (40 hex characters). - Branch parent before main advanced: 32f4bfe49d571da407d6740c97b19e8780b3bb95. - No rebase: block_on_outdated_branch=false; the branch was opened against the base available at push time. - Changed files: 9. - No changes to #876, #852, or #862. - No review requested and no merge performed. ## Verification - Live source probe: GET /api/v1/repos/frankenbit/release-toolkit/statuses/<sha> returned 200; live Swagger defines POST /repos/{owner}/{repo}/statuses/{sha} and CreateStatusOption states pending/success/error/failure/warning. - go test ./... - go vet ./... - golangci-lint run --timeout=5m (0 issues) - gofmt -l . and git diff --check - shellcheck --severity=warning on scripts - bats tests/ (73/73) - Python YAML parse and forgejo-runner validate --directory . - go run ./cmd/rt fragment-check changelog.d (PASS)
feat(manifest-postcondition): persist verdict status
All checks were successful
changelog-body-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 4s
changelog-body-check / changelog body Cold-Read linter (pull_request) Successful in 6s
changelog-body-check / check (pull_request) Successful in 0s
check-self-bootstrap / check (pull_request) Successful in 5s
fragment-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 5s
fragment-check / changelog fragment-kind (pull_request) Successful in 7s
fragment-check / check (pull_request) Successful in 0s
go-ci / lint + build + test (pull_request) Successful in 25s
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 7s
register-check / check (pull_request) Successful in 0s
tests / workflow-schema (pull_request) Successful in 3s
tests / bats (pull_request) Successful in 8s
tests / shellcheck (pull_request) Successful in 2s
b651ba2239
bosun requested review from sentry 2026-08-26 14:36:54 +02:00
sentry approved these changes 2026-08-26 14:42:20 +02:00
sentry left a comment

Reviewed release-toolkit#911 at exact head b651ba2239.

The handoff review-time base was 456ceb877a. Forgejo's final live base field reports f15d812f5a as main advanced; the branch parent remains 32f4bfe49d. No pre-review rebase was performed.

Decision: APPROVE.

  • The durable marker carries all four exact verdicts. landed and pr-open map to Forgejo success; fatal maps to failure; ungraded maps to error. The stable context is release-toolkit/manifest-postcondition and the description retains verdict=landed|pr-open|fatal|ungraded.
  • The marker is written before every terminal return, including fatal and could-not-grade refusals. Successful evaluation preserves exit 0 for landed/pr-open, exit 1 for fatal, and exit 2 for ungraded.
  • A marker-write failure preserves the evaluated verdict in output and fails closed with exit 2, so missing evidence cannot read as a successful post-condition.
  • The workflow supplies FORGEJO_BASE_URL from the live server and exports FORGEJO_TOKEN before invoking rt; the marker targets the cut SHA. The Forgejo status request path, authorization, payload, and state mapping were verified.
  • The four-arm and marker-failure controls are discriminating; mutation checks made refusal-marker suppression and exit-2 weakening fail. The durable state mapping was independently checked with all four verdicts.

Verification at this exact head: go test -count=1 ./..., go vet ./..., bats tests/ 73/73, golangci-lint (0 issues), shellcheck, YAML parse, fragment-check, gofmt, and diff checks. No blocker found.

Reviewed release-toolkit#911 at exact head b651ba223997274e4729039ec474c1164cb4e578. The handoff review-time base was 456ceb877a7a978eb36a00858c7b1567c87433e8. Forgejo's final live base field reports f15d812f5a2b0d0b8293036c6d9ca2bedc86404f as main advanced; the branch parent remains 32f4bfe49d571da407d6740c97b19e8780b3bb95. No pre-review rebase was performed. Decision: APPROVE. - The durable marker carries all four exact verdicts. landed and pr-open map to Forgejo success; fatal maps to failure; ungraded maps to error. The stable context is release-toolkit/manifest-postcondition and the description retains verdict=landed|pr-open|fatal|ungraded. - The marker is written before every terminal return, including fatal and could-not-grade refusals. Successful evaluation preserves exit 0 for landed/pr-open, exit 1 for fatal, and exit 2 for ungraded. - A marker-write failure preserves the evaluated verdict in output and fails closed with exit 2, so missing evidence cannot read as a successful post-condition. - The workflow supplies FORGEJO_BASE_URL from the live server and exports FORGEJO_TOKEN before invoking rt; the marker targets the cut SHA. The Forgejo status request path, authorization, payload, and state mapping were verified. - The four-arm and marker-failure controls are discriminating; mutation checks made refusal-marker suppression and exit-2 weakening fail. The durable state mapping was independently checked with all four verdicts. Verification at this exact head: go test -count=1 ./..., go vet ./..., bats tests/ 73/73, golangci-lint (0 issues), shellcheck, YAML parse, fragment-check, gofmt, and diff checks. No blocker found.
sentry approved these changes 2026-08-26 14:42:20 +02:00
sentry left a comment

Reviewed release-toolkit#911 at exact head b651ba2239.

The handoff review-time base was 456ceb877a. Forgejo's final live base field reports f15d812f5a as main advanced; the branch parent remains 32f4bfe49d. No pre-review rebase was performed.

Decision: APPROVE.

  • The durable marker carries all four exact verdicts. landed and pr-open map to Forgejo success; fatal maps to failure; ungraded maps to error. The stable context is release-toolkit/manifest-postcondition and the description retains verdict=landed|pr-open|fatal|ungraded.
  • The marker is written before every terminal return, including fatal and could-not-grade refusals. Successful evaluation preserves exit 0 for landed/pr-open, exit 1 for fatal, and exit 2 for ungraded.
  • A marker-write failure preserves the evaluated verdict in output and fails closed with exit 2, so missing evidence cannot read as a successful post-condition.
  • The workflow supplies FORGEJO_BASE_URL from the live server and exports FORGEJO_TOKEN before invoking rt; the marker targets the cut SHA. The Forgejo status request path, authorization, payload, and state mapping were verified.
  • The four-arm and marker-failure controls are discriminating; mutation checks made refusal-marker suppression and exit-2 weakening fail. The durable state mapping was independently checked with all four verdicts.

Verification at this exact head: go test -count=1 ./..., go vet ./..., bats tests/ 73/73, golangci-lint (0 issues), shellcheck, YAML parse, fragment-check, gofmt, and diff checks. No blocker found.

Reviewed release-toolkit#911 at exact head b651ba223997274e4729039ec474c1164cb4e578. The handoff review-time base was 456ceb877a7a978eb36a00858c7b1567c87433e8. Forgejo's final live base field reports f15d812f5a2b0d0b8293036c6d9ca2bedc86404f as main advanced; the branch parent remains 32f4bfe49d571da407d6740c97b19e8780b3bb95. No pre-review rebase was performed. Decision: APPROVE. - The durable marker carries all four exact verdicts. landed and pr-open map to Forgejo success; fatal maps to failure; ungraded maps to error. The stable context is release-toolkit/manifest-postcondition and the description retains verdict=landed|pr-open|fatal|ungraded. - The marker is written before every terminal return, including fatal and could-not-grade refusals. Successful evaluation preserves exit 0 for landed/pr-open, exit 1 for fatal, and exit 2 for ungraded. - A marker-write failure preserves the evaluated verdict in output and fails closed with exit 2, so missing evidence cannot read as a successful post-condition. - The workflow supplies FORGEJO_BASE_URL from the live server and exports FORGEJO_TOKEN before invoking rt; the marker targets the cut SHA. The Forgejo status request path, authorization, payload, and state mapping were verified. - The four-arm and marker-failure controls are discriminating; mutation checks made refusal-marker suppression and exit-2 weakening fail. The durable state mapping was independently checked with all four verdicts. Verification at this exact head: go test -count=1 ./..., go vet ./..., bats tests/ 73/73, golangci-lint (0 issues), shellcheck, YAML parse, fragment-check, gofmt, and diff checks. No blocker found.
bosun merged commit a87b844e39 into main 2026-08-26 14:45:25 +02:00
Sign in to join this conversation.
No description provided.