mipo

Release

A read-only view of this deployment's release posture: app and image version, the schema version of each schema (config/jobs/results) against what this release requires, recent migration history, the last backup, the scanner fleet's version and protocol distribution, and the most recent preflight result.

Fields & columns

NameDescription
App versionThe release version this manager image was built from (the compatibility manifest's appVersion).
Image SHAThe commit SHA the running containers were deployed from. Shows "unknown" on a dev stack that was not deployed via the release tooling.
Schema versionPer schema (config, jobs, results in the one cluster): the version currently applied vs. the version this release requires. "behind" means the migrator must run; "ahead" means the schema is newer than this image; "unknown" means that schema could not be read.
Migration historyThe most recent migrations applied to each schema, newest first, with the timestamp and who applied them.
Last backupThe timestamp of the most recent database backup bundle, read from the backup service.
Scanner fleetHow many scanners are registered, grouped by binary version and wire-protocol version, and how many fall inside vs. outside the supported protocol window.
PreflightThe result of the most recent preflight run, if one has been recorded: the pass/fail status and per-check summary.

How to

Decide whether it is safe to apply an upgrade

  1. Open Admin > Release.
  2. Check each schema version: "behind" is expected before an upgrade - it means the new migrator will advance it.
  3. Check the scanner fleet: any scanners outside the supported protocol window will stop receiving jobs after the upgrade until they are upgraded too.
  4. Check the last backup timestamp - take a fresh backup if it is stale before migrating. Preflight reports backup age as an informational line only; a stale backup does NOT block the upgrade (it is a deployer judgment call), so decide here whether to back up first.
  5. If a preflight result is shown, confirm it passed.

Investigate why a database will not let the app start

  1. Open Admin > Release and find the database whose schema version is "behind".
  2. Run the migrator (`docker compose --profile migrate run --rm migrator`) so the schema reaches the required version.
  3. Reload this page - the status should change to "ok".

Gotchas

  • This page is read-only. It does not run migrations or preflight itself - those run in the migrator container, either automatically via the `mipo.sh deploy` tooling or by hand on the command line.
  • Image SHA shows "unknown" on a development stack. It is only populated on staging/production deploys made through the release tooling.
  • The `mipo.sh deploy` tooling runs the migrator preflight as a FAIL-CLOSED gate before migrating, and quiesces the app roles (manager, ingest, dispatcher, maintenance) first - so a stale/missing backup, low disk, schema drift, or an out-of-window scanner aborts the upgrade before the app roles are stopped or the proxy is recreated, so the previous version keeps serving and the database is untouched. A hand-run `docker compose --profile migrate run --rm migrator` does NOT gate - run `... migrator preflight` yourself first.
  • The backup gate applies only to an in-place upgrade (an install that already has a schema). A fresh/Day-0 install skips it (nothing to protect), and `reset`/`restore` do not run it. Operators can bypass the gate with `MIPO_DEPLOY_PREFLIGHT=0` (CI staging does; production leaves it enforcing). The authoritative runbook is `docs/operations/upgrade.md`.
  • The preflight section is empty until a preflight run has been recorded.
  • A schema version of "behind" immediately before an upgrade is normal - it is the migrator's job to advance it. "ahead" is the unusual one: the database is newer than the running image.
  • A schema version of "unknown" means the page could not read that database's migration ledger - that is a connectivity problem, not a pending migration.

API calls (1)

MethodPathDescription
GET /api/admin/release Returns the aggregated release posture rendered by this page.

Related

  • Database Status — Database Status shows live DB health; Release shows schema versions and migration history.
  • Backups — Release shows the last backup timestamp; Backups is where you take and manage them.