All DIS-001 through DIS-110 set to status:done with merge dates. BOARD.md reorganized with Done sections per phase. Phase 1.5 Refinement epic added as planning placeholder. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1.2 KiB
1.2 KiB
| id | status | phase | priority | labels | branch | assignee | started | pr | merged | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| DIS-104 | done | 1 | p1 |
|
phase-1/concurrency-semaphore | claude-agent | null | null | 2026-04-10 |
DIS-104: Globaler Semaphore (max_concurrent_agents)
Ziel
Globaler Cap auf parallele claude-Prozesse verhindert Ressourcen-Thrashing. Default 4, konfigurierbar via disclaw.yaml.
Kontext
→ docs/development-plan.md §2.3, Phase 1 Task 4.
Scope
- In:
src/runtime/concurrency.tsmitSemaphore(max)(acquire()/release()) ·runner.tsumschließt Spawn-Call:semaphore.acquire()/try { ... } finally { semaphore.release() }· Config-Default 4 indisclaw.yamlkommentiert - Out: Dynamisches Auto-Scaling
Definition of Done
- Unit-Test
tests/unit/semaphore.test.ts: Acquire bei freien Slots, Queueing bei vollen Slots, Release gibt Wartende frei, Error-Path hält Counter konsistent - Config-Default 4 in
disclaw.yaml npm run build && npm testgrün
Dateien (erwartet)
src/runtime/concurrency.tssrc/agent/runner.tssrc/config/loader.tsdisclaw.yamltests/unit/semaphore.test.ts
Abhängigkeiten
Keine harten. Kann parallel zu DIS-103 laufen.
Spec
→ docs/backlog.md #DIS-104