Support backups of persistent data #44

Open
tepichord wants to merge 15 commits from feat/42-support-backups-persistent-data into main
Owner

Closes #42

Automated PR created by forgejo-done adapter.

Closes #42 Automated PR created by forgejo-done adapter.
Canonical sanoid configuration for ZFS snapshots of the tank/milner
dataset, with systemd timers for automated pruning (every 15 min) and
monitoring (weekly). capacity_warn/capacity_crit live in the root-pool
section per sanoid conventions.

Refs: #42
sanoid (plus syncoid and findoid) on PATH in nix develop for
snapshot management and future offsite replication.

Refs: #42
New section covering the one-time migration runbook, sanoid snapshot
policy, capacity monitoring, rollback drill procedure, and explicit
offsite-deferral statement. Existing sections 7-9 renumbered to 8-10
with all cross-references updated.

Refs: #42
One-line pointers in root, worker, and vault READMEs directing readers
to OPERATIONS.md §7 for the snapshot policy and migration runbook.

Refs: #42
Offline tests verifying sanoid.conf retention tiers, capacity thresholds,
systemd timer configuration, and OPERATIONS.md §7 content (migration
path, offsite deferral).

Refs: #42
The staged/restored checksum verifications ran from the caller's cwd while
the manifest holds paths relative to the directory itself, so they always
failed. The clone check pointed at /tank/verify, but the pool is created
with -m /mnt/data, so a clone of tank/milner mounts at /mnt/data/verify.
Inserting §7 ZFS shifted Woodpecker/Storage/Durable volumes to §8/§9/§10,
but only the top-level headings and in-file prose references moved. The
subsection headings stayed 7a-7i / 8a-8f / 9a-9g, colliding with the new
§7 subsections, and four back-references were over-incremented (§8 items
became §10 instead of §9). Cross-references in the sibling READMEs, the
Terraform/tfvars comments, tests, AGENTS/ARCHITECTURE and drills/check.sh
are updated to match.
Author
Owner

Merge changes from main

Merge changes from main
tepichord added this to the MVP project 2026-09-10 22:33:22 -07:00
Both conflicts were section-numbering collisions. main added Pocket ID as
§5 (shifting Client devices to §6 and Bring-up order to §7) while this
branch had added §7 ZFS, so the merged runbook would otherwise carry two
§7 headings.

Resolved as: §5 Pocket ID, §6 Client devices, §7 Bring-up order, §8 ZFS,
§9 Woodpecker, §10 Storage, §11 Durable volumes. main's bring-up steps
13-14 (Pocket ID key \u2192 Vault, Vault OIDC registration) and the Pocket ID
OIDC block in .env.example are kept verbatim; every \u00a7 reference and
subsection heading across the repo follows the new numbering.
The merge resolution moved Pocket ID into §5 and Client devices to §6, but
the 'What lives where' table still pointed client daemon flags at §5. Point
it at §6, the section that actually documents --operator/--accept-routes.
zfs/sanoid.conf referenced OPERATIONS.md §8 but ZFS is §11.
Removed a verbose inline comment in test_zfs.py that duplicated the
docstring.

Refs: #44
The merge resolution kept the pre-merge renumbering's references while
OPERATIONS.md took main's section order: Woodpecker is §7 (§7h for the
Cloudflare Tunnel), and the drill ladder is §9d. Update .env.example,
.gitignore and cloudflare/terraform.tfvars.example to match.

Refs: #44
§11a delegated the build-from-source step to "the planning comment", the
only off-repo reference in the runbook and the step the pre-mortem flags
as the highest risk. Inline the commands and note the kernel-update
rebuild requirement.

Refs: #44
docs(agents): add zfs/ to the repo map
All checks were successful
ci/woodpecker/pr/woodpecker Pipeline was successful
84b8158487
Refs: #44
All checks were successful
ci/woodpecker/pr/woodpecker Pipeline was successful
Required
Details
This pull request has changes conflicting with the target branch.
  • AGENTS.md
  • OPERATIONS.md
  • README.md
  • flake.nix
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin feat/42-support-backups-persistent-data:feat/42-support-backups-persistent-data
git switch feat/42-support-backups-persistent-data
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
tepichord/milner!44
No description provided.