Designs 25, 51: the registry milestone's prepare points (a failed pull retried on the store holder's settled, the owners' read tools, verdicts as a first view, ADR 0622) #512

Merged
mesh-tools merged 7 commits from docs/registry-prepare-points into main 2026-11-04 08:40:09 +00:00
Member

Points the registry milestone's prepare step found that the designs merged in #511 left open.

What changes

  • Design 51: a pull that fails while the store's holder swaps its program is retried by the node-engine on every node when it hears the status view's settled for that holder (wherever it runs), found from the seat and holder the composition now writes beside each routed image reference (kept out of the container's digest); at its own start it applies every such failed have once; one retry per settled, only for a settled heard after the pull started; never a timer, compose only as the hand recovery. Neither condition-cleared (ADR 0564 §13) nor delivered (design 47) could fire in that case. The seam is the grants part's list of what a node-engine hears.
  • Design 25 § 12.2 and § 12.6: the owners' fifteen ordinary read tools for the 19 readers' buckets (indexer_read_<bucket>, assigner_read_<bucket>); the status view keeps every tool it has and asks the owners; verdicts is the indexer's sixth first-view tool, to the grants part alone (ADR 0622); the node-engine's reads granted in the grants part's code are named and go to the next milestone (issue 1966); the reads count in indexer_old_sections; the whole-module test paths as they are on main.

Review record

  • Review by architectural domain (playbook 01), running and testing plus seams and tools (the two domains the change touches), three rounds: round 1 at 0e8a698, round 2 at fb7aa09, round 3 at a838b6b (seams and tools approved; running and testing's two findings fixed at 4f6b9f0 and checked by the lead).
  • go test ./... passes at the head.

Reviewed-by: fix-1965@shanks at 4f6b9f0ca5

Issue 1966.

https://claude.ai/code/session_01JG73KJNrH5EgFXMKKYSrig

Points the registry milestone's prepare step found that the designs merged in #511 left open. **What changes** - Design 51: a pull that fails while the store's holder swaps its program is retried by the node-engine on every node when it hears the status view's `settled` for that holder (wherever it runs), found from the seat and holder the composition now writes beside each routed image reference (kept out of the container's digest); at its own start it applies every such failed have once; one retry per `settled`, only for a `settled` heard after the pull started; never a timer, `compose` only as the hand recovery. Neither `condition-cleared` (ADR 0564 §13) nor `delivered` (design 47) could fire in that case. The seam is the grants part's list of what a node-engine hears. - Design 25 § 12.2 and § 12.6: the owners' fifteen ordinary read tools for the 19 readers' buckets (`indexer_read_<bucket>`, `assigner_read_<bucket>`); the status view keeps every tool it has and asks the owners; `verdicts` is the indexer's sixth first-view tool, to the grants part alone (ADR 0622); the node-engine's reads granted in the grants part's code are named and go to the next milestone (issue 1966); the reads count in `indexer_old_sections`; the whole-module test paths as they are on main. **Review record** - Review by architectural domain (playbook 01), running and testing plus seams and tools (the two domains the change touches), three rounds: round 1 at 0e8a698, round 2 at fb7aa09, round 3 at a838b6b (seams and tools approved; running and testing's two findings fixed at 4f6b9f0 and checked by the lead). - `go test ./...` passes at the head. Reviewed-by: fix-1965@shanks at 4f6b9f0ca5ff6013787be89731d23691d8a2c48c Issue 1966. https://claude.ai/code/session_01JG73KJNrH5EgFXMKKYSrig
mesh-tools added 7 commits 2026-11-04 01:16:43 +00:00
A pull that falls in distribution's swap is tried again on the condition
keeper's clear of the store's holder's condition, so the delivery needs no
hand compose and no timer. The owners' tools for the other readers' buckets
are named, the reads count has its tool, and the test paths match main.

Claude-Session: https://claude.ai/code/session_01JG73KJNrH5EgFXMKKYSrig
The status view can no longer answer its six tools named for the owners'
buckets once it stops reading them, so the owners' tools take the names. A
finding held during distribution's own delivery raises no condition and so
no clear, so the node-engine also tries a failed pull again on the status
view's delivered for distribution, and nothing waits for a hand compose.

Claude-Session: https://claude.ai/code/session_01JG73KJNrH5EgFXMKKYSrig
Neither condition-cleared nor delivered comes during the store holder's own
delivery, so the node-engine retries on the status view's settled for that
holder, heard through the grants part's list, and at its own start. The
status view keeps its tools and answers them through the owners' new read
tools, so no name moves between modules.

Claude-Session: https://claude.ai/code/session_01JG73KJNrH5EgFXMKKYSrig
The grants part is the one reader of the indexer's verdicts, and no first
view covered that bucket, so its move had no path. It now takes its first
view through indexer_read_verdicts and follows the manifest events.

Claude-Session: https://claude.ai/code/session_01JG73KJNrH5EgFXMKKYSrig
The store's holder runs on one node, so a node-engine elsewhere must hear its
settled too, and a pull failed just after it settled must not wait. The
grants part's verdicts read is a first view under ADR 0622, not an ordinary
read tool, and the node-engine's reads granted in code are said, so the
live count of zero declared reads is not taken for more than it is.

Claude-Session: https://claude.ai/code/session_01JG73KJNrH5EgFXMKKYSrig
The declaration carried only the store's address, so the node-engine could
not tell whose settled ends a failed pull without naming a module.

Claude-Session: https://claude.ai/code/session_01JG73KJNrH5EgFXMKKYSrig
Designs 25, 51: bound the race retry to a settled heard after the pull started
mesh/delivery merged: source.main moved to novox/hq@6cd965b3cdf6
mesh/check being carried to 4f6b9f0ca5ff on 6cd965b3cdf6 | from e7ac664afff7
4f6b9f0ca5
A retry on any settled ever heard would apply again on every failure; the
pull's start bounds it to one retry per settled, kept in memory. The seat and
holder beside a routed image are outside a container's digest, so naming
them replaces nothing, and the verdicts gap case is named.

Claude-Session: https://claude.ai/code/session_01JG73KJNrH5EgFXMKKYSrig
Author
Member

Delivery novox/hq@4f6b9f0ca5ff — merged since 2026-11-04T08:40:12Z

Source — source.main moved to novox/hq@6cd965b3cd. Whether it reached the machines is mesh-delivery-view's, derived from source.main, the wants and the haves.

Transitions

  • 2026-11-04 01:16 (new) → proposed (announced): novox/hq#512's head announced
  • 2026-11-04 01:16 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 08:40 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@4f6b9f0ca5ff` — **merged** since 2026-11-04T08:40:12Z **Source** — source.main moved to novox/hq@6cd965b3cdf6. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves. **Transitions** - 2026-11-04 01:16 (new) → proposed (announced): novox/hq#512's head announced - 2026-11-04 01:16 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 08:40 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-tools merged commit 6cd965b3cd into main 2026-11-04 08:40:09 +00:00
mesh-tools deleted branch docs/registry-prepare-points 2026-11-04 08:40:09 +00:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/hq#512