42 lines
1.3 KiB
Markdown
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
|