Skip to content

feat: FX quorum-across-providers variance guard - #816

Open
Calebstack wants to merge 1 commit into
RevoraOrg:masterfrom
Calebstack:feat/fx-quorum-variance-guard
Open

feat: FX quorum-across-providers variance guard#816
Calebstack wants to merge 1 commit into
RevoraOrg:masterfrom
Calebstack:feat/fx-quorum-variance-guard

Conversation

@Calebstack

Copy link
Copy Markdown

Overview

This PR wires FX quorum-across-providers with a variance guard into runtime bootstrap so divergent rates block the run and page ops instead of silently picking one provider.

Related Issue

Closes #704

Changes

💱 FX quorum bootstrap

  • [ADD] src/services/fxQuorumBootstrap.ts (+ tests)
    • Constructs FxProviderRouter + FxQuorumEvaluator + FxQuorumAlerting with paging/audit.
  • [MODIFY] src/index.ts
    • Opt-in boot via FX_QUORUM_ENABLED=true (FX_QUORUM_K / FX_QUORUM_TOLERANCE).
  • [MODIFY] scripts/validate-alert-mappings.ts + docs/runbooks/README.md
    • Maps fx_quorum_failed_total to the FX quorum runbook.

Verification Results

npx jest --runInBand --forceExit \
  src/services/fxQuorumBootstrap.test.ts \
  src/services/fxQuorumEvaluator.test.ts \
  src/services/fxProviderRouter.quorum.test.ts \
  --coverage=false
✅ passed

npm run validate:alert-mappings
✅ OK including fx_quorum_failed_total
Acceptance Criteria Status
K-of-N providers within tolerance FxQuorumEvaluator via bootstrap
Failure blocks run and pages ops with divergent rates ✅ pager + FxQuorumFailedError
fx.quorum.failed / fx_quorum_failed_total metric + alert map
Single provider outage still meets quorum if N−1 agree ✅ Covered in bootstrap tests
Tenant-configurable thresholds with audit ✅ Uses platform defaults + existing tenant settings path

Timeline

  • Calebstack committed

Bootstrap FxProviderRouter in quorum mode, page on divergence, and map
fx_quorum_failed_total for ops alerting.

Closes RevoraOrg#704
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Exchange rate provider failover: quorum-across-providers with variance guard

1 participant