Version: 1.0 Tier: Platinum RSR Compliance
This document defines the formal release process for UbiCity, ensuring quality, security, and traceability for all published versions.
Breaking Changes: Data format, core API, migration required
Example: v1.0.0, v2.0.0 Cadence: Yearly or as needed Approval: Consensus of all maintainers
New Features: Backwards compatible, no migration needed
Example: v0.4.0, v0.5.0 Cadence: Quarterly or as features complete Approval: 2+ maintainer approval
Bug Fixes Only: No new features
Example: v0.3.1, v0.3.2 Cadence: As needed (security fixes: immediate) Approval: 1 maintainer approval
- Create release branch:
release/vX.Y.Z - Update
CHANGELOG.mdwith all changes - Update version in
deno.json - Update version in
wasm/Cargo.toml - Update version in
src-rescript/package.json - Run full test suite:
deno task test - Run benchmarks:
deno task bench - Verify performance SLOs met
- Run security audit:
./security/audit.sh - Check test coverage ≥ 95%:
deno coverage - Verify offline-first (no network calls)
- Test all export formats (CSV, GeoJSON, DOT, Markdown)
- Verify data migration (if major/minor)
- Update documentation (README, QUICK_START, API)
- Review open issues/PRs for inclusion
- Create draft GitHub release notes
- Tag RC:
git tag vX.Y.Z-rc.1 - Build binaries:
deno task compile - Test binaries on all platforms (Linux, macOS, Windows)
- Smoke test: fresh install, capture experience, export
- Beta testing (internal or community)
- Fix critical bugs → RC.2, RC.3, etc.
- Document known issues (if any)
- Merge release branch to
main - Tag release:
git tag vX.Y.Z - Sign tag (GPG):
git tag -s vX.Y.Z -m "Release vX.Y.Z" - Push tag:
git push origin vX.Y.Z - Build release artifacts
- Generate checksums (SHA-256)
- Sign binaries (GPG)
- Create GitHub release (with artifacts)
- Update latest docs on website
- Announce release (community channels)
- Monitor for issues (first 48 hours)
- Update Nix flake (if dependencies changed)
- Update Docker images
- Archive release branch (keep for 1 year)
- Update roadmap/milestones
- Retrospective (what went well/improve)
# Compile for all platforms
deno task compile:cli # ubicity CLI
deno task compile:capture # capture tool
deno task compile:wasm # WASM modulePlatforms:
- Linux (x86_64, ARM64)
- macOS (x86_64, ARM64 M1/M2)
- Windows (x86_64)
sha256sum bin/* > SHA256SUMS
gpg --clearsign SHA256SUMS# Sign each binary
for file in bin/*; do
gpg --detach-sign --armor "$file"
doneFollowing Semantic Versioning 2.0.0:
Format: MAJOR.MINOR.PATCH[-PRERELEASE][+BUILDMETA]
Examples:
0.3.0- Minor release0.3.1- Patch release1.0.0-rc.1- Release candidate1.0.0- Major release
Pre-release Tags:
alpha- Early testing, unstablebeta- Feature complete, testingrc- Release candidate, final testing
Following Keep a Changelog:
## [X.Y.Z] - YYYY-MM-DD
### Added
- New features
### Changed
- Changes to existing features
### Deprecated
- Soon-to-be removed features
### Removed
- Removed features
### Fixed
- Bug fixes
### Security
- Vulnerability fixesClassification:
- BREAKING - Requires user action
- Deprecation - 1 major version warning before removal
Timeline: 24-48 hours Process:
- Private patch development
- Coordinate with security researchers
- Release patch ASAP
- Public disclosure after patch
Timeline: 7 days Process:
- Develop patch
- Test thoroughly
- Coordinate disclosure (90 days max)
- Release patch
Policy: Critical/High fixes backported to last 2 major versions
Example: If current is v2.3.0, backport to v1.x and v2.x
main- Stable, production-readydevelop- Integration branch (optional, for large teams)
feature/description- New featuresfix/description- Bug fixeschore/description- Maintenance
release/vX.Y.Z- Release preparation- Keep for 1 year, then archive
hotfix/vX.Y.Z- Emergency fixes- Merge to
mainanddevelop
- ✅ All tests pass (100%)
- ✅ Test coverage ≥ 95%
- ✅ Benchmarks meet SLOs
- ✅ Security audit passes
- ✅ No TypeScript errors (
deno check) - ✅ No lint warnings (
deno lint) - ✅ Format check passes (
deno fmt --check)
- Test data migration from previous versions
- Test all export formats
- Test privacy/anonymization
- Test offline-first (network disabled)
- GitHub Releases - Official announcements
- CHANGELOG.md - Detailed changes
- Twitter/Mastodon - Community announcements
- Email - Security disclosures
# UbiCity vX.Y.Z Released!
## Highlights
- Key feature 1
- Key feature 2
- Important fix 3
## Download
- [Linux]()
- [macOS]()
- [Windows]()
## Checksums
SHA-256: [link to SHA256SUMS.asc]
## Upgrade Guide
See [MIGRATION.md]() for detailed instructions.
## Contributors
Thanks to @user1, @user2, @user3!If critical bug discovered post-release:
-
Assessment (< 1 hour)
- Severity: Does it cause data loss/corruption?
- Impact: How many users affected?
-
Decision (maintainers consensus)
- Option A: Hotfix patch (preferred)
- Option B: Rollback release (nuclear option)
-
Hotfix Process (< 24 hours)
- Create
hotfix/vX.Y.Z+1branch - Fix bug
- Fast-track testing
- Release immediately
- Create
-
Rollback Process (last resort)
- Yank release from package managers
- Update docs: "vX.Y.Z deprecated, use vX.Y.Z-1"
- Post-mortem analysis
- Download count
- Installation errors (if telemetry opt-in)
- Bug reports (first week)
- Security issues
- Documentation gaps
- ✅ Zero data-loss bugs
- ✅ Zero critical security issues
- ✅ < 5% bug reports (of total users)
- ✅ Positive community feedback
release:
stage: deploy
only:
- tags
script:
- deno task test
- deno task bench
- ./security/audit.sh
- deno task compile
- ./scripts/checksum.sh
- ./scripts/sign.sh
- gh release create $CI_COMMIT_TAG bin/*- GitHub Actions - Build & release automation
- GitLab CI - Security scanning
- Dependabot - Dependency updates
- Release Drafter - Auto-generate release notes
Responsibilities:
- Coordinate release timeline
- Merge PRs
- Tag releases
- Publish artifacts
- Announce release
Term: 1 release cycle Selection: Volunteer from maintainers
- Major: All maintainers must approve
- Minor: 2+ maintainers
- Patch: 1 maintainer (or automated for security)
See MAINTAINERS.md for current maintainers.
Questions:
- What went well?
- What went wrong?
- What should we improve?
- Metrics: Did we meet SLOs?
Actions:
- Update this document
- Automate manual steps
- Fix broken processes
Document Owner: Maintainers Last Review: 2025-11-22 Next Review: 2026-02-22 (quarterly)