Releases
Cinephage uses a two-channel release model:
latest- current stable release frommaindev- current preview build fromdevvX.Y.Z- pinned stable release tag
Branch Roles
main- stable branch, used for production releasesdev- preview branch, used for ongoing integration and testing
Recommended flow:
- Feature and fix branches target
dev devis promoted intomainwhen you want a stable release- Emergency hotfixes may target
main, then must be merged back intodev
Docker Tags
Stable
ghcr.io/moldytaint/cinephage:latestghcr.io/moldytaint/cinephage:vX.Y.Z
Use latest if you want the current stable release.
Use vX.Y.Z if you want deterministic, pinned deployments.
Preview
ghcr.io/moldytaint/cinephage:dev
Use dev only if you want preview builds from the dev branch.
Release Process
Preview builds
Every push to dev publishes:
- floating preview tag:
dev - immutable preview candidate:
dev-YYYYMMDD-RUN
Preview builds do not create GitHub Releases.
Stable releases
Stable releases are created manually from main by promoting an immutable main-YYYYMMDD-RUN candidate.
That promotion creates:
- Git tag
vX.Y.Z - GitHub Release
vX.Y.Z - image tag
vX.Y.Z - image tag
latest
Rollback Policy
latestalways points to a stable release- rollback is done by repointing
latestto an earlier stablevX.Y.Z - Cinephage does not support forcing
latestto a preview build
If you need a non-stable build, use dev explicitly.
Version Reporting
The running application reports the deployed build/release version from runtime environment metadata.
In practice:
- Docker stable releases report
vX.Y.Z - Docker preview builds report
dev,main-YYYYMMDD-RUN, ordev-YYYYMMDD-RUNas appropriate - local/manual development falls back to
dev-local
Which Should You Use?
| Use Case | Recommended Tag |
|---|---|
| Production deployment | latest or vX.Y.Z |
| Testing new features | dev |
| Deterministic deploys | vX.Y.Z (pinned) |
| CI/CD pipelines | vX.Y.Z (pinned) |
See Also
- Migration Guide — Upgrading between versions
- Backup & Restore — Before updating