Core releases version the database contract, migration runner, fixtures, tests, and source-controlled runtime manifests. Core does not publish an application container image.
Development happens on dev; releases are published from main. See
Versioning.
- Put unreleased schema, security, reliability, compatibility, and operational
changes under
## Unreleased. - Use plain headings such as
## v0.1.0-rc.1 - 2026-07-13. - Mention required application versions, extensions, environment variables, backup steps, and known limitations explicitly.
- Do not record every formatting or internal documentation edit.
Before merging to main:
- Review the complete diff and migration ordering.
- Run
./bin/test.shfor a clean install, idempotent second run, bridge contracts, ACK reliability, and grants. - Validate the core and local Bot API Compose manifests.
- Test an upgrade from a current database snapshot when the release adds a migration. When a candidate has no migration, explicitly confirm that the migration file set and a schema dump are unchanged from the previous candidate.
- Confirm compatible Vido/Searchy/bot versions and the operational rollback.
- Scan tracked files and complete Git history for secrets, credentials, database dumps, Telegram data, and private runtime files.
- Move
Unreleasedentries into the version section and keep a fresh empty## Unreleasedabove it.
- Push the verified
devbranch. - Merge
devintomainwith a merge commit. - Confirm
mainis clean and CI is green. - Create an annotated tag on the
mainrelease commit. - Push
main, then push the tag. - Confirm the release workflow creates the matching GitHub Release and marks a pre-release suffix as a pre-release.
The tag, GitHub Release, changelog section, and verified commit SHA must all match. Do not start a dependent production rollout when any of them differs.
Use this shape:
v0.1.0-rc.3
Summary:
- Why this database contract is being released.
Contracts:
- Schemas, functions, roles, or fixtures added or changed.
Operations:
- Backup, migration, environment, and compatibility requirements.
Verification:
- Disposable PostgreSQL contract test.
- Compose validation.
- Upgrade and security review status.
Known limitations:
- Forward-only or staged-rollout constraints.
Pushing a v* tag runs .github/workflows/release.yml. The workflow validates
the tag and changelog, reruns the database contract test, and creates or updates
the matching GitHub Release. It does not deploy production infrastructure.
The visible GitHub Release title is always the exact tag, with no Core prefix
or descriptive suffix.