Stichprobenbasierter Scrub-Job: nimmt BAK-05s existing_in_storage, priorisiert nach eigenem scrub_state.last_scrubbed_at (nicht file_revisions.created_at, sonst kein echtes Rotationsverhalten), prueft Inhalt per SHA-256 gegen file_revisions.checksum_sha256. Meldung ueber echten dauerhaften /metrics-Endpunkt (Pull-Modell, OPS-03 scrapt, kein Push), Counter monoton steigend. Real registriert in Core metrics_sources, End-zu-Ende ueber OPS-03-Aggregator bestaetigt, realer Befund-Durchlauf mit absichtlich falscher Pruefsumme durchgefuehrt.
22 lines
1.0 KiB
SQL
22 lines
1.0 KiB
SQL
-- BAK-08: Zustand des Integritaets-Scrub-Jobs. Getrennt von file_revisions
|
|
-- (DMS-Eigentum, nur lesend zugegriffen) und getrennt von BAK-05s
|
|
-- reconcile-Paket (existenz-only, keine Inhaltspruefung) — eigener,
|
|
-- Archive-eigener Zustand ueber ZULETZT geprueften Zeitpunkt je Objekt,
|
|
-- damit Sampling rotiert statt dieselben "aeltesten" Objekte auf ewig
|
|
-- erneut zu ziehen.
|
|
CREATE TABLE IF NOT EXISTS scrub_state (
|
|
storage_key TEXT PRIMARY KEY,
|
|
last_scrubbed_at TIMESTAMPTZ NOT NULL,
|
|
last_result TEXT NOT NULL CHECK (last_result IN ('ok', 'failed'))
|
|
);
|
|
|
|
-- Einzelne Zeile, monoton steigender Zaehler fuer den OPS-05/OPS-03-
|
|
-- Metrik-Export (Counter, nie ruecksetzbar — ein behobener Befund darf den
|
|
-- Zaehler nicht wieder senken, sonst waere es kein gueltiger Prometheus-
|
|
-- Counter mehr).
|
|
CREATE TABLE IF NOT EXISTS scrub_counters (
|
|
id INTEGER PRIMARY KEY DEFAULT 1 CHECK (id = 1),
|
|
findings_total BIGINT NOT NULL DEFAULT 0
|
|
);
|
|
INSERT INTO scrub_counters (id, findings_total) VALUES (1, 0) ON CONFLICT (id) DO NOTHING;
|