Without the controller: the vault retires and rotates, the healers act, the artifact store is swept, config and conditions stand alone (issue 1126)
#592
Merged
mesh-toolsmerged 3 commits from fix/1126-gates-catalog into main2026-11-02 10:36:35 +00:00
Issue 1126 (design 47): the controller was unassigned (2026-11-02 10:09) and never stepped down through its lease record, so the parts that waited for that now do their job; the assigner (mesh-delivery #137) refuses to place the controller again, so none of these has a second writer.
mesh-vault retires unwanted accounts and rotates node logins on a recorded hand act; its lease watch and the lease fields of vault_status are gone.
mesh-healers act (nothing more written to would).
artifact-store-tools sweeps at a build's end and on a confirmed collect, keeping each module's five newest and every wanted build; each deletion is a hand act and artifacts-gone (ADR 0526 §1).
mesh-config trusts no relay from the controller; mesh-conditions carries nothing from the controller's bucket and clears once at start the open conditions of kinds that ended with the controller.
All five manifests drop the read of the controller's lease.
Tested locally (GOWORK=off): gofmt, go vet, go vet -tags integration, the unit suites and the integration suites of the five modules pass (the vault's rotation test, the healers' whole-bus test and the sweep's real-bus test run with no lease). Tests within budget.
Reviewed-by: review-g1@shanks at 326897d877
Pushed-by: lead-47@shanks
Issue 1126 (design 47): the controller was unassigned (2026-11-02 10:09) and never stepped down through its lease record, so the parts that waited for that now do their job; the assigner (mesh-delivery #137) refuses to place the controller again, so none of these has a second writer.
- **mesh-vault** retires unwanted accounts and rotates node logins on a recorded hand act; its lease watch and the lease fields of `vault_status` are gone.
- **mesh-healers** act (nothing more written to `would`).
- **artifact-store-tools** sweeps at a build's end and on a confirmed collect, keeping each module's five newest and every wanted build; each deletion is a hand act and `artifacts-gone` (ADR 0526 §1).
- **mesh-config** trusts no relay from the controller; **mesh-conditions** carries nothing from the controller's bucket and clears once at start the open conditions of kinds that ended with the controller.
- All five manifests drop the read of the controller's lease.
**Tested locally** (GOWORK=off): gofmt, `go vet`, `go vet -tags integration`, the unit suites and the integration suites of the five modules pass (the vault's rotation test, the healers' whole-bus test and the sweep's real-bus test run with no lease). Tests within budget.
Reviewed-by: review-g1@shanks at 326897d8772f444c37b1e6bfa503f799af19a112
Pushed-by: lead-47@shanks
https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
The controller ended by its unassignment and its lease key expired, so the
gate on a handed lease kept retirement, rotation and node-login rotation off
for good (issue 1126, A3). Drop the gate, the lease watch and the manifest's
read of mesh-controller.lease; vault_status no longer reports a lease.
Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
The controller ended by its unassignment, so its lease key is absent for good
and the healers stayed in shadow while nobody swept the artifact store (issue
1126, A4). Drop both gates and each manifest's read of mesh-controller.lease;
the would bucket stays readable until its keys expire.
Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
The controller ended by its unassignment, so its lease is never handed and
both stayed in their controller-era branch (issue 1126, A5). mesh-config no
longer trusts the controller's relay: a trusted value needs the operator's
Approve. The condition keeper carries nothing from the controller, clears
once at start what it carried, and refuses take-over as the one source.
Both drop their manifest read of mesh-controller.lease.
Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
Deliverynovox/mesh-catalog@326897d8772f — merged since 2026-11-02T10:36:36Z
Source — source.main moved to novox/mesh-catalog@d2de18fd6b. Whether it reached the machines is mesh-delivery-view's, derived from source.main, the wants and the haves.
Transitions
2026-11-02 09:47 (new) → proposed (announced): novox/mesh-catalog#592's head announced
2026-11-02 09:47 proposed → ready (accepted): a verdict names this commit and the trunk's head as its trunk commit, the gate passed or warned, and the repository's own check did not fail; or the check gates no merge (check-gates-merge false)
2026-11-02 10:36 ready → merged (merged): on the trunk its modules follow: merged there
The commit's note under refs/notes/mesh-plan keeps every transition of this change up to its merge: git log --notes=mesh-plan.
<!-- mesh-delivery:view -->
**Delivery** `novox/mesh-catalog@326897d8772f` — **merged** since 2026-11-02T10:36:36Z
**Source** — source.main moved to novox/mesh-catalog@d2de18fd6bdd. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves.
**Transitions**
- 2026-11-02 09:47 (new) → proposed (announced): novox/mesh-catalog#592's head announced
- 2026-11-02 09:47 proposed → ready (accepted): a verdict names this commit and the trunk's head as its trunk commit, the gate passed or warned, and the repository's own check did not fail; or the check gates no merge (check-gates-merge false)
- 2026-11-02 10:36 ready → merged (merged): on the trunk its modules follow: merged there
The commit's note under `refs/notes/mesh-plan` keeps every transition of this change up to its merge: `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.
Issue 1126 (design 47): the controller was unassigned (2026-11-02 10:09) and never stepped down through its lease record, so the parts that waited for that now do their job; the assigner (mesh-delivery #137) refuses to place the controller again, so none of these has a second writer.
vault_statusare gone.would).artifacts-gone(ADR 0526 §1).Tested locally (GOWORK=off): gofmt,
go vet,go vet -tags integration, the unit suites and the integration suites of the five modules pass (the vault's rotation test, the healers' whole-bus test and the sweep's real-bus test run with no lease). Tests within budget.Reviewed-by: review-g1@shanks at
326897d877Pushed-by: lead-47@shanks
https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
Delivery
novox/mesh-catalog@326897d8772f— merged since 2026-11-02T10:36:36ZSource — source.main moved to novox/mesh-catalog@d2de18fd6b. Whether it reached the machines is
mesh-delivery-view's, derived fromsource.main, the wants and the haves.Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition of this change up to its merge:git log --notes=mesh-plan.