# 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)