restic: ask as root whether a directory is there #54

Merged
jschoubben merged 1 commits from fix/backup-sees-as-root into main 2026-10-05 10:38:26 +00:00
Owner

Found by the first real run on the control node: node-backup.now for postgres answered NOT backed up: /var/lib/mesh-store/dumps does not exist. It exists — inside postgres's 0700 data directory, which the runtime's account cannot see into. The holder checked with os.Stat as that account; every other act already runs through sudo -n.

  • Whether a declared directory is there, and whether a restore's target already exists, is now asked as root (test -e through the same runner).
  • New test: a directory only root can see is backed up, and the check went through the runner. It fails on the old code.

9/9 pass, including the real-restic round trip.

Found by the first real run on the control node: `node-backup.now` for postgres answered `NOT backed up: /var/lib/mesh-store/dumps does not exist`. It exists — inside postgres's 0700 data directory, which the runtime's account cannot see into. The holder checked with `os.Stat` as that account; every other act already runs through `sudo -n`. - Whether a declared directory is there, and whether a restore's target already exists, is now asked as root (`test -e` through the same runner). - New test: a directory only root can see is backed up, and the check went through the runner. It fails on the old code. 9/9 pass, including the real-restic round trip.
jschoubben added 1 commit 2026-10-05 10:31:08 +00:00
The first run on the control node called postgres's dumps missing: the holder looked as the
runtime's account, which cannot see inside a store's 0700 data directory. Every other act already
runs as root; the existence checks do too now.
jschoubben merged commit a70227a40a into main 2026-10-05 10:38:26 +00:00
jschoubben deleted branch fix/backup-sees-as-root 2026-10-05 10:38:29 +00:00
Contributor

Delivery novox/mesh-catalog@a70227a40adc — held since 2026-10-06T23:05:28Z

Held for a person: merged without a passing check: only a person decides that it goes on — mesh-delivery.release with why lets it go on.

Delivery plan — builds restic → ace, g14, novox, shanks; no bus step

  • tier 0: restic
  • ace: receives restic
  • g14: receives restic
  • novox: receives restic
  • shanks: receives restic
  • restic keeps data (ADR 0233): what it holds is backed up before it moves

Transitions

  • 2026-10-06 23:05 (new) → proposed (announced): novox/mesh-catalog#54 merged; its head was not heard by this owner, so it is made from the forge's word
  • 2026-10-06 23:05 proposed → held (merged-unchecked): merged without a passing check — a verdict known with it is taken first: only a person decides that it goes on

The commit's note under refs/notes/mesh-plan keeps every transition: git log --notes=mesh-plan.

<!-- mesh-delivery:view --> **Delivery** `novox/mesh-catalog@a70227a40adc` — **held** since 2026-10-06T23:05:28Z Held for a person: merged without a passing check: only a person decides that it goes on — `mesh-delivery.release` with why lets it go on. **Delivery plan** — builds restic → ace, g14, novox, shanks; no bus step - tier 0: restic - ace: receives restic - g14: receives restic - novox: receives restic - shanks: receives restic - restic keeps data (ADR 0233): what it holds is backed up before it moves **Transitions** - 2026-10-06 23:05 (new) → proposed (announced): novox/mesh-catalog#54 merged; its head was not heard by this owner, so it is made from the forge's word - 2026-10-06 23:05 proposed → held (merged-unchecked): merged without a passing check — a verdict known with it is taken first: only a person decides that it goes on The commit's note under `refs/notes/mesh-plan` keeps every transition: `git log --notes=mesh-plan`.
Sign in to join this conversation.
No Reviewers
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/mesh-catalog#54