--- id: DIS-103 status: done phase: 1 priority: p0 labels: [phase:1, type:feat, priority:p0] branch: phase-1/channel-queue assignee: claude-agent started: null pr: null merged: 2026-04-10 --- # DIS-103: `ChannelQueue` — Per-Channel-FIFO ## Ziel Mehrere Nachrichten im selben Channel werden strikt seriell abgearbeitet. Parallele Channels bleiben parallel. Keine Race Conditions auf Workspace-Dateien. ## Kontext → `docs/development-plan.md` §2.3, Phase 1 Task 3. ## Scope - **In**: `src/runtime/channel-queue.ts` mit `ChannelQueue`-Klasse · Integration in `router.ts`: `messageCreate` läuft durch `channelQueue.enqueue(channelId, () => runAgent(...))` - **Out**: Persistente Queue über Prozessneustart ## Definition of Done - [ ] Unit-Test `tests/unit/channel-queue.test.ts`: FIFO-Ordnung, Error-Recovery (fehlgeschlagene Task blockiert Queue nicht), Map-Cleanup nach leerer Queue - [ ] Integration-Test `tests/integration/channel-queue-router.test.ts`: drei schnell enqueued Messages werden in Reihenfolge abgearbeitet - [ ] `npm run build && npm test` grün ## Dateien (erwartet) - `src/runtime/channel-queue.ts` - `src/router.ts` - `tests/unit/channel-queue.test.ts` - `tests/integration/channel-queue-router.test.ts` ## Abhängigkeiten Blockiert durch: **DIS-101**. ## Spec → `docs/backlog.md` #DIS-103