{
 "round": "two-frontiers-cove-r1",
 "gate": "G-TOOLS",
 "verdict": "PASS",
 "detail": "the tool channel is closed on every arm, read off each call's own record",
 "started_utc": "2026-09-06T13:43:59Z",
 "finished_utc": "2026-09-06T13:43:59Z",
 "evidence": {
  "calls_of_its_own": 0,
  "why_no_call": "the CLI transport asserts the whole G-TOOLS set on EVERY call and stops the arm on a hit, and an HTTP transport's reading is about the body it sent — so §5's gate budget spends nothing here and this gate reads the G-EFFORT records.",
  "hooks": "CLOSED BY A LAUNCH FLAG AND RECEIPTED BY NOTHING: the vendor's init record exposes no hooks key, so this is stated on the row rather than inferred from the other assertions.",
  "session_persistence": "closed by the same launch flag; the sealed child runs in an empty scratch cwd, and the seal is a CHANNEL seal rather than a filesystem one — the child inherits a real home directory because the vendor CLI's only credential lives there.",
  "problems": []
 },
 "arms": {
  "cli-claude-fable-5-1": {
   "verdict": "PASS",
   "detail": "init.model; init.tools == []; init.mcp_servers == []; init.slash_commands == []; init.apiKeySource == 'none' (the OAuth/subscription value); no content block of ANY tool-shaped type, anywhere in the stream (census); no unknown content block type (fail-closed); result.usage.server_tool_use counters all zero; result.permission_denials == []; the scratch cwd is still empty after the call",
   "transport_class": "agent-harness-cli",
   "law_record": {
    "seal": "agent-harness-cli",
    "argv_carries_the_prompt": false,
    "prompt_channel": "stdin (bytes)",
    "prompt_bytes": 75,
    "system_bytes": 135,
    "system_bytes_limit": 16384,
    "argv_element_wall_bytes": 131072,
    "system_channel": "argv (--system-prompt). Refused over 16,384 bytes: a single argv element dies at 131,072 on this box, measured, and execve raises before a process exists.",
    "effort": "high",
    "effort_channel": "argv only (--effort); no CLAUDE_* env var reaches the child",
    "sampler": "not settable on this transport (disclosed, never approximated)",
    "output_cap": "none settable",
    "g_id": {
     "asserted": [
      "no `fallback` content block in the stream",
      "no `system/model_refusal_fallback` record in the stream",
      "every assistant `message.model` is the arm's registered model"
     ],
     "registered_model": "claude-fable-5-1",
     "served_by_model": [
      "claude-fable-5-1"
     ],
     "unregistered_models": [],
     "fallback": null,
     "fallback_blocks": [],
     "model_refusal_fallbacks": [],
     "findings": [],
     "verdict": "PASS",
     "why": "identity is receipted per CALL, and a failed reading files THIS cell without stopping the arm (PREREG §3, A7): one swapped cell does not un-vouch its neighbours."
    },
    "g_tools": {
     "asserted": [
      "init.model",
      "init.tools == []",
      "init.mcp_servers == []",
      "init.slash_commands == []",
      "init.apiKeySource == 'none' (the OAuth/subscription value)",
      "no content block of ANY tool-shaped type, anywhere in the stream (census)",
      "no unknown content block type (fail-closed)",
      "result.usage.server_tool_use counters all zero",
      "result.permission_denials == []",
      "the scratch cwd is still empty after the call"
     ],
     "breaches": [],
     "unverifiable": [],
     "failures": [],
     "verdict": "PASS"
    },
    "stream": {
     "records": 7,
     "unparsed_lines": 0,
     "block_type_census": {
      "thinking": 1,
      "text": 1
     },
     "known_block_types": [
      "text",
      "thinking",
      "redacted_thinking",
      "fallback"
     ],
     "tool_shaped_block_types": [],
     "unknown_block_types": [],
     "string_content_records": 0,
     "unshaped_blocks": 0,
     "assistant_model_census": {
      "claude-fable-5-1": 2
     },
     "fallback_blocks": 0,
     "model_refusal_fallback_records": 0,
     "tool_use_blocks": 0,
     "server_tool_use": {
      "web_search_requests": 0,
      "web_fetch_requests": 0
     },
     "result_subtype": "success",
     "result_is_error": false,
     "stop_reason": "end_turn",
     "num_turns": 1,
     "api_key_source": "none",
     "rate_limit_status": "allowed_warning",
     "rate_limit_status_recognised": true,
     "rate_limit_statuses_known": [
      "allowed",
      "allowed_warning",
      "rejected"
     ]
    }
   }
  },
  "openai-gpt-6-astra": {
   "verdict": "PASS",
   "detail": "no tool field of any kind was on the body sent, read off the body rather than remembered",
   "transport_class": "openai-api",
   "law_record": {
    "think": "n/a (no such field on this API; the model's own default posture governs)",
    "response_format_sent": false,
    "schema_mode": "prompted",
    "num_ctx": "server",
    "sampler": "server defaults (no sampler field is sent; read off the body sent)",
    "sampler_fields_sent": [],
    "tool_fields_sent": [],
    "reasoning_effort": "high",
    "reasoning_effort_sent": true,
    "stream": false,
    "endpoint": "/v1/chat/completions",
    "deltas": {
     "num_ctx": "server",
     "sampler": "server defaults (no sampler field is sent; read off the body sent)",
     "sampler_fields_sent": [],
     "reasoning_effort": "high",
     "reasoning_effort_note": "the vendor's own effort ladder, pinned and recorded -- not a sampler, and not an equivalence with any other vendor's ladder. PLAN §3 registers it on both hosted arms.",
     "latency_class": "client-wall only: this endpoint reports no eval_duration, so there is no decomposition to print beside the wall clock, and tok_s_eval is EMPTY -- never zero."
    }
   }
  },
  "cloud-glm-5-3": {
   "verdict": "PASS",
   "detail": "no tool field of any kind was on the body sent, read off the body rather than remembered",
   "transport_class": "ollama-cloud",
   "law_record": {
    "think": false,
    "format_sent": false,
    "keep_alive_sent": false,
    "num_ctx": "server",
    "stream": false,
    "options": {},
    "dropped_by_cloud_law": {},
    "schema_mode": "prompted",
    "tool_fields_sent": [],
    "asymmetry_note": "the shelf drops `format` and `num_ctx` (cloud law 2), so this arm answers in prompted mode while this leg's local arm answers under an ENFORCED schema. A registered delta on the row, not a footnote."
   }
  },
  "local-gemma4-26b": {
   "verdict": "PASS",
   "detail": "no tool field of any kind was on the body sent, read off the body rather than remembered",
   "transport_class": "local-ollama",
   "law_record": {
    "seat": "local-ollama",
    "think": false,
    "format_sent": true,
    "schema_mode": "enforced",
    "sampler": "num_ctx=32768",
    "options_sent": {
     "num_ctx": 32768
    },
    "tool_fields_sent": [],
    "num_ctx": 32768,
    "output_cap": null,
    "output_cap_note": "the local arm is capped and both hosted arms are not; PLAN §3 registers that asymmetry as its own delta, and G6b prints 'n/a - no cap settable' for the hosted rows.",
    "stream": false,
    "endpoint": "/api/chat",
    "production_port": true,
    "production_port_amendment": "A2",
    "latency_published": false,
    "latency_note": "EMPTY under amendment A2: a timing taken off a contended production instance is not a serving figure, and this round publishes no latency it cannot stand behind.",
    "credential": "none: this transport has no key channel at all",
    "format_value": "json",
    "schema_registered": "json",
    "schema_authority": "COVE-A1",
    "schema_law": "the local arm answers under the schema its ROSTER registered (D-20260906-30 R3: the open call's exact house posture, format:'json' ACTUALLY ENFORCED). This is a CONTRACT ADVANTAGE over the three prompted-mode arms of this leg -- August disclosed it and this leg re-discloses it verbatim. two-frontiers-r1's own law 6 refuses a format field outright, for its own round's reason; that file is frozen by its freeze index and is not edited from here.",
    "posture_registered": {
     "think": false,
     "format": "json",
     "num_ctx": 32768
    },
    "house_law": "harness/cove/local_arm.py -- this leg's own local law: two-frontiers-r1's law 6 refuses a format field, and its file is frozen by that round's freeze index."
   }
  }
 },
 "records": [],
 "withheld": {
  "rule": "a receipt publishes in the kit, so these fields are removed here rather than at kit time — and named, because a field quietly absent from a receipt is indistinguishable from a gate that never read it."
 },
 "note": "written by harness/cove/gates_cove.py. Every generation call rides the same send() the scored run uses; a gate that hand-rolled its own call would receipt a field the run never sent.",
 "supersedes": {
  "earlier_runs": [
   {
    "receipt": "g-tools-cove.json",
    "verdict": "PASS",
    "finished_utc": "2026-09-06T13:30:58Z",
    "detail": "the tool channel is closed on every arm, read off each call's own record"
   },
   {
    "receipt": "g-tools-cove.2.json",
    "verdict": "FAIL",
    "finished_utc": "2026-09-06T13:41:39Z",
    "detail": "cloud-glm-5-3: the ollama-cloud law record carries no `tool_fields_sent` key, so this gate cann"
   },
   {
    "receipt": "g-tools-cove.3.json",
    "verdict": "PASS",
    "finished_utc": "2026-09-06T13:43:01Z",
    "detail": "the tool channel is closed on every arm, read off each call's own record"
   }
  ],
  "rule": "this gate ran before and its earlier receipt(s) are KEPT in place. This file is the later reading; an earlier FAIL is not erased by it, and a reader can see both. The freeze index pins whichever receipt is the gate of record."
 }
}
