Proposal (rationale)
changelog.d/0.5.0.md has accumulated fourteen entries since v0.4.0: the six consumer promises the
WI-085 programme completed, the two defects its canary found, and six findings follow-ups. Every one
is landed on main, and the platform matrix passed on 2791a21b and 3a4cae7f (2026-09-06). The
release flow WI-064 accepted needs an immutable version to
pin; nothing pins an unpublished commit.
Decision
accepted — 2026-09-07, at the user’s request (“prepare 0.5.0”). Preparation is the reversible part
of the release runbook §1–§5: decide, gate, assemble, bump, gate
again. Tagging, pushing the tag, cutting release/0.5.0 and npm publish are §6 and are not part of
this item — they need a green CI run on the exact prepared commit and a live npm whoami.
Plan
Requirements
- Version decided from the fragments: features present, no breaking change → minor → 0.5.0.
- Both audits clean;
npm test, every gate andcheck-doc-claimsgreen on the starting tree and again on the prepared tree. - The fourteen entries folded into the versions page newest-first as
kind: "minor"; the fragment deleted;CONSUMED_THROUGHadvanced to 0.5.0 in the same change. package.json,package-lock.json,site/package.json,site/package-lock.jsonat 0.5.0; README status sentence and roadmap Phase 7 row name v0.5.0;publishedVersionstays 0.4.0 because that is what the registry serves (verified, not remembered).- Site claims regenerated after the tree is green; site built and link-checked.
Impacts
site/src/pages/versions.astro,changelog.d/, both manifests and lockfiles,README.md,docs/roadmap.md,site/src/generated/claims.json.
Approach
Follow the runbook literally and record every measured value here. Where the runbook and the portable skill disagree about a command, the runbook wins for this repository.
Acceptance criteria / tests
- Second-pass gate set on the prepared commit:
npm audit×2 zero,npm testgreen,rungs check32 pass,check-doc-claimsagrees (version 0.5.0),release-version-consistentandrelease-fragment-currentpass with the fragment gone and the boundary at 0.5.0. npm view @rungs/cli dist-tagsread before editingpublishedVersion; the page renders 0.5.0 as pending and 0.4.0 as latest.- The item names the irreversible steps left and their preconditions.
Out of scope
- §6: tag,
release/0.5.0, publish, next candidate; the Arena Lab pin (WI-064). Nothing else deferred.
Execution
Branch feature/WI-099-release-0.5.0 from c71e8ad5, 2026-09-07, following the runbook §1–§5:
- §1 Version.
CONSUMED_THROUGHread0.4.0, equal to the package version — a steady tree. Commit census sincev0.4.0(49 non-merge commits): 18docs:, 7fix:, 5feat:, 1test:, 1chore:. The fourteen fragment entries include five features (package-free ejection, hook delivery, explain-only instruction diagnostics, budget reporting, recoverable installs) and no breaking change:check’s grammar widened,npm test’s script changed, theadrtemplate block changed shape under a version bump. Minor → 0.5.0, as requested; the fragments support it. - §2 First gate.
npm auditandnpm audit --prefix siteboth 0 vulnerabilities;node src/cli.ts check32 pass;check-doc-claims6 claims agree at 0.4.0. The fullnpm teston the starting tree is the WI-098 landing’s (158 tests, 155 pass) — no code changed since. - §3 Assemble. Fourteen entries folded into
site/src/pages/versions.astroas0.5.0 · minor, fiveaddedand ninefixed, each compressed from its fragment paragraph;changelog.d/0.5.0.mddeleted;CONSUMED_THROUGH→0.5.0. - §4 Bump.
npm version 0.5.0 --no-git-tag-versionin the root and insite/; README status sentence and roadmap Phase 7 row → v0.5.0.publishedVersionstays0.4.0:npm view @rungs/cli dist-tags→{ latest: '0.4.0' }on 2026-09-07, recorded in the page’s comment. The page’s “next candidate” sentence, which namedcandidate/0.4.1(49 commits behindmain, 0 ahead — trap T5 for the third release running), now says work lands onmainand the version is decided from the fragments, so it cannot name a branch nobody uses. - Two gate refusals on the way, both mine.
docs-version-claimsrequires the roadmap row to keep the words “released from” so the claim stays checkable — my “prepared from” rewording was reverted.gates-paths-existcaught the session handoff still naming the consumed fragment in a code span. - §5 second gate recorded in the Review.
Not done, by design (§6): tag, release/0.5.0, npm publish, and the next-candidate decision. The
preconditions are a green CI run on the exact prepared commit and a live npm whoami.
Review
§5 second gate on the prepared tree, 2026-09-07:
| Check | Result |
|---|---|
npm audit / npm audit --prefix site | 0 / 0 vulnerabilities |
npm test | 158 tests, 155 pass, 0 fail, 3 skipped, 175 s |
node src/cli.ts check | 32 pass, 0 fail — release-version-consistent sees both manifests at 0.5.0, release-fragment-current sees no fragment at or below the boundary |
node scripts/check-doc-claims.mjs | 6 claims agree (version 0.5.0, 9,895 lines, 15 commands) |
npm run claims --prefix site | 32 gates (+1 hook), run 32 pass 0 fail, regenerated after the tree was green |
npm run build / npm run check --prefix site | 178 pages; 2,723 internal links, 0 broken |
npm pack --dry-run --json | rungs-cli-0.5.0.tgz, 121 entries, sha512-Rly8axgYN1+D+hCefSCF+hJS41nq/t9nO1E8dx1cVHC2RDe6lu3Mquo3bgPQM/avqRe7lBqQZ6ekJMXdg5HWag== on this tree before the landing commit; recompute from the tagged commit |
npm view @rungs/cli dist-tags | { latest: '0.4.0' } — the page renders 0.5.0 as pending, 0.4.0 as latest |
Acceptance criterion 3, the irreversible steps left and their preconditions, in order:
- Land this item; push
main; confirm the CI matrix is green on the exact landed commit (gh run list --commit <sha>). npm whoamimust answer with the publishing account (v0.4.0 was tagged and branched before a 401 surfaced; the tag was correct and the publish was re-run, but check first).git tag -a v0.5.0 -m "rungs v0.5.0 — …"on that commit;git push origin main --follow-tags;git branch release/0.5.0 v0.5.0 && git push -u origin release/0.5.0;npm publish --access public.- Afterwards, in the same session:
publishedVersion/publishedDateon the versions page to 0.5.0 and the publish date, verified againstnpm view @rungs/cli dist-tags(trap T3), and adocs: record v0.5.0 as publishedlanding. - Then the Arena Lab pin item under WI-064.