28 lines
1.5 KiB
Markdown
28 lines
1.5 KiB
Markdown
# Tasks: events-spec-tightening
|
|
|
|
## 1. Spec delta
|
|
|
|
- [ ] 1.1 Author `specs/events/spec.md` delta with `## MODIFIED Requirements` (Deterministic id and clock sources, Structured errors, Passive observability adapter) and `## ADDED Requirements` (emitAsync timeout, emitAsync abort, Envelope traceId propagation).
|
|
- [ ] 1.2 Add `**Verified by:**` line to every requirement (existing + new).
|
|
|
|
## 2. Conformance test
|
|
|
|
- [ ] 2.1 Add `packages/events/events/src/conformance.spec-conformance.test.ts` pinning:
|
|
- `new EventBus({ clock, idGenerator })` accepts injections (replaces ghost `createBus`).
|
|
- Async listener throw is captured into `EmitResult.errors` with `EVENTS.LISTENER.THREW`.
|
|
- `withObservability` adapter `onEmitError` fires when dispatch rejects.
|
|
- `emitAsync` with `timeoutMs` rejects with `EVENTS.EMIT.TIMED_OUT` past the deadline.
|
|
- `emitAsync` with an aborted `AbortSignal` rejects with `EVENTS.EMIT.ABORTED` (`cause === signal.reason`).
|
|
- `traceId` passed to `emit` / `emitAsync` surfaces on `EventEnvelope.traceId`.
|
|
|
|
## 3. Gate
|
|
|
|
- [ ] 3.1 `bunx turbo lint typecheck test --filter=@suaveplan/events` green.
|
|
- [ ] 3.2 `bunx turbo test:coverage --filter=@suaveplan/events` 100/100/100/100.
|
|
- [ ] 3.3 `bun scripts/openspec-conformance.ts @suaveplan/events` exits 0.
|
|
|
|
## 4. Fold + archive
|
|
|
|
- [ ] 4.1 Fold delta into `openspec/specs/events/spec.md`.
|
|
- [ ] 4.2 Move `openspec/changes/events-spec-tightening/` to `openspec/archive/2026-04-27-events-spec-tightening/`.
|