3.0 KiB
3.0 KiB
Tasks: enterprise-queue
- Change ID: enterprise-queue
- Package:
@suaveplan/queue - Date: 2026-04-24
Prerequisites (must be published to Verdaccio first)
@suaveplan/error@suaveplan/types@suaveplan/events
Tasks
1. Scaffold package
- Create
universal/streams/queue/directory tree per file layout inproposal.md - Write
package.json(name@suaveplan/queue, version0.1.0,sideEffects: false, correct workspace deps) - Write
tsconfig.jsonextending@suaveplan/typescript-config/library.json - Write
vitest.config.tsusingcreateTestConfig()from@suaveplan/testing/config
2. Error codes (src/error-codes.ts)
- Define
QueueErrorCodeunion type - Call
defineCodesto register allQUEUE.*codes - Export
registerQueueErrorCodes()andQueueError
3. Types (src/types/common.ts)
- Define and export
Queue<T>,Job<T>,JobState,QueueWorker,QueueWorkerOptions,RetryPolicy,WorkerStats - Write
common.md
4. Queue implementations
createMemoryQueue<T>insrc/queues/memory-queue/— FIFO withmaxSizebound, injectable clock/idGenerator/buscreatePriorityQueue<T>insrc/queues/priority-queue/— max-heap byjob.prioritycreateDelayedQueue<T>insrc/queues/delayed-queue/— delayed dequeue based onjob.scheduledAtwith injectable clock- Each:
.ts,.md,.types.ts,.test.ts,index.ts; Zod options schema; lifecycle events on bus
5. Retry policy helpers (src/utils/retry-policy.ts)
- Implement constant, linear, exponential backoff delay computation
- Write
.mdand.test.ts
6. QueueWorker (src/worker/queue-worker/)
- Implement
createQueueWorker<T>with:- Configurable
concurrency(semaphore-based) AbortSignalpropagation to handler- Retry loop per
RetryPolicyon handler failure - Dead letter queue routing after
maxRetriesexhausted WorkerStatsaccumulation- Job lifecycle event emission via
@suaveplan/eventsbus - OTel spans, counters, histogram per
proposal.md§3
- Configurable
- Write
.md,.types.ts,.test.ts,index.ts
7. Tests
- Unit tests co-located (100% coverage target)
tests/integration.test.ts— enqueue jobs, start worker, assert completion stats and eventstests/property.test.ts— fast-check properties perproposal.md§4
8. Benchmarks (src/__benchmarks__/queue.bench.ts)
- Implement benchmark cases per
proposal.md§5
9. Docs
- Every
.tsimplementation file has a sibling.md - Root
README.md
10. Pre-publish gate
bunx turbo lint typecheck test --filter=@suaveplan/queuegreenbunx turbo test:coverage --filter=@suaveplan/queue≥ 100% on touched modules
11. Publish
bun scripts/publish.ts --package @suaveplan/queue
12. Archive
- Fold spec delta into
openspec/specs/streams/spec.md mv openspec/changes/enterprise-queue openspec/archive/2026-04-24-enterprise-queue