• v0.40.0 11aa1d3bc0

    v0.40.0
    Some checks failed
    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) Has been skipped
    fragment-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 5s
    fragment-check / changelog fragment-kind (pull_request) Successful in 6s
    fragment-check / check (pull_request) Successful in 0s
    go-ci / lint + build + test (pull_request) Successful in 22s
    manifest-check / manifest-vs-tag consistency (pull_request) Successful in 7s
    manifest-check / check (pull_request) Successful in 0s
    register-check / register-drift check (pull_request) Successful in 7s
    register-check / check (pull_request) Successful in 0s
    tests / bats (pull_request) Successful in 22s
    tests / shellcheck (pull_request) Successful in 7s
    check-self-bootstrap / check (push) Successful in 3s
    go-ci / lint + build + test (push) Successful in 23s
    release / decide + act (push) Failing after 9s
    release / release (push) Failing after 0s
    tests / bats (push) Successful in 22s
    tests / shellcheck (push) Successful in 7s
    goreleaser / build + publish rt asset (push) Successful in 1m34s
    mirror-on-cut / mirror-1 (release) Successful in 2s
    mirror-on-cut / mirror (release) Successful in 0s
    Stable

    release-bot released this 2026-08-19 09:53:59 +02:00 | 831 commits to main since this release

    Added

    None.

    Changed

    The cut path no longer sources forgejo-api.sh.

    Its seven forge callsites are now three rt verbs: manifest-pr, close-stale-rolling-pr (#87) and default-branch (#370/#379). The first opens, assigns and auto-merges the manifest PR — ADR-0007 path γ.

    Task verbs, not thin API wrappers: the orchestration and the jq post-processing moved into Go where they are tested, rather than staying in YAML where they were not.

    Fixed

    A cut can no longer finish green with no manifest bookkeeping. A new post-condition step verifies that the manifest either landed on the default branch or has an open manifest PR, and refuses the cut otherwise.

    The two guards that existed before both cited this defect and neither could fire on it. They lived inside the act on decision step, and the idempotency precheck can decide skip and exit that step with status 0 before either runs. A guard inside the step it must outlive is not a post-condition.

    A fragment whose body is joined into its header is now rejected.

    The blank line between them is load-bearing — without it the composer emits one run-on bullet, and every existing check passed on that shape.

    release-toolkit's OWN fragment-check wrapper also drops its paths: filter, so it posts a status on every PR and can finally be a required context.

    Adopters choose: omit the filter to make it requireable, or keep it and stay advisory. docs/integration.md states the trade.

    • docs: the adopter-facing cut walkthrough named bash scripts that no longer exist (#713)

      docs/integration.md described the release path in the present tense using release-decide.sh, release-prep.sh and draft-release.sh, retired by #607 and #705. Those now read rt decide, rt prep and rt release. Historical passages and quoted examples are unchanged, because they describe what was true when written.

    The adopter guide no longer contradicts the gate it documents.

    docs/integration.md still showed fragment-check with a paths: filter and said day-to-day PRs pay zero CI cost, after release-toolkit's own wrapper had dropped it.

    The recipe now omits the filter and states the trade. A filtered workflow does not run, so it posts no status, so it can never be a required context.

    • docs: Lookout's two findings + the bare-stem class they exposed
    • changelog: 'docs' is not a recognized fragment kind

    Removed

    None.

    Deprecated

    None.

    Upgrade

    None.

    Downloads