12 KiB
12 KiB
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.shpasses (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 --helpworks - Basic commands work:
z3ed rom info zelda3.sfc - AI features work:
z3ed agent chat(if enabled) - HTTP API works:
z3ed --http-port=8080serves 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
-
Branch Preparation
- All features merged to
developbranch - 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
- All features merged to
-
Final Testing
- Run full test suite on all platforms
- Run smoke builds on all platforms
- Verify CI passes on
developbranch - Manual testing of critical workflows
- Performance regression check
-
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
-
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
- Create merge commit:
-
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
- Trigger release workflow:
-
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
-
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
-
Announcement
- Update project website (if applicable)
- Post announcement in GitHub Discussions
- Update social media (if applicable)
- Notify contributors
- Update coordination board with release completion
-
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:
- Immediate: Unlist GitHub Release (mark as pre-release)
- Assess: Determine severity and impact
- Fix: Create hotfix branch from
master - Test: Validate fix with full test suite
- Release: Tag hotfix as vX.Y.Z+1 and release
- 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
- Build Quick Reference: docs/public/build/quick-reference.md
- Testing Quick Start: docs/public/developer/testing-quick-start.md
- Coordination Board: docs/internal/agents/coordination-board.md
- CI/CD Pipeline: .github/workflows/ci.yml
- Release Workflow: .github/workflows/release.yml
Last Review: YYYY-MM-DD Next Review: YYYY-MM-DD (after release)