Files
mesh-catalog/modules/restic
jschoubben 6547933b4d Name packages by their module path in 15 manifests (issue 1966)
Kind: short package names (builds, sshkeys, forgemsg, backupgood,
diskreadings, grantsstate, busgrants) in `packages`, which the indexer's
judge refuses by design 32's rule (a Go package is named by its go.mod's
module path). This held mesh-delivery-gate, the build modules, mounts and
restic. Each key is now the import path the module's code uses, with its
series kept; the manifest tests read the new keys, and the host/machine-name
word tests in mounts, nfs-server, mesh-build-node and mesh-delivery-gate
look past the path's `git.novox.be/novox/` prefix.

Quick fix: only the gate's manifest. Thorough fix (chosen): all 15, since
the same refusal holds each. Follow-up for the checker: the candidate
verdict lets such a name through (J7(3)), so the merge check did not stop it.

Claude-Session: https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5
2026-11-08 00:38:55 +01:00
..

restic

The machine's backups as the node-backup seat (novox/hq ADR 0214, to-be 43, ADR 0233): one restic repository on the machine, one restore point per module a night, thinned by the machine's settings. Against mistakes, not disasters: nothing leaves the machine.

How restore points are kept

  • A night's restore point is tagged with its module alone and thinned by keep-daily, keep-weekly and keep-monthly (14, 8 and 6 by default).
  • A restore point taken by hand (node-backup.now, asked by a person, or by the mesh before a module moves) is tagged hand as well. The thinning keeps that tag (--keep-tag hand), so the next night never takes it (novox/hq issue 453). It is let go, by its id, only when both hold: it is older than keep-hand-taken-days (7 by default), and a later night of its module was recorded as good. A partial night, where restic wrote a restore point but could not read every file, does not count.
  • A module that left the machine gets no later night, so its restore points taken by hand are kept for good. That is a choice: deleting a module's last restore point is a person's act, and until then it costs only space.

A repository another restic holds (a listing of the restore points, say, while a delivery plan backs up the machine's modules before their moves) is waited for: the thinning asks restic to retry the lock for up to ten minutes (--retry-lock, novox/hq issue 620), and fails only after that. A failed thinning keeps every restore point, and the module's health stays unhealthy until a thinning succeeds: the next night's, or one after node-backup.now.

node-backup.backed-up lists each module's restore points taken by hand under handTaken: when each was taken, the time it is kept at least until, whether it still waits for a later good night, and a sentence saying so.

Files it does not know

Each directory or archive this module declares says how it treats a file it did not write (ADR 0422, ADR 0416).

  • ${dir:state}: everything in it is the program's; the mesh moves nothing out (ADR 0422 §2).
  • ${dir:repository}: everything in it is the program's; the mesh moves nothing out (ADR 0422 §2).