Result envelope¶
Public envelope contract:
status,verdict,findings,files_touched,remaining, andblockerscarry decisions, blockers, and remaining work. Transcript-onlydetailshold additional evidence and never hide required work or substitute for a public field.The bridge has two validation boundaries. The peer/model-to-harness result contains model-authored core defined by
schemas/envelope.schema.jsonplus bounded verbosedetails. Local harness validates that core, persistsdetailsin bounded transcript, strips them from harness-to-caller public envelope, adds observed metadata and workspace-relative transcript and incident-path references, then validates public result withschemas/harness-envelope.schema.json. Open the JSON file at anincidentpath before inspecting itsfault; public envelope does not inline that record.
Model-authored core¶
Every model response contains exactly
status,verdict,findings,files_touched,remaining, andblockers.statusis onlycomplete,partial, orblocked; every list contains strings; no telemetry, identity, path, or lifecycle field is model-authored.
Harness metadata¶
The harness owns final timeout and refusal outcomes, model and effective effort, an optional effort substitution record, cost and token counters,
duration_seconds,depth,run_id, incident and session references, transcript path, verb, and direction. Public envelope status may additionally betimeoutorrefused. Caller receives decision-critical fields and metadata; verbose detail remains opt-in through the referenced artifact.A timeout or a recursion refusal has no model core to merge. Harness constructs the required verdict and empty lists itself, places the concrete cause in
blockers, and validates the full result before returning it.Only a Codex child stopped by
output-limitmay have optional harness-ownedpartial_output: an unverified fragment of the last completeitem.completedagent message, limited to 4 KiB of UTF-8 without splitting a character. It is also stored in the incident; it is absent when no message was seen and for Claude children. Status remainsblocked, incident fault remainsoutput-limit, and findings remain empty. Label the fragment unverified and use it only to scope a split follow-up, never as findings or a verdict. Older results without this optional field remain valid; neither envelope schema has an integer version.
MCP inputs¶
MCP surface has three input shapes (
bridge_implement,bridge_advise, andbridge_review); all three names are advertised bytools/list.Each bridge MCP tool requires
taskand accepts optionalmodel,effort,depth,run_id,timeout_seconds, and caller-providedsupported_effortscapability data. Server binds every request to its host-provided launch workspace; model-supplied workspace, background, and session fields are rejected.schemas/mcp-tools.schema.jsondefines all four input shapes.