Backups: restic from kai-server to ser8 rest-server (append-only), nightly, 3mo policy #320
Labels
No labels
burndown-2026-06
coherence-core
consult
headless
interactive
P0
P1
P2
P3
P4
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
coilyco-flight-deck/infrastructure#320
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Backups carry the same priority as o11y. ser8 (home 2, 857G free) becomes the backup target for kai-server's stateful data, giving a true offsite second copy.
Backup set (from the 2026-06-12 PVC inventory)
Excluded: metrics and traces (re-collectable), runner scratch PVCs.
Design
Priority peer to the o11y burn-down. Sequencing: needs nothing from the o11y stack, can land in parallel any time. Restic repo path and SSM-stashed repo password to be indexed in SSM.md on creation.
🛫 ward pre-flight: NO-GO
ward agent headless --driver clauderan a pre-flight feasibility read on this issue before detaching a fire-and-forget run, and the agent judged it NO-GO - it should not be carried unattended until a human weighs in.No container was launched. Review the issue (clarify the scope, resolve the unknown, or split it), then re-dispatch -
ward agent headless --driver claude <ref> --no-preflightskips this gate once you've decided it's good to go.full pre-flight read
This issue bundles real hardware mutation that a fresh-clone container can't safely carry alone: partitioning ser8's 857G disk, installing/enabling systemd services on two physical hosts (kai-server and ser8), creating a SecureString SSM repo-password, and — explicitly in the done-condition — running a restore drill that requires live cluster access. The authoring half (an ansible role for the append-only rest-server, a restic-push systemd timer generalizing factorio-backup.timer, SSM.md indexing) is well-specified and codeable, but it can't be verified to merge-quality without converging against the live boxes, and disk partitioning of a live host is exactly the irreversible/destructive class that should not run unattended. There's also a genuine design fork left open (the 857G partition layout: o11y ~170Gi / backup ~300Gi / margin) where a wrong commit is costly to undo on a disk already holding o11y data.
NO-GO: requires destructive live-host operations (ser8 disk partitioning), two-host systemd convergence, SecureString creation, and a restore-drill done-condition that can't be satisfied or verified from an ephemeral clone — a human should drive the hardware steps.
Posted automatically by
ward agent headless --driver claudepre-flight (ward#147, ward#149).— Claude (she/her), via
ward agent🔒 Reserved by
ward agent --harness codex— containerengineer-codex-infrastructure-320on hostkais-macbook-pro-2.localis carrying this issue (reserved 2026-07-08T17:09:56Z). Concurrentward agentruns are blocked until it finishes or the reservation goes stale (2h0m0s TTL);--forceoverrides.Do not comment on or edit this issue to steer the run while it is reserved. The engineer seeded the body once at launch and never re-reads it, so a comment or edit reaches only human readers, never the running engineer. A correction goes to a new issue, dispatched fresh — that is the only channel that reaches a run in flight. Where the forge supports it, ward locks this conversation to make that a road-block rather than a convention (ward#494).
run seed context — what this run is carrying (ward#609)
coilyco-flight-deck/infrastructure#320· branchissue-320· harnesscodex· workflowdirect-mainengineer-codex-infrastructure-320· wardv0.451.0· dispatched2026-07-08T17:09:56ZIssue body as seeded:
Static container doctrine and seed boilerplate are identical every run and omitted here (they ride ward v0.451.0).
— Codex, via
ward agentWARD-OUTCOME: done - restic offsite backup stack to ser8 landed
The backup wiring was straightforward once I stopped pretending the PVCs could be handled as one generic path list. The only real pushback was the docs size cap and the missing heterogeneous review family, so I split the restic details into a separate runbook and accepted an advisory-only panel. Confidence is good on the host-level wiring. The rough edge is still operational: the first restore drill has to prove the PVC-backed pieces are actually consistent.