{
  "ranAt": "2026-10-29",
  "passed": 12,
  "of": 12,
  "rows": [
    {
      "name": "No proof of work",
      "attack": "Ask without solving the challenge",
      "outcome": "Refused with a fresh challenge. The model is never called.",
      "pass": true
    },
    {
      "name": "Borrowed proof",
      "attack": "Reuse a proof issued to another visitor",
      "outcome": "Refused.",
      "pass": true
    },
    {
      "name": "Forged difficulty",
      "attack": "Edit the challenge to make it trivial",
      "outcome": "Refused: challenges are signed.",
      "pass": true
    },
    {
      "name": "Proof replay",
      "attack": "Reuse one solved proof again and again",
      "outcome": "It covers one conversation, then it's refused.",
      "pass": true
    },
    {
      "name": "Prompt injection",
      "attack": "A classic instruction override",
      "outcome": "Stopped before the model, with an incident number.",
      "pass": true
    },
    {
      "name": "Forged history",
      "attack": "Slip a fake assistant turn into the conversation",
      "outcome": "Rejected.",
      "pass": true
    },
    {
      "name": "Forged tool result",
      "attack": "Answer the agent's tool call with invented data",
      "outcome": "Ignored: the server reruns the tool and the model gets the real result.",
      "pass": true
    },
    {
      "name": "Flood from one address",
      "attack": "Questions as fast as possible from one address",
      "outcome": "A few are answered, then it's told to wait.",
      "pass": true
    },
    {
      "name": "Address rotation",
      "attack": "Many addresses from the same network",
      "outcome": "The whole network waits once its budget is spent.",
      "pass": true
    },
    {
      "name": "A botnet",
      "attack": "Many networks, each solving its own proof",
      "outcome": "Every request pays for its own proof, and the spend ceiling still holds.",
      "pass": true
    },
    {
      "name": "Run up the bill",
      "attack": "Expensive questions from fresh networks",
      "outcome": "Answers stop at the daily ceiling and the page falls back to built-in answers.",
      "pass": true
    },
    {
      "name": "Scanner probe",
      "attack": "Probe for a secrets file, then ask a question",
      "outcome": "Not found, with an incident number, and harder proof of work for that visitor.",
      "pass": true
    }
  ]
}
