# Release Process

This document defines release expectations for VTuber Star Awards.

For daily delivery flow, see [workflow.md](workflow.md). For branch policy, see
[branching.md](branching.md). For release checklist, see
[CHECKLISTS.md](CHECKLISTS.md#release).

## Release Principles

- Keep releases small when practical.
- Prefer repeatable automation over manual server edits.
- Validate before and after deployment.
- Review migration and configuration risk before deploy.
- Keep rollback or recovery options ready.

## Release Types

| Type | Description |
| --- | --- |
| Standard | Planned change deployed from `main` through the Gitea workflow. |
| Hotfix | Urgent production correction with the smallest safe change. |
| Documentation-only | Docs update that does not require runtime deployment validation. |
| Infrastructure | Runtime, hosting, Docker, database, network, or secret/config change. |

## Versioning

The frontend package version lives in `frontend/package.json`. The deploy
workflow appends build metadata and writes `VITE_BUILD_VERSION` plus
`VITE_BUILD_DATE` before building production assets.

## Readiness

Before releasing application changes:

- frontend build passes;
- backend Release build passes;
- `git diff --check` passes;
- migration operations are reviewed;
- target environment config and secrets are present;
- demo, seed, CORS, and production safety settings are understood;
- UI or API behavior has targeted validation evidence.

## Automated Deployment

The production deploy job in `.gitea/workflows/ci.yaml` runs on `main` pushes
and manual dispatches.

Pipeline responsibilities:

1. Verify repository hygiene.
2. Build backend and frontend.
3. Resolve version/build metadata.
4. Verify production host layout.
5. Sync repository contents to the production app directory.
6. Write frontend build metadata.
7. Build Docker images.
8. Write a PostgreSQL predeploy backup.
9. Apply EF Core migrations.
10. Recreate `api` and `web` services.
11. Verify API health, database connectivity, pending migrations, and frontend
    assets.

## Smoke Tests

Minimum automated smoke signals:

- `https://award.noveria.net/api/health`
- `https://award.noveria.net/api/health/database`
- `pendingMigrations` is empty;
- frontend index serves current JS and CSS assets;
- JS asset contains expected build version metadata.

Add manual smoke checks for the changed workflow, especially for admin,
auth/permissions, voting, nomination, clip review, showact, sponsor, or content
management changes. Use [end-to-end-smoke.md](end-to-end-smoke.md) as the
standard core-workflow smoke checklist.

## Rollback And Recovery

Rollback planning should address:

- application artifact rollback or redeploy from a previous commit;
- database restore or forward-fix path;
- configuration rollback;
- disabling demo/seed/optional public features;
- communication of degraded public workflows.

If a migration is destructive or hard to reverse, document the recovery path
before deployment.

## Post-Release Review

After production-impacting releases:

- confirm health checks and relevant public/admin workflows;
- check for unexpected database migration state;
- record incidents or anomalies;
- update docs, checklists, or ADRs when release steps drift;
- add follow-up tests or runbooks for gaps found during release.
