# Storybook Release Process Checklist

> **Template Version:** 1.0
>
> This checklist integrates with the commit and testing policies defined in
> `.claude/CLAUDE.md`. All CLAUDE.md policies remain in effect throughout the
> release process. Do not proceed to Phase 8 (Release Artifacts) until
> Phases 1-7 are complete.

## How to Use

1. Copy this checklist into a new file at `.claude/tmp/release-vX.Y.Z.md`
2. Replace `vX.Y.Z` with the target version throughout
3. Work through each phase in order, checking off items as they are completed
4. Do not skip phases or reorder them -- earlier phases gate later ones

---

## Phase 1: Code Quality & Testing

> _Enforces CLAUDE.md: "All tests must pass", "No unused variables or dead code"_

- [ ] All `cargo test` tests pass with 0 failures
- [ ] All `cargo test --lib` unit tests pass
- [ ] `cargo clippy` reports no warnings or errors
- [ ] `cargo fmt --check` reports no formatting issues
- [ ] No unused variables, imports, or dead code in the codebase
- [ ] No `#[allow(dead_code)]` or underscore-prefixed suppressions added for release
- [ ] All new code introduced since last release has corresponding tests
- [ ] Pre-commit hooks pass cleanly (trailing whitespace, rustfmt, clippy)

## Phase 2: Documentation

- [ ] `docs/README.md` reflects the new version and any feature changes
- [ ] All reference docs in `docs/reference/` are up to date with current syntax
- [ ] Tutorial docs in `docs/tutorial/` work with the current compiler
- [ ] SBIR specification (`docs/SBIR-vX.Y.Z-SPEC.md`) exists if binary format changed
- [ ] `docs/TYPE-SYSTEM.md` is current (if type system changes are included)
- [ ] `docs/design.md` reflects any architectural changes
- [ ] No broken internal links between documentation files
- [ ] API and CLI help text matches current behavior

## Phase 3: Examples & Demos

- [ ] All `.story` example files in `docs/examples/` parse without errors
- [ ] Examples compile to valid SBIR output
- [ ] Baker family example (`docs/examples/24-baker-family-complete.md`) is current
- [ ] Examples demonstrate any new features introduced in this release
- [ ] No examples reference removed or renamed syntax

## Phase 4: Version Control & Changelog

> _Enforces CLAUDE.md: commit message format, conventional commits_

- [ ] `Cargo.toml` version field updated to `X.Y.Z`
- [ ] `docs/SBIR-CHANGELOG.md` updated with changes since last release
- [ ] All commits since last release follow conventional commit format
- [ ] No commits bypass pre-commit hooks (`--no-verify` not used)
- [ ] Git history is clean -- no fixup or WIP commits remain
- [ ] Branch is up to date with `mainline`

## Phase 5: Build & Package

- [ ] `cargo build --release` succeeds with no warnings
- [ ] `cargo install --path . --bin sb --force` installs correctly
- [ ] `cargo install --path . --bin storybook-lsp --force` installs correctly
- [ ] LSP binary at `~/.cargo/bin/storybook-lsp` launches without errors
- [ ] `sb` CLI binary executes and shows correct version

## Phase 6: Cross-Platform Testing

- [ ] macOS (primary development platform): full test suite passes
- [ ] Linux (if CI available): full test suite passes
- [ ] Zed extension builds successfully (`cd zed-storybook && ./build-extension.sh`)
- [ ] Zed extension loads and provides syntax highlighting
- [ ] LSP features work in Zed: completions, diagnostics, semantic highlighting
- [ ] `extension.toml` `rev` field points to correct commit SHA

## Phase 7: Performance & Regression

- [ ] Compile times have not regressed significantly
- [ ] Parser handles large `.story` files without timeout
- [ ] SBIR binary output is deterministic (same input produces same output)
- [ ] No regressions in existing test suite from previous release
- [ ] Memory usage is reasonable for typical workloads

## Phase 8: Release Artifacts

> **GATE: Do not begin this phase until Phases 1-7 are all complete.**

- [ ] Final `cargo test` pass immediately before tagging
- [ ] Create annotated git tag: `git tag -a vX.Y.Z -m "Release vX.Y.Z"`
- [ ] Tag message includes a brief summary of major changes
- [ ] Verify tag points to the correct commit: `git log --oneline -1 vX.Y.Z`
- [ ] Push tag to remote: `git push origin vX.Y.Z`

## Phase 9: Communication

- [ ] Release notes written summarizing user-facing changes
- [ ] Breaking changes clearly documented with migration guidance
- [ ] Known issues or limitations listed
- [ ] Contributors acknowledged (if applicable)

## Phase 10: Post-Release Verification

- [ ] Fresh clone of the repository builds successfully
- [ ] `cargo install` from the tagged commit works
- [ ] Zed extension works with the released version
- [ ] LSP connects and provides diagnostics on a sample `.story` file
- [ ] Version number in CLI output matches the tag

---

## Rollback Plan

If critical issues are discovered after tagging:

1. **Do not delete the tag.** Published tags should remain for traceability.
2. Identify and fix the issue on `mainline`.
3. Run the full checklist again for a patch release (`vX.Y.Z+1`).
4. Tag the patch release and document the issue in the changelog.
5. If the release was communicated externally, send a follow-up noting the patch.

For issues discovered before pushing the tag:

1. Delete the local tag: `git tag -d vX.Y.Z`
2. Fix the issue and commit the fix.
3. Re-run Phases 1-7 before re-tagging.

---

## Sign-Off

| Role             | Name | Date | Approved |
|------------------|------|------|----------|
| Developer        |      |      | [ ]      |
| Reviewer         |      |      | [ ]      |
| Release Manager  |      |      | [ ]      |

**Release approved:** [ ] Yes / [ ] No

---

## Notes

- This checklist integrates with `.claude/CLAUDE.md` policies. All commit,
  testing, and code quality rules from CLAUDE.md apply at every phase.
- When updating this template, increment the Template Version at the top
  and note what changed below.
- For breaking changes, consider whether SBIR format version needs updating
  and whether a migration guide is required.

### Template Changelog

- **1.0** - Initial release checklist template
