Expand runtime concurrency handling beyond ConcurrencyDrop and ConcurrencyQueue to the remaining strategies specified in ADR 0012.
Motivation
Under deferred dispatch (DispatchDeferred, ADR 0002), long-running LLM/tool work needs richer concurrency control than drop/queue: debouncing rapid human message bursts, batching, lock-free concurrent reads, channel-scoped locking, and preemption of in-flight handlers.
Acceptance
ConcurrencyDebounce, ConcurrencyBurst, ConcurrencyConcurrent implemented in the runtime per ADR 0012.
- Configurable lock scope (
thread default, channel opt-in).
- Handler preemption / steerability hook with force-release-lock coordination via
chat.State.
- Conformance + hardening tests for every new strategy lifecycle, matching the existing test style (
queue_edge_test.go, dispatch_deferred_test.go).
Generated with mux • Model: anthropic:claude-fable-5 • Thinking: xhigh
Expand runtime concurrency handling beyond
ConcurrencyDropandConcurrencyQueueto the remaining strategies specified in ADR 0012.Motivation
Under deferred dispatch (
DispatchDeferred, ADR 0002), long-running LLM/tool work needs richer concurrency control than drop/queue: debouncing rapid human message bursts, batching, lock-free concurrent reads, channel-scoped locking, and preemption of in-flight handlers.Acceptance
ConcurrencyDebounce,ConcurrencyBurst,ConcurrencyConcurrentimplemented in the runtime per ADR 0012.threaddefault,channelopt-in).chat.State.queue_edge_test.go,dispatch_deferred_test.go).Generated with
mux• Model:anthropic:claude-fable-5• Thinking:xhigh