{
 "tool": "eclipse-connect-mcp",
 "version": "0.1.0",
 "bench_date": "2026-10-25",
 "bench_version": "0.1.0",
 "environment": "dogfood-facade",
 "qualifier": "dogfood-facade",
 "verdict": "CERTIFIED(dogfood-facade)",
 "checks": [
  {
   "id": "C1",
   "name": "connect_account fully offline",
   "verdict": "pass",
   "evidence": "connect_account returns the authorize URL with zero stub-relay calls logged"
  },
  {
   "id": "C2",
   "name": "public-without-approval refused before network (upload + publish)",
   "verdict": "pass",
   "evidence": "upload public (flag absent), upload public (flag false), publish public (flag absent) all refused with the review-first guard and ZERO stub-relay calls"
  },
  {
   "id": "C3",
   "name": "grant_status verbatim: facade adds nothing to relay state",
   "verdict": "pass",
   "evidence": "grant_status returns the canned relay body deep-equal (incl. bench_marker) via exactly one GET /status \u2014 facade added, dropped, and renamed nothing"
  },
  {
   "id": "C4",
   "name": "grant_status honesty: revoked state passed through, not reinterpreted",
   "verdict": "pass",
   "evidence": "a relay body with state='revoked' is returned verbatim as revoked \u2014 the facade does not soften, cache, or reinterpret relay state it cannot see beyond the response"
  },
  {
   "id": "C5",
   "name": "missing file / missing title / bad privacy refused before network",
   "verdict": "pass",
   "evidence": "missing file, missing title, and privacyStatus outside {unlisted, public} all refused locally with zero stub-relay calls"
  },
  {
   "id": "C6",
   "name": "upload validation + multipart mapping via stub relay",
   "verdict": "pass",
   "evidence": "unlisted-by-default upload reaches stub relay once as multipart carrying title, privacyStatus=unlisted, tags and the exact video bytes; canned response mapped through"
  },
  {
   "id": "C7",
   "name": "publish with approval maps through; revoke is explicit",
   "verdict": "pass",
   "evidence": "publish with explicit approval sends exactly {video_id, privacyStatus: public, public_approved: true} to /publish; revoke_grant fires only when invoked and maps {revoked: true} through"
  },
  {
   "id": "C8",
   "name": "relay HTTP errors surface verbatim as tool errors",
   "verdict": "pass",
   "evidence": "stub relay HTTP 503 body surfaces verbatim in the tool error ('Eclipse Connect relay HTTP 503: {\"error\": \"relay_down_bench\"}')"
  },
  {
   "id": "U1",
   "name": "auth enforced",
   "verdict": "na",
   "evidence": "facade holds no credential: the agent key is attached by the vault surrogate inside send(), which this bench stubs; relay-side auth enforcement is covered by the relay's own CERTIFIED(dogfood) card, not re-tested here"
  },
  {
   "id": "U2",
   "name": "schema valid",
   "verdict": "pass",
   "evidence": "tools/list returns exactly the 5 facade tools with object schemas; upload requires [path, title], publish requires [video_id], privacyStatus enum is [unlisted, public]"
  },
  {
   "id": "U3",
   "name": "single network seam; no live calls under stub",
   "verdict": "pass",
   "evidence": "exactly one network execution site in server.py (build_opener inside send(), the stubbed seam); every relay-bound bench call is accounted for in the stub log \u2014 no live YouTube/Google/relay call occurred"
  },
  {
   "id": "U4",
   "name": "no secret leak",
   "verdict": "pass",
   "evidence": "no secret patterns in 13 tool outputs (facade never echoes an agent key; canned bodies carry none)"
  },
  {
   "id": "U5",
   "name": "sane errors",
   "verdict": "pass",
   "evidence": "unknown tool -> error; publish without video_id -> error; unknown method -> -32601"
  },
  {
   "id": "U6",
   "name": "process health",
   "verdict": "pass",
   "evidence": "initialize answered in 77 ms; ping ok"
  },
  {
   "id": "U8",
   "name": "bench isolation",
   "verdict": "pass",
   "evidence": "workspace product state byte-identical before/after bench"
  }
 ],
 "notes": [
  "Facade only: the Eclipse Connect RELAY's CERTIFIED(dogfood) verdict (suites/connect.py, eclipse-connect card) is a different subject and is neither re-tested nor inherited here.",
  "server.send is stubbed by the bench wrapper (the product's documented single network seam); no live YouTube/Google call, no vault access, no real relay request occurs in this bench."
 ],
 "history": "append-only; prior runs retained in results/"
}