-
0.1.1 Stable
released this
2026-07-19 23:03:50 +00:00 | 58 commits to main since this releaseFixed
- The release ceremony re-arms the changelog, and CI notices when it
doesn't (#113) — stamping## Unreleasedinto## X.Y.Z — DATEis
done by hand in the ceremony PR; no workflow writes this file, and
nothing put the heading back. Somainsat with the shipped section on
top and no## Unreleasedabove it — this repo's state from 0.1.0
until this entry. A PR authored before a release and merged after has
its entry land under whatever heading now occupies that position: the
release that already shipped. Git does that cleanly. The stamped
heading and the incoming entry never overlap textually, so the one
signal an author trusts — "git told me to look" — is missing exactly
when the result is wrong. rig watched it happen (heavy-duty/rig#66, the
origin of this fix): an entry landed inside published## 0.1.0an
hour after 0.1.0 shipped, and was caught only because someone was
reading. The published release body is never at risk —release.yml
extracts notes from the tree at the tag, before anything late can merge
— which is also why nobody notices: the file that drifts is the one
only maintainers read. Three moves.## Unreleasedis back above
## 0.1.0(this entry re-creating it is the repair). CONTRIBUTING's
ceremony step now re-arms in the same diff that stamps. And
test/release.test.tskeys the rule topackage.json: a stamped top
section is legal while the version is bare — the ceremony's own tree,
and main until the-devbump — but once the version says-dev, the
top section must be## Unreleased. That is the distinction #108 had
to collapse to make the ceremony shippable at all, recovered rather
than reverted: the ceremony stays green at every step, and a disarmed
devmaingoes red. The re-arm also forced the older extraction guard
to move. It asserted that the top section extracts non-empty, which
the re-armed ceremony tree — a deliberately empty## Unreleasedabove
the stamp — makes false by construction: the re-arm and the guard would
have contradicted each other, and the next release PR would have been
unshippable for a second time, the way #108 was. Keying to the top
section was only ever a stand-in for "the sectionrelease.ymlwill
publish", so the assert now names that section directly — on a bare
version the## X.Y.Zbeing shipped, on a-devtree the newest
stamped one. Existence is checked with it: a bare version with no
matching section is a bump that never stamped, which used to pass every
test and fail only after the merge, inrelease.yml's notes step,
past the ship decision and leavingmainwith a minted, unreleased
version to repair by hand. A double re-arm — two## Unreleased
headings, the extracted section silently the empty one — is red too.
box and rig carry the same fix (heavy-duty/box#110,
heavy-duty/rig#67); rig#67 retargeted the identical assert for the
identical reason.
Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
1 download
-
cast-0.1.1.tgz
0 downloads · 860 KiB
- The release ceremony re-arms the changelog, and CI notices when it