docs/releases/v1.2.2-test-plan.md
v1.2.2 is the recovery re-release after the accidental v1.2.0/v1.2.1 publish: the v1.1.2 tree under a higher version, plus four deliberate deltas. This plan covers exactly those deltas plus the recovery paths; the underlying code is otherwise the already-tested v1.1.2 release.
scripts/update-versions.sh (version.go,
plugins, marketplace, MCP, npm, nix, winres, docs snapshot
version-1.2.2, uv.lock re-pin).go.mod retract block for v1.2.1 / v1.2.0 / v1.1.1.internal/storage/schema/schema.go (+ two new pinned tests), and
docs/RECOVERY-1.2.1.md.[1.2.2] entry and cmd/bd/info.go versionChanges entry.scripts/release-verification-1.2.2.sh.No workflow or release-script files changed: the tag runs the exact pipeline that shipped v1.1.2.
# build a v1.2.1 binary once (needed for the migrated-DB legs):
git worktree add /tmp/src-121 v1.2.1
(cd /tmp/src-121 && CGO_ENABLED=1 go build -tags gms_pure_go -o /tmp/bd-1.2.1 ./cmd/bd)
BD_121=/tmp/bd-1.2.1 ./scripts/release-verification-1.2.2.sh
The script must end 0 failed. It proves: candidate identity and unit
tests (L1), fresh-workspace round-trip at schema v53 (L2), clean reopen
(L3), the incident refusal message on a v1.2.1-migrated v65 database with
no "install the latest release" loop (L4), byte-identical reads and
working writes under BD_IGNORE_SCHEMA_SKEW=1 (L5), the runbook's cursor
rollback restoring guard-free operation (L6), the runbook's optional
events re-track (L7), idempotent re-migration by a 1.2.1 binary after
recovery — the "future tested 1.2.x upgrade still works" guarantee (L8),
and the strict tag-mode version-consistency gate (L9).
The v1.1.2 tree's own test suite must stay green with only the intended skew-message diff:
go build ./... && go vet ./...
go test ./internal/storage/schema/ -count=1
go test ./cmd/bd/ -run 'TestSchema|TestVersion|TestInfo' -count=1
(A full go test ./... matches what v1.1.2 shipped with; the packages
above are the only ones whose sources changed.)
git diff v1.1.2..release/v1.2.2 — nothing outside
the five deltas listed above.git log v1.1.2..release/v1.2.2 — commits are only this release's.docs/RECOVERY-1.2.1.md as an affected user; commands are
copy-pasteable.v1.2.2 on the release branch head; the tag-triggered
release.yml must go green end to end (version gates, MCP/npm/
website package gates, goreleaser linux+macos, attestation, PyPI,
npm).curl -s https://api.github.com/repos/gastownhall/beads/releases/latest
returns v1.2.2 → install.sh / install.ps1 / doctor nag follow.brew bump-formula-pr with the v1.2.2 tarball; after
merge, brew upgrade beads on a 1.2.1 machine lands 1.2.2 and
brew test beads passes.npm dist-tag ls @beads/bd shows latest: 1.2.2;
npm deprecate @beads/[email protected] "accidental untested release — see docs/RECOVERY-1.2.1.md".beads-mcp==1.2.1 (and 1.2.0 if present).go install github.com/steveyegge/beads/cmd/bd@latest
resolves v1.2.2 (retracts may take a proxy-cache cycle to appear).