{
 "tool": "eclipse-gig-core-mcp",
 "version": "0.1.0",
 "bench_date": "2026-10-25",
 "bench_version": "0.1.0",
 "environment": "local",
 "qualifier": "local",
 "verdict": "CERTIFIED(local)",
 "checks": [
  {
   "id": "G1",
   "name": "exact-address brief refused (ZIP-tier only)",
   "verdict": "pass",
   "evidence": "a brief carrying exact-address precision is refused with a LOCATION_PRECISION error naming the ZIP-tier rule, and no brief record is stored \u2014 the exact address can only ever be released inside a platform's own post-hire flow"
  },
  {
   "id": "G2",
   "name": "approval binds the exact brief hash",
   "verdict": "pass",
   "evidence": "approval with a wrong hash is refused ('approval binds the exact brief hash'); approval with the brief's exact SHA-256 content hash lands and brief_read semantics report approval_valid=true"
  },
  {
   "id": "G3",
   "name": "post-approval edit invalidates approval",
   "verdict": "pass",
   "evidence": "editing the approved brief's ceiling creates version 2, reports approval_invalidated=true, and the brief returns to draft with approval_valid=false \u2014 approval binds hashes, and the hash moved"
  },
  {
   "id": "G4",
   "name": "UNEXPOSED-fee quote never hireable under a ceiling",
   "verdict": "pass",
   "evidence": "a quote whose fees the platform does not expose carries fees_status UNEXPOSED and NO all-in total at all; even against a 100,000 ceiling the ceiling test returns hireable_under_ceiling=false \u2014 there is no number to compare, so there is no hire"
  },
  {
   "id": "G5",
   "name": "owner exception: all-in computed, status stays UNEXPOSED",
   "verdict": "pass",
   "evidence": "under a written owner exception the all-in is computed from the owner-supplied itemization (100 face + 15 buyer fee = 115.00) and the ceiling test can pass \u2014 but fees_status STAYS 'UNEXPOSED', because the platform never exposed them; the exception lifts the bar, it does not rewrite the platform's record"
  },
  {
   "id": "G6",
   "name": "mandate ALLOW without person token is not hireable",
   "verdict": "pass",
   "evidence": "with an approved brief, an exposed all-in of 200.00 under the 250 brief ceiling and the 500 mandate cap, hire_check WITHOUT the person token returns MANDATE_ALLOW_PERSON_PENDING with hireable=false and zero denial reasons \u2014 the money is allowed, the person is not yet chosen; adding the owner token confirm-person-<quote_id> flips the same evaluation to ALLOW / hireable=true"
  },
  {
   "id": "G7",
   "name": "platform-done vs owner-not_done opens an exception; states never merge",
   "verdict": "pass",
   "evidence": "the platform's state is stored verbatim in its own field ('completed') while the owner's scope check keeps counters wiped = not_done; the disagreement opens verification_status=exception with platform_owner_mismatch=true \u2014 the two states coexist in the record and are never merged or smoothed"
  },
  {
   "id": "G8",
   "name": "review draft carries no quality claims the record lacks",
   "verdict": "pass",
   "evidence": "the verification record carries no quality notes, timeliness, or communication \u2014 and the draft contains zero of the product's 8 quality-claim words and no Quality line; it states only what was hired and what was verified (1 of 2 scope items done) plus the exception status"
  },
  {
   "id": "G9",
   "name": "leverage language refused at draft time",
   "verdict": "pass",
   "evidence": "a verification record whose notes carry leverage language ('refund or I will post...') makes review_draft refuse outright, naming the prohibited leverage pattern \u2014 the draft is never produced, so no edit of the wording can launder it through"
  },
  {
   "id": "G10",
   "name": "capability denylist: exactly the 10 G0 tools",
   "verdict": "pass",
   "evidence": "tools/list is exactly the 10 G0 tools; direct calls to hire_execute and session_login are refused as 'unknown or G0-forbidden tool' \u2014 no submission, hiring, payment, review, session, or scraping surface exists in the core, not merely gated"
  },
  {
   "id": "G11",
   "name": "receipt chain valid; tamper detected",
   "verdict": "pass",
   "evidence": "receipt_list reports chain_valid over 14 receipts (brief / quote / hire_check / completion / review events); the product verifier confirms it, and a deep copy with one altered receipt detail 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 10 G0 tools, each with inputSchema type object + properties + required"
  },
  {
   "id": "U3",
   "name": "no network surface (local-only build)",
   "verdict": "pass",
   "evidence": "server.py contains no network call sites \u2014 no urllib/socket/requests/http.*: the no-live-platform G0 claim is structural, not configured"
  },
  {
   "id": "U4",
   "name": "no secret leak",
   "verdict": "pass",
   "evidence": "no secret patterns in 21 tool outputs"
  },
  {
   "id": "U5",
   "name": "sane errors",
   "verdict": "pass",
   "evidence": "unknown brief/quote/verification -> named errors; malformed line survived (receipt_list answers); unknown method -> -32601"
  },
  {
   "id": "U6",
   "name": "process health",
   "verdict": "pass",
   "evidence": "initialize answered in 61 ms; ping ok"
  },
  {
   "id": "U7",
   "name": "audit completeness",
   "verdict": "pass",
   "evidence": "ledger covers the run in order (['brief_created', 'brief_approved', 'brief_version_created', 'quote_normalized', 'hire_check', 'completion_verified', 'review_drafted'] present as a subsequence); 14 receipts, seq strictly increasing, chain valid; both hire_check decisions (PERSON_PENDING and ALLOW) are receipted \u2014 the gate's ALLOWs are audited, not just its DENYs"
  },
  {
   "id": "U8",
   "name": "bench isolation",
   "verdict": "pass",
   "evidence": "workspace product state byte-identical before/after bench"
  }
 ],
 "notes": [
  "Local scope: G0 core evaluates and records only \u2014 no live platform call exists in the product and none was made; briefs, quotes, mandates and verifications are bench-local records (U3 verifies the no-network claim structurally).",
  "The hire gate executes nothing in G0: ALLOW means the mandate evaluation passed, and v1 person-selection still requires the owner's confirm token (G6 probes exactly that boundary)."
 ],
 "history": "append-only; prior runs retained in results/"
}