docs/RELEASE-STABILITY-GATE.md
A release MUST NOT ship until the stability gate passes. This gate protects users from silent upgrade regressions like mode flips, missing config, and data-path changes.
Every release candidate must pass upgrade smoke tests from these starting points:
| From Version | Mode | Scenario |
|---|---|---|
| Previous release (N-1) | Embedded (maintainer) | Init → create issues → upgrade → verify data + role |
| Previous release (N-1) | Shared-server (maintainer) | Init → create issues → upgrade → verify routing + data |
| Previous release (N-1) | Contributor | Init --contributor → upgrade → verify role preserved |
| Two releases back (N-2) | Embedded (maintainer) | Init → upgrade → verify schema migration |
embedded stays embedded, shared-server stays shared-serverbeads.role git config is not cleared or changedbd doctor quick passes after upgrade# Run all upgrade smoke tests
make test-upgrade
# Or directly:
./scripts/upgrade-smoke-test.sh
The script:
~/.cache/beads-regression/)bd init with the candidate binary (simulating upgrade)Before cutting a release, the release process (see RELEASING.md) requires:
make test-upgrade)make test-regression)The person cutting the release is responsible for verifying the gate passes. If any scenario fails, the release is blocked until the failure is resolved.
Gate failures block the release — there is no override. Fix the bug or document the breaking change with explicit migration steps before shipping.