dashboard(7): merge xmin horizon blockers panels into overview section
Closes #183 (closed)
Summary
Consolidate Dashboard 7's xmin horizon area into a single section. The two panels in the standalone xmin horizon blockers (experimental) row are direct context for the overview chart above, so they now sit underneath it inside the xmin horizon overview (experimental) row.
Before
- Wraparound risk — top-N tables (drill down to specific tables)
- xmin horizon overview (experimental)
- xmin horizon age by source
- xmin horizon blockers (experimental)
- Longest non-idle transaction age, > 1 min
- Current blocker counts
- Autovacuum mechanics
After
- Wraparound risk — top-N tables (drill down to specific tables)
- xmin horizon overview (experimental)
- xmin horizon age by source
- Longest non-idle transaction age, > 1 min
- Current blocker counts
- Autovacuum mechanics
What changed
- Removed the
xmin horizon blockers (experimental)row (id 80) fromconfig/grafana/dashboards/Dashboard_7_Autovacuum_and_xmin_horizon.json. - Recomputed
gridPos.yfor the two affected panels and every panel below to keep the layout contiguous (shifted down by 1 row).
No metric, query, description, unit, panel id, or panel-content changes — purely a layout consolidation.
Validation
jq empty config/grafana/dashboards/Dashboard_7_Autovacuum_and_xmin_horizon.json— passes.python3 -m unittest discover -s tests/xmin_horizon -p 'test_metrics_sql_static.py'— 36/36 pass.bun test cli/test/config-consistency.test.ts— 10/10 pass.