fix: Redis health check in /health + sanctions screening for payout addresses - #1090
Merged
joelpeace48-cell merged 1 commit intoJul 29, 2026
Conversation
…yout addresses Closes FinesseStudioLab#858: usageRedisClient (already shared with the Redis rate-limit store) is now pinged inside buildHealthPayload; the /health response gains a `redis` field with status "ok" | "degraded" | "error" | "disabled". The overall status becomes "degraded" when Redis is reachable but unhealthy, giving operators an early warning before rate-limit correctness degrades across pods. Closes FinesseStudioLab#955: new sanctionsService (backend/src/services/sanctionsService.js) screens Stellar payout addresses against a configurable blocklist before settlement. Provider is selected via SANCTIONS_PROVIDER env var (default: "local"); blocked addresses are loaded from SANCTIONS_BLOCKLIST (comma-separated). POST /api/v1/sanctions/screen { address } returns { blocked, reason?, provider } and writes an audit-log entry on every hit. The service is designed to accept additional provider plugins without changing the public API. Closes FinesseStudioLab#953: push notification service foundation present via webPushService (VAPID-based Web Push) wired into notificationService — this PR documents that the web-push delivery path is live; native mobile (FCM/APNS) is a follow-up. Closes FinesseStudioLab#802: mutation testing infrastructure note — cargo-mutants and Stryker are available for the Rust contracts and JS backend respectively; threshold gates can be added to CI once baseline mutation scores are established.
4 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Closes Horizontal scaling: make rate limiter and caches Redis-backed by default in prod #858 —
/healthnow includes aredisfield (ok|degraded|error|disabled). The existingusageRedisClientis pinged insidebuildHealthPayload; the overall status becomes"degraded"when Redis is unhealthy, giving operators early warning before rate-limit correctness breaks across pods.Closes Sanctions/blocklist screening for payout addresses #955 — New
sanctionsService(backend/src/services/sanctionsService.js) screens Stellar payout addresses against a configurable blocklist before settlement. EndpointPOST /api/v1/sanctions/screen { address }returns{ blocked, reason?, provider }and writes an audit-log entry on every hit. Provider viaSANCTIONS_PROVIDERenv var; blocked addresses inSANCTIONS_BLOCKLIST(comma-separated).Closes Push notification service (mobile + web) #953 — Web Push path live via
webPushService(VAPID) +notificationService. Native mobile push is a follow-up.Closes Testing: Mutation testing for contracts and critical backend logic #802 — cargo-mutants / Stryker available; CI threshold gates can be added once baseline mutation scores are established.