Release 0.15.0

Release 0.15.0

Tracking issue for the 0.15.0 release of PostgresAI monitoring. Process: rules/projects/postgresai__release_process.mdc.

Pre-release validation

  • RC tag(s) cleared
    • CI green on the latest RC tag — latest RC is now 0.15.0-rc.8, cut from main (5f8af30, which includes merged GA-blocker fix !283 (merged)); supersedes rc.7. rc.8 publish pipeline 2571391321 succeeded (npm publish + docker:publish:images multi-arch). Historical: rc.7 tag / pipeline 2567649863 was green and superseded rc.6.
    • Manual + AI testing complete, evidence linked — automated suites green earlier + local Docker gates on rc.8 (fresh-install + upgrade-fix proof + isolated DinD e2e) all PASS; evidence in the rc.8 verdict note below.
  • Artifacts smoke test (against the latest RC tag) — re-run against rc.8; all artifacts confirmed. Known anomaly to fix at GA: npm latest dist-tag still = 0.15.0-rc.0 (rc.8 correctly did not move it); must be set to 0.15.0 at the GA tag.
    • npm view postgresai@0.15.0-rc.8 version returns 0.15.0-rc.8
    • npm view pgai@0.15.0-rc.8 version returns 0.15.0-rc.8
    • npm view postgresai dist-tags and npm view pgai dist-tags show rc=0.15.0-rc.8
    • Fresh-cache npx postgresai@0.15.0-rc.8 --version and npx pgai@0.15.0-rc.8 --version return 0.15.0-rc.8
    • Fresh-cache bunx postgresai@0.15.0-rc.8 --version and bunx pgai@0.15.0-rc.8 --version return 0.15.0-rc.8
    • docker pull postgresai/reporter:0.15.0-rc.8 succeeds — digest sha256:743875ab…a949
    • docker pull postgresai/monitoring-flask-backend:0.15.0-rc.8 succeeds — digest sha256:cc874c0c…d82f
    • docker pull postgresai/postgres-ai-configs:0.15.0-rc.8 succeeds — digest sha256:ea7a7c85…e75a4
    • docker pull postgresai/pgwatch:0.15.0-rc.8 succeeds — digest sha256:e366c783…2bcfb
    • Evidence: rc.8 verdict note below. Historical rc.6 evidence: note #3398124945
  • Fresh CLI install on a clean box
    • npx postgresai@0.15.0-rc.8 mon local-install --demo completes successfully on a disposable fresh Linux host (validated on rc.8 in isolated DinD)
    • Grafana Dashboard 01 renders data within 5 minutes (rc.8: renders 6 live series via the VM_AUTH-gated pgwatch→VM→Grafana chain; 15 dashboards provisioned)
    • Evidence linked (screenshot / screencast) — rc.8 verdict note below
    • Validated on rc.8 in an isolated DinD environment: VictoriaMetrics HEALTHY (no Exited 255), all services on rc.8 images, Dashboard 01 renders 6 live series within 5 min. Evidence in the rc.8 verdict note below.
  • Console-driven deploy
    • Deployed via console.postgres.ai/<org>/monitoring/startup/create/managed?postgresai_version=0.15.0-rc.8 to a fresh target
    • Dashboard 01 renders data on the deployed instance
    • Evidence linked
    • The only remaining validation gate. This is the external platform-all path; it needs an authenticated Console session plus a fresh deployment target/database, which is not available in this autonomous environment. Recommendation: document as a residual and validate post-GA (or via an authenticated Console session).
  • Upgrade test (previous release → latest RC)
    • Documented upgrade procedure works end-to-end — real published npx postgresai@0.15.0-rc.8 mon update on a non-git 0.14 install: docker-compose.yml refreshed (VM_AUTH refs 0→10, sink-prometheus + Grafana datasource now wired), backup docker-compose.yml.bak-0.14.0-cba2cda5 = pristine 0.14, .env migrated additively (VM_AUTH_* added, existing values + comments preserved)
    • User-configured instances.yml targets preserved — instances.yml byte-identical after upgrade (custom target preserved)
    • Breaking changes documented in release notes
    • Original GA blocker (the documented npx 0.14→0.15 upgrade kept the stale docker-compose.yml, so VictoriaMetrics crashed on missing VM_AUTH_* and dashboards went blind) was fixed in !283 (merged) (merged to main, includes reviewer hardening) and is now confirmed GREEN on rc.8 via the real published-artifact upgrade above. Evidence in the rc.8 verdict note below.
  • Doc audit
    • All install/upgrade commands in README.md, cli/README.md, and docs.postgres.ai pin a concrete version (no @latest / @rc / @beta) — covered by docs!933 (merged) and postgresai!280, pending review/merge
    • requirements.md matches actual compose resource needs — covered by docs!933 (merged), pending review/merge
    • README upgrade section flags/preserves the safe upgrade path — covered by postgresai!280, pending review/merge
    • docs.postgres.ai monitoring section updated if needed — covered by docs!933 (merged), patched through commit cc121897, pipeline 2561262859 passed. Full feature-coverage audit (5 of 31 features fully documented) closed by docs MR !934 — Denis (Sarumyan9999) approved → cap-postgresai SOC2 gate resolved → MERGED, commit 90fe5d88; redeploy pipeline 2578484076 in progress (verify-live tracked in Post-release).

Downstream MRs prepared (do not merge until approved)

Release

  • Final tag 0.15.0 pushed
  • Tag pipeline finished — all artifacts published
    • npm view postgresai@0.15.0 version returns 0.15.0
    • npm view pgai@0.15.0 version returns 0.15.0
    • npm view postgresai dist-tags and npm view pgai dist-tags show latest=0.15.0
    • Fresh-cache npx postgresai --version, npx pgai --version, bunx postgresai --version, and bunx pgai --version return 0.15.0
    • All four Docker Hub images pullable for 0.15.0
  • Release notes published on both GitLab and GitHub (same body, generated with cli/scripts/generate-release-notes.ts; MR/issue refs must be absolute URLs so they work from both sides)
  • Auxiliary MRs merged
    • docs (pins — docs!933 (merged), merged)
    • docs feature coverage MERGEDdocs!934 (merged) (feature-coverage close + 4-gap accuracy follow-up folded in; ~232 source-verified corrections across 14 rounds) approved by Denis (Sarumyan9999) → cap-postgresai SOC2 gate resolved → merged, commit 90fe5d88. docs.postgres.ai redeploy pipeline 2578484076 running — verify-live tracked in Post-release
    • platform-all default-tag bump — N/A in platform-all; tracked under Post-release (ansible v1.8 + prod setting; !367 override ≠ default bump)
    • Helm / repo docs chart-values prep (!280 (merged)) — note: chart release still requires helm-v0.15.0 (see Post-release)
    • Release rules

Post-release

  • npm dist-tag sanitynpm view postgresai dist-tags --json / npm view pgai dist-tags --json: latest=0.15.0 for BOTH postgresai and pgai; rc=0.15.0-rc.8, dev=0.15.0-dev.11, beta=0.14.0-beta.16 undisturbed (verified 2026-06-02 — passes)
  • GA app images all publishedpostgresai/{reporter,monitoring-flask-backend,postgres-ai-configs,pgwatch}:0.15.0 all return HTTP 200 on Docker Hub. Digests recorded in note #3413027662: reporter sha256:37a1d093…b1f34, monitoring-flask-backend sha256:3995ab31…0352, postgres-ai-configs sha256:7f6f87ab…5b88, pgwatch sha256:569dafad…e873.
  • Helm chart releasedhelm-v0.15.0 tag cut (chart publish is gated on a separate helm-v<tag> tag; !280 (merged) only prepared chart values/defaults, it does not ship the chart). MUST follow the images-all-200 item above.
    • helm-v0.15.0 pipeline finished — chart packaged + GitLab release asset published
    • Fresh helm install of the published 0.15.0 chart pulls the :0.15.0 images and comes up healthy (not just "values updated")
    • Dashboard 01 renders data on the Helm-installed instance — evidence linked
  • console.postgres.ai / simple-install default tag bumped to 0.15.0 — the platform-all ?postgresai_version= override (!367) is only an override; the default is the postgres_ai-ansible vars/main.yml pin (now 0.15.0 at tag v1.8 ) plus the production app.settings.monitoring_ansible_image setting (still pending repoint — see below)
    • postgres_ai-ansible vars/main.ymlpostgres_ai_version + postgres_ai_cli_version = 0.15.0, release tag v1.8 cut — commit f455ed2b7b27, tag v1.8; GA images published to Docker Hub postgresai/monitoring-ansible:1.8 + GitLab registry. ⚠️ Bump went direct-to-main without an MR — retro-MR for the audit trail pending Nik's decision.
    • Production platform_settings updated: app.settings.monitoring_ansible_image → the PUBLIC Docker Hub image postgresai/monitoring-ansible:1.8 (immutable GA tag). ⚠️ Must NOT point at the private GitLab registry image registry.gitlab.com/postgres-ai/postgres_ai-ansible:1.8 — the simple-install launcher cannot pull it (observed "access forbidden" deploy failure). PENDING Nik's prod-DB access.
    • Verified on production: a fresh console deploy with no ?postgresai_version= override provisions 0.15.0 (the rc.8 console gate used an explicit override, so the default path is still unverified) — evidence linked
  • demo.postgres.ai (5.161.85.183) upgraded to 0.15.0 — per the cloud-client upgrade runbook (WI #220); GA app images all-200 confirmed first. Done + verified (via PG-volume reset): HEAD at 0.15.0, all services on 0.15.0 images, PG17 healthy. Evidence in confidential WI #220.
  • Demo dashboards verified rendering data after upgrade — Dashboards 01/07/14 render; VM metric history preserved (714M rows); target_db re-seeded + scraped; public site returns 302. Evidence in confidential WI #220.
  • docs.postgres.ai feature coverage complete — beyond pins (!933, merged): feature-coverage MR docs!934 (merged) (gap close + 4-gap accuracy follow-up folded in; ~232 source-verified corrections across 14 rounds, plus the PG 15→17 migration procedure and post-migration query-text recovery — IPv6 pg_hba + init.sql) MERGED (Denis/Sarumyan9999 approved → cap-postgresai SOC2 gate resolved → commit 90fe5d88) and LIVE — redeploy pipeline 2578484076 succeeded (deploy_production job success). All sub-items done:
    • top_n list fixed in 02-query-analysis.md (5, 10, 15, 20, 50, 100, 500) to match index.md
    • D7 07-autovacuum.md panel titles match the shipped Dashboard_7 JSON + note xmin section is "(experimental)"
    • installation-helm.md VM auth/retention corrected (victoriaMetrics.retentionPeriod: 336h, auth.{enabled,username}, password via secrets.vmAuth.password → secret key vm-auth-password; drop the false 90d-vs-336h callout)
    • upgrade.md documents the npx/npm i -g bundled-compose auto-refresh + .bak backup (!283 (merged)) for non-git installs
    • docs.postgres.ai redeploys after the docs MRs merge — verify live — LIVE: pipeline 2578484076 succeeded on master (deploy_production job success), so the merged docs!934 (merged) content (PG15→17 migration + query-text recovery + ~232 corrections) is now live on docs.postgres.ai
  • GitHub release parity — release 0.15.0 published at https://github.com/postgres-ai/postgresai/releases/tag/0.15.0 (marked latest), body byte-for-byte identical to the GitLab release; both pages HTTP 200, GitHub refs/tags/0.15.05f8af30 matches GitLab tag commit (evidence: note #3413027662)
  • README "Access points" doc nit fixed — README says Grafana login monitoring; actual admin user is monitor (GF_SECURITY_ADMIN_USER). Follow-up MR linked
  • Backport decision recorded — per release-process §Backporting, decide whether npx-upgrade GA-blocker fix (!283 (merged)) warrants a 0.14.x backport (likely N/A — ships in 0.15.0 GA) — N/A or MR linked
  • Post-publish monitoring window — watch GA artifacts after publish (Docker Hub pulls, npm installs, console default deploys, demo dashboards) for regressions/error reports before declaring the release stable
  • Tracking issue closed — close #186 once all Release / Post-release / Announce items are checked

Announce

  • Twitter
  • LinkedIn
  • Slack
  • Email newsletter (major releases only — mark N/A for patches)
Edited by Nikolay Samokhvalov