@@ -71,9 +71,9 @@ The root-owned fleet sampler republishes only the numeric status fields as
7171` jobseek_backup_* ` metrics with stable host/service labels; it never forwards
7272the JSON error text. ` DataBackupFailed ` and ` DataBackupStale ` are owned by the
7373daily Codex route in ` apps/crawler/alerts.yaml ` . This establishes the telemetry
74- source, but it does not by itself satisfy the server-backup removal gate: the
75- error-review bundle must still prove bounded historical reads and GitHub issue
76- delivery without a write credential .
74+ source. Bounded historical reads and GitHub issue delivery without a write
75+ credential remain tracked by # 5948 ; the owner-approved legacy-backup retirement
76+ described below did not waive that follow-up .
7777
7878## Initial production evidence (2026-07-22)
7979
@@ -94,8 +94,18 @@ failures and Typesense remained healthy without a restart.
9494Both timers are enabled and their next jittered runs are visible. Delete and
9595rebuild protection is enabled on both data servers, delete protection is
9696enabled on the PostgreSQL Volume, and the validated pre-cutover PostgreSQL
97- container has been removed. Legacy server backups remain until daily
98- error-review alert delivery passes the removal gate below.
97+ container has been removed.
98+
99+ On 2026-07-23, the account owner explicitly directed retirement of the mistaken
100+ server backups while #5948 was paused on account-owner acceptance of updated
101+ Grafana terms. Immediately before the control-plane change, both native backup
102+ jobs had succeeded that day, both timers were enabled, PostgreSQL WAL archival
103+ had zero failures, the Storage Box and data resources were delete-protected,
104+ both services were healthy with zero restarts/OOMs, and no backup alert was
105+ firing. Disabling the two Hetzner backup schedules also removed all seven
106+ server-bound backup images for each host. PostgreSQL and Typesense were not
107+ restarted. The independent encrypted repositories and Storage Box snapshots
108+ remain the recovery artifacts.
99109
100110## Installation and scheduling
101111
@@ -302,8 +312,7 @@ Cloudflare tunnel to a restore drill.
302312
303313## Failure and removal gates
304314
305- Do not remove the existing Hetzner server backups until all of the following
306- are true for both services:
315+ The normal replacement gate for any future legacy backup retirement is:
307316
308317- the off-host backup completed and repository validation passed;
309318- an isolated restore using that repository passed;
@@ -312,12 +321,18 @@ are true for both services:
312321 evidence and can create or update an actionable GitHub issue;
313322- recovery evidence and measured recovery time are recorded in the audit.
314323
315- Current gate state as of 2026-07-22: off-host backups, repository validation,
316- isolated restores, measured recovery evidence, enabled schedules, and visible
317- next runs have passed. Daily Codex failure/freshness evidence and proven GitHub
318- issue delivery remain pending. Therefore the legacy server backups must remain
319- enabled even though the replacement data protection is operating normally.
320-
321- After the gate passes, disable server backups and delete the residual server
322- backup images for PostgreSQL and Typesense. Preserve the independent Storage
323- Box repositories and their secondary snapshots.
324+ Current state as of 2026-07-23: off-host backups, repository validation,
325+ isolated restores, measured recovery evidence, enabled schedules, visible next
326+ runs, resource protection, and live Grafana backup series have passed. At the
327+ account owner's explicit direction, the two mistaken Hetzner backup schedules
328+ were disabled before #5948 's daily issue-delivery proof; the provider action
329+ also removed all residual server-backup images. This is a recorded,
330+ owner-approved exception, not a relaxation of the normal replacement gate.
331+
332+ Until #5948 completes, an operator must inspect the atomic backup status,
333+ repository validation, timers, WAL archive state, and ` DataBackupFailed ` /
334+ ` DataBackupStale ` rule state during production maintenance and backup incident
335+ review. A failure or stale result is critical because the native encrypted
336+ repositories are now the only recovery artifacts. Do not re-enable OS backups
337+ as a substitute for repairing the native data-backup path. Preserve the
338+ independent Storage Box repositories and their secondary snapshots.
0 commit comments