← PRODUCT
PRODUCT · PROVE

GateReplaythe decision, reproduced

Re-run any stored decision under its recorded policy — or a candidate one — without re-querying a provider.

On this page

What it does

GateReplay re-runs the pure policy evaluator over the stored signals, coverage and receipt inputs of a past screening and returns the original decision, the replayed one, and whether they match. Pass a different policy version to ask what a stricter or looser policy would have decided on the same evidence.

Because the policy engine is a pure function of stored inputs, the answer is deterministic. Providers are never re-queried — their answers change, and that would prove nothing about the day you decided.

Why a broker needs it

"Which policy was in force on 12 March, and what did it conclude from what you knew then?" has to have one answer. Replay gives it in the same terms the receipt recorded, and makes policy changes safe: the what-if that GateBacktest runs over months of history is this call, repeated.

How it works

POST /api/v1/replay with { screeningId, policyVersion? }. Built-in rule sets are versioned and frozen so old decisions stay reproducible. Receipts issued before replay support report inputs.completeness: "partial" rather than guessing missing inputs. The console offers the same replay on every screening.

What it does not do

Replay reproduces the policy step only. It does not re-verify the transaction on-chain, re-read issuer contracts or re-screen against today's lists — for that there is a fresh screening, and GateMonitor already re-checks listings. A replay cannot add inputs that were not recorded at the time.

API

POST /api/v1/replay
{ "screeningId": "…", "policyVersion": "tenant-v3" }   // policyVersion optional
→ {
  "original":   { "decision": "REVIEW", "policyVersion": "tenant-v2", "firedRuleIds": [ "…" ], "decidedAt": "…" },
  "replayed":   { "decision": "BLOCK_PENDING_MLRO", "policyVersion": "tenant-v3", "firedRuleIds": [ "…" ] },
  "reproduced": false, "mode": "what_if", "policySource": "requested_version",
  "inputs": { "completeness": "full" | "partial", … }, "receiptSigned": true
}

Full reference: /docs#replay · OpenAPI 3.1

Try the sandboxRead the API docsRequest early access