3.4 KiB
3.4 KiB
Tasks — network-transport-libp2p
Phase 1: Scaffold
- 1.1 Create
packages/network/network-transport-libp2p/with feature-module layout. - 1.2
package.jsonat0.1.0,"sideEffects": false, universal-tier (nobrowserrestriction, no React deps). - 1.3 Test config via
createTestConfig();tests/dep-graph.test.ts. - 1.4 Add 14 libp2p subpackages to root catalog under
network-transportgroup.
Phase 2: Demo extraction (PRE-WORK)
- 2.1 Open Wave-7 proposal
react-network-libp2p-demoreserving the destination package. - 2.2 Do NOT port
libp2p-demo.tsxorlibp2p-demo.stories.tsxinto this package. - 2.3 Verify package has zero
react/react-domreferences.
Phase 3: Types + errors
- 3.1 Port
libp2p.types.ts→src/types/types.ts+ sibling.md. - 3.2
defineCodes("NET_LIBP2P", [...]):BOOTSTRAP_FAILED,DIAL_FAILED,STREAM_FAILED,PROTOCOL_NOT_SUPPORTED,IDENTIFY_REJECTED,INVALID_OPTIONS. - 3.3 Zod schemas for
Libp2pConfig+ sub-transport configs. - 3.4 Reject construction without explicit
bootstraplist (throwsINVALID_OPTIONS).
Phase 4: Core libp2p stack
- 4.1 Port
libp2p-connection.ts— node create + dial lifecycle. - 4.2 Port
libp2p-messaging.ts— stream-based request/response. - 4.3 Port
peer-message.ts— wire format over@suaveplan/serialize. - 4.4 Port
send-to-peer.ts— addressed-send helpers. - 4.5 Port
stream-handler.ts— protocol handler registration.
Phase 5: Transport + plugin
- 5.1 Author
Libp2pTransport implements Transport. - 5.2 Author
Libp2pPlugin implements NetworkPlugin. - 5.3 Conformance tests for both contracts.
Phase 6: Test refactor
- 6.1 DELETE upstream duplicate
network-libp2p.spec.ts(.spec.tsis Playwright-only per CLAUDE.md). - 6.2 Split upstream 505-line
network-libp2p.test.tsinto ≤500-line files by responsibility. - 6.3 Author unit tests for
libp2p-connection,libp2p-messaging,send-to-peer,stream-handler,peer-message.
Phase 7: Observability
- 7.1 Counters
libp2p.connections_opened_total{outcome},streams_opened_total,bytes_total{direction}. - 7.2 Histograms
libp2p.dial_ms,libp2p.stream_ttfb_ms. - 7.3 Bus emissions
transport:libp2p:dial/:identify/:stream.
Phase 8: Tests + docs
- 8.1 fast-check property tests on multiaddr parsing + peer-ID round-trip.
- 8.2 Integration test: 2-peer webrtc dial + 2-peer websockets dial, both round-trip envelope.
- 8.3 100/100/100/100 coverage gate.
- 8.4 Sibling
.mdper.tsimpl file. - 8.5 No file > 300 LOC source or > 500 LOC test.
- 8.6 Root
README.mdwith sub-transport selection examples.
Phase 9: Verification
- 9.1
bunx turbo lint typecheck test --filter=@suaveplan/network-transport-libp2pgreen. - 9.2
bunx turbo test:coverage --filter=@suaveplan/network-transport-libp2p100/100/100/100. - 9.3
bun run docs:checkgreen. - 9.4 Zero React imports in
src/. - 9.5
MANIFEST.mdregen. - 9.6
STATUS.mdrow flipped.
Pre-archive checklist
- Row 1 — Phase 9 green.
- Row 2 — Demo extraction confirmed (no React in this package).
- Row 3 — Integration test against real libp2p stack passes.
- Row 4 —
openspec/specs/network-transport-libp2p/spec.mdwritten. - Row 5 — Folder archived.