-
v0.42.0
StableAll checks were successfulchangelog-body-check / changelog body Cold-Read linter (pull_request) Successful in 6scheck-self-bootstrap / check (pull_request) Has been skippedchangelog-body-check / check (pull_request) Successful in 0sfragment-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 24smanifest-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 18stests / shellcheck (pull_request) Successful in 3scheck-self-bootstrap / check (push) Successful in 5sgo-ci / lint + build + test (push) Successful in 26srelease / decide + act (push) Successful in 9srelease / release (push) Successful in 0stests / workflow-schema (push) Successful in 3stests / bats (push) Successful in 18stests / shellcheck (push) Successful in 3sgoreleaser / build + publish rt asset (push) Successful in 1m20smirror-on-cut / mirror-1 (release) Successful in 2smirror-on-cut / mirror (release) Successful in 0sgoreleaser / adopters can fetch the published asset (push) Successful in 3m5sreleased this
2026-08-20 10:42:01 +02:00 | 777 commits to main since this releaseAdded
rt repinre-pins consumer wrappers to a release-candidate tag.It refuses a dirty tree or an existing tag. It builds the detached bake commit at the requested base, then mints and pushes the rc tag on it. It rewrites each wrapper's
uses:@<ref>, commits in a throwaway worktree, pushes and opens the PR.The rewrite is ported verbatim from
repin.sh. A third-partyuses:line, or a fork under another owner, is left alone.--dry-runreports what would change and writes nothing.- ci: ask the Forgejo engine whether it can parse the workflows (#769)
Changed
Port
scripts/setup-bump-labels.shtort setup-bump-labels --owner <owner> --repo <repo>. Createsbump/{patch,minor,major}as an exclusive label group on a Forgejo repo; idempotent: already-correct labels are skipped, labels missingexclusive=trueare updated. AddsListLabels,CreateLabel, andUpdateLabelto the Forgejo client. Deletes the shell script.- Document the terminal bash-retirement state:
scripts/fetch-rt.shremains as the single bootstrap fetch-and-verify script because it obtainsrtitself. - ADR-0009 and the architecture docs now name the delivery-mechanism change that would retire the residual. The stale ADR-0007 VERSIONING link is also fixed.
Fixed
decide:
rt decide's#417orphan walk now discriminates release plumbing from adopter work by file scope, not commit type. A bump-worthy commit touching only the changelog, the manifest or a declaredversion_fileno longer breaks the walk. The buried-prepare skip stays reachable, so a legitimate cut is not refused.#650fixed this inrelease-decide.sh, which was retired before the fix reached Go — it had been shipping on no surface at all (closes #701).Arm 30 in
tests/workflows.batsnow parses the workflow instead of scanning its raw lines.It previously skipped every comment line. That let release-toolkit#757 land the
${{ }}form inside arun:block comment, where the expression engine reads it before bash sees the#, and every cut was blocked.Skipping nothing over-corrects: a
#at YAML level, or inline on a plain scalar, is stripped by the parser and is safe. The arm now walks the string scalars that surviveyaml.safe_load, which is the text the engine sees.-
Add an erratum to the v0.37.1 changelog entry whose file-scope orphan discriminator shipped only in
scripts/release-decide.sh, notrt decide. -
gates: exemptions carry an occurrence quota, not a boolean (#772)
-
changelog.d: 772 fragment described the rule the previous commit removed
-
gates: backticks cannot exempt a citation — narrow to a measured allowlist (#772)
-
setup-bump-labels: S1016 type conversions + ADR-0009 ancillary bucket
-
rt: repin never writes the operator's checkout, on any path
-
rt: repin mints the tag it demands be absent, and stops writing on --dry-run
-
tests: arm 30 parses the workflow rather than scanning raw lines
Removed
None.
Deprecated
None.
Upgrade
None.
Internal
The #690 membership fallback's bounded window now has a negative arm.
findPRContainingSHAasserts in its own comment that a prepare outside the window resolves to not-found and Layer 2 fails. Nothing exercised that: every membership arm placed the containing PR inside the window, so the bound could not fail where those arms ran.A widening window would turn a stale prepare into a spurious cut — worse than the false refusal #690 fixed, because a refusal gets investigated.
AGENTS.mdnow records thatrt repinis not yet the canonical re-pin path.scripts/repin.shstill implements the operation and the docs correctly name it canonical. The verb ships but nothing invokes it, and its forge path has never run against a real forge.The note is removed when #705 part B retires the script.
-
docs: repoint four Go comments at the real cli-surface contract path, and make the citation checkable (#772)
Four comments cited
contracts/cli-surface.md, which resolves from nowhere. The file is atdocs/architecture/contracts/cli-surface.md, and one comment already said so.TestCitedDocPathsResolvenow checks every repo-relative Markdown path cited in a Go comment. Two sites quote an unresolvable path as evidence; both are named in an explicit allowlist.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads