events: core.lease makes two module round trips under the default 10 s budget #207

Open
opened 2026-09-24 05:16:31 +00:00 by wtclaude · 0 comments
Member

Found by the module-rust phase 12 walk. Recorded in docs/modules/rust/PLAN.md §27.6.

core.lease declares no budgetMs, so it runs under the dispatcher's default of 10 s. Its perform makes two module calls in sequence (read, then apply), and each of those is a sidecar round trip on any game module. MODULE_API §2.4's rule is that budgetMs must exceed the timeout of whatever the action talks to. Here it has to exceed the sum of two.

module-rust fits by giving its lease calls a 4.5 s client timeout, which a test asserts, and by releasing after a timed-out apply. module-uo's client waits 12 s per call, so one slow read is enough for the dispatcher to classify the attempt as retry while perform is still running. What a late-landing first attempt does against the retry's reservation is not established.

Options: declare a budgetMs on core.lease, or let a lease declaration carry its own budget that core uses for the step.

  • AI-assisted: Claude Code (Claude Opus 5.5)
Found by the module-rust phase 12 walk. Recorded in `docs/modules/rust/PLAN.md` §27.6. `core.lease` declares no `budgetMs`, so it runs under the dispatcher's default of 10 s. Its `perform` makes **two** module calls in sequence (`read`, then `apply`), and each of those is a sidecar round trip on any game module. MODULE_API §2.4's rule is that `budgetMs` must exceed the timeout of whatever the action talks to. Here it has to exceed the sum of two. module-rust fits by giving its lease calls a 4.5 s client timeout, which a test asserts, and by releasing after a timed-out apply. module-uo's client waits 12 s per call, so one slow `read` is enough for the dispatcher to classify the attempt as retry while `perform` is still running. What a late-landing first attempt does against the retry's reservation is not established. Options: declare a `budgetMs` on `core.lease`, or let a lease declaration carry its own budget that core uses for the step. - [x] AI-assisted: Claude Code (Claude Opus 5.5)
Sign in to join this conversation.
No description provided.