Files
mesh-catalog/modules/restic
jschoubben 83732dcd53
mesh/delivery merged: source.main moved to novox/mesh-catalog@9a3356bd38b1
mesh/delivery-group group fix/1966-bootstrap-no-packages merged: every member is merged
mesh/check checking 83732dcd53d8 on 9a3356bd38b1 | novox/mesh-catalog#627 in group fix/1966-bootstrap-no-packages
Take the Go package artifacts out of the delivery parts for now, so the running builder builds them (issue 1966)
The running builder predates Go package artifacts ("refused kind: package of language go ... no build module
builds it"), so it can build neither the new builder, the grants module, the Go build module nor the checker:
each new part is needed before the others can be built or delivered. For the bootstrap of the registry
delivery, at the operator's word (19:4x, "do the temporary change"), the package artifacts leave the manifests of
the parts that run; the contracts and SDK modules, which run on no node, keep theirs. They come back in one change
once the new builder runs. Quick vs thorough: quick; the thorough fix is 47/G's tier order (issue 1921 note 80).

Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
2026-11-07 19:48:57 +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).