Files
2026-05-27 23:29:53 +01:00

3.0 KiB

OpenSpec Change: network-trystero-server

  • Change ID: network-trystero-server
  • Package: @suaveplan/network-trystero-server
  • Category: server (Node-only)
  • Target path: packages/network/network-trystero-server
  • Status: PROPOSED
  • Date: 2026-05-11
  • Parent: network-transport-family (2026-05-11) — Wave 5
  • Migration source: ../suaveplan/packages/server/network-trystero-server + ../suaveplan/enterprise/network-trystero-server.md

Summary

Migrate @suaveplan/network-trystero-server into genesis as a server-tier daemon. Hosts a Trystero serverless P2P signaling endpoint (MQTT broker or Nostr relay shim depending on configuration). Pairs with browser-tier @suaveplan/network-discovery-trystero (Wave 2) for the relay-backed transport modes.


Current-state audit

Upstream source layout (../suaveplan/packages/server/network-trystero-server/src/): see ../suaveplan/enterprise/network-trystero-server.md for full inventory.


Parity Checklist

Capability Upstream Migrated Notes
Server daemon (Node) ✅ ✅
Trystero signaling endpoint ✅ ✅
Configurable transport (mqtt / nostr) ✅ ✅
Relay-URL bootstrap ✅ ✅
Structured errors 🚫 ⬆️ defineCodes registry.
Zod boundary validation 🚫 ⬆️ Every public option struct.
OTel instrumentation 🚫 ⬆️ Spans + counters + histograms.
AbortSignal 🚫 ⬆️ Threaded everywhere.
Health / readiness / liveness 🚫 ⬆️ Via @suaveplan/health-check once that lands; otherwise inline endpoints.
export * barrels check ⬆️ Convert to explicit named exports per §6a.
Test-runner imports direct vitest ⬆️ Rewrite to @suaveplan/testing/runner per §7.
100% test coverage 🚫 ⬆️ Bring to 100/100/100/100.
Integration tests partial ⬆️ Use @suaveplan/testing-integration for real-process tests; no mocks.

Available workspace deps on genesis

  • @suaveplan/network ✅

  • @suaveplan/error, @suaveplan/types, @suaveplan/events, @suaveplan/logger, @suaveplan/retry, @suaveplan/timing ✅

  • @suaveplan/testing + @suaveplan/testing-integration ✅

  • External: trystero, (optional) mosca/aedes for MQTT broker.

package.json declares "engines": { "node": ">=20" } and omits the browser field; server-tier marker comment in main entry point.


Acceptance gate

  1. bunx turbo lint typecheck test --filter=@suaveplan/network-trystero-server green.
  2. bunx turbo test:coverage --filter=@suaveplan/network-trystero-server 100/100/100/100.
  3. bun run docs:check green.
  4. Integration test boots the server in-process and exercises the client-server round trip.
  5. STATUS.md row flipped.

Out of scope

  • Production deployment infrastructure (Docker, k8s manifests, TLS termination) — deployment concern.
  • Cross-cluster federation across multiple server instances.