The store's stock collector keeps only what a manifest names, and archives were bare blobs: its first night would have deleted every bundle the mesh keeps (stopgap: dry run, mesh-catalog #62).
PublishArchive puts a deterministic OCI holder manifest (empty config {}, one tar+gzip layer) by digest after the blob, and holds an archive it finds already uploaded; a hold that fails fails the build.
The sweep holds every kept archive before letting anything go (backfills today's bare blobs); LetGo removes the holder, then the link.
The five-recent-builds reason applies only to modules the mesh holds (forgotten modules keep nothing).
collection [--json]: kept archives held / unheld / missing, what is eligible, safe_to_collect — the gate for turning the dry run off.
No schema change; references and machines' fetch path unchanged.
Tests: fake-registry tests (holder deterministic, Hold idempotent + backfills, LetGo order, PublishArchive holds), keep-set tests, and a live test against registry:2.8.3 running garbage-collect: held and backfilled archives survive, bare and let-go ones are deleted. Rebased on main; full suite with fresh postgres + NATS: all packages pass. Independently reviewed: no must-fix.
The store's stock collector keeps only what a manifest names, and archives were bare blobs: its first night would have deleted every bundle the mesh keeps (stopgap: dry run, mesh-catalog #62).
- `PublishArchive` puts a deterministic OCI holder manifest (empty config `{}`, one `tar+gzip` layer) by digest after the blob, and holds an archive it finds already uploaded; a hold that fails fails the build.
- The sweep holds every kept archive before letting anything go (backfills today's bare blobs); `LetGo` removes the holder, then the link.
- The five-recent-builds reason applies only to modules the mesh holds (forgotten modules keep nothing).
- `collection [--json]`: kept archives held / unheld / missing, what is eligible, `safe_to_collect` — the gate for turning the dry run off.
- No schema change; references and machines' fetch path unchanged.
Tests: fake-registry tests (holder deterministic, Hold idempotent + backfills, LetGo order, PublishArchive holds), keep-set tests, and a live test against registry:2.8.3 running `garbage-collect`: held and backfilled archives survive, bare and let-go ones are deleted. Rebased on main; full suite with fresh postgres + NATS: all packages pass. Independently reviewed: no must-fix.
The store's garbage-collect marks only from manifests, and archives were
published as bare blobs, so the first real collection would delete every
archive the mesh keeps. PublishArchive now puts a deterministic OCI holder
manifest (empty config, one layer) beside each archive; the sweep holds every
kept archive before it lets anything go, which backfills existing bare blobs,
and lets go of an archive holder-first. A forgotten module no longer keeps its
five recent builds (ADR 0189). `collection [--json]` reports kept archives
held/unheld and what may be let go, so the dry run can be lifted on evidence.
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#53 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@ed25fd68e202` — **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#53 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.
The store's stock collector keeps only what a manifest names, and archives were bare blobs: its first night would have deleted every bundle the mesh keeps (stopgap: dry run, mesh-catalog #62).
PublishArchiveputs a deterministic OCI holder manifest (empty config{}, onetar+gziplayer) by digest after the blob, and holds an archive it finds already uploaded; a hold that fails fails the build.LetGoremoves the holder, then the link.collection [--json]: kept archives held / unheld / missing, what is eligible,safe_to_collect— the gate for turning the dry run off.Tests: fake-registry tests (holder deterministic, Hold idempotent + backfills, LetGo order, PublishArchive holds), keep-set tests, and a live test against registry:2.8.3 running
garbage-collect: held and backfilled archives survive, bare and let-go ones are deleted. Rebased on main; full suite with fresh postgres + NATS: all packages pass. Independently reviewed: no must-fix.1799e232f8to01c5ab2aabDelivery
novox/mesh-controller@ed25fd68e202— 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.