-
v0.53.0 Stable
released this
2026-08-27 09:16:55 +02:00 | 675 commits to main since this releaseAdded
- workflows: shared Forgejo parse guard records complete workflow coverage (#841)
- release: rebuilding an old tag now uses current pipeline logic (#980)
Changed
- contributor CI: fork pull requests now receive an explicit workflow-approval notice (#645)
- ac-closure-check: the undeclared-target refusal now names the negation case explicitly (#989)
Fixed
- manifest PR auto-merge: explicitly requests deletion of the generated branch (#633)
- release: the pipeline checkout no longer dirties the tree being built (#980)
- workflow-parse-check: toolkit-self cuts resolve the toolkit from
mainbefore the new tag exists (#995)
Removed
None.
Deprecated
None.
Upgrade
None.
Internal
- release: document refactor-of-an-already-documented-change guidance and the non-automated
Refactors:trailer convention (#492) - fetch-rt.sh: comment why a surviving
checksums.txtis safe on both early-exit paths (#643) - internal: keep hidden workflow verbs in the complete CLI registration census (#787)
- release-assets: pin that an unreadable release body cannot skip DELETE authorization (#967)
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v0.49.0 Stable
released this
2026-08-26 23:27:04 +02:00 | 723 commits to main since this releaseAdded
- decide: a blocked pending-cut result now names whether the tag and release already exist (#885)
Changed
None.
Fixed
- publish-image: the digest hand-off uses job outputs instead of an artifact (#941)
Removed
None.
Deprecated
None.
Upgrade
None.
Internal
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v0.52.0 Stable
released this
2026-08-26 20:14:20 +02:00 | 696 commits to main since this releaseAdded
- ac-closure-check: scans commit messages too, and refuses an undeclared target (#965)
Changed
None.
Fixed
None.
Removed
None.
Deprecated
None.
Upgrade
None.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v0.51.0 Stable
released this
2026-08-26 19:47:15 +02:00 | 702 commits to main since this releaseAdded
None.
Changed
- reusable-release: the release path now uses the shared bootstrap composite (#606)
- release-assets: verify derives the expected count once and warns on a foreign asset (#971)
Fixed
None.
Removed
None.
Deprecated
None.
Upgrade
None.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v0.50.1 Stable
released this
2026-08-26 19:16:24 +02:00 | 710 commits to main since this releaseAdded
None.
Changed
None.
Fixed
- release-assets: verify treats an existing empty release as a first publish (#962)
Removed
None.
Deprecated
None.
Upgrade
None.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v0.50.0
StableSome checks failedac-closure-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 5sac-closure-check / ac-closure check (pull_request) Successful in 6sac-closure-check / check (pull_request) Successful in 0schangelog-body-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 5schangelog-body-check / changelog body Cold-Read linter (pull_request) Successful in 6schangelog-body-check / check (pull_request) Successful in 0scheck-self-bootstrap / check (pull_request) Has been skippedfragment-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 4sfragment-check / changelog fragment-kind (pull_request) Successful in 7sfragment-check / check (pull_request) Successful in 0sgo-ci / lint + build + test (pull_request) Successful in 28smanifest-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 5smanifest-check / manifest-vs-tag consistency (pull_request) Successful in 7smanifest-check / check (pull_request) Successful in 0sregister-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 5sregister-check / register-drift check (pull_request) Successful in 8sregister-check / check (pull_request) Successful in 0stests / workflow-schema (pull_request) Successful in 4stests / bats (pull_request) Successful in 11stests / dated-examples (pull_request) Successful in 4stests / shellcheck (pull_request) Successful in 3scheck-self-bootstrap / check (push) Successful in 5sgo-ci / lint + build + test (push) Successful in 27srelease-toolkit/manifest-postcondition manifest-postcondition verdict=landedrelease / decide + act (push) Successful in 9srelease / release (push) Successful in 0stests / workflow-schema (push) Successful in 4stests / bats (push) Successful in 12stests / dated-examples (push) Successful in 4stests / shellcheck (push) Successful in 3sgoreleaser / build + publish rt asset (push) Failing after 9sgoreleaser / publish the rt image + bake its digest (push) Has been skippedgoreleaser / adopters can pull the published image (push) Has been skippedgoreleaser / adopters can fetch the published asset (push) Has been skippedreleased this
2026-08-26 18:50:26 +02:00 | 716 commits to main since this releaseAdded
None.
Changed
- fragment-check: the summary must carry an issue reference (#959)
Fixed
- release-assets: the delete guard counts assets, not the release object (#962)
Removed
None.
Deprecated
None.
Upgrade
None.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v0.48.2 Stable
released this
2026-08-26 17:39:37 +02:00 | 736 commits to main since this releaseAdded
None.
Changed
None.
Fixed
- consumer-wrapper discovery: an ungradeable workflow file no longer reads as absent (#843)
- fragment-check: refuse fragments without the documented summary header (#931)
- publish-image: a failed container cleanup no longer aborts the bake (#933)
- decide/manifest-check: a tag carrying
#794's image-digest pin no longer reads as manifest anchor divergence. The bake force-moves the tag one commit abovelast_released_sha, which wedgedrt decideat the start of every cut. Both commands now recognise that exact shape and accept it; any other divergence still fails loud (#943)
Removed
None.
Deprecated
None.
Upgrade
None.
Internal
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v0.48.1 Stable
released this
2026-08-26 16:37:32 +02:00 | 750 commits to main since this releaseAdded
None.
Changed
None.
Fixed
- publish-image: the bake step takes
rtfrom the image it just pushed (#933)
Removed
None.
Deprecated
None.
Upgrade
None.
Internal
- tests: arm the goreleaser version guard, which shipped without any (#925)
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- publish-image: the bake step takes
-
v0.48.0
StableSome checks failedchangelog-body-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 4schangelog-body-check / changelog body Cold-Read linter (pull_request) Successful in 6schangelog-body-check / check (pull_request) Successful in 0scheck-self-bootstrap / check (pull_request) Has been skippedfragment-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 4sfragment-check / changelog fragment-kind (pull_request) Successful in 7sfragment-check / check (pull_request) Successful in 0sgo-ci / lint + build + test (pull_request) Successful in 30smanifest-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 4smanifest-check / manifest-vs-tag consistency (pull_request) Successful in 7smanifest-check / check (pull_request) Successful in 0sregister-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 4sregister-check / register-drift check (pull_request) Successful in 9sregister-check / check (pull_request) Successful in 0stests / workflow-schema (pull_request) Successful in 3stests / bats (pull_request) Successful in 9stests / shellcheck (pull_request) Successful in 3scheck-self-bootstrap / check (push) Successful in 5sgo-ci / lint + build + test (push) Successful in 26srelease-toolkit/manifest-postcondition manifest-postcondition verdict=landedrelease / decide + act (push) Successful in 8srelease / release (push) Successful in 0stests / workflow-schema (push) Successful in 3stests / bats (push) Successful in 9stests / shellcheck (push) Successful in 3sgoreleaser / build + publish rt asset (push) Successful in 8sgoreleaser / publish the rt image + bake its digest (push) Failing after 16sgoreleaser / adopters can pull the published image (push) Has been skippedgoreleaser / adopters can fetch the published asset (push) Has been skippedreleased this
2026-08-26 16:10:16 +02:00 | 757 commits to main since this releaseAdded
rt ac-closure-check: refuse a merge whoseCloses #Nwould close an issue with an unfinished AC (#848)
Changed
- release notes: now require a changelog fragment for adopter-facing prose; fragment-less conventional commits still drive version bumps without leaking their subjects into notes (#717)
- fragment-check: identifies dense fragments changed by the current PR versus pre-existing fragments so adoption failures route to the right file (#735)
- manifest-postcondition: writes a durable Forgejo commit status carrying its exact verdict, including refusal outcomes, so post-cut evidence survives log retention (#747)
- changelog: fragments contribute their summary line, not their whole body (#854)
- style docs: the worked examples now state when they were written (#912)
- release: the goreleaser install step now skips when the runner image already carries the pinned version, and installs otherwise. Comparing the version rather than mere presence keeps all three states self-healing: nothing baked installs as before, a matching bake skips, and a stale bake is corrected. Removes a ~100-module download and compile from the release critical path when the image provides it (#918)
Fixed
- decide: preserve changelog read and parse refusals instead of treating them as an empty latest-version result (#697)
- fragment-check: pin which renderer the density gate calls (#854)
- contract-paths-check on a shallow clone: provenance is now could-not-grade instead of a false failure (#903)
- post-cut precheck: the idempotent-skip decision now logs the inputs it was made from (#914)
Removed
None.
Deprecated
None.
Upgrade
None.
Security
- PR-CI input handling: keep caller-supplied paths out of shell source (#654)
Internal
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v0.47.0
StableSome checks failedchangelog-body-check / changelog body Cold-Read linter (pull_request) Successful in 6schangelog-body-check / check (pull_request) Successful in 0scheck-self-bootstrap / check (pull_request) Has been skippedfragment-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 4sfragment-check / changelog fragment-kind (pull_request) Successful in 6sfragment-check / check (pull_request) Successful in 0sgo-ci / lint + build + test (pull_request) Successful in 26smanifest-check / manifest-vs-tag consistency (pull_request) Successful in 7smanifest-check / check (pull_request) Successful in 0sregister-check / register-drift check (pull_request) Successful in 7sregister-check / check (pull_request) Successful in 0stests / workflow-schema (pull_request) Successful in 3stests / bats (pull_request) Successful in 8stests / shellcheck (pull_request) Successful in 2scheck-self-bootstrap / check (push) Successful in 5sgo-ci / lint + build + test (push) Successful in 25srelease / decide + act (push) Successful in 10srelease / release (push) Successful in 0stests / workflow-schema (push) Successful in 3stests / bats (push) Successful in 8stests / shellcheck (push) Successful in 2sgoreleaser / build + publish rt asset (push) Successful in 1m24sgoreleaser / publish the rt image + bake its digest (push) Failing after 20sgoreleaser / adopters can pull the published image (push) Has been skippedgoreleaser / adopters can fetch the published asset (push) Has been skippedreleased this
2026-08-26 13:55:04 +02:00 | 795 commits to main since this releaseAdded
None.
Changed
-
contract source-of-record split: byte-authority and provenance are now separate fields, and both are checkable (#849)
The single field carried two different claims, so a naive check reddened on six correct sites.
Source of recordnow lists only paths that must resolve today.Ported fromlists historical paths, checked for having ever existed.scripts/contract-paths-check.shgrades both halves and classifies globs rather than resolving them.
Fixed
-
cut-cancellation recovery docs: recovery (A) now covers manifest-create, non-atomicity, and the published-release case (#660)
docs/integration.md § Cut-cancellation recovery (#417)no longer says "edit" the manifest for adopters who never had one — it gives the full create-from-scratch JSON. The three (A) steps are now named as non-atomic, since a bare tag push can silently clear the bootstrap population's orphan check unfinished. (B) is flagged as actively wrong once a release is already published, per the live 2026-08-25 incident (#884). -
dry-run preview docs: fix the fidelity-guarantee direction and two stale claims (#662)
The asymmetry #662 quoted —
rt decidereportingmode=cutfor a run that would resolvemode=updatelive — was already closed at the code level by #689. The doc now says so plainly:--dry-runis a computational no-op forrt decide. Also retires the staleFORGEJO_API_DRY_RUNenv-var reference and names a live gap:rt release's idempotency pre-check is faked under--dry-run, always previewing a create. -
changelog: suppress duplicate commit bullets covered by body-referenced fragments (#672)
Multi-commit changes can keep the richer fragment entry without widening the add-only fragment walk that protects against silent omission.
-
release: disclose whether post-cut manifest bookkeeping creates or updates (#679)
The typed post-cut boundary now preserves the observable create/update branch evidence from the release workflow.
-
prep:
rt prep --dry-runno longer writes your checkout. It runs against a scratch copy and prints the diff it would produce, so a failed run leaves nothing behind for the retry's clean-tree gate to refuse.post_bump_hooksrun in the scratch copy; anything they touch outside their working directory is still not contained (#708) -
decide: a cut-safeguard that declines no longer resolves to
mode=noopwhen the fall-through finds nothing release-relevant. That path droppedsafeguard_fail,safeguard_versionandprep_shaand exited 0, so a decline read exactly like "nothing to release". It now emitsmode=blockedwithreason=safeguard_decline, which the workflow already fails on. A could-not-grade stays distinguishable from a refusal (#711) -
operations: document drain-before-review order for rolling release PRs (#770)
Land other work before reviewing the rolling PR, then merge it before another main landing can rebuild its content and invalidate the approval. This is a regeneration rule, not an outdated-branch rule.
-
manifest: a draft cut no longer records a completed release. Schema 2 adds
last_released_published, so a cut that leaves the release unpublished says so.manifest-checknow reports the absent tag as an unfinished cut, not a desync. Schema 1 is still read, and migrates only when a record needs the new field (#805) -
849: fragment density, and scrub a register over-match in the arms
-
ci: keep the blocked arm FLAT so its bats guard reads what it means to
Removed
None.
Deprecated
None.
Upgrade
None.
Internal
-
test guards: make pending-cut branch extraction safe for nested shell cases (#889)
The workflow contract is unchanged; the structural guard now proves both a nested-case success path and a missing-refusal inverse fails closed.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-