Designs 51, 32: the windows wake on the node-engine seat's manifest-reads-changed (ADR 0618), and every build stays readable by every counted node-engine (ADR 0624)
#513
Merged
mesh-toolsmerged 4 commits from docs/cite-adr-0618 into main2026-11-04 09:08:19 +00:00
ADR 0618 and ADR 0624 are accepted (ADR 0624 supersedes ADR 0623); designs 51 and 32 cited 0618 as "to be decided".
Design 51: the old seat name's window and the old-form window wake on mesh.seat.node-engine.event.manifest-reads-changed and read each node's stated capabilities with the node-engine seat's manifest-reads (ADR 0618 §3-§4), never a watch of the node-engine's have state; distribution and the builder declare the verb in invokes and are granted the event. Every build keeps each reference form a counted node-engine states, away nodes included until retired, a node that states nothing counting as the baseline; the oldest kept form is the build key's single reference; a node is held from a build only when it reads none of its forms (ADR 0624 §1-§3), never by a module's name (ADR 0601 §4), so an away node with an old node-engine still gets every build, the node-engine's own included.
Design 32: the rename window wakes on the same event; the next delivered stays only for a build applied after a node's return, which ADR 0618 does not cover; mesh-config's grant named.
Tests: a grants-part row (only the three modules subscribe to the event), builder cases for present and away nodes, holder and rename cases with no delivered and no timer.
Review record: review by architectural domain (playbook 01), security and upgrade, round 1 at f47744a (two musts, two notes), answered at 48fa0a5 and checked by the lead; the ADR 0624 commit (cac55dc) read by the lead against the accepted record. go test ./... passes.
ADR 0618 and ADR 0624 are accepted (ADR 0624 supersedes ADR 0623); designs 51 and 32 cited 0618 as "to be decided".
- Design 51: the old seat name's window and the old-form window wake on `mesh.seat.node-engine.event.manifest-reads-changed` and read each node's stated capabilities with the node-engine seat's `manifest-reads` (ADR 0618 §3-§4), never a watch of the node-engine's have state; `distribution` and the builder declare the verb in `invokes` and are granted the event. Every build keeps each reference form a counted node-engine states, away nodes included until retired, a node that states nothing counting as the baseline; the oldest kept form is the build key's single reference; a node is held from a build only when it reads none of its forms (ADR 0624 §1-§3), never by a module's name (ADR 0601 §4), so an away node with an old node-engine still gets every build, the node-engine's own included.
- Design 32: the rename window wakes on the same event; the next `delivered` stays only for a build applied after a node's return, which ADR 0618 does not cover; mesh-config's grant named.
- Tests: a grants-part row (only the three modules subscribe to the event), builder cases for present and away nodes, holder and rename cases with no `delivered` and no timer.
**Review record:** review by architectural domain (playbook 01), security and upgrade, round 1 at f47744a (two musts, two notes), answered at 48fa0a5 and checked by the lead; the ADR 0624 commit (cac55dc) read by the lead against the accepted record. `go test ./...` passes.
Reviewed-by: fix-1965@shanks at cac55dc2543a56909c915e162b2258eb163b6f8f
Issue 1966.
https://claude.ai/code/session_01JG73KJNrH5EgFXMKKYSrig
ADR 0618 is accepted: the node-engine seat's manifest-reads verb and its
manifest-reads-changed event wake the old seat name's, the old-form and
the rename windows, and the builder writes a new form only once every
present node-engine states it. The next delivered stays only for the
rename window's case the record does not cover.
Claude-Session: https://claude.ai/code/session_01JG73KJNrH5EgFXMKKYSrig
The upgrade and security review asked that each window's caller be
granted the event through its invokes, that an away node be held by the
assigner rather than the old-form window, and that a node-engine not yet
serving manifest-reads keep a window open by name.
Claude-Session: https://claude.ai/code/session_01JG73KJNrH5EgFXMKKYSrig
Under ADR 0618 alone a node away with an old node-engine would be held
from the node-engine's own build in the new form and could never update
itself. ADR 0623 keeps every counted node-engine's form in those builds
and moves them to a node that reads any one of them.
Claude-Session: https://claude.ai/code/session_01JG73KJNrH5EgFXMKKYSrig
Deliverynovox/hq@cac55dc2543a — merged since 2026-11-04T09:08:21Z
Source — source.main moved to novox/hq@273d608d9f. Whether it reached the machines is mesh-delivery-view's, derived from source.main, the wants and the haves.
Transitions
2026-11-04 09:00 (new) → proposed (announced): novox/hq#513's head announced
2026-11-04 09:00 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-04 09:08 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/hq@cac55dc2543a` — **merged** since 2026-11-04T09:08:21Z
**Source** — source.main moved to novox/hq@273d608d9faa. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves.
**Transitions**
- 2026-11-04 09:00 (new) → proposed (announced): novox/hq#513's head announced
- 2026-11-04 09:00 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-04 09:08 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`.
ADR 0624 supersedes ADR 0623, which could find the node-engine's own
builds only by the module's name. Every build now keeps each form a
counted node-engine states, the oldest in the single reference, and a
node is held only when it reads none of them.
Claude-Session: https://claude.ai/code/session_01JG73KJNrH5EgFXMKKYSrig
mesh-delivery: the operator's Approve of this pull request's merge into main is ended: its head 01d4f2781e is no longer the pull request's head, or the pull request closed. Nothing is merged on it. The operator is asked again once the checks pass at the new head.
mesh-delivery: the operator's Approve of this pull request's merge into main is ended: its head 01d4f2781ef0 is no longer the pull request's head, or the pull request closed. Nothing is merged on it. The operator is asked again once the checks pass at the new head.
mesh-tools
changed title from Designs 51, 32: the windows wake on the node-engine seat's manifest-reads-changed (ADR 0618), and the node-engine's own build stays readable by every known node-engine (ADR 0623) to Designs 51, 32: the windows wake on the node-engine seat's manifest-reads-changed (ADR 0618), and every build stays readable by every counted node-engine (ADR 0624)2026-11-04 09:00:38 +00:00
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.
ADR 0618 and ADR 0624 are accepted (ADR 0624 supersedes ADR 0623); designs 51 and 32 cited 0618 as "to be decided".
mesh.seat.node-engine.event.manifest-reads-changedand read each node's stated capabilities with the node-engine seat'smanifest-reads(ADR 0618 §3-§4), never a watch of the node-engine's have state;distributionand the builder declare the verb ininvokesand are granted the event. Every build keeps each reference form a counted node-engine states, away nodes included until retired, a node that states nothing counting as the baseline; the oldest kept form is the build key's single reference; a node is held from a build only when it reads none of its forms (ADR 0624 §1-§3), never by a module's name (ADR 0601 §4), so an away node with an old node-engine still gets every build, the node-engine's own included.deliveredstays only for a build applied after a node's return, which ADR 0618 does not cover; mesh-config's grant named.deliveredand no timer.Review record: review by architectural domain (playbook 01), security and upgrade, round 1 at
f47744a(two musts, two notes), answered at48fa0a5and checked by the lead; the ADR 0624 commit (cac55dc) read by the lead against the accepted record.go test ./...passes.Reviewed-by: fix-1965@shanks at
cac55dc254Issue 1966.
https://claude.ai/code/session_01JG73KJNrH5EgFXMKKYSrig
Delivery
novox/hq@cac55dc2543a— merged since 2026-11-04T09:08:21ZSource — source.main moved to novox/hq@273d608d9f. 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.mesh-delivery: the operator's Approve of this pull request's merge into main is ended: its head
01d4f2781eis no longer the pull request's head, or the pull request closed. Nothing is merged on it. The operator is asked again once the checks pass at the new head.Designs 51, 32: the windows wake on the node-engine seat's manifest-reads-changed (ADR 0618), and the node-engine's own build stays readable by every known node-engine (ADR 0623)to Designs 51, 32: the windows wake on the node-engine seat's manifest-reads-changed (ADR 0618), and every build stays readable by every counted node-engine (ADR 0624)