You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
nostream-services + the worker model: everything the relay does besides serving the wire (measured 1,352 LOC services + 1,556 LOC app/workers).
Cluster → tokio task model: the Node cluster primary + 4 worker types (measured: maintenance, dvm-orchestrator, relay-monitor, static-mirroring) become tokio tasks with the same lifecycle guarantees — SIGTERM drain with deadline, worker respawn, per-worker event-store resolution (measured tests in app.ts suite)
Redis adapter port (cache + wot-graph queue, measured redis-adapter.ts/cache/client.ts): keep Redis as the cache (or decide embedded — record decision; strfry runs without it, but the TS relay's cache semantics are load-bearing for rate limits)
Payments: the 7 processors (lnbits, lnurl, nodeless, nwc, opennode, zebedee, null) behind a trait; invoice lifecycle state machine ported exactly (pending → completed/expired, 404-on-lookup semantics, measured in maintenance-worker tests)
Notifications: outbox + delivery-log + operator channels (measured tables + services) — port semantics; delivery retries and the outbox walk
DVM orchestrator: job queue over the event store, worker-process dispatch (stdin JSON pipe model), timeout/respawn semantics — measured suite is large (13 test rows); port to tokio process handling
Web of trust graph service (Redis-backed measured): adjacency computation + the publish path
Tor hidden service client (measured src/tor/client.ts): onion address bootstrap via control port
Event import (measured event-import-service.ts + the clean-db CLI): bulk import with the same dedup/reconcile semantics, plus the stream-json parsing replacement (the v3 shape fix from the dependabot job)
Acceptance: the worker model passes the drain/respawn/deadline suite; payments state machine passes the invoice-lifecycle tests 1:1; DVM orchestrator passes the dispatch/timeout/respawn matrix; a Rust relay with LMDB ingests the same 100k-event corpus the TS ingest does with identical store contents (checksum).
Activity