Files
suaveplan/openspec/archive/2026-05-12-drive-transport-webrtc-port/tasks.md
2026-05-27 23:29:53 +01:00

2.1 KiB

Tasks: drive-transport-webrtc-port

Blocked on: drive-mesh-port. Soft-blocked on network-webrtc-port (will integrate when available).

1. Scaffold

  • 1.1 packages/drive/drive-transport-webrtc/ with package.json (@suaveplan/drive-transport-webrtc@0.0.0), tsconfig.json, vitest.config.ts, README.md.
  • 1.2 Workspace deps: @suaveplan/drive-mesh (interface), @suaveplan/error, @suaveplan/types, @suaveplan/streams, @opentelemetry/api, zod.

2. Framing codec

  • 2.1 src/framing/encode.ts — length-prefix + frame-type writer.
  • 2.2 src/framing/decode.ts — accumulator-based reader; surfaces complete frames.
  • 2.3 src/framing/types.ts — FrameType enum, frame structs.

3. Peer connection

  • 3.1 src/peer/connection.ts — wraps RTCPeerConnection, lifecycle, ICE handling via injected SignallerClient.
  • 3.2 src/peer/datachannel.ts — open/close, send with backpressure, receive with framing decode.

4. Transport impl

  • 4.1 src/transport.ts — webrtcTransport(options) factory. Maintains a Map<peerId, PeerConnection>. Implements requestChunk, advertise, onAdvertisement, peers.
  • 4.2 src/transport.ts — pending-request map (request-id ↔ deferred), so chunk-response frames resolve the right awaiter.

5. Backpressure

  • 5.1 src/backpressure/watermark.ts — bufferedamountlow event integration; pause/resume.

6. Spec

  • 6.1 openspec/specs/drive-transport-webrtc/spec.md — TRANSPORT-WRTC-01 … -05 with **Verified by:** lines.

7. Conformance tests

  • 7.1 src/framing/codec.spec-conformance.test.ts — round-trip framing (TRANSPORT-WRTC-01).
  • 7.2 src/transport.spec-conformance.test.ts — request/response correlation, advertisement broadcast, backpressure pause (TRANSPORT-WRTC-02 … -05) — uses fake RTCPeerConnection doubles.

8. Verify

  • 8.1 bunx turbo lint typecheck test --filter=@suaveplan/drive-transport-webrtc green.
  • 8.2 bunx turbo test:coverage --filter=@suaveplan/drive-transport-webrtc 100/100/100/100.
  • 8.3 bun scripts/openspec-conformance.ts @suaveplan/drive-transport-webrtc PASS.