Issue 774 (L3), tools-are-how-a-module-is-spoken-to. The teller had no tool, so an ask whose key was never taken away (a merge ask after a merge without the Approve, a 7-day backup ask) held one of the router's places for its asker until it lapsed, and nothing could end it.
teller_end_ask {ask, why} names a router id, or a gate or assigner ask key (its latest asking). An open ask is cancelled at the router and marked ended, and the router's cancelled warrant then asks the next ask waiting for room. An ask waiting for room is dropped from the wait, and any other name is reported as left alone. It follows indexer_take_in's pattern: a tools bundle writes the teller's new state ends, and the teller watches it and answers by compare-and-set. The process still serves no request subject.
Quick fix vs thorough fix: this is the recovery tool. The cause is fixed in mesh-catalog (the gate takes away an ask of a finished delivery). The assigner's backup asks have the same gap, not fixed here (they need their asking count kept on the bus); this tool covers them meanwhile.
Tests: three table subtests in TestAnAsksKeyBecomesOneRouterAskAndDeletingItCancelsIt, and the manifest test now holds the tool, its state and its artifact. No new test functions. gofmt, go vet, go vet -tags integration and go test are clean.
Reviewer notes, not built: an end named by key can race a new asking of that key (name the router id when unsure); a false 'could not be cancelled' when the mark loses a revision race; a failed watch of ends stops the teller.
Issue 774 (L3), tools-are-how-a-module-is-spoken-to. The teller had no tool, so an ask whose key was never taken away (a merge ask after a merge without the Approve, a 7-day backup ask) held one of the router's places for its asker until it lapsed, and nothing could end it.
teller_end_ask {ask, why} names a router id, or a gate or assigner ask key (its latest asking). An open ask is cancelled at the router and marked ended, and the router's cancelled warrant then asks the next ask waiting for room. An ask waiting for room is dropped from the wait, and any other name is reported as left alone. It follows indexer_take_in's pattern: a tools bundle writes the teller's new state ends, and the teller watches it and answers by compare-and-set. The process still serves no request subject.
Quick fix vs thorough fix: this is the recovery tool. The cause is fixed in mesh-catalog (the gate takes away an ask of a finished delivery). The assigner's backup asks have the same gap, not fixed here (they need their asking count kept on the bus); this tool covers them meanwhile.
Tests: three table subtests in TestAnAsksKeyBecomesOneRouterAskAndDeletingItCancelsIt, and the manifest test now holds the tool, its state and its artifact. No new test functions. gofmt, go vet, go vet -tags integration and go test are clean.
Reviewer notes, not built: an end named by key can race a new asking of that key (name the router id when unsure); a false 'could not be cancelled' when the mark loses a revision race; a failed watch of ends stops the teller.
Controller research piece: none.
Reviewed-by: rev-asks@shanks at 17abe6af32ce7e19d19783a83a6c92f95fdd9392
On 2026-10-31 two merge asks of pull requests merged by another path held two of
the router's three places for the teller and a placement ask was refused for want
of room. The gate's fix ends such asks by itself; this tool is the recovery for any
ask that still outlives its question: it cancels the open ask at the router, or
drops one waiting for room, by its router id or its key, and logs who and why. The
tools bundle asks through the teller's new state ends, as indexer_take_in does.
Deliverynovox/mesh-delivery@17abe6af32ce — merged since 2026-10-31T01:33:06Z
Source — source.main moved to novox/mesh-delivery@af0fd83aec. Whether it reached the machines is mesh-delivery-view's, derived from source.main, the wants and the haves.
composed together: pass — the checker's verdict at the members' heads (22ac8bbf9c36)
Transitions
2026-10-31 01:21 (new) → proposed (announced): novox/mesh-delivery#124's head announced
2026-10-31 01:21 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-10-31 01:33 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@17abe6af32ce` — **merged** since 2026-10-31T01:33:06Z
**Source** — source.main moved to novox/mesh-delivery@af0fd83aec09. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves.
**Group** `fix/merge-ask-ends-on-merge`: novox/mesh-catalog@fdb8deea4c9e, novox/mesh-delivery@17abe6af32ce
- composed together: pass — the checker's verdict at the members' heads (22ac8bbf9c36)
**Transitions**
- 2026-10-31 01:21 (new) → proposed (announced): novox/mesh-delivery#124's head announced
- 2026-10-31 01:21 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-10-31 01:33 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 774 (L3), tools-are-how-a-module-is-spoken-to. The teller had no tool, so an ask whose key was never taken away (a merge ask after a merge without the Approve, a 7-day backup ask) held one of the router's places for its asker until it lapsed, and nothing could end it.
teller_end_ask {ask, why} names a router id, or a gate or assigner ask key (its latest asking). An open ask is cancelled at the router and marked ended, and the router's cancelled warrant then asks the next ask waiting for room. An ask waiting for room is dropped from the wait, and any other name is reported as left alone. It follows indexer_take_in's pattern: a tools bundle writes the teller's new state ends, and the teller watches it and answers by compare-and-set. The process still serves no request subject.
Quick fix vs thorough fix: this is the recovery tool. The cause is fixed in mesh-catalog (the gate takes away an ask of a finished delivery). The assigner's backup asks have the same gap, not fixed here (they need their asking count kept on the bus); this tool covers them meanwhile.
Tests: three table subtests in TestAnAsksKeyBecomesOneRouterAskAndDeletingItCancelsIt, and the manifest test now holds the tool, its state and its artifact. No new test functions. gofmt, go vet, go vet -tags integration and go test are clean.
Reviewer notes, not built: an end named by key can race a new asking of that key (name the router id when unsure); a false 'could not be cancelled' when the mark loses a revision race; a failed watch of ends stops the teller.
Controller research piece: none.
Reviewed-by: rev-asks@shanks at
17abe6af32Delivery
novox/mesh-delivery@17abe6af32ce— merged since 2026-10-31T01:33:06ZSource — source.main moved to novox/mesh-delivery@af0fd83aec. Whether it reached the machines is
mesh-delivery-view's, derived fromsource.main, the wants and the haves.Group
fix/merge-ask-ends-on-merge: novox/mesh-catalog@fdb8deea4c, novox/mesh-delivery@17abe6af32Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition of this change up to its merge:git log --notes=mesh-plan.