{
 "tool": "eclipse-herald-mcp",
 "version": "0.1.0",
 "bench_date": "2026-10-25",
 "bench_version": "0.1.0",
 "environment": "local",
 "qualifier": "local",
 "verdict": "CERTIFIED(local)",
 "checks": [
  {
   "id": "H1",
   "name": "card sign/verify round-trip",
   "verdict": "pass",
   "evidence": "card_sign(argus-research) -> card_verify valid=true, schema_problems=[], hash bc94282518f939a5"
  },
  {
   "id": "H2",
   "name": "tampered card rejected (body + skill)",
   "verdict": "pass",
   "evidence": "body mutation -> valid=false (signature verification failed); skill-id mutation -> valid=false (signature verification failed)"
  },
  {
   "id": "H3",
   "name": "unsigned card rejected",
   "verdict": "pass",
   "evidence": "unsigned card -> valid=false, reason 'card carries no signature'"
  },
  {
   "id": "H11",
   "name": "JWKS is public-only; signing key custody 600",
   "verdict": "pass",
   "evidence": "product keys/jwks.json carries public params only (no d/p/q/dp/dq/qi); signing-key.json mode 0o600 (product file and bench-generated file alike)"
  },
  {
   "id": "H10",
   "name": "happy-path delegation settles exactly on delivery",
   "verdict": "pass",
   "evidence": "delegate research-stub cap 5.00 -> delivered, payment 2.50 TEST-CREDITS released_on_delivery, receipt seq 2"
  },
  {
   "id": "H4",
   "name": "expired mandate refused",
   "verdict": "pass",
   "evidence": "ttl_seconds=-60 -> refused: mandate expired"
  },
  {
   "id": "H5",
   "name": "over-budget delivery rejected, no payment",
   "verdict": "pass",
   "evidence": "cost 2.50 > cap 1.00 -> rejected_over_budget, payment=null; ledger gained delivery_rejected_over_budget and NO delivery_receipt"
  },
  {
   "id": "H6",
   "name": "no artifact -> no payment",
   "verdict": "pass",
   "evidence": "silent agent -> no_delivery, payment=null; ledger event delivery_failed_no_payment (receipt-on-delivery rule)"
  },
  {
   "id": "H7",
   "name": "certify-check scope mismatch refused",
   "verdict": "pass",
   "evidence": "argus card (scope research-brief) + skill certification-run -> refused: certify-check failed: certification scope 'research-brief' does not cover requested skill 'certification-run'"
  },
  {
   "id": "H8",
   "name": "injected instructions quarantined, never obeyed",
   "verdict": "pass",
   "evidence": "injecting agent -> delivered as DATA; 3 instruction lines quarantined; benign finding kept; exactly one settlement of 1000000 micro (the stub's real 1.00) \u2014 injected 9999 appears in no payment"
  },
  {
   "id": "H9",
   "name": "receipt hash-chain valid; tamper detected",
   "verdict": "pass",
   "evidence": "receipt_list chain valid over 10 entries; tampered copy -> product ledger_verify valid=false at seq 10 (hash mismatch)"
  },
  {
   "id": "U1",
   "name": "auth enforced",
   "verdict": "na",
   "evidence": "local stdio transport: no credential layer exists to test; process ownership is the boundary"
  },
  {
   "id": "U2",
   "name": "schema valid",
   "verdict": "pass",
   "evidence": "tools/list returns exactly the 5 tools, each with inputSchema type object + properties + required"
  },
  {
   "id": "U3",
   "name": "no network surface (local-only build)",
   "verdict": "pass",
   "evidence": "no network call sites in any product module (server/gateway/cards/jwscore/keys/cli scanned for urlopen/urllib/socket/requests/http.*) \u2014 local-only claim is structural"
  },
  {
   "id": "U4",
   "name": "no secret leak",
   "verdict": "pass",
   "evidence": "no secret patterns and no RSA private-key material in 19 tool outputs"
  },
  {
   "id": "U5",
   "name": "sane errors",
   "verdict": "pass",
   "evidence": "unknown tool -> error; missing card file -> error; malformed line survived (receipt_list answers); unknown method -> -32601"
  },
  {
   "id": "U6",
   "name": "process health",
   "verdict": "pass",
   "evidence": "initialize answered in 81 ms; ping ok"
  },
  {
   "id": "U7",
   "name": "audit completeness",
   "verdict": "pass",
   "evidence": "ledger covers run in order ['mandate_issued', 'delivery_receipt', 'delivery_rejected_over_budget', 'delivery_failed_no_payment', 'delegation_refused']; 10 entries, seq strictly increasing, chain valid"
  },
  {
   "id": "U8",
   "name": "bench isolation",
   "verdict": "pass",
   "evidence": "workspace product state byte-identical before/after bench"
  }
 ],
 "notes": [
  "Local only: bench signing key, cards and ledger live in /tmp; delegation targets are the product's local stub agents (echo, research-stub, silent, injecting). No network, no live A2A endpoints, no external counterparties (H2+ scope, untested).",
  "Settlement is zero-value TEST-CREDITS by design in v0.1."
 ],
 "history": "append-only; prior runs retained in results/"
}