A put without a hold ends once the node runs its fingerprint healthy #192

Merged
mesh-tools merged 1 commits from fix/1966-put-ends into main 2026-11-09 19:37:53 +00:00
Member

Issue 1966 (recovery before design 47's milestone G push; prepare finding F21).

A put without hold never ended against a node that composes its own: applied also matched the have's composition digest to the put's, which a self-composing node never has. The puts of mesh-host eb5e6b03 stood at wanted from about 10:47 to 18:08 UTC on 2026-11-09, pinning the want until a hand release. ADR 0546 §5: a put without hold ends once the node runs it healthy; a held put keeps its composition check. assigner_puts now says older-than-newest for a put that stands at another build than the newest.

Quick fix: release each such put by hand (assigner_release), recurring with every put. Thorough fix (chosen): the put ends itself on the fingerprint. Met twice (the eb5e6b03 puts, and milestone G's one logged put of its own indexer), so thorough. Milestone G moves the end onto the node-engine seat's running event (design 47, round 3).

No new read of another module's state: the assigner already reads the node's have (puts.go). Tests: rows in the put table (wants_test.go) and an assertion in pass_test.go; both fail without the change.

Reviewed-by: mesh-code-reviewer@shanks at b71358e2cc

https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ

Issue 1966 (recovery before design 47's milestone G push; prepare finding F21). A put without hold never ended against a node that composes its own: `applied` also matched the have's composition digest to the put's, which a self-composing node never has. The puts of mesh-host eb5e6b03 stood at wanted from about 10:47 to 18:08 UTC on 2026-11-09, pinning the want until a hand release. ADR 0546 §5: a put without hold ends once the node runs it healthy; a held put keeps its composition check. `assigner_puts` now says `older-than-newest` for a put that stands at another build than the newest. Quick fix: release each such put by hand (assigner_release), recurring with every put. Thorough fix (chosen): the put ends itself on the fingerprint. Met twice (the eb5e6b03 puts, and milestone G's one logged put of its own indexer), so thorough. Milestone G moves the end onto the node-engine seat's running event (design 47, round 3). No new read of another module's state: the assigner already reads the node's have (puts.go). Tests: rows in the put table (wants_test.go) and an assertion in pass_test.go; both fail without the change. Reviewed-by: mesh-code-reviewer@shanks at b71358e2cc14e73d0447d06d9865ccfbb63d7bc6 https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
mesh-tools added 1 commit 2026-11-09 19:03:51 +00:00
A put without a hold ends once the node runs its fingerprint healthy, and assigner_puts says a put older than the newest build
mesh/check being carried to b71358e2cc14 on 05e21fd8a382 | from fc21f2d1bd56
mesh/delivery merged: source.main moved to novox/mesh-delivery@05e21fd8a382
b71358e2cc
A put with hold false waited for the node's composition digest to equal its own and never ended when the node composes its own,
pinning the module's want (issue 1966, F21).

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

Delivery novox/mesh-delivery@b71358e2cc14 — merged since 2026-11-09T19:37:54Z

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

Transitions

  • 2026-11-09 19:03 (new) → proposed (announced): novox/mesh-delivery#192's head announced
  • 2026-11-09 19:03 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-09 19:37 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-delivery@b71358e2cc14` — **merged** since 2026-11-09T19:37:54Z **Source** — source.main moved to novox/mesh-delivery@05e21fd8a382. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves. **Transitions** - 2026-11-09 19:03 (new) → proposed (announced): novox/mesh-delivery#192's head announced - 2026-11-09 19:03 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-09 19:37 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 05e21fd8a3 into main 2026-11-09 19:37:53 +00:00
mesh-tools deleted branch fix/1966-put-ends 2026-11-09 19:37:53 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/mesh-delivery#192