Every module declares its data; the backup holder measures it (hq ADR 0233) #92

Merged
mesh-admin merged 2 commits from feat/a-module-declares-the-data-it-holds into main 2026-10-06 15:05:51 +00:00
Contributor

hq ADR 0233. Merge after mesh-controller (an older controller refuses the new data field).

  • 37 manifests gain a data section (classes per the operator's ranking; table in the ADR); the 9 hand-written node-backup lines are gone — derived now (same paths and dumps as before, plus valuable/rebuildable items newly in the nightly plan).
  • restic: reads the composed data.conf (MESH_BACKUP_DATA), measures every non-cache item hourly and after each night (size + newest write in one find walk as root), reads ZFS/md/btrfs health under it, reports both in backed-up with each item's last good backup; new module tools backup_delete_retired / backup_deleted: last restore point tagged retired=<item> first, then rm -rf --one-file-system, refusing declared paths, the repository, anything near /.
  • postgres + keycloak (identical harness): provisioner_retirement answers held_sizes so the controller can tell an empty replacement.
  • redis consumers: cache (nothing requires redis-cache).

Tests: restic data_test.go (parse, measure, ZFS/md, delete only after restore point), postgres/keycloak suites. go test -race green; module check passes the whole catalogue.

hq ADR 0233. **Merge after mesh-controller** (an older controller refuses the new `data` field). - 37 manifests gain a `data` section (classes per the operator's ranking; table in the ADR); the 9 hand-written `node-backup` lines are gone — derived now (same paths and dumps as before, plus valuable/rebuildable items newly in the nightly plan). - `restic`: reads the composed `data.conf` (`MESH_BACKUP_DATA`), measures every non-cache item hourly and after each night (size + newest write in one `find` walk as root), reads ZFS/md/btrfs health under it, reports both in `backed-up` with each item's last good backup; new module tools `backup_delete_retired` / `backup_deleted`: last restore point tagged `retired=<item>` first, then `rm -rf --one-file-system`, refusing declared paths, the repository, anything near `/`. - postgres + keycloak (identical harness): `provisioner_retirement` answers `held_sizes` so the controller can tell an empty replacement. - redis consumers: `cache` (nothing requires `redis-cache`). Tests: restic data_test.go (parse, measure, ZFS/md, delete only after restore point), postgres/keycloak suites. `go test -race` green; `module check` passes the whole catalogue.
mesh-admin added 1 commit 2026-10-06 14:48:26 +00:00
Backup lines are derived from each module's data section instead of written by hand; the holder
measures declared items, reads the array under them, and deletes a retired item only after a last
restore point; the Go providers say each held consumer's size so an empty replacement is seen.
jschoubben added 1 commit 2026-10-06 15:00:25 +00:00
Walks run at most daily and stop after ten minutes or two million files; datasets are read from
their counters and large items from their top level only. The database platform's tables are
dumped with pg_dumpall rather than copied as live files.
mesh-admin merged commit f144f6eee8 into main 2026-10-06 15:05:51 +00:00
mesh-admin deleted branch feat/a-module-declares-the-data-it-holds 2026-10-06 15:05:51 +00:00
Author
Contributor

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

Machines

  • build-agent on ace: sent
  • records on novox: sent

Transitions

  • 2026-10-06 23:05 (new) → proposed (announced): novox/mesh-catalog#92 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
  • 2026-10-06 23:05 held → delivering (go): its walk started on a word that was not this owner's: the controller's own path, which waits for nobody, or a person's plans go
  • 2026-10-06 23:05 delivering → delivered (done): its walk is done: every machine of its deploy plan passed, or was left as its policy says

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

<!-- mesh-delivery:view --> **Delivery** `novox/mesh-catalog@f144f6eee8af` — **delivered** since 2026-10-06T23:05:28Z **Machines** - build-agent on ace: sent - records on novox: sent **Transitions** - 2026-10-06 23:05 (new) → proposed (announced): novox/mesh-catalog#92 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 - 2026-10-06 23:05 held → delivering (go): its walk started on a word that was not this owner's: the controller's own path, which waits for nobody, or a person's `plans go` - 2026-10-06 23:05 delivering → delivered (done): its walk is done: every machine of its deploy plan passed, or was left as its policy says 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#92