- scripts/release.mjs + `make release VERSION=x.y.z`: guarded release cut —
bumps package.json, relabels CHANGELOG [Unreleased] → [x.y.z], commits, and
creates the annotated git tag. Refuses on dirty tree, existing tag, duplicate
section, or empty [Unreleased]. Never pushes (outward step stays manual).
- DesignSystemIntroduction.md §6: document the release ritual; §9: fix the
stale bootstrap host + tag note.
- README: bump the install pin to the first real tag (v0.3.0).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>