juspay / juspay/decision-engine

Sticky routing: ops hardening — kill-switch dashboard, metrics, rollout

Open
#417 1 comment 0 reactions 1 assignee Claimed by @prajjwalkumar17 View on GitHub
Dominant language
Rust
Stars
128
Forks
36
Avg merge
1d 15h
Merged PRs (30d)
34

Description

Part of #393 (sticky routing). **Status: open** — the remaining ops/rollout tail; the code pieces have landed in the PR stack.

Done (pending merge):
- [x] `KnownFeature::StickyRouting` — the `sticky_routing_enabled` flag is dashboard-manageable with rollout % (#422; dashboard card in #424)
- [x] Metrics counters (#423): `sticky_routing_decisions_total{outcome=overridden|pinned_agreeing|vetoed|no_state|read_error}` and `sticky_routing_writes_total{outcome=recorded|decremented|no_habit|over_budget|write_error}` — `over_budget` doubles as the admission-guard alarm, the `*_error` outcomes surface Redis degradation (both guards fail open by design)

Remaining:
- [ ] Grafana panel + alerting on those counters (especially `over_budget` and `*_error`), and on sticky key-count growth per merchant
- [ ] Rust-level integration tests against a live Redis: health-veto trip (needs scored history), admission-budget window rollover, combo-cap prune drain, sliding-TTL re-arm, cardinality/memory sanity (~250 B/customer model)
- [ ] Rollout: enable on sandbox for a pilot profile; A/B measurement of auth-rate uplift for sticky vs SR (the `STICKY_ROUTING` approach label + existing A/B intercept give the cohorts)

Related (pre-existing, tracked separately): `SR_SELECTION_VOLUME_COMMITMENT` shares the SRv3 scoring-gate gap that `STICKY_ROUTING` was given classifier entries for; and the merchant feature-toggle API has a lost-update race on its shared FeatureConf row (found via the sticky e2e suite, fix in progress).

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.