Add xmin horizon monitoring metrics and dashboard
## Summary Add xmin horizon monitoring to pgwatch/PostgresAI so we can observe the actual xmin horizon instead of relying only on generic long-running-transaction signals. ## Why Current monitoring is too weak for wraparound and bloat RCA because it does not distinguish which subsystem is holding the xmin horizon back. We need per-component visibility plus low-cardinality blocker details that are still safe to store historically. ## Scope - add an `xmin_horizon` summary metric with age and count dimensions for: - `pg_stat_activity` - `pg_replication_slots` - `pg_stat_replication` - `pg_prepared_xacts` - add an `xmin_horizon_blockers` metric with constrained RCA labels instead of high-cardinality query text - fix replication slot xmin age calculation to handle nullable `xmin` / `catalog_xmin` - add a Grafana dashboard for the new metrics in both config trees - add a focused integration-style test for the `pg_stat_activity` path ## Reference - docs: https://postgres.ai/docs/postgres-howtos/performance-optimization/monitoring/how-to-monitor-xmin-horizon - target release: postgresai 0.15
issue