Skip to content

Schema Lifecycle

The schema is versioned. VERSION at the repo root holds the current semver; every PG and GeoPackage database carries a schema_migrations table and a current_schema_version view baked in by sql/0-meta.sql. Together they let the project evolve the data model without losing track of what's in production.

SELECT version FROM current_schema_version;
-- → v0.1.0
  • Versioning


    How VERSION, schema_migrations, and the baseline relate. Why semver, why a view, and where the source of truth lives.

    How versioning works

  • Migrations


    Issue-NNN annotations, paired PG/GPKG dialects, UNRELEASED.sql, and the strict-sequential runners.

    Writing a migration

  • Release Process


    What scripts/release.sh does, what the Release GitHub Action publishes, and how to consume a release.

    Cut a release

  • CI & Pre-commit


    How the immutability hook is enforced both locally and on PRs, and the flake-pinned tool versions that keep CI deterministic.

    The CI gates