/* global React, HashBadge, AttestationStatePill, ReasonCodeChip, LatencyBudgetMeter, MerkleProofTree, TimelineAxis, ThresholdGateIndicator, PartyAttestationRow, Spark */ const { useState: useS, useMemo: useM } = React; /* ========================================================= FRAUD DECISION AUDIT CONSOLE — hero screen ========================================================= */ function FraudConsole() { const decisions = [ { id: "ATT-7F4A2C91", t: "14:22:07.384921", mcc: "5411", amt: "€82.40", outcome: "APPROVE", state: "finalized", model: "v4.2.1", lat: 2.14, codes: ["F00"], risk: 0.08 }, { id: "ATT-7F4A2C90", t: "14:22:07.312044", mcc: "7995", amt: "€1,240.00", outcome: "DECLINE", state: "finalized", model: "v4.2.1", lat: 3.41, codes: ["F14","F22"], risk: 0.91 }, { id: "ATT-7F4A2C8F", t: "14:22:07.294113", mcc: "5732", amt: "€340.10", outcome: "STEP_UP", state: "witnessed", model: "v4.2.1", lat: 2.88, codes: ["F07"], risk: 0.52 }, { id: "ATT-7F4A2C8E", t: "14:22:07.201770", mcc: "5411", amt: "€12.19", outcome: "APPROVE", state: "finalized", model: "v4.2.1", lat: 1.94, codes: [], risk: 0.04 }, { id: "ATT-7F4A2C8D", t: "14:22:07.140219", mcc: "6011", amt: "€500.00", outcome: "DECLINE", state: "finalized", model: "v4.2.1", lat: 2.63, codes: ["F02"], risk: 0.77 }, { id: "ATT-7F4A2C8C", t: "14:22:07.098001", mcc: "4829", amt: "€2,500.00", outcome: "STEP_UP", state: "signed", model: "v4.2.0", lat: 3.86, codes: ["F11","F07"], risk: 0.63 }, { id: "ATT-7F4A2C8B", t: "14:22:07.001220", mcc: "5812", amt: "€44.90", outcome: "APPROVE", state: "finalized", model: "v4.2.1", lat: 1.72, codes: [], risk: 0.02 }, { id: "ATT-7F4A2C8A", t: "14:22:06.982147", mcc: "5944", amt: "€180.00", outcome: "APPROVE", state: "finalized", model: "v4.2.1", lat: 2.05, codes: ["F00"], risk: 0.11 }, { id: "ATT-7F4A2C89", t: "14:22:06.870311", mcc: "5999", amt: "€8,200.00", outcome: "DECLINE", state: "failed", model: "v4.2.1", lat: 3.12, codes: ["F22","F14","F07"], risk: 0.96 }, { id: "ATT-7F4A2C88", t: "14:22:06.811400", mcc: "5411", amt: "€29.00", outcome: "APPROVE", state: "finalized", model: "v4.2.1", lat: 1.58, codes: [], risk: 0.06 }, ]; const [selected, setSelected] = useS(1); // the €1,240 decline — interesting const d = decisions[selected]; const rcMap = { F00: ["velocity", "low"], F02: ["device reputation", "high"], F07: ["geo mismatch", "med"], F11: ["merchant risk", "med"], F14: ["BIN risk + amount", "high"], F22: ["graph cluster", "high"], }; return (
{/* LEFT — decision timeline */}
decision stream
● live · 14:22:07 UTC
{decisions.map((x, i) => ( setSelected(i)}> ))}
timestamp outcome risk lat state
{x.t.slice(6)}
{x.outcome} {x.amt}
{x.codes.map(c => {c})}
3 ? "var(--ak-latency-warn)" : "var(--ak-fg-1)" }}>{x.lat.toFixed(2)}
{/* CENTER — decision detail + replay */}
{/* header */}
{d.id} capsule #884,219,304
{d.t} UTC Tokenized PAN BIN 4147·MCC {d.mcc} {d.amt}
{/* PCI-free banner */}
PCI_SCOPE = ∅ · no raw PAN · no CVV · no cardholder PII · only hashes + tokens attested by HSM signer
{/* replay: input → model → output */}
decision replay deterministic · model v4.2.1 · seed 0x88af
{/* input */}
velocity_24h 8.2σ
amount_z 3.1σ
geo_entropy 0.88
device_age 4d
graph_cluster C-772
mcc_bin_risk 0.71
version v4.2.1
score 0.91
threshold 0.80
explain gain Σ +0.42
DECLINE
{d.codes.map(c => )}
{/* latency */}
latency budget · 200ms card-auth windowp99 @ c=24
{/* RIGHT — Merkle proof + ancestry */}
attestation artifact
ancestry chain
{["feature.capsule", "model.capsule", "reason.capsule", "attestation.capsule"].map((k, i) => (
{String(i + 1).padStart(2, "0")} {k}
))}
applicable exports
); } function Chip({ label, active, count }) { return ( {label}{count && {count}} ); } function OutcomeDot({ kind }) { const c = kind === "APPROVE" ? "var(--ak-state-finalized-fg)" : kind === "DECLINE" ? "var(--ak-state-failed-fg)" : "var(--ak-state-signed-fg)"; return ; } function RiskBar({ v }) { const color = v > 0.8 ? "var(--ak-state-failed-fg)" : v > 0.5 ? "var(--ak-state-signed-fg)" : "var(--ak-state-finalized-fg)"; return (
{v.toFixed(2)}
); } function StateDot({ state }) { const map = { finalized: "var(--ak-state-finalized-fg)", witnessed: "var(--ak-state-witnessed-fg)", signed: "var(--ak-state-signed-fg)", failed: "var(--ak-state-failed-fg)" }; return ; } function ReplayCard({ title, sub, children }) { return (
{title} {sub}
{children}
); } function Arrow() { return (
); } function Dot2() { return ·; } function StatBox({ label, value, sub, tone = "ok" }) { const color = { ok: "var(--ak-latency-ok)", warn: "var(--ak-latency-warn)", hot: "var(--ak-latency-hot)", over: "var(--ak-latency-over)" }[tone]; return (
{label}
{value}
{sub}
); } function ExportRow({ name, bytes, status }) { return (
{name} {bytes} {status}
); } Object.assign(window, { FraudConsole });