See also: ROADMAP.md

v1.0.0 — Stable Release

Goal: First officially supported release. Semantic versioning locks in. API, catalog schema, and GUC names are considered stable. Focus is distribution — getting pg_trickle onto package registries — and PostgreSQL 19 forward-compatibility.

PostgreSQL 19 Forward-Compatibility (A3)

In plain terms: When PostgreSQL 19 beta stabilises and pgrx 0.18.x ships with PG 19 support, this milestone bumps the pgrx dependency, audits every internal pg_sys::* API call for breaking changes, adds conditional compilation gates, and validates the WAL decoder against any pgoutput format changes introduced in PG 19. Moved here from the earlier v0.26.0 milestone because PG 19 beta availability is uncertain.

Item Description Effort Ref
A3-1 pgrx version bump to 0.18.x (PG 19 support) + cargo pgrx init --pg19 2–4h PLAN_PG19_COMPAT.md §2
A3-2 pg_sys::* API audit: heap access, catalog structs, WAL decoder LogicalDecodingContext 8–16h PLAN_PG19_COMPAT.md §3
A3-3 Conditional compilation (#[cfg(feature = "pg19")]) for changed APIs 4–8h PLAN_PG19_COMPAT.md §4
A3-4 CI matrix expansion for PG 19 + full E2E suite run 4–8h PLAN_PG19_COMPAT.md

A3 subtotal: ~18–36 hours

Release engineering

In plain terms: The 1.0 release is the official “we stand behind this API” declaration — from this point on the function names, catalog schema, and configuration settings won’t change without a major version bump. The practical work is getting pg_trickle onto standard package registries (PGXN, apt, rpm) so it can be installed with the same commands as any other PostgreSQL extension, and hardening the CloudNativePG integration for Kubernetes deployments.

Item Description Effort Ref
R1 Semantic versioning policy + compatibility guarantees 2–3h PLAN_VERSIONING.md
R2 apt / rpm packaging (Debian/Ubuntu .deb + RHEL .rpm via PGDG) 8–12h PLAN_PACKAGING.md
R2b PGXN release_status"stable" (flip one field; PGXN testing release ships in v0.7.0) 30min PLAN_PACKAGING.md
R3 Docker Hub official image → CNPG extension image ✅ Done PLAN_CLOUDNATIVEPG.md
R4 CNPG operator hardening (K8s 1.33+ native ImageVolume) ➡️ Pulled to v0.15.0 4–6h PLAN_CLOUDNATIVEPG.md
R5 Docker Hub official image. Publish pgtrickle/pg_trickle:1.0.0-pg18 and :latest to Docker Hub. Sync Dockerfile.hub version tag with release. Automate via GitHub Actions release workflow. 2–4h
R6 Version sync automation. Ensure just check-version-sync covers all version references (Cargo.toml, extension control files, Dockerfile.hub, dbt_project.yml, CNPG manifests). Add to CI as a blocking check. 2–3h
SAST-SEMGREP Elevate Semgrep to blocking in CI. CodeQL and cargo-deny already block; Semgrep is advisory-only. Flip to blocking for consistent safety gating. Before flipping, verify zero findings across all current rules. 1–2h PLAN_SAST.md
OTL-1 OpenTelemetry tracing spans. Add pgtrickle.refresh, pgtrickle.cdc_capture, and pgtrickle.snapshot spans via the OTel SDK so every pg_trickle operation is visible to OTel collectors. Minimum viable: trace_id propagation through the refresh pipeline; attribute set = stream_table, refresh_mode, rows_processed. 4–8h PLAN_OVERALL_ASSESSMENT_3.md §9.6
SIGN-1 Cosign-sign GHCR release images. Add cosign sign step to the GitHub Actions release workflow for grove/pg-trickle, grove/pgtrickle-relay, and pg_trickle-ext GHCR images. Attach Rekor transparency log entry. Document cosign verify command in SECURITY.md. 2–4h PLAN_OVERALL_ASSESSMENT_3.md §9.11
MDB-1 Promote G17-MDB multi-database soak test to ci.yml. The stability-tests.yml G17-MDB job runs multi-database scenarios in isolation. Move it to ci.yml under the “Push to main” trigger alongside the existing soak test. Gate it on a 30-min wall-clock budget for PR CI; use the full 2-hour run on schedule. 2–3h PLAN_OVERALL_ASSESSMENT_3.md §9.10

v1.0.0 total: ~42–78 hours (incl. PG 19 compat ~18–36h + release engineering ~18–30h + OTel/cosign/MDB ~8–12h)

Exit criteria: - [ ] A3: PG 19 builds and passes full E2E suite - [ ] CI matrix includes PG 19 - [ ] Published on PGXN (stable) and apt/rpm via PGDG - [ ] Docker Hub image published (pgtrickle/pg_trickle:1.0.0-pg18 and :latest) - [x] CNPG extension image published to GHCR (pg_trickle-ext) - [x] CNPG cluster-example.yaml validated (Image Volume approach) - [ ] just check-version-sync passes and blocks CI on mismatch - [ ] SAST-SEMGREP: Semgrep elevated to blocking in CI; zero findings verified - [ ] OTL-1: OTel refresh/CDC/snapshot spans emitted; visible in Jaeger test run - [ ] SIGN-1: All GHCR release images cosign-signed; cosign verify grove/pg-trickle:1.0.0 passes - [ ] MDB-1: G17-MDB soak test runs in ci.yml on push to main; green - [ ] Upgrade path from v0.30.0 tested - [ ] Semantic versioning policy in effect