3.4 KiB
3.4 KiB
Tasks: enterprise-browser-network-discovery-webtorrent
Change ID: enterprise-browser-network-discovery-webtorrent
Package: @suaveplan/network-discovery-webtorrent
Target path: browser/network/network-discovery-webtorrent
Prerequisite packages on Verdaccio: @suaveplan/network, @suaveplan/events, @suaveplan/error, @suaveplan/types, @suaveplan/crypto
1. Scaffold
- Create directory tree per
proposal.md. package.jsonv0.0.0,"sideEffects": false.dependencies:@suaveplan/network workspace:^,@suaveplan/events workspace:^,@suaveplan/error workspace:^,@suaveplan/types workspace:^,@suaveplan/crypto workspace:^,p2pt,zod catalog:forms,@opentelemetry/api catalog:observability,tslib catalog:builddevDependencies:vitest catalog:testing,@vitest/coverage-istanbul catalog:testing,@playwright/test catalog:testing,@suaveplan/testing workspace:^
tsconfig.json,vitest.config.ts(pool: forks).
2. Error codes + schema
WEBTORRENT_TRACKER_UNREACHABLE,WEBTORRENT_ANNOUNCE_FAILED. Register eagerly.P2PTPeerSchema,EnvelopeSchema(Zod); register envelope in@suaveplan/schema-registry.
3. P2PTAdapter interface (src/lib/p2pt-adapter/)
- Define
P2PTAdapterinterface mirroringp2pt's public API surface. - Implement
RealP2PTAdapterwrappingnew P2PT(...). - This adapter is the seam for unit tests — inject it rather than stubbing globals.
- Write
p2pt-adapter.test.ts,p2pt-adapter.md.
4. TrackerHealth (src/lib/tracker-health/)
- Track per-tracker
warningCount,lastWarning,healthyflag. - On
trackerwarningevent, increment warning count; mark unhealthy above threshold. - Round-robin to next healthy tracker.
- Write
tracker-health.test.ts,tracker-health.md.
5. WebTorrentDiscovery (src/lib/network-discovery-webtorrent/)
- No
describe.skip— real tests. - Strict-mode: reject four default public trackers.
announceIdmust be ≥8 chars; optionally tenant-hashed.- Optional encryption: AES-GCM wrap messages.
- Optional signed announcements: ed25519 via
@suaveplan/crypto. - Wire
TrackerHealthfailover. - Wire OTel metrics.
- Write
network-discovery-webtorrent.test.ts(config, tracker selection, peer dedup, error propagation viaP2PTAdapter),network-discovery-webtorrent.md,network-discovery-webtorrent.types.ts.
6. Integration test (tests/integration.test.ts)
- Strict-mode rejects public trackers.
announceIdtoo short throws typed error.- Tracker failover: simulate
trackerwarningevents and verify rotation.
7. Playwright E2E (e2e/webtorrent-discovery.spec.ts)
- Chromium browser context connects to a real WSS WebTorrent tracker.
- Second peer announces; first peer discovers it and emits
peerevent.
8. Docs + verify
- Write
.mdper module;README.mdwith tracker threat model, enterprise deployment, strict-mode guidance. bunx turbo lint typecheck test --filter=@suaveplan/network-discovery-webtorrent— green.bunx turbo test:coverage— 100%.- No
describe.skip, novi.stubGlobal. - Playwright E2E discovers a real peer.
bun scripts/publish.ts --package @suaveplan/network-discovery-webtorrent.- Archive to
openspec/archive/2026-04-24-enterprise-browser-network-discovery-webtorrent/.