{
 "tool": "eclipse-aperture-mcp",
 "version": "0.1.0",
 "bench_date": "2026-10-25",
 "bench_version": "0.1.0",
 "environment": "local",
 "qualifier": "local",
 "verdict": "CERTIFIED(local)",
 "checks": [
  {
   "id": "A1",
   "name": "capability probe is the static fixture, no live calls",
   "verdict": "pass",
   "evidence": "capability_probe returns the shipped static declaration exactly: probe_type=static_declaration, live_calls_made=false, declared and effective modes identical to fixtures/capability.json (publishing PUBLISH_API, drafts DRAFT_API, reads READ_API, own_engagement OWN_ENGAGEMENT_API, community COMMUNITY_PREP), Graph API version carried as an unpinned [verify] flag \u2014 a dated declaration, honestly labeled, not a live probe result"
  },
  {
   "id": "A2",
   "name": "variant hash binds the preview pack",
   "verdict": "pass",
   "evidence": "the feed variant builds under mode PUBLISH_API with hash H; preview_pack's approval_binds carry exactly H (variant) and the canonical hash, and H's prefix is printed in the native preview the owner reads \u2014 what is reviewed is what is bound. Rebuilding the identical package reproduces H deterministically; a package with altered copy produces a different hash"
  },
  {
   "id": "A3",
   "name": "probe-failure downgrade propagates into variants",
   "verdict": "pass",
   "evidence": "a simulated probe failure downgrades the declaration exactly per the family rule (publishing/drafts -> PREP_PACK, own_engagement -> COMMUNITY_PREP, reads stay READ_API) \u2014 still with live_calls_made=false \u2014 and the downgrade propagates: a Story variant built afterwards carries mode PREP_PACK, not the declared PUBLISH_API. A downgrade never triggers a workaround"
  },
  {
   "id": "A4",
   "name": "receipt chain valid; tamper detected",
   "verdict": "pass",
   "evidence": "receipt_list reports chain_valid over 6 receipts (capability_probe + variant_build); the product verifier confirms it, and a deep copy with one altered probe 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"
  },
  {
   "id": "U2",
   "name": "schema valid",
   "verdict": "pass",
   "evidence": "tools/list returns exactly the 4 formalization tools \u2014 no publish/container/insights surface exists in v0.1 \u2014 each with inputSchema type object + properties + required"
  },
  {
   "id": "U3",
   "name": "no network surface (formalization build)",
   "verdict": "pass",
   "evidence": "server.py contains no network call sites \u2014 no urllib/socket/requests/http.client: the no-live-calls claim of the formalization build is structural, matching capability_probe's live_calls_made=false"
  },
  {
   "id": "U4",
   "name": "no secret leak",
   "verdict": "pass",
   "evidence": "no secret patterns in 8 tool outputs"
  },
  {
   "id": "U5",
   "name": "sane errors",
   "verdict": "pass",
   "evidence": "unknown surface -> error; package without canonical_id -> error (Aperture builds variants of canonical packages only); preview of an unbuilt variant -> error; malformed line survived (receipt_list answers); unknown method -> -32601"
  },
  {
   "id": "U6",
   "name": "process health",
   "verdict": "pass",
   "evidence": "initialize answered in 59 ms; ping ok"
  },
  {
   "id": "U7",
   "name": "audit completeness",
   "verdict": "pass",
   "evidence": "ledger covers the run across 6 receipts: both capability probes are on the record (status ok and the simulated failed, with its downgrade), variant builds receipted with their hashes; seq strictly increasing, chain valid"
  },
  {
   "id": "U8",
   "name": "bench isolation",
   "verdict": "pass",
   "evidence": "workspace product state byte-identical before/after bench"
  }
 ],
 "notes": [
  "Formalization scope: capability_probe returns a STATIC declaration fixture; NO live Instagram / Graph API verification was performed by this bench or exists in v0.1 \u2014 every mode row is [verify] against a dated Meta record before external reliance. The house's live Instagram route (the existing connector) is referenced by Aperture, not duplicated, and is out of scope here.",
  "Publish/container/insights tooling (ig_media_stage, ig_container_verify, ig_insights_read, ig_own_comment_queue) is roadmap only, not built; the surface exam (U2) confirms it is absent."
 ],
 "history": "append-only; prior runs retained in results/"
}