gsxdsm
944ca642ee
FN-9154: add fail-closed PostgreSQL hygiene reporting
Add an offline PostgreSQL cluster-hygiene report that records trustworthy campaign admission evidence.
- Parse provenance envelopes and fail closed on missing, malformed, cross-cluster, or stale-marker evidence.
- Classify campaign databases and owner liveness without authorizing destructive cleanup.
- Document the capture workflow and cover measured, malformed, liveness, marker, and unrelated-name cases.
Files changed:
docs/testing.md | 27 +++
.../pg-cluster-hygiene-report/count-mismatch.txt | 9 +
.../fixtures/pg-cluster-hygiene-report/empty.txt | 0
.../pg-cluster-hygiene-report/liveness-absent.txt | 7 +
.../pg-cluster-hygiene-report/liveness-alive.txt | 8 +
.../pg-cluster-hygiene-report/liveness-dead.txt | 8 +
.../pg-cluster-hygiene-report/malformed.txt | 11 ++
.../pg-cluster-hygiene-report/markers-stale.txt | 8 +
.../fixtures/pg-cluster-hygiene-report/mixed.txt | 17 ++
.../pg-cluster-hygiene-report/no-banner.txt | 1 +
.../pg-cluster-hygiene-report/post-state.txt | 7 +
.../pg-cluster-hygiene-report/pre-state.txt | 8 +
.../pg-cluster-hygiene-report/truncated.txt | 7 +
.../__tests__/pg-cluster-hygiene-report.test.mjs | 171 +++++++++++++++++
scripts/pg-cluster-hygiene-report.mjs | 212 +++++++++++++++++++++
15 files changed, 501 insertions(+)
Fusion-Task-Id: FN-9154
Fusion-Task-Lineage: fca5a025-9460-4850-8ac9-891d563b3d04
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-19 18:44:29 -07:00
..
2026-08-19 18:44:29 -07:00
2026-08-18 20:16:44 -07:00
2026-06-03 17:36:35 -07:00
2026-07-31 00:27:41 -07:00
2026-04-27 08:21:48 -07:00
2026-05-12 07:47:11 -07:00
2026-07-13 19:07:58 -07:00
2026-07-14 23:18:55 -07:00
2026-08-15 16:59:37 -07:00
2026-07-08 04:24:30 -07:00
2026-07-15 08:44:11 -07:00
2026-07-14 23:18:55 -07:00
2026-07-27 21:09:51 -07:00
2026-06-23 23:30:32 -07:00
2026-08-15 07:19:29 -07:00
2026-06-25 23:34:08 -07:00
2026-08-09 15:58:54 -07:00
2026-07-31 19:03:08 -07:00
2026-08-03 16:15:12 -07:00
2026-07-31 22:19:32 -07:00
2026-07-31 00:03:02 -07:00
2026-07-13 07:10:14 -07:00
2026-07-31 21:34:25 -07:00
2026-07-25 06:22:23 -07:00
2026-07-16 10:13:49 -07:00
2026-05-23 19:51:36 -07:00
2026-07-19 14:08:51 -07:00
2026-07-14 08:16:42 -07:00
2026-06-14 15:29:35 -07:00
2026-08-12 14:07:30 -07:00
2026-07-31 01:43:58 -07:00
2026-08-18 22:10:59 -07:00
2026-08-09 06:01:02 -07:00
2026-08-17 05:25:17 -07:00
2026-07-19 15:53:07 -07:00
2026-08-11 05:23:02 -07:00
2026-07-31 18:52:12 -07:00
2026-06-14 15:29:35 -07:00
2026-04-27 08:21:48 -07:00
2026-06-13 19:22:00 -07:00
2026-08-11 17:04:28 -07:00
2026-07-20 00:18:53 -07:00
2026-08-10 12:09:20 -07:00
2026-04-27 08:21:48 -07:00
2026-08-04 08:57:30 -07:00
2026-07-10 13:26:23 -07:00
2026-08-18 20:16:44 -07:00
2026-04-27 08:21:48 -07:00
2026-08-18 21:20:34 -07:00
2026-06-19 20:47:32 -07:00
2026-06-18 16:47:09 -07:00
2026-08-01 16:57:49 -07:00
2026-08-11 11:29:30 -10:00
2026-06-16 18:03:41 -07:00
2026-08-19 18:44:29 -07:00
2026-08-16 20:17:12 -07:00
2026-08-19 10:10:39 -07:00
2026-08-16 21:09:58 -07:00
2026-08-16 22:47:53 -07:00
2026-07-14 23:18:55 -07:00
2026-07-30 23:59:54 -07:00
2026-07-31 00:36:21 -07:00
2026-07-31 00:03:02 -07:00
2026-07-13 19:07:58 -07:00
2026-04-27 08:21:48 -07:00
2026-08-03 12:16:32 -07:00
2026-07-14 23:18:55 -07:00
2026-06-24 19:25:44 -07:00
2026-06-21 10:53:08 -07:00
2026-08-04 09:21:07 -07:00
2026-05-27 21:31:12 -07:00
2026-07-15 08:44:11 -07:00
2026-07-14 23:18:55 -07:00
2026-04-27 08:21:48 -07:00
2026-06-30 08:04:12 -07:00
2026-04-29 08:15:38 -07:00
2026-07-19 00:10:02 -07:00
2026-07-03 07:47:03 -07:00
2026-08-19 05:23:41 -07:00
2026-06-25 17:04:30 -07:00
2026-08-18 08:08:24 -07:00
2026-08-18 08:08:24 -07:00
2026-05-03 05:47:11 -07:00
2026-07-15 14:41:05 -07:00
2026-08-11 03:06:02 -07:00
2026-07-17 22:45:57 -07:00
2026-07-17 23:18:40 -07:00
2026-06-19 05:13:39 -07:00