Drill records move from sections inside drill/RUNS.md to one file per version: drills/<version>.md. The old guard parsed headings — em-dash field matching, an optional ' — DATE' tail, a whole-version comparison so 0.2.0-rc1 could not satisfy 0.2.0, a '(NF == 5 || $6 == dash)' tail constraint to match box, and a non-blank body rule. All of that existed only because records shared one file, and this repo shipped two defects out of the complexity in review: the sed '/./,$!d' whitespace bypass, and heading-grammar drift from box's stricter form. One file per version makes nearly all of it unrepresentable — 0.2.0.md and 0.2.0-rc1.md are simply different files, so the whole-version rule is the filesystem's rather than a comparison anyone can get wrong. One rule survives: a file of only whitespace is not a record. Plain drills/, not .drills/ — dot-directories are invisible to globs without dotglob, the cause of #118/#121 here and box#116. drill/RUNS.md is deleted. It was created in this same unmerged PR and held only format documentation, no real records; the useful reasoning moves to drills/README.md. (box keeps ITS drill/RUNS.md, a genuine harness log with real run history.) The docs also drop an over-constrained ordering claim: the three repos' drills are INDEPENDENT, run in any order and any sitting. What makes that safe is that each pins the same fixed set of candidate refs — and that pinning, not sequencing, is what dissolves the box/rig recursion, since refs are static identifiers that exist as soon as the release branches do. Each repo also drills a different thing: box the isolation contract, rig convergence, cast promotion. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2.5 KiB
2.5 KiB
Changelog
History before 0.1.0 lives in git — cast has said 0.1.0 in package.json
since its first commit, but grew its release surface (this file,
cast --version, tagged releases with a prebuilt asset) on the way to
actually cutting it, and this file starts there.
Unreleased
Added
- CI refuses a release PR with no drill record at
drills/<version>.md - An application can declare HTTP basic auth, and
applysets it (#76) cast github-app create/cast github-app registerrun the App Manifest flow (#7)
Changed
state:needs-humanis set at handoff, not by the cron (#131)- PR labels split into two axes:
state:*(whose ball) andblocker:*(what is in the way);state:needs-rebaseis retired (heavy-duty/box#138) - The
NO_API_COVERAGErow for Basic Auth now says services (#76) - Changelog entries are one line each, and the whole file now follows the rule (#136)
Removed
- BREAKING:
scripts/register-github-app.shis gone; usecast github-app register(#7)
Fixed
- Three test files from #124/#125 allocate through
tmp(), not rawmkdtempSync(#135) - A PR that deletes a shipped release heading is now CI-red (#133, heavy-duty/box#122)
- A duplicate release heading is caught even where the guard cannot see the base (#133, heavy-duty/box#143)
- A label the repo does not have no longer takes the whole label edit down with it
- An unreadable check rollup no longer reads as "nothing is failing"
state:needs-humanno longer appears on PRs a human cannot merge (#127, heavy-duty/box#136)- CI lints every tracked shell script, and proves the set is complete (#118)
- The shellcheck sweep covers extensionless scripts such as
bin/cast(#121) castno longer leaves a full repo clone in the temp dir on every run (#117)- The test suite reaps its temp directories (#117)
0.1.1 — 2026-07-19
Fixed
- The release ceremony re-arms
## Unreleased, and CI is red when it does not (#113)
0.1.0 — 2026-07-19
Fixed
- The release suite accepts the ceremony's own tree (#108)
applyno longer demands a GitHub App for a manifest that declares no applications (#103)- A manifest with no
${…}refs applies without a secret store (#104) CAST_AGE_KEY_FILE_<ENV>is settable for every environment name (#102)
Added
- Merging a release-labeled PR is the release, and the release re-arms main itself (#111)
- Tagged releases with a prebuilt dist asset, and an installer that installs them (#96)