# v0.93.0 — Monitoring, Assurance & Packaging

> **Status:** Planned
> **Scope:** Large
> **User promise:** *"I can confidently run this for years."*
> **Blocked by:** [v0.92.0](v0.92.0.md)
> **Split from:** the original v0.87.0 "Production Polish".

## Theme

The last feature release before 1.0. The question it answers is **"would a DBA
recommend this to another DBA?"** — which is decided by whether the thing can be
monitored, whether it keeps working under sustained abuse, and whether it
installs in one command.

After this release the project stops adding features and spends the remaining
pre-1.0 period on bugs, benchmarks, compatibility, upgrades, docs, real-world
workloads and simplification.

It is separated from [v0.92.0](v0.92.0.md) because its long-pole item is
calendar time, not engineering time: a 72-hour soak and a full upgrade
compatibility matrix cannot be compressed, and pairing them with feature work
in one release guarantees that either the features or the assurance gets cut.

## Items

### PP-5: Monitoring integration that works out of the box

- Prometheus exposition covering the full metric set, with a shipped, tested
  Grafana dashboard and alerting rules for the conditions that actually matter
  (SLA breach, suspended stream table, CDC lag growth, disk trend, repeated FULL
  fallback, backlog growth)
- OpenTelemetry traces (v0.81.0) validated end to end against a real collector
  in CI, with documented span names and attributes treated as a stable contract
- `health_check()` as the single "is everything fine?" entry point, with a
  documented, stable output schema suitable for automation

### PP-7: Soak, compatibility and regression gates

The testing that turns "it works" into "it keeps working":

- **Long-running soak:** 72-hour multi-database run with schema changes,
  restarts, failure injection and mixed SLAs; zero correctness deviations, no
  unbounded growth in memory, disk or catalog size
- **Upgrade compatibility matrix:** every supported source version upgraded to
  the release under test, on every supported PostgreSQL version, with active
  workloads, using real old binaries as established in
  [v0.84.0](v0.84.0.md) CAT-81-6
- **Performance regression gates:** refresh throughput, write-path overhead
  (v0.87.0) and TPC-H/Nexmark latencies gate PRs against published baselines
- **Real-world workload suite:** a small set of realistic application schemas
  and query shapes, run continuously, as the final sanity check that the
  synthetic benchmarks are not lying

The soak and the matrix must both be green on the *same* commit. A green soak
from an earlier commit does not count.

### PP-8: Packaging and install experience

Install should be one command on every supported platform, and the extension
should work immediately afterwards with no configuration:
PGXN, apt/rpm via PGDG, Docker/GHCR images, CloudNativePG extension image, and a
documented build-from-source path. Every package is verified by an install-smoke
test in CI that creates a stream table and asserts it refreshes.

## Exit criteria

- [ ] Grafana dashboard and alert rules shipped and tested; OTel spans validated
      against a real collector in CI
- [ ] 72-hour soak green on the release commit
- [ ] Upgrade matrix green across every supported source version and PostgreSQL
      version, with active workloads
- [ ] Performance regression gates active and defended
- [ ] Install-smoke test green for every published package
- [ ] **Feature freeze declared.** From this point to v1.0 the project accepts
      bug fixes, documentation, tests, compatibility work and simplification
      only. The freeze is enforced by a PR label and a CHANGELOG check, not by
      good intentions.
