Files
routstrd/src
redshift ad09fca611 fix(providers): address review — fail-closed nostr-sync, adapter-sourced list, strict indices
Blocker: nostr-sync now recomputes the kind-38425 review verdict via
modelManager.syncReviewedProvidersFromNostr() after clearing manual
overrides and mirrors it into the store. Previously a provider that was
manually enabled across a scheduled review refresh was absent from the
review-disabled set (the SDK skips manually-enabled providers), so
nostr-sync would fail OPEN for a review-rejected provider.

- GET /providers now derives disabled/manual status from the discovery
  adapter (the router's source of truth), like /providers/reviews,
  instead of the store mirror that lags scheduled review syncs.
  URL comparison is normalization-aware (adapter stores trailing-slash
  URLs).
- nostr-sync validates indices with Number.isInteger, returns 400 when
  no valid indices are given, dedupes, and reports skipped indices on
  partial success.
- CLI parses indices strictly (/^\d+$/) for disable/enable/nostr-sync;
  parseInt previously accepted '3abc' and '0x5'.
- Add src/daemon/http/providers.test.ts: regression coverage for the
  review-disabled -> manual-enable -> refresh -> nostr-sync lifecycle,
  list/routing/nostr-sync agreement, manual status labels, and
  fractional/duplicate/out-of-range indices.
2026-09-22 14:48:46 +03:00
..
2026-03-19 16:25:57 +00:00