internal/catalogue/data.go: the data section (own / consumers / kept-by), classes irreplaceable/valuable/rebuildable/cache/none, backup (copy|none|{dump,into}) and redundancy; parse problems; DataProblems for module check (granting provider must state its consumers' class, no keeps-consumer-data on offers, no hand-written backup lines, rw-mounted dirs declared, kept-by irreplaceable protected at the provider). KeepsConsumerData follows the class. Backup holder lines (backup, new data kind) derived, ${machine:} and ${access:} filled. Only irreplaceable data depends on node-backup. Old CheckBackup store list removed (it was only ever enforced by a test).
internal/inventory/data.go + migration 0072: data_item (retired/deleted kept, never dropped) and hourly data_reading.
cmd/mesh-controller/data.go: probe D13 (asks every node-backup.backed-up, every keeping provider's provisioner_retirement with new held_sizes), conditions data-shrank, data-missing, empty-replacement, data-held-twice, data-quiet, backup-stale, array-degraded, protection-missing, data-unmeasured, cleanup-waiting — urgent for irreplaceable, warning for valuable; kept-by upgrades provider items. Verb data; cleanup list|delete extended to own retired data (deleted by the holder's backup_delete_retired after a last restore point); unassign says what it leaves.
Grant: VerbsTheSelfCheckAsks += node-backup.backed-up (golden updated; mesh-host's genesis lock in its PR).
Tests: catalogue/data_test.go, inventory/data_test.go, cmd data_test.go incl. issue 273 replay (empty replacement of five consumers) and unassign keeps irreplaceable data retired + empty replacement elsewhere through real postgres:17 + nats:2.11. Full suite go test -race -p 1 ./... green; vet, gofmt clean; module check passes all 125 manifests (mesh-catalog + media + photos).
Merge order: this first (with mesh-host's genesis lock), then mesh-catalog, mesh-media-catalog, photos, then hq.
hq ADR 0233.
- `internal/catalogue/data.go`: the `data` section (own / consumers / kept-by), classes irreplaceable/valuable/rebuildable/cache/none, `backup` (copy|none|{dump,into}) and `redundancy`; parse problems; `DataProblems` for `module check` (granting provider must state its consumers' class, no `keeps-consumer-data` on offers, no hand-written backup lines, rw-mounted dirs declared, kept-by irreplaceable protected at the provider). `KeepsConsumerData` follows the class. Backup holder lines (`backup`, new `data` kind) derived, `${machine:}` and `${access:}` filled. Only irreplaceable data depends on `node-backup`. Old `CheckBackup` store list removed (it was only ever enforced by a test).
- `internal/inventory/data.go` + migration **0072**: `data_item` (retired/deleted kept, never dropped) and hourly `data_reading`.
- `cmd/mesh-controller/data.go`: probe **D13** (asks every `node-backup.backed-up`, every keeping provider's `provisioner_retirement` with new `held_sizes`), conditions `data-shrank`, `data-missing`, `empty-replacement`, `data-held-twice`, `data-quiet`, `backup-stale`, `array-degraded`, `protection-missing`, `data-unmeasured`, `cleanup-waiting` — urgent for irreplaceable, warning for valuable; kept-by upgrades provider items. Verb `data`; `cleanup list|delete` extended to own retired data (deleted by the holder's `backup_delete_retired` after a last restore point); `unassign` says what it leaves.
- Grant: `VerbsTheSelfCheckAsks` += `node-backup.backed-up` (golden updated; mesh-host's genesis lock in its PR).
Tests: catalogue/data_test.go, inventory/data_test.go, cmd data_test.go incl. **issue 273 replay** (empty replacement of five consumers) and **unassign keeps irreplaceable data retired + empty replacement elsewhere** through real postgres:17 + nats:2.11. Full suite `go test -race -p 1 ./...` green; vet, gofmt clean; `module check` passes all 125 manifests (mesh-catalog + media + photos).
**Merge order**: this first (with mesh-host's genesis lock), then mesh-catalog, mesh-media-catalog, photos, then hq.
A module's data section says what it keeps and how precious it is; the backup holder's lines,
binding stickiness, retirement on unassign and D13's conditions follow from it, so issue 273's
empty replacement is said and an unassigned module's data is remembered, not forgotten.
A walk over a large library every hour loads the array that protects it. An item now says how it
is measured — a bounded daily walk, a dataset's counters, or its top level only — and a size that
is a lower bound is kept as such and never read as a shrink.
build-agent keeps data (ADR 0233): what it holds is backed up before it moves
route-proxy provides route: its consumers are sent again after it
route-proxy keeps data (ADR 0233): what it holds is backed up before it moves
Transitions
2026-10-06 23:05 (new) → proposed (announced): novox/mesh-controller#88 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-controller@2b5060789f55` — **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 build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
- tier 0: mesh-controller
- tier 1: build-agent
- tier 2: route-proxy
- ace: receives build-agent, route-proxy
- g14: receives build-agent
- novox: receives mesh-controller, build-agent, route-proxy
- shanks: receives build-agent
- build-agent keeps data (ADR 0233): what it holds is backed up before it moves
- route-proxy provides route: its consumers are sent again after it
- route-proxy keeps data (ADR 0233): what it holds is backed up before it moves
**Transitions**
- 2026-10-06 23:05 (new) → proposed (announced): novox/mesh-controller#88 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`.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
hq ADR 0233.
internal/catalogue/data.go: thedatasection (own / consumers / kept-by), classes irreplaceable/valuable/rebuildable/cache/none,backup(copy|none|{dump,into}) andredundancy; parse problems;DataProblemsformodule check(granting provider must state its consumers' class, nokeeps-consumer-dataon offers, no hand-written backup lines, rw-mounted dirs declared, kept-by irreplaceable protected at the provider).KeepsConsumerDatafollows the class. Backup holder lines (backup, newdatakind) derived,${machine:}and${access:}filled. Only irreplaceable data depends onnode-backup. OldCheckBackupstore list removed (it was only ever enforced by a test).internal/inventory/data.go+ migration 0072:data_item(retired/deleted kept, never dropped) and hourlydata_reading.cmd/mesh-controller/data.go: probe D13 (asks everynode-backup.backed-up, every keeping provider'sprovisioner_retirementwith newheld_sizes), conditionsdata-shrank,data-missing,empty-replacement,data-held-twice,data-quiet,backup-stale,array-degraded,protection-missing,data-unmeasured,cleanup-waiting— urgent for irreplaceable, warning for valuable; kept-by upgrades provider items. Verbdata;cleanup list|deleteextended to own retired data (deleted by the holder'sbackup_delete_retiredafter a last restore point);unassignsays what it leaves.VerbsTheSelfCheckAsks+=node-backup.backed-up(golden updated; mesh-host's genesis lock in its PR).Tests: catalogue/data_test.go, inventory/data_test.go, cmd data_test.go incl. issue 273 replay (empty replacement of five consumers) and unassign keeps irreplaceable data retired + empty replacement elsewhere through real postgres:17 + nats:2.11. Full suite
go test -race -p 1 ./...green; vet, gofmt clean;module checkpasses all 125 manifests (mesh-catalog + media + photos).Merge order: this first (with mesh-host's genesis lock), then mesh-catalog, mesh-media-catalog, photos, then hq.
Delivery
novox/mesh-controller@2b5060789f55— held since 2026-10-06T23:05:28ZHeld for a person: merged without a passing check: only a person decides that it goes on —
mesh-delivery.releasewith why lets it go on.Delivery plan — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition:git log --notes=mesh-plan.