disclaw/tasks/DIS-103.md

42 lines
1.3 KiB
Markdown

---
id: DIS-103
status: backlog
phase: 1
priority: p0
labels: [phase:1, type:feat, priority:p0]
branch: phase-1/channel-queue
assignee: null
started: null
pr: null
merged: null
---
# 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