2.9 KiB
2.9 KiB
Tasks — websocket-gateway
Phase 1: Scaffold
- 1.1 Create
packages/network/websocket-gateway/, server-tier marker comment. - 1.2
package.jsonat0.1.0,"engines": { "node": ">=20" }, NObrowserfield. - 1.3 Test config via
createTestConfig();tests/dep-graph.test.ts. - 1.4 Add
ws(or commit tobun:websocketfaçade) to root catalog undernetwork-server.
Phase 2: Types + errors
- 2.1 Port
types/→src/types/+ sibling.md. - 2.2
defineCodes("WS_GATEWAY", [...]):ROOM_NOT_FOUND,ROOM_FULL,CHANNEL_INVALID,AUTH_REJECTED,RATE_LIMITED,INVALID_OPTIONS. - 2.3 Zod schemas for every public option struct + every wire frame.
Phase 3: Core subsystems
- 3.1 Port
room/— join/leave/broadcast/direct. - 3.2 Port
presence/— who's in which room. - 3.3 Port
channel/— channel multiplexing over one WS connection. - 3.4 Port
gateway/— mainWebSocketGatewaydaemon.
Phase 4: Hooks for unmigrated deps
- 4.1
AuthVerifiercallback (JWT integration deferred until@suaveplan/jwt-tenantlands). - 4.2
AuthorizationCheckcallback (RBAC integration deferred). - 4.3
RateLimitGatecallback (rate-limiter integration deferred). - 4.4 Replace placeholders with real package wiring as each lands on genesis.
Phase 5: Observability + reliability
- 5.1 OTel spans
ws_gateway.connect/message/broadcast. - 5.2 Counters
ws_gateway.rooms_active,presence_updates_total. - 5.3 Histograms
ws_gateway.message_dispatch_ms. - 5.4 Retry + circuit breakers via
@suaveplan/retryon outbound integrations. - 5.5 Idempotency guard via
@suaveplan/idempotencyon every mutating event. - 5.6 Webhook delivery via
@suaveplan/webhook-clienton presence events. - 5.7 Health / readiness / liveness endpoints (inline until
@suaveplan/health-checklands).
Phase 6: Tests + docs
- 6.1 Unit tests via
@suaveplan/testing/runner. - 6.2 fast-check property tests: room invariants, presence eventual consistency, channel mux fairness.
- 6.3 Integration test via
@suaveplan/testing-integration: 3-client scenario (rooms + presence + messages), no mocks. - 6.4 100/100/100/100 coverage gate.
- 6.5 Sibling
.mdper.tsimpl file. - 6.6 Root
README.mdwith daemon-run + client-pairing examples.
Phase 7: Verification
- 7.1
bunx turbo lint typecheck test --filter=@suaveplan/websocket-gatewaygreen. - 7.2
bunx turbo test:coverage --filter=@suaveplan/websocket-gateway100/100/100/100. - 7.3
bun run docs:checkgreen. - 7.4
MANIFEST.mdregen. - 7.5
STATUS.mdrow flipped.
Pre-archive checklist
- Row 1 — Phase 7 green.
- Row 2 — 3-client integration test passes.
- Row 3 — Auth/rate-limit/audit callbacks documented with replacement paths.
- Row 4 —
openspec/specs/websocket-gateway/spec.mdwritten. - Row 5 — Folder archived.