// Resolution loop — the newest capability (resolution epic T3–T6 + SLA): a held // payout gets an operator decision, and the processor is told the outcome over a // signed callback, on a clock. Nothing here is aspirational — POST /resolve, the // outbox worker and the SLA breach detector are all live in production (the // outbound send itself is enabled at cutover). function Resolution() { const steps = [ { n: '01', title: 'Hold', body: 'A priority-1 payout is held in the operator queue with its causes listed and a deadline attached.', tag: 'priority + SLA' }, { n: '02', title: 'Decide', body: 'One operator action: release the payout or block it. Sanctions and blocklist holds cannot be released from the console at all.', tag: 'human decision' }, { n: '03', title: 'Callback', body: 'Your platform is told the outcome over an HMAC-signed callback, retried with backoff for up to 24 hours — and if it still cannot land, an operator is alerted.', tag: 'signed · retried' }, { n: '04', title: 'Audit', body: 'The decision, who made it, when, and why — recorded against the original verdict, which is never rewritten.', tag: 'immutable trail' }, ]; return (
04 · RESOLUTION

A held payout
is not a dead end.

Flagging is the easy half. The hard half is closing the loop — who decides, how fast, and how your platform finds out. Every held payout carries a deadline, and every decision travels back to you signed.

{steps.map((s) => (
→ STEP {s.n}

{s.title}

{s.body}

{s.tag}
))}
Every hold gets a deadline — 4 hours for priority-1, 48 for ordinary review. An overdue priority-1 raises a flag for the operator; nothing is ever auto-released.
); }