Files
yaze/docs/internal/release-checklist-template.md
2025-11-21 21:35:50 -05:00

356 lines
12 KiB
Markdown

# Release Checklist Template
**Release Version**: vX.Y.Z
**Release Coordinator**: [Agent/Developer Name]
**Target Branch**: develop → master
**Target Date**: YYYY-MM-DD
**Status**: PLANNING | IN_PROGRESS | READY | RELEASED
**Last Updated**: YYYY-MM-DD
---
## Pre-Release Testing Requirements
### 1. Platform Build Validation
All platforms must build successfully with zero errors and minimal warnings.
#### Windows Build
- [ ] **Debug build passes**: `cmake --preset win-dbg && cmake --build build`
- [ ] **Release build passes**: `cmake --preset win-rel && cmake --build build`
- [ ] **AI build passes**: `cmake --preset win-ai && cmake --build build --target z3ed`
- [ ] **No new warnings**: Compare warning count to previous release
- [ ] **Smoke test**: `pwsh -File scripts/agents/windows-smoke-build.ps1 -Preset win-rel -Target yaze`
- [ ] **Blocker Status**: NONE | [Description if blocked]
#### Linux Build
- [ ] **Debug build passes**: `cmake --preset lin-dbg && cmake --build build`
- [ ] **Release build passes**: `cmake --preset lin-rel && cmake --build build`
- [ ] **AI build passes**: `cmake --preset lin-ai && cmake --build build --target z3ed`
- [ ] **No new warnings**: Compare warning count to previous release
- [ ] **Smoke test**: `scripts/agents/smoke-build.sh lin-rel yaze`
- [ ] **Blocker Status**: NONE | [Description if blocked]
#### macOS Build
- [ ] **Debug build passes**: `cmake --preset mac-dbg && cmake --build build`
- [ ] **Release build passes**: `cmake --preset mac-rel && cmake --build build`
- [ ] **AI build passes**: `cmake --preset mac-ai && cmake --build build --target z3ed`
- [ ] **Universal binary passes**: `cmake --preset mac-uni && cmake --build build`
- [ ] **No new warnings**: Compare warning count to previous release
- [ ] **Smoke test**: `scripts/agents/smoke-build.sh mac-rel yaze`
- [ ] **Blocker Status**: NONE | [Description if blocked]
### 2. Test Suite Validation
All test suites must pass on all platforms.
#### Unit Tests
- [ ] **Windows**: `./build/bin/yaze_test --unit` (100% pass)
- [ ] **Linux**: `./build/bin/yaze_test --unit` (100% pass)
- [ ] **macOS**: `./build/bin/yaze_test --unit` (100% pass)
- [ ] **Zero regressions**: No new test failures vs previous release
- [ ] **Coverage maintained**: >80% coverage for critical paths
#### Integration Tests
- [ ] **Windows**: `./build/bin/yaze_test --integration` (100% pass)
- [ ] **Linux**: `./build/bin/yaze_test --integration` (100% pass)
- [ ] **macOS**: `./build/bin/yaze_test --integration` (100% pass)
- [ ] **ROM-dependent tests**: All pass with reference ROM
- [ ] **Zero regressions**: No new test failures vs previous release
#### E2E Tests
- [ ] **Windows**: `./build/bin/yaze_test --e2e` (100% pass)
- [ ] **Linux**: `./build/bin/yaze_test --e2e` (100% pass)
- [ ] **macOS**: `./build/bin/yaze_test --e2e` (100% pass)
- [ ] **GUI workflows validated**: Editor smoke tests pass
- [ ] **Zero regressions**: No new test failures vs previous release
#### Performance Benchmarks
- [ ] **Graphics benchmarks**: No >10% regression vs previous release
- [ ] **Load time benchmarks**: ROM loading <3s on reference hardware
- [ ] **Memory benchmarks**: No memory leaks detected
- [ ] **Profile results**: No new performance hotspots
### 3. CI/CD Validation
All CI jobs must pass successfully.
- [ ] **Build job (Linux)**: ✅ SUCCESS
- [ ] **Build job (macOS)**: ✅ SUCCESS
- [ ] **Build job (Windows)**: ✅ SUCCESS
- [ ] **Test job (Linux)**: ✅ SUCCESS
- [ ] **Test job (macOS)**: ✅ SUCCESS
- [ ] **Test job (Windows)**: ✅ SUCCESS
- [ ] **Code Quality job**: ✅ SUCCESS (clang-format, cppcheck, clang-tidy)
- [ ] **z3ed Agent job**: ✅ SUCCESS (optional, if AI features included)
- [ ] **Security scan**: ✅ PASS (no critical vulnerabilities)
**CI Run URL**: [Insert GitHub Actions URL]
### 4. Code Quality Checks
- [ ] **clang-format**: All code formatted correctly
- [ ] **clang-tidy**: No critical issues
- [ ] **cppcheck**: No new warnings
- [ ] **No dead code**: Unused code removed
- [ ] **No TODOs in critical paths**: All critical TODOs resolved
- [ ] **Copyright headers**: All files have correct headers
- [ ] **License compliance**: All dependencies have compatible licenses
### 5. Symbol Conflict Verification
- [ ] **No duplicate symbols**: `scripts/check-symbols.sh` passes (if available)
- [ ] **No ODR violations**: All targets link cleanly
- [ ] **Flag definitions unique**: No FLAGS_* conflicts
- [ ] **Library boundaries clean**: No unintended cross-dependencies
### 6. Configuration Matrix Coverage
Test critical preset combinations:
- [ ] **Minimal build**: `cmake --preset minimal` (no gRPC, no AI)
- [ ] **Dev build**: `cmake --preset dev` (all features, ROM tests)
- [ ] **CI build**: `cmake --preset ci-*` (matches CI environment)
- [ ] **Release build**: `cmake --preset *-rel` (optimized, no tests)
- [ ] **AI build**: `cmake --preset *-ai` (gRPC + AI runtime)
### 7. Feature-Specific Validation
#### GUI Application (yaze)
- [ ] **Launches successfully**: No crashes on startup
- [ ] **ROM loading works**: Can load reference ROM
- [ ] **Editors functional**: All editors (Overworld, Dungeon, Graphics, etc.) open
- [ ] **Saving works**: ROM modifications persist correctly
- [ ] **No memory leaks**: Valgrind/sanitizer clean (Linux/macOS)
- [ ] **UI responsive**: No freezes or lag during normal operation
#### CLI Tool (z3ed)
- [ ] **Launches successfully**: `z3ed --help` works
- [ ] **Basic commands work**: `z3ed rom info zelda3.sfc`
- [ ] **AI features work**: `z3ed agent chat` (if enabled)
- [ ] **HTTP API works**: `z3ed --http-port=8080` serves endpoints (if enabled)
- [ ] **TUI functional**: Terminal UI renders correctly
#### Asar Integration
- [ ] **Patch application works**: Can apply .asm patches
- [ ] **Symbol extraction works**: Symbols loaded from ROM
- [ ] **Error reporting clear**: Patch errors show helpful messages
#### ZSCustomOverworld Support
- [ ] **v3 detection works**: Correctly identifies ZSCustomOverworld ROMs
- [ ] **Upgrade path works**: Can upgrade from v2 to v3
- [ ] **Extended features work**: Multi-area maps, custom sizes
### 8. Documentation Validation
- [ ] **README.md up to date**: Reflects current version and features
- [ ] **CHANGELOG.md updated**: All changes since last release documented
- [ ] **Build docs accurate**: Instructions work on all platforms
- [ ] **API docs current**: Doxygen builds without errors
- [ ] **User guides updated**: New features documented
- [ ] **Migration guide**: Breaking changes documented (if any)
- [ ] **Release notes drafted**: User-facing summary of changes
### 9. Dependency and License Checks
- [ ] **Dependencies up to date**: No known security vulnerabilities
- [ ] **License files current**: All dependencies listed in LICENSES.txt
- [ ] **Third-party notices**: THIRD_PARTY_NOTICES.md updated
- [ ] **Submodules pinned**: All submodules at stable commits
- [ ] **vcpkg versions locked**: CMake dependency versions specified
### 10. Backward Compatibility
- [ ] **ROM format compatible**: Existing ROMs load correctly
- [ ] **Save format compatible**: Old saves work in new version
- [ ] **Config file compatible**: Settings from previous version preserved
- [ ] **Plugin API stable**: External plugins still work (if applicable)
- [ ] **Breaking changes documented**: Migration path clear
---
## Release Process
### Pre-Release
1. **Branch Preparation**
- [ ] All features merged to `develop` branch
- [ ] All tests passing on `develop`
- [ ] Version number updated in:
- [ ] `CMakeLists.txt` (PROJECT_VERSION)
- [ ] `src/yaze.cc` (version string)
- [ ] `src/cli/z3ed.cc` (version string)
- [ ] `README.md` (version badge)
- [ ] CHANGELOG.md updated with release notes
- [ ] Documentation updated
2. **Final Testing**
- [ ] Run full test suite on all platforms
- [ ] Run smoke builds on all platforms
- [ ] Verify CI passes on `develop` branch
- [ ] Manual testing of critical workflows
- [ ] Performance regression check
3. **Code Freeze**
- [ ] Announce code freeze on coordination board
- [ ] No new features merged
- [ ] Only critical bug fixes allowed
- [ ] Final commit message: "chore: prepare for vX.Y.Z release"
### Release
4. **Merge to Master**
- [ ] Create merge commit: `git checkout master && git merge develop --no-ff`
- [ ] Tag release: `git tag -a vX.Y.Z -m "Release vX.Y.Z - [Brief Description]"`
- [ ] Push to remote: `git push origin master develop --tags`
5. **Build Release Artifacts**
- [ ] Trigger release workflow: `.github/workflows/release.yml`
- [ ] Verify Windows binary builds
- [ ] Verify macOS binary builds (x64 + ARM64)
- [ ] Verify Linux binary builds
- [ ] Verify all artifacts uploaded to GitHub Release
6. **Create GitHub Release**
- [ ] Go to https://github.com/scawful/yaze/releases/new
- [ ] Select tag `vX.Y.Z`
- [ ] Title: "yaze vX.Y.Z - [Brief Description]"
- [ ] Description: Copy from CHANGELOG.md + add highlights
- [ ] Attach binaries (if not auto-uploaded)
- [ ] Mark as "Latest Release"
- [ ] Publish release
### Post-Release
7. **Verification**
- [ ] Download binaries from GitHub Release
- [ ] Test Windows binary on clean machine
- [ ] Test macOS binary on clean machine (both Intel and ARM)
- [ ] Test Linux binary on clean machine
- [ ] Verify all download links work
8. **Announcement**
- [ ] Update project website (if applicable)
- [ ] Post announcement in GitHub Discussions
- [ ] Update social media (if applicable)
- [ ] Notify contributors
- [ ] Update coordination board with release completion
9. **Cleanup**
- [ ] Archive release branch (if used)
- [ ] Close completed milestones
- [ ] Update project board
- [ ] Plan next release cycle
---
## GO/NO-GO Decision Criteria
### ✅ GREEN LIGHT (READY TO RELEASE)
**All of the following must be true**:
- ✅ All platform builds pass (Windows, Linux, macOS)
- ✅ All test suites pass on all platforms (unit, integration, e2e)
- ✅ CI/CD pipeline fully green
- ✅ No critical bugs open
- ✅ No unresolved blockers
- ✅ Documentation complete and accurate
- ✅ Release artifacts build successfully
- ✅ Manual testing confirms functionality
- ✅ Release coordinator approval
### ❌ RED LIGHT (NOT READY)
**Any of the following triggers a NO-GO**:
- ❌ Platform build failure
- ❌ Test suite regression
- ❌ Critical bug discovered
- ❌ Security vulnerability found
- ❌ Unresolved blocker
- ❌ CI/CD pipeline failure
- ❌ Documentation incomplete
- ❌ Release artifacts fail to build
- ❌ Manual testing reveals issues
---
## Rollback Plan
If critical issues are discovered post-release:
1. **Immediate**: Unlist GitHub Release (mark as pre-release)
2. **Assess**: Determine severity and impact
3. **Fix**: Create hotfix branch from `master`
4. **Test**: Validate fix with full test suite
5. **Release**: Tag hotfix as vX.Y.Z+1 and release
6. **Document**: Update CHANGELOG with hotfix notes
---
## Blockers and Issues
### Active Blockers
| Blocker | Severity | Description | Owner | Status | ETA |
|---------|----------|-------------|-------|--------|-----|
| [Add blockers as discovered] | | | | | |
### Resolved Issues
| Issue | Resolution | Date |
|-------|------------|------|
| [Add resolved issues] | | |
---
## Platform-Specific Notes
### Windows
- **Compiler**: MSVC 2022 (Visual Studio 17)
- **Generator**: Ninja Multi-Config
- **Known Issues**: [List any Windows-specific considerations]
- **Verification**: Test on Windows 10 and Windows 11
### Linux
- **Compiler**: GCC 12+ or Clang 16+
- **Distros**: Ubuntu 22.04, Fedora 38+ (primary targets)
- **Known Issues**: [List any Linux-specific considerations]
- **Verification**: Test on Ubuntu 22.04 LTS
### macOS
- **Compiler**: Apple Clang 15+
- **Architectures**: x86_64 (Intel) and arm64 (Apple Silicon)
- **macOS Versions**: macOS 12+ (Monterey and later)
- **Known Issues**: [List any macOS-specific considerations]
- **Verification**: Test on both Intel and Apple Silicon Macs
---
## References
- **Testing Infrastructure**: [docs/internal/testing/README.md](testing/README.md)
- **Build Quick Reference**: [docs/public/build/quick-reference.md](../public/build/quick-reference.md)
- **Testing Quick Start**: [docs/public/developer/testing-quick-start.md](../public/developer/testing-quick-start.md)
- **Coordination Board**: [docs/internal/agents/coordination-board.md](agents/coordination-board.md)
- **CI/CD Pipeline**: [.github/workflows/ci.yml](../../.github/workflows/ci.yml)
- **Release Workflow**: [.github/workflows/release.yml](../../.github/workflows/release.yml)
---
**Last Review**: YYYY-MM-DD
**Next Review**: YYYY-MM-DD (after release)