-
Release v0.30.0
StableAll checks were successfulchangelog-body-check / changelog body Cold-Read linter (pull_request) Successful in 4scheck-self-bootstrap / check (pull_request) Has been skippedchangelog-body-check / check (pull_request) Successful in 0sfragment-check / changelog fragment-kind (pull_request) Successful in 3sfragment-check / check (pull_request) Successful in 0smanifest-check / manifest-vs-tag consistency (pull_request) Successful in 5smanifest-check / check (pull_request) Successful in 0sregister-check / register-drift check (pull_request) Successful in 4sregister-check / check (pull_request) Successful in 0stests / bats (pull_request) Successful in 1m55stests / shellcheck (pull_request) Successful in 7scheck-self-bootstrap / check (push) Successful in 3srelease / decide + act (push) Successful in 6srelease / release (push) Successful in 0stests / bats (push) Successful in 1m55stests / shellcheck (push) Successful in 8smirror-on-cut / mirror-1 (release) Successful in 1smirror-on-cut / mirror (release) Successful in 0sreleased this
2026-07-07 12:59:26 +02:00 | 1069 commits to main since this releaseAdded
Cut-time preflight verifies the composed CHANGELOG section is gate-clean before the release fires. A new
scripts/compose-verify.shruns at the top of thecutcase inreusable-release.yml. It scans the target section withregister-check --stdinandchangelog-body-check.The preflight blocks the cut when either gate flags drift or density. Closes the gap surfaced by PR#438 (v0.28.0), where a manifest-only recovery skipped the auto push:main trigger and workflow_dispatch fired the cut against a CHANGELOG that never went through compose. No action required for adopters — the preflight is wired into the reusable workflow. Closes #439.
Changed
None.
Fixed
check-self-bootstrapno longer fires red on the rolling-PR-merge push:main event. The auto-re-pin substrate (#283) runs INSIDE the cut workflow that fires on that same push, so the pin-drift check saw pre-cut state and reported a false-positive RED. The check now detects a HEAD subject matching the release-prep merge shape and skips with an informative message.Discipline preserved for every OTHER push:main. A hand-edit to
release.yml, an orphaned tag, or any content edit outside the rolling-PR flow still fires the check. Closes the "check-self-bootstrap RED on every substrate cut" class (empirical: PR#438 v0.28.0 arc + PR#443/#446 Bundle 1/2 sprint). No action required. Closes #445.release-prep.shnow scaffolds all 6 standard CHANGELOG sections in the composed body. When fragments produce only a subset (e.g., onlyAdded+Fixed), the missing sections are filled withNone.before the section transitions intoCHANGELOG.md. Aligns compose to the documentedchangelog-body-checkcheck-2 intent ("add each even if the body is 'None.'").Closes the compose-vs-check-2 divergence surfaced by the v0.30.0 rolling PR, which would otherwise block at cut-time via the compose-verify preflight. Idempotent: existing sections pass through verbatim; running twice produces identical output. Non-standard sections (e.g., a fragment producing
### Internal) are preserved after the standard set. No action required. Closes #453.- register-check: pivot to allowlist entry ([reviewer] 3682 catch)
- tests: scrub chamber-names from compose-verify.bats fixture ([reviewer] 3680 Finding B)
- compose-verify: fold review 3676 non-blockers (version-newest coupling + dry-run parity) [#446]
Removed
None.
Deprecated
None.
Upgrade
None.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads