diff options
| author | Peter Stone <thepeterstone@gmail.com> | 2026-06-03 23:31:20 +0000 |
|---|---|---|
| committer | Peter Stone <thepeterstone@gmail.com> | 2026-06-03 23:31:20 +0000 |
| commit | ad4fcd22ec6f7408d1efc6a2bb0009c2377f57a6 (patch) | |
| tree | 796aae4be732b853568680bc6bc6ee59012061bd /scripts/debug-execution | |
| parent | 16110bec8b6ece5837560fb626ab30d8cdec0e81 (diff) | |
fix: release dispatch slot on all early-return paths in execute()
p.active was incremented by dispatch() before launching execute(), but
execute() had four early-return paths (budget gate, dep terminal failure,
deps not ready, per-agent limit) that returned before the defer
decActiveAgent was registered. Each such return leaked a slot, eventually
saturating maxConcurrent and permanently blocking dispatch() on doneCh.
Introduce releaseDispatchSlot() (decrements p.active + signals doneCh) and
defer it at the very top of execute() and executeResume(), so every exit
path releases the dispatch slot. Remove p.active and doneCh management from
decActiveAgent so it only handles the per-agent counter.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Diffstat (limited to 'scripts/debug-execution')
0 files changed, 0 insertions, 0 deletions
