mesh-hand-acts answers bounded, newest first; mesh-healers seeds from a partial answer (issue 1966 S8, recovery) #642

Merged
mesh-tools merged 3 commits from fix/1966-s8-hand-acts-window into main 2026-11-09 17:55:11 +00:00
Member

Issue 1966 S8 (prepare hq .work/1966-s8-hand-acts.md).

mesh-hand-acts' tools on novox did not answer within 30 s, met at least four times; mesh-healers has had no answer since 2026-11-07. Cause: hand-acts read the whole acts log (84,080 entries, 46.8 MB) on every call and applied the window afterwards; the 14-day answer was ~47 MB, over the tool runner's 16 MiB line cap, which froze the runner (fixed separately in mesh-tools, fix/1966-s8-runner-frozen).

  • hand-acts reads from the newest entry backwards within the window, reads on when the runtime ends a page early, and stops at 900 KiB of acts as answered, 20 s or the window's start, saying complete, cut and why; complete is true when every act of the window asked was read.

  • warrants is capped by the same byte limit.

  • mesh-healers' Seeded takes a partial answer and says so.

  • Quick fix (this): bound the answer by bytes and time.

  • Thorough fix: a limit argument and an id read in the seat's contract (later note); the runner fix removes the freeze for every module.

Tests: rows in TestHandActsReadsItsOwnLogAlone (84,000 entries with 3 in the window read one page; 40 acts of 40 KiB cut under 1 MiB; time budget; a page capped at 4 entries; 20,000 short acts under 1 MiB) and a healers row; each failed against the old code. vet, vet -tags integration, tests and the integration test pass in mesh-hand-acts and mesh-healers. No manifest change.

After delivery: hand-acts {days: 1} names what wrote ~83,500 acts in 12 days.

A recovery fix (recovery-fixes-merge-and-tell): small, undone by one revert; the delivery seat serves no recovery merge, so it takes the operator's Approve.

Reviewed-by: mesh-code-reviewer for lead-47@shanks at 443a340f06 (reviewed at acc181aa; rebased onto main 503411e6 with identical commits)

https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5

Issue 1966 S8 (prepare hq .work/1966-s8-hand-acts.md). mesh-hand-acts' tools on novox did not answer within 30 s, met at least four times; mesh-healers has had no answer since 2026-11-07. Cause: `hand-acts` read the whole acts log (84,080 entries, 46.8 MB) on every call and applied the window afterwards; the 14-day answer was ~47 MB, over the tool runner's 16 MiB line cap, which froze the runner (fixed separately in mesh-tools, fix/1966-s8-runner-frozen). - `hand-acts` reads from the newest entry backwards within the window, reads on when the runtime ends a page early, and stops at 900 KiB of acts as answered, 20 s or the window's start, saying `complete`, `cut` and `why`; `complete` is true when every act of the window asked was read. - `warrants` is capped by the same byte limit. - mesh-healers' `Seeded` takes a partial answer and says so. - Quick fix (this): bound the answer by bytes and time. - Thorough fix: a `limit` argument and an `id` read in the seat's contract (later note); the runner fix removes the freeze for every module. Tests: rows in TestHandActsReadsItsOwnLogAlone (84,000 entries with 3 in the window read one page; 40 acts of 40 KiB cut under 1 MiB; time budget; a page capped at 4 entries; 20,000 short acts under 1 MiB) and a healers row; each failed against the old code. vet, vet -tags integration, tests and the integration test pass in mesh-hand-acts and mesh-healers. No manifest change. After delivery: `hand-acts {days: 1}` names what wrote ~83,500 acts in 12 days. A recovery fix (recovery-fixes-merge-and-tell): small, undone by one revert; the delivery seat serves no recovery merge, so it takes the operator's Approve. Reviewed-by: mesh-code-reviewer for lead-47@shanks at 443a340f06ccdf48dbccdefb21c25374e503666f (reviewed at acc181aa; rebased onto main 503411e6 with identical commits) https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5
mesh-tools added 3 commits 2026-11-09 17:23:47 +00:00
hand-acts read the whole log (84k entries, 47 MB) on every call and could never answer inside the call bound or
the bus payload. It now reads from the newest entry backwards, page by page, and stops at the window's start, at
900 KiB of acts or at 20 s, saying complete: false, cut and why. warrants is bounded the same way. mesh-healers'
start-up seed takes a partial answer and logs it, instead of retrying forever.

Quick fix: this (mesh-catalog only, about 1.5 h). Thorough fix: also the tool runner never freezing on an oversized
bundle line and logging unanswered calls (mesh-tools, a separate fix by another developer, lead's ruling Q3), and an
SDK-side bound. Chosen here: quick for this module, the thorough part running beside it; the byte cap is the
module's own (lead's ruling Q1, a `limit` argument is a later note).

Claude-Session: https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5
Claude-Session: https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5
Listing.Complete comment says what the field means now (issue 1966 S8 review 2)
mesh/check checking 443a340f06cc on 4387e77f2899
mesh/delivery merged: source.main moved to novox/mesh-catalog@4387e77f2899
443a340f06
Claude-Session: https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5
Author
Member

Delivery novox/mesh-catalog@443a340f06cc — merged since 2026-11-09T17:55:12Z

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

Transitions

  • 2026-11-09 17:23 (new) → proposed (announced): novox/mesh-catalog#642's head announced
  • 2026-11-09 17:23 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 17:55 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@443a340f06cc` — **merged** since 2026-11-09T17:55:12Z **Source** — source.main moved to novox/mesh-catalog@4387e77f2899. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves. **Transitions** - 2026-11-09 17:23 (new) → proposed (announced): novox/mesh-catalog#642's head announced - 2026-11-09 17:23 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 17:55 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 4387e77f28 into main 2026-11-09 17:55:11 +00:00
mesh-tools deleted branch fix/1966-s8-hand-acts-window 2026-11-09 17:55:12 +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/mesh-catalog#642