Files
suaveplan/openspec/archive/2026-05-12-enterprise-browser-network-discovery-trystero/tasks.md
2026-05-27 23:29:53 +01:00

3.0 KiB

Tasks: enterprise-browser-network-discovery-trystero

Change ID: enterprise-browser-network-discovery-trystero Package: @suaveplan/network-discovery-trystero Target path: browser/network/network-discovery-trystero Prerequisite packages on Verdaccio: @suaveplan/network, @suaveplan/error, @suaveplan/types, @suaveplan/crypto, @suaveplan/retry


1. Scaffold

  • Create directory tree per proposal.md.
  • package.json v0.0.0, "sideEffects": false.
    • dependencies: @suaveplan/network workspace:^, @suaveplan/error workspace:^, @suaveplan/types workspace:^, @suaveplan/crypto workspace:^, @suaveplan/retry workspace:^, trystero, zod catalog:forms, @opentelemetry/api catalog:observability, tslib catalog:build
    • devDependencies: vitest catalog:testing, @vitest/coverage-istanbul catalog:testing, @suaveplan/testing workspace:^, react catalog:browser, @types/react catalog:browser
  • tsconfig.json, vitest.config.ts (pool: forks).

2. Error codes + schema

  • TRYSTERO_RELAY_UNREACHABLE, TRYSTERO_ROOM_JOIN_FAILED. Register eagerly.
  • TrysteroMessageSchema per variant; register in @suaveplan/schema-registry.

3. Supporting modules

For event-emitter, intervals, room-config, trystero-room-manager, message-handlers:

  • Implement each module; validate messages with Zod in message-handlers.
  • Write *.test.ts and *.md.

4. Presets (src/presets/)

  • Export TORRENT_TRACKERS, NOSTR_RELAYS with { url, addedAt, lastVerified } freshness metadata.
  • Write presets.md.

5. TrysteroDiscovery (src/trystero-discovery/)

  • Strict-mode: reject public default relay lists without strict: false.
  • Encrypted rooms: if config.encrypt, wrap messages with @suaveplan/crypto AES-GCM.
  • Signed announcements: if config.sign, sign metadata with @suaveplan/crypto ed25519.
  • Fallback via @suaveplan/retry (replace any ad-hoc fallback logic).
  • Wire OTel metrics per strategy.
  • Write trystero-discovery.test.ts, trystero-discovery.md, trystero-discovery.types.ts.

6. Story

  • src/trystero-discovery/trystero-discovery.stories.tsx with React devDep.

7. Tests (≤500 lines each)

  • tests/core.test.ts — config, strict-mode, start/stop.
  • tests/messaging.test.ts — message send/receive per strategy, Zod validation.
  • tests/messaging-advanced.test.ts — encrypted round-trip, signed announcement verification.

8. Verify + publish

  • bunx turbo lint typecheck test --filter=@suaveplan/network-discovery-trystero — green.
  • bunx turbo test:coverage — 100%.
  • Strict-mode blocks public defaults.
  • Encrypted-room round trip verified.
  • Fallback transition produces typed event with from/to.
  • bun scripts/publish.ts --package @suaveplan/network-discovery-trystero.
  • Archive to openspec/archive/2026-04-24-enterprise-browser-network-discovery-trystero/.