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>
42 lines
1.2 KiB
Markdown
42 lines
1.2 KiB
Markdown
---
|
|
id: DIS-104
|
|
status: done
|
|
phase: 1
|
|
priority: p1
|
|
labels: [phase:1, type:feat, priority:p1]
|
|
branch: phase-1/concurrency-semaphore
|
|
assignee: claude-agent
|
|
started: null
|
|
pr: null
|
|
merged: 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.ts` mit `Semaphore(max)` (`acquire()/release()`) · `runner.ts` umschließt Spawn-Call: `semaphore.acquire()` / `try { ... } finally { semaphore.release() }` · Config-Default 4 in `disclaw.yaml` kommentiert
|
|
- **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 test` grün
|
|
|
|
## Dateien (erwartet)
|
|
- `src/runtime/concurrency.ts`
|
|
- `src/agent/runner.ts`
|
|
- `src/config/loader.ts`
|
|
- `disclaw.yaml`
|
|
- `tests/unit/semaphore.test.ts`
|
|
|
|
## Abhängigkeiten
|
|
Keine harten. Kann parallel zu DIS-103 laufen.
|
|
|
|
## Spec
|
|
→ `docs/backlog.md` #DIS-104
|