Skip to content

v0.5.25

Choose a tag to compare

@github-actions github-actions released this 30 May 23:16
· 360 commits to main since this release

v0.5.25 — internal version label matches the tag (6 sources of truth aligned)

Every release tag v0.5.2..v0.5.23 shipped an OCI artifact whose
pgrdf.control had default_version = '0.5.1' and whose INSTALL
layout named the SQL file pgrdf--0.5.1.sql, regardless of the
GHCR tag. The .so was current per-release code, so
CREATE EXTENSION pgrdf; (no version pin) worked and installed
as 0.5.1. But CREATE EXTENSION pgrdf VERSION '0.5.X' for X!=1
failed with "extension has no installation script for version".
OCI-GERMINATION surfaced this on 2026-05-30.

v0.5.24 was the first attempted fix — orphaned because the
release.yml make dist (PGXN packaging) step caught a SIXTH
source of truth I'd missed: META.json. v0.5.25 is the first
release with ALL six sources aligned.

  1. Cargo.toml version
  2. pgrdf.control default_version
  3. compose/compose.yml SQL bind-mount line
  4. tests/regression/expected/00-smoke.out hardcoded literals
  5. META.json version + provides.pgrdf.version (BOTH)
  6. docs/06-installation.md + compose/README.md example output

All six at 0.5.25 in this release.

  • Gate 0 (ci.yml regression on every push): verify-installed-
    artifacts + 00-smoke catch Cargo.toml ↔ pgrdf.control ↔
    compose.yml drift by actually using them. Always-on; ran on
    EVERY push during the bumps and caught each missed source
    one at a time.
  • Gate 1 (release.yml pre-build): Cargo.toml + pgrdf.control +
    META.json (both fields) must equal ${GITHUB_REF_NAME#v}.
    Aborts build before cargo pgrx package runs.
  • Gate 2 (release.yml post-build): SQL filename + control's
    default_version in the Repacked tarball must equal the tag.
    Aborts upload otherwise.
  • Gate 3 (oci-publish.yml post-publish smoke): pulls just-
    published artifact via ORAS, boots clean postgres:17.4-
    bookworm, runs CREATE EXTENSION pgrdf VERSION '0.5.25',
    asserts pg_extension.extversion == 0.5.25 AND
    pgrdf.version() == 0.5.25. Fail-fast: if smoke fails,
    update-latest-md.yml never fires, LATEST.md stays at prior
    version, the wrong-labeled tag exists as an orphan GHCR
    digest but never gets advertised.

The Makefile's existing check-meta target (line 38) was
itself a gate — it's what caught the v0.5.24 META.json drift.
Now also surfaced at Gate 1 (pre-build, faster error).

sql/pgrdf--0.5.1--0.5.25.sql ships as a no-op bridge.
Existing 0.5.1-labeled installs can:

ALTER EXTENSION pgrdf UPDATE TO '0.5.25';

The pgrdf schema is byte-identical between 0.5.1 and 0.5.25;
the bridge exists only to make PostgreSQL accept the upgrade
path.

NOT retroactively re-cut. Per [[only-forward-never-revert]]:

  • v0.5.1..v0.5.23 stay as historically-orphaned GHCR tags
    with the wrong internal label.
  • v0.5.24 stays as a historically-orphaned GHCR tag where
    build (17, *) succeeded but the release-overall job failed
    at PGXN. The OCI artifacts for v0.5.24 never published.
  • v0.5.25 is the first release with the correct internal label
    across all six sources AND the first to ship through the
    full 4-gate stack cleanly.

_WIP/NOTIFIES.oci-germination.0.5.23.internal-version-stuck-at-
0-5-1.md is updated to reference v0.5.25. The user will pass
it to OCI-GERMINATION once this v0.5.25 chain settles green
and the live artifact has been re-verified end-to-end.

31 / 92 unchanged. This is hygiene + structural prevention,
not a roadmap task closure.

Refs: OCI-GERMINATION report 2026-05-30; PROVENANCE.md Rule 7;
_WIP/NOTIFIES.oci-germination.0.5.23.internal-version-stuck-at-
0-5-1.md