{
 "tool": "eclipse-zephyr-mcp",
 "version": "0.1.0",
 "bench_date": "2026-10-25",
 "bench_version": "0.1.0",
 "environment": "live-read",
 "qualifier": "live-read",
 "verdict": "CERTIFIED(live-read)",
 "checks": [
  {
   "id": "Z1",
   "name": "no write surface exists",
   "verdict": "pass",
   "evidence": "tools/list is exactly the 5 read tools (profile_read, actor_search, author_feed_read, post_thread_read, receipt_list); direct calls to post_create and to the roadmap name bsky_record_stage both return -32602 unknown tool \u2014 the write surface does not exist in v0.1, not merely gated"
  },
  {
   "id": "Z2",
   "name": "fixture normalization verified field-by-field",
   "verdict": "pass",
   "evidence": "offline normalization verified against the fixtures themselves (one real captured bsky.app profile + labeled synthetic feed/search): DID/handle/display name and follower/post counts map exactly, feed posts carry text + protocol counts + author from the raw records, every figure names its source endpoint, and the three reads produced three chained receipts \u2014 no view metric is invented anywhere"
  },
  {
   "id": "Z3",
   "name": "live public read of a named account (receipted)",
   "verdict": "pass",
   "evidence": "live public read under bench drive: profile_read for bsky.app returned the account's normalized profile (handle bsky.app, DID did:plc:z72i7hdynmk6r22z27h6tvur, 35382888 followers) with source endpoint named, and the read stands in the ledger as a status=ok receipt \u2014 scope for this run is (live-read)"
  },
  {
   "id": "Z4",
   "name": "failed read receipted as error",
   "verdict": "pass",
   "evidence": "a read for a nonexistent handle fails as a tool error AND is receipted: the ledger carries a profile_read receipt with status=error, the bogus subject, and the named failure (live read failed after retries: HTTP 400) \u2014 failures are audited with the same chain as successes"
  },
  {
   "id": "Z5",
   "name": "receipt chain valid; tamper detected",
   "verdict": "pass",
   "evidence": "receipt_list reports chain_valid over 2 receipts; the product verifier confirms it, and a deep copy with one altered receipt status verifies false"
  },
  {
   "id": "U1",
   "name": "auth enforced",
   "verdict": "na",
   "evidence": "local stdio transport: no credential layer exists to test; process ownership is the boundary (the public API reads themselves are unauthenticated by design \u2014 public data only)"
  },
  {
   "id": "U2",
   "name": "schema valid",
   "verdict": "pass",
   "evidence": "tools/list returns exactly the 5 read tools, each with inputSchema type object + properties + required"
  },
  {
   "id": "U3",
   "name": "network discipline: one sanctioned public host",
   "verdict": "pass",
   "evidence": "server.py names exactly one remote host \u2014 public.api.bsky.app (the AT Protocol public API) \u2014 and carries the rate discipline in code: a minimum interval between live calls and a per-process call budget; no other endpoint, and no authenticated surface, exists in the build"
  },
  {
   "id": "U4",
   "name": "no secret leak",
   "verdict": "pass",
   "evidence": "no secret patterns in 5 tool outputs"
  },
  {
   "id": "U5",
   "name": "sane errors",
   "verdict": "pass",
   "evidence": "unknown tool -> -32602; unknown method -> -32601; a read missing its required actor -> protocol error, not a crash; malformed line survived (receipt_list answers)"
  },
  {
   "id": "U6",
   "name": "process health",
   "verdict": "pass",
   "evidence": "initialize answered in 131 ms; ping ok"
  },
  {
   "id": "U7",
   "name": "audit completeness: every read receipted",
   "verdict": "pass",
   "evidence": "every MCP-lane read attempt is in the ledger: 2 profile_read calls produced exactly 2 profile_read receipts (statuses ['ok', 'error'] \u2014 the failure is receipted, not just the success); seq strictly increasing, chain valid"
  },
  {
   "id": "U8",
   "name": "bench isolation",
   "verdict": "pass",
   "evidence": "workspace product state byte-identical before/after bench"
  }
 ],
 "notes": [
  "Posting / record staging is not built (owner account is a Wave-2 gate) and COMMUNITY_API_PILOT is not enabled; the surface exam (Z1/U2) confirms no write tool exists.",
  "Live-read scope: profile_read for the named public account bsky.app succeeded against the AT Protocol public API (public.api.bsky.app, no auth) under bench drive and was receipted; all other tools were probed offline or by surface enumeration."
 ],
 "history": "append-only; prior runs retained in results/"
}