diff --git a/contract/testdata/taxonomy/gateway-receipt-v3.json b/contract/testdata/taxonomy/gateway-receipt-v3.json index b6807230..80b080f0 100644 --- a/contract/testdata/taxonomy/gateway-receipt-v3.json +++ b/contract/testdata/taxonomy/gateway-receipt-v3.json @@ -24,6 +24,7 @@ {"name": "action-is-not-acquisition", "change": "action"}, {"name": "unsafe-integer", "change": "number"}, {"name": "duplicate-member", "change": "duplicate"}, - {"name": "oversized-envelope", "change": "oversize"} + {"name": "oversized-envelope", "change": "oversize"}, + {"name": "unsigned-salts-member", "change": "salts"} ] } diff --git a/contract/vectors/tool-result/receipt-quarantine.json b/contract/vectors/tool-result/receipt-quarantine.json new file mode 100644 index 00000000..cabf0e1a --- /dev/null +++ b/contract/vectors/tool-result/receipt-quarantine.json @@ -0,0 +1,294 @@ +{ + "description": "An external read whose receipt does not verify is withheld, and nothing of its result is kept where a context reader, a later request or a Plan step could reach it (agent#242; the amendment to ADR-0027). Written by hand. Each case makes one call of a custom connected source's read-external tool, records__read_record with the arguments {\"id\":\"e0\"}, whose executor answers the sentinel text; then the five reads a model could make: list_context; read_context, read_window and search scoped to the id the result would have been retained under ($retained: each language computes it by its own retention rule, since nothing shows it); and a search of every retained item for the sentinel. items are the six tool_result events every case gives, in that order, their callId and source record left out (source-results-current.json holds the decoration): the gate's refusal, an empty listing, three refusals of the unknown id and a search with no match. Through an API adapter the listing also names the call's own operation record (kind history, label records__read_record · failed, its result the gate's refusal), which is how the failed call stays inspectable there; the engine-level tests take it out of the listing and pin it, and at the boundary and through a native adapter, whose one invocation lists no operations, there is none. The verifier is called as verifierCalls says: a missing receipt, and one over 128 UTF-16 code units, is refused before any verifier is asked, and an expired one is a receipt whose check outlasts the source's deadline (sourceCallMilliseconds), the verifier then answering true too late. overlap runs two sources' calls in flight together: the rejected call's receipt check holds until the other source's two calls (calls, receipts) have finished and been recorded; the checkpoint written then is restored into a fresh ledger. There, and in the run, the verified result is the one entry and is read whole, its event is overlap.event, and every reader still answers the rejected call with items 1 to 5. The rejected call is recorded once, as an uncertain outcome whose failure is the gate's refusal, with no result; it is never offered or accepted as Plan evidence; no byte of any checkpoint or event the run stores carries the sentinel.", + "schema": "tool-result.json", + "source": { + "harness": { + "repository": "Judgment-Pack/judgment-pack-agent", + "package": "packages/harness" + }, + "files": [ + "packages/harness/toolSources.ts (SourceGate.call, ReceiptAdmission, receiptAdmission)", + "packages/harness/storage/writer.ts (RunWriter.invoke, admit)", + "packages/harness/execution/controller.ts (ExecutionController.wrapRead, admission)", + "packages/harness/receiptQuarantine.test.ts (the cases each item is checked against)" + ] + }, + "fixture": { + "scope": "receipt-quarantine", + "sentinel": "UNVERIFIED_E0_PAYLOAD_DO_NOT_ACCEPT_9f2", + "sourceCallMilliseconds": 400, + "declaration": { + "name": "read_record", + "description": "Read one record from the connected records source.", + "inputSchema": { + "type": "object", + "properties": { + "id": { + "type": "string" + } + }, + "required": [ + "id" + ], + "additionalProperties": false + }, + "taxonomy": { + "operation": "read", + "effect": "read-external" + }, + "source": { + "kind": "custom", + "id": "records", + "trust": "connected", + "version": "1" + } + }, + "wireName": "records__read_record", + "arguments": { + "id": "e0" + }, + "cases": [ + { + "name": "rejected-receipt", + "result": { + "content": [ + { + "type": "text", + "text": "UNVERIFIED_E0_PAYLOAD_DO_NOT_ACCEPT_9f2" + } + ] + }, + "receipt": "rcpt-e0", + "verifier": "rejects", + "verifierCalls": 1 + }, + { + "name": "missing-receipt", + "result": { + "content": [ + { + "type": "text", + "text": "UNVERIFIED_E0_PAYLOAD_DO_NOT_ACCEPT_9f2" + } + ] + }, + "verifier": "rejects", + "verifierCalls": 0 + }, + { + "name": "oversized-receipt", + "result": { + "content": [ + { + "type": "text", + "text": "UNVERIFIED_E0_PAYLOAD_DO_NOT_ACCEPT_9f2" + } + ] + }, + "receipt": "rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr", + "verifier": "rejects", + "verifierCalls": 0 + }, + { + "name": "expired-receipt", + "result": { + "content": [ + { + "type": "text", + "text": "UNVERIFIED_E0_PAYLOAD_DO_NOT_ACCEPT_9f2" + } + ] + }, + "receipt": "rcpt-e0", + "verifier": "answers true after the deadline", + "verifierCalls": 1 + }, + { + "name": "error-result", + "result": { + "content": [ + { + "type": "text", + "text": "UNVERIFIED_E0_PAYLOAD_DO_NOT_ACCEPT_9f2" + } + ], + "isError": true + }, + "receipt": "rcpt-e0", + "verifier": "rejects", + "verifierCalls": 1 + } + ], + "readers": [ + { + "tool": "list_context", + "arguments": {} + }, + { + "tool": "read_context", + "arguments": { + "id": "$retained" + } + }, + { + "tool": "read_window", + "arguments": { + "id": "$retained" + } + }, + { + "tool": "search", + "arguments": { + "pattern": "UNVERIFIED_E0", + "id": "$retained" + } + }, + { + "tool": "search", + "arguments": { + "pattern": "UNVERIFIED_E0", + "scope": "all" + } + } + ], + "overlap": { + "declaration": { + "name": "read_entry", + "description": "Read one entry from the connected registry.", + "inputSchema": { + "type": "object", + "properties": { + "id": { + "type": "string" + } + }, + "required": [ + "id" + ], + "additionalProperties": false + }, + "taxonomy": { + "operation": "read", + "effect": "read-external" + }, + "source": { + "kind": "custom", + "id": "registry", + "trust": "connected", + "version": "1" + } + }, + "wireName": "registry__read_entry", + "calls": [ + { + "id": "b1" + }, + { + "id": "b2" + } + ], + "result": { + "content": [ + { + "type": "text", + "text": "VERIFIED_B1_PAYLOAD" + } + ] + }, + "receipt": "rcpt-b1", + "verifier": "accepts its receipt for its result", + "event": { + "type": "tool_result", + "name": "registry__read_entry", + "isError": false, + "text": "VERIFIED_B1_PAYLOAD" + } + } + }, + "items": [ + { + "type": "tool_result", + "name": "records__read_record", + "isError": true, + "text": "External read receipt verification failed; its result was withheld. The call ran; do not retry automatically.", + "structured": { + "failure": { + "version": 1, + "code": "tool-failed", + "source": "tool", + "outcome": "unknown", + "detail": "External read receipt verification failed; its result was withheld. The call ran; do not retry automatically." + } + } + }, + { + "type": "tool_result", + "name": "list_context", + "isError": false, + "text": "{\"items\":[],\"nextOffset\":null}", + "structured": { + "items": [], + "nextOffset": null + } + }, + { + "type": "tool_result", + "name": "read_context", + "isError": true, + "text": "This context reference is unavailable in the current execution. Read the current object or history again.", + "structured": { + "failure": { + "version": 1, + "code": "invalid-tool-input", + "source": "tool", + "outcome": "unknown", + "detail": "This context reference is unavailable in the current execution. Read the current object or history again." + } + } + }, + { + "type": "tool_result", + "name": "read_window", + "isError": true, + "text": "This context reference is unavailable in the current execution. Read the current object or history again.", + "structured": { + "failure": { + "version": 1, + "code": "invalid-tool-input", + "source": "tool", + "outcome": "unknown", + "detail": "This context reference is unavailable in the current execution. Read the current object or history again." + } + } + }, + { + "type": "tool_result", + "name": "search", + "isError": true, + "text": "This context reference is unavailable in the current execution. Read the current object or history again.", + "structured": { + "failure": { + "version": 1, + "code": "invalid-tool-input", + "source": "tool", + "outcome": "unknown", + "detail": "This context reference is unavailable in the current execution. Read the current object or history again." + } + } + }, + { + "type": "tool_result", + "name": "search", + "isError": false, + "text": "{\"type\":\"search\",\"pattern\":\"UNVERIFIED_E0\",\"ignoreCase\":false,\"scope\":\"all\",\"matches\":[],\"more\":null}", + "structured": { + "type": "search", + "pattern": "UNVERIFIED_E0", + "ignoreCase": false, + "scope": "all", + "matches": [], + "more": null + } + } + ] +} diff --git a/docs/adr/0027-tool-taxonomy.md b/docs/adr/0027-tool-taxonomy.md index 020941a6..684e2636 100644 --- a/docs/adr/0027-tool-taxonomy.md +++ b/docs/adr/0027-tool-taxonomy.md @@ -106,3 +106,13 @@ rows of `contract/testdata/taxonomy/tools.json` (two admitted declarations with approval, and five refused for their description: without the words, with the words not first, in lower case, run into another word, and with no description). `TestTaxonomyRehearseAdmissionOnly` and the TypeScript engine-start case hold the admission-only statement above. + +## Amendment: an external result is not context until its receipt verifies (agent#242) + +Status: accepted for v0.12.0. Amends the receipt paragraph above; both languages, held to the hand-written `contract/vectors/tool-result/receipt-quarantine.json`. + +v0.11.0 verified an external read's receipt only after the call had passed through the durable writer and the read wrapper. A result whose receipt then failed was already recorded as a successful durable result and retained in the chat's ledger: the source event said it was withheld while `list_context`, `read_context`, `read_window` and `search` returned it, later model requests carried it, a checkpoint written meanwhile held it, and its durable row was offered and accepted as Plan evidence. + +The boundary is now: nothing from an external result is reusable context, or successful source evidence, until its receipt verifies. The source gate makes the receipt check before the call runs and hands it down the call (on the call's context in Go, by its deadline signal in TypeScript). The durable writer runs it after the host's execute and before it records anything of the result; the read wrapper runs it before it retains or caches anything; the gate runs it last only where nothing below did (a result served without a call). It runs once, and every later caller is given its first outcome. A result whose receipt is rejected, missing or not verified within the source's deadline (expired), including an error result, is recorded once as the call's uncertain outcome: state `unknown`, its failure the gate's refusal (`tool-failed`, `unknown`, the withheld text above), with no result bytes, observation or repeat record. It is never retained, so no reader lists or returns it, no later request or index carries it, and no Plan step is offered it or accepts it. The physical execution stays once-only and is not retried; its source-call accounting stays consumed. The check's time is the rest of the source's deadline, as before: when it runs out the result is withheld, not reported as a timeout, and since the execution itself ended in time its outcome is still recorded without closing the run's dispatch. + +Quarantine choice: an unverified result is not listed at all. The failed call stays inspectable through what already records it: its `tool_result` event (`isError`, `tool-failed`, `unknown`, the withheld text), its durable dispatch row (`unknown`, with that failure) and, where the run lists its operations for the model (the API adapters; a native run's single invocation lists none), the operation record the context tools list as ` · failed`, whose result is the gate's refusal. No listing state, record member or version is added, and no frozen record format changes. A checkpoint written while a receipt check runs (by another call's commit) holds only the call's claim, so a run restored from it holds no part of the result. Calls in flight together are checked each on its own; a verified result is retained as before. A verified Gateway envelope is what is retained, whole, so its unsigned `salts` may carry only the two members its commitments open (`args`, `statement`); any other member refuses the receipt in both languages (the shared `contract/testdata/taxonomy/gateway-receipt-v3.json` case `unsigned-salts-member`). diff --git a/docs/design/tool-taxonomy.md b/docs/design/tool-taxonomy.md index 01e2a0ed..0bff1ddf 100644 --- a/docs/design/tool-taxonomy.md +++ b/docs/design/tool-taxonomy.md @@ -4,6 +4,10 @@ Runtime must publish `{operation,effect,checkKind?,experimental?}` directly inside MCP `_meta`. Gateway snapshot-backed registrations require current V2 owner taxonomy and independent full approval context; historical V1 remains readable but cannot authorize current admission. An external read's host verifier must authenticate the receipt and bind its source, descriptor pin, tool, canonical arguments and canonical result. Returning true merely because a receipt string exists violates the host contract. +The verifier is asked before anything of the result is kept: an unverified result is never retained +for the context readers, recorded as a durable result or offered as Plan evidence, and the call +stays inspectable only as a failed operation (ADR-0027's amendment, agent#242). + Check subkinds for hosts: `validate`, `check`, `verify`, `test`, `analyze`, `advise` and, since the ADR-0027 amendment of 2026-10-29 (#241), `rehearse`: a non-binding dry evaluation of an artifact the host declares (a saved graph or pack identity), whose result carries no authority and whose @@ -29,6 +33,8 @@ pin. The executor obtains `gatewayExecutionContext(signal)` / `GatewayInvocation its receiptSession to Gateway's existing tools/call `_meta["io.judgment-pack/session"]`, separately from arguments. It returns the actual complete MCP envelope. Agent authenticates and unwraps the signed artifact before publication. No custom verifier runs after Gateway verification fails. +The envelope's unsigned salts may carry only `args` and `statement`; any other member refuses it, +since a verified envelope is what the run retains (agent#242). The raw tool key comes from approved owner metadata; a frontend bridge calls the explicit approved platform plus "." plus that key. No source identity is guessed from model text. diff --git a/docs/reference/events.md b/docs/reference/events.md index 63f67cb5..76b0f510 100644 --- a/docs/reference/events.md +++ b/docs/reference/events.md @@ -68,23 +68,23 @@ Consumer entries identify explicit kind reads, not delivery guarantees. Generic | Kind | TypeScript emitters | Go emitters | TypeScript consumers | Go consumers | | --- | --- | --- | --- | --- | -| `execution_checkpoint` | [`packages/harness/context/managed.ts:126`](../../packages/harness/context/managed.ts#L126), [`packages/harness/context/managed.ts:141`](../../packages/harness/context/managed.ts#L141), [`packages/harness/context/managed.ts:255`](../../packages/harness/context/managed.ts#L255), [`packages/harness/context/managed.ts:262`](../../packages/harness/context/managed.ts#L262), [`packages/harness/delegation.ts:498`](../../packages/harness/delegation.ts#L498), [`packages/harness/storage/writer.ts:246`](../../packages/harness/storage/writer.ts#L246), [`packages/harness/storage/writer.ts:275`](../../packages/harness/storage/writer.ts#L275), [`packages/harness/storage/writer.ts:463`](../../packages/harness/storage/writer.ts#L463), [`packages/harness/storage/writer.ts:746`](../../packages/harness/storage/writer.ts#L746), [`packages/harness/storage/writer.ts:766`](../../packages/harness/storage/writer.ts#L766) | [`go/adapter/delegate/agent.go:371`](../../go/adapter/delegate/agent.go#L371), [`go/adapter/delegate/calls.go:118`](../../go/adapter/delegate/calls.go#L118), [`go/context/managed.go:138`](../../go/context/managed.go#L138), [`go/context/managed.go:240`](../../go/context/managed.go#L240), [`go/context/managed.go:426`](../../go/context/managed.go#L426), [`go/context/native_plan_pause.go:128`](../../go/context/native_plan_pause.go#L128), [`go/context/native_plan_pause.go:159`](../../go/context/native_plan_pause.go#L159), [`go/context/run_writer.go:2443`](../../go/context/run_writer.go#L2443), [`go/context/run_writer.go:2555`](../../go/context/run_writer.go#L2555), [`go/context/run_writer.go:464`](../../go/context/run_writer.go#L464), [`go/context/session.go:2019`](../../go/context/session.go#L2019) | [`packages/harness/corpus.ts:167`](../../packages/harness/corpus.ts#L167), [`packages/harness/delegation.ts:1033`](../../packages/harness/delegation.ts#L1033), [`packages/harness/delegation.ts:1034`](../../packages/harness/delegation.ts#L1034), [`packages/harness/delegation.ts:721`](../../packages/harness/delegation.ts#L721), [`packages/harness/history/capture.ts:74`](../../packages/harness/history/capture.ts#L74), [`packages/harness/history/view.ts:93`](../../packages/harness/history/view.ts#L93), [`packages/harness/recordReader.ts:102`](../../packages/harness/recordReader.ts#L102), [`packages/harness/runReport.ts:79`](../../packages/harness/runReport.ts#L79), [`packages/harness/runReport.ts:84`](../../packages/harness/runReport.ts#L84), [`packages/harness/storage/nativePlanPause.ts:64`](../../packages/harness/storage/nativePlanPause.ts#L64), [`packages/harness/storage/writer.ts:528`](../../packages/harness/storage/writer.ts#L528), [`packages/harness/storage/writer.ts:530`](../../packages/harness/storage/writer.ts#L530), [`packages/harness/storage/writer.ts:664`](../../packages/harness/storage/writer.ts#L664) | [`go/adapter/delegate/batch.go:314`](../../go/adapter/delegate/batch.go#L314), [`go/adapter/delegate/batch.go:318`](../../go/adapter/delegate/batch.go#L318), [`go/adapter/delegate/batch.go:319`](../../go/adapter/delegate/batch.go#L319), [`go/adapter/delegate/coordinator.go:545`](../../go/adapter/delegate/coordinator.go#L545), [`go/adapter/delegate/coordinator.go:546`](../../go/adapter/delegate/coordinator.go#L546), [`go/context/history_view.go:313`](../../go/context/history_view.go#L313), [`go/context/native_plan_pause.go:434`](../../go/context/native_plan_pause.go#L434), [`go/context/run_report.go:197`](../../go/context/run_report.go#L197), [`go/context/run_report.go:198`](../../go/context/run_report.go#L198), [`go/context/run_writer.go:1077`](../../go/context/run_writer.go#L1077), [`go/context/run_writer.go:1078`](../../go/context/run_writer.go#L1078), [`go/context/run_writer.go:711`](../../go/context/run_writer.go#L711), [`go/context/run_writer.go:712`](../../go/context/run_writer.go#L712), [`go/context/run_writer.go:726`](../../go/context/run_writer.go#L726), [`go/contract/records.go:583`](../../go/contract/records.go#L583) | +| `execution_checkpoint` | [`packages/harness/context/managed.ts:126`](../../packages/harness/context/managed.ts#L126), [`packages/harness/context/managed.ts:141`](../../packages/harness/context/managed.ts#L141), [`packages/harness/context/managed.ts:255`](../../packages/harness/context/managed.ts#L255), [`packages/harness/context/managed.ts:262`](../../packages/harness/context/managed.ts#L262), [`packages/harness/delegation.ts:498`](../../packages/harness/delegation.ts#L498), [`packages/harness/storage/writer.ts:246`](../../packages/harness/storage/writer.ts#L246), [`packages/harness/storage/writer.ts:275`](../../packages/harness/storage/writer.ts#L275), [`packages/harness/storage/writer.ts:463`](../../packages/harness/storage/writer.ts#L463), [`packages/harness/storage/writer.ts:746`](../../packages/harness/storage/writer.ts#L746), [`packages/harness/storage/writer.ts:772`](../../packages/harness/storage/writer.ts#L772) | [`go/adapter/delegate/agent.go:371`](../../go/adapter/delegate/agent.go#L371), [`go/adapter/delegate/calls.go:118`](../../go/adapter/delegate/calls.go#L118), [`go/context/managed.go:138`](../../go/context/managed.go#L138), [`go/context/managed.go:240`](../../go/context/managed.go#L240), [`go/context/managed.go:426`](../../go/context/managed.go#L426), [`go/context/native_plan_pause.go:128`](../../go/context/native_plan_pause.go#L128), [`go/context/native_plan_pause.go:159`](../../go/context/native_plan_pause.go#L159), [`go/context/run_writer.go:2463`](../../go/context/run_writer.go#L2463), [`go/context/run_writer.go:2575`](../../go/context/run_writer.go#L2575), [`go/context/run_writer.go:464`](../../go/context/run_writer.go#L464), [`go/context/session.go:2019`](../../go/context/session.go#L2019) | [`packages/harness/corpus.ts:167`](../../packages/harness/corpus.ts#L167), [`packages/harness/delegation.ts:1033`](../../packages/harness/delegation.ts#L1033), [`packages/harness/delegation.ts:1034`](../../packages/harness/delegation.ts#L1034), [`packages/harness/delegation.ts:721`](../../packages/harness/delegation.ts#L721), [`packages/harness/history/capture.ts:74`](../../packages/harness/history/capture.ts#L74), [`packages/harness/history/view.ts:93`](../../packages/harness/history/view.ts#L93), [`packages/harness/recordReader.ts:102`](../../packages/harness/recordReader.ts#L102), [`packages/harness/runReport.ts:79`](../../packages/harness/runReport.ts#L79), [`packages/harness/runReport.ts:84`](../../packages/harness/runReport.ts#L84), [`packages/harness/storage/nativePlanPause.ts:64`](../../packages/harness/storage/nativePlanPause.ts#L64), [`packages/harness/storage/writer.ts:528`](../../packages/harness/storage/writer.ts#L528), [`packages/harness/storage/writer.ts:530`](../../packages/harness/storage/writer.ts#L530), [`packages/harness/storage/writer.ts:664`](../../packages/harness/storage/writer.ts#L664) | [`go/adapter/delegate/batch.go:314`](../../go/adapter/delegate/batch.go#L314), [`go/adapter/delegate/batch.go:318`](../../go/adapter/delegate/batch.go#L318), [`go/adapter/delegate/batch.go:319`](../../go/adapter/delegate/batch.go#L319), [`go/adapter/delegate/coordinator.go:545`](../../go/adapter/delegate/coordinator.go#L545), [`go/adapter/delegate/coordinator.go:546`](../../go/adapter/delegate/coordinator.go#L546), [`go/context/history_view.go:313`](../../go/context/history_view.go#L313), [`go/context/native_plan_pause.go:434`](../../go/context/native_plan_pause.go#L434), [`go/context/run_report.go:197`](../../go/context/run_report.go#L197), [`go/context/run_report.go:198`](../../go/context/run_report.go#L198), [`go/context/run_writer.go:1077`](../../go/context/run_writer.go#L1077), [`go/context/run_writer.go:1078`](../../go/context/run_writer.go#L1078), [`go/context/run_writer.go:711`](../../go/context/run_writer.go#L711), [`go/context/run_writer.go:712`](../../go/context/run_writer.go#L712), [`go/context/run_writer.go:726`](../../go/context/run_writer.go#L726), [`go/contract/records.go:583`](../../go/contract/records.go#L583) | | `budget_paused` | [`packages/harness/context/managed.ts:126`](../../packages/harness/context/managed.ts#L126), [`packages/harness/engines/deepagents/loop.ts:1122`](../../packages/harness/engines/deepagents/loop.ts#L1122), [`packages/harness/engines/vercel/loop.ts:1840`](../../packages/harness/engines/vercel/loop.ts#L1840) | [`go/adapter/agent/agent.go:185`](../../go/adapter/agent/agent.go#L185), [`go/adapter/eino/run.go:209`](../../go/adapter/eino/run.go#L209), [`go/context/managed.go:287`](../../go/context/managed.go#L287), [`go/context/managed.go:297`](../../go/context/managed.go#L297) | [`packages/harness/context/managed.ts:184`](../../packages/harness/context/managed.ts#L184), [`packages/harness/context/managed.ts:209`](../../packages/harness/context/managed.ts#L209), [`packages/harness/context/managed.ts:223`](../../packages/harness/context/managed.ts#L223), [`packages/harness/delegation.ts:1033`](../../packages/harness/delegation.ts#L1033), [`packages/harness/delegation.ts:728`](../../packages/harness/delegation.ts#L728), [`packages/harness/history/view.ts:93`](../../packages/harness/history/view.ts#L93), [`packages/harness/recordReader.ts:102`](../../packages/harness/recordReader.ts#L102), [`packages/harness/runReport.ts:79`](../../packages/harness/runReport.ts#L79), [`packages/harness/runReport.ts:84`](../../packages/harness/runReport.ts#L84), [`packages/harness/storage/writer.ts:528`](../../packages/harness/storage/writer.ts#L528), [`packages/harness/storage/writer.ts:530`](../../packages/harness/storage/writer.ts#L530), [`packages/harness/storage/writer.ts:664`](../../packages/harness/storage/writer.ts#L664) | [`go/adapter/delegate/batch.go:352`](../../go/adapter/delegate/batch.go#L352), [`go/adapter/delegate/coordinator.go:562`](../../go/adapter/delegate/coordinator.go#L562), [`go/adapter/delegate/coordinator.go:563`](../../go/adapter/delegate/coordinator.go#L563), [`go/context/history_view.go:313`](../../go/context/history_view.go#L313), [`go/context/managed.go:183`](../../go/context/managed.go#L183), [`go/context/managed.go:230`](../../go/context/managed.go#L230), [`go/context/managed.go:272`](../../go/context/managed.go#L272), [`go/context/run_report.go:199`](../../go/context/run_report.go#L199), [`go/context/run_report.go:200`](../../go/context/run_report.go#L200), [`go/context/run_writer.go:1080`](../../go/context/run_writer.go#L1080), [`go/context/run_writer.go:1081`](../../go/context/run_writer.go#L1081), [`go/context/run_writer.go:720`](../../go/context/run_writer.go#L720), [`go/context/run_writer.go:721`](../../go/context/run_writer.go#L721), [`go/context/run_writer.go:726`](../../go/context/run_writer.go#L726), [`go/contract/records.go:583`](../../go/contract/records.go#L583) | -| `approval_requested` | [`packages/harness/context/session.ts:531`](../../packages/harness/context/session.ts#L531), [`packages/harness/execution/controller.ts:363`](../../packages/harness/execution/controller.ts#L363), [`packages/harness/execution/controller.ts:365`](../../packages/harness/execution/controller.ts#L365) | [`go/context/plan_actions.go:377`](../../go/context/plan_actions.go#L377), [`go/context/session.go:1344`](../../go/context/session.go#L1344) | [`packages/harness/context/managed.ts:127`](../../packages/harness/context/managed.ts#L127), [`packages/harness/context/managed.ts:148`](../../packages/harness/context/managed.ts#L148), [`packages/harness/context/managed.ts:183`](../../packages/harness/context/managed.ts#L183), [`packages/harness/context/managed.ts:191`](../../packages/harness/context/managed.ts#L191), [`packages/harness/context/managed.ts:220`](../../packages/harness/context/managed.ts#L220), [`packages/harness/context/managed.ts:255`](../../packages/harness/context/managed.ts#L255), [`packages/harness/recordReader.ts:102`](../../packages/harness/recordReader.ts#L102), [`packages/harness/storage/writer.ts:527`](../../packages/harness/storage/writer.ts#L527), [`packages/harness/storage/writer.ts:651`](../../packages/harness/storage/writer.ts#L651) | [`go/context/managed.go:192`](../../go/context/managed.go#L192), [`go/context/managed.go:193`](../../go/context/managed.go#L193), [`go/context/managed.go:232`](../../go/context/managed.go#L232), [`go/context/run_writer.go:1936`](../../go/context/run_writer.go#L1936), [`go/context/run_writer.go:1937`](../../go/context/run_writer.go#L1937), [`go/context/run_writer.go:1954`](../../go/context/run_writer.go#L1954), [`go/context/run_writer.go:1955`](../../go/context/run_writer.go#L1955), [`go/contract/records.go:583`](../../go/contract/records.go#L583) | +| `approval_requested` | [`packages/harness/context/session.ts:531`](../../packages/harness/context/session.ts#L531), [`packages/harness/execution/controller.ts:368`](../../packages/harness/execution/controller.ts#L368), [`packages/harness/execution/controller.ts:370`](../../packages/harness/execution/controller.ts#L370) | [`go/context/plan_actions.go:377`](../../go/context/plan_actions.go#L377), [`go/context/session.go:1344`](../../go/context/session.go#L1344) | [`packages/harness/context/managed.ts:127`](../../packages/harness/context/managed.ts#L127), [`packages/harness/context/managed.ts:148`](../../packages/harness/context/managed.ts#L148), [`packages/harness/context/managed.ts:183`](../../packages/harness/context/managed.ts#L183), [`packages/harness/context/managed.ts:191`](../../packages/harness/context/managed.ts#L191), [`packages/harness/context/managed.ts:220`](../../packages/harness/context/managed.ts#L220), [`packages/harness/context/managed.ts:255`](../../packages/harness/context/managed.ts#L255), [`packages/harness/recordReader.ts:102`](../../packages/harness/recordReader.ts#L102), [`packages/harness/storage/writer.ts:527`](../../packages/harness/storage/writer.ts#L527), [`packages/harness/storage/writer.ts:651`](../../packages/harness/storage/writer.ts#L651) | [`go/context/managed.go:192`](../../go/context/managed.go#L192), [`go/context/managed.go:193`](../../go/context/managed.go#L193), [`go/context/managed.go:232`](../../go/context/managed.go#L232), [`go/context/run_writer.go:1956`](../../go/context/run_writer.go#L1956), [`go/context/run_writer.go:1957`](../../go/context/run_writer.go#L1957), [`go/context/run_writer.go:1974`](../../go/context/run_writer.go#L1974), [`go/context/run_writer.go:1975`](../../go/context/run_writer.go#L1975), [`go/contract/records.go:583`](../../go/contract/records.go#L583) | | `compacted` | [`packages/harness/context/session.ts:808`](../../packages/harness/context/session.ts#L808) | [`go/context/session.go:1150`](../../go/context/session.go#L1150) | — | — | | `skill_loaded` | [`packages/harness/skills.ts:493`](../../packages/harness/skills.ts#L493) | [`go/context/skills.go:651`](../../go/context/skills.go#L651) | — | — | | `skill_unloaded` | [`packages/harness/skills.ts:505`](../../packages/harness/skills.ts#L505) | [`go/context/skills.go:686`](../../go/context/skills.go#L686) | — | — | | `retry` | [`packages/harness/engines/codex/index.ts:126`](../../packages/harness/engines/codex/index.ts#L126), [`packages/harness/engines/deepagents/loop.ts:597`](../../packages/harness/engines/deepagents/loop.ts#L597), [`packages/harness/engines/vercel/loop.ts:1086`](../../packages/harness/engines/vercel/loop.ts#L1086) | [`go/adapter/agent/invoke.go:515`](../../go/adapter/agent/invoke.go#L515), [`go/adapter/eino/run.go:400`](../../go/adapter/eino/run.go#L400) | — | — | | `response_recovery` | [`packages/harness/engines/codex/index.ts:321`](../../packages/harness/engines/codex/index.ts#L321), [`packages/harness/engines/deepagents/loop.ts:711`](../../packages/harness/engines/deepagents/loop.ts#L711), [`packages/harness/engines/deepagents/loop.ts:714`](../../packages/harness/engines/deepagents/loop.ts#L714), [`packages/harness/engines/vercel/loop.ts:1192`](../../packages/harness/engines/vercel/loop.ts#L1192), [`packages/harness/engines/vercel/loop.ts:1195`](../../packages/harness/engines/vercel/loop.ts#L1195) | [`go/adapter/agent/agent.go:410`](../../go/adapter/agent/agent.go#L410), [`go/adapter/eino/loopphase.go:43`](../../go/adapter/eino/loopphase.go#L43), [`go/adapter/eino/loopphase.go:55`](../../go/adapter/eino/loopphase.go#L55) | — | — | | `delegation_requested` | [`packages/harness/engines/codex/index.ts:183`](../../packages/harness/engines/codex/index.ts#L183) | [`go/adapter/agent/invoke.go:766`](../../go/adapter/agent/invoke.go#L766) | [`packages/harness/context/managed.ts:167`](../../packages/harness/context/managed.ts#L167), [`packages/harness/delegation.ts:1035`](../../packages/harness/delegation.ts#L1035), [`packages/harness/delegation.ts:734`](../../packages/harness/delegation.ts#L734), [`packages/harness/storage/writer.ts:664`](../../packages/harness/storage/writer.ts#L664) | [`go/adapter/delegate/coordinator.go:534`](../../go/adapter/delegate/coordinator.go#L534), [`go/adapter/delegate/coordinator.go:536`](../../go/adapter/delegate/coordinator.go#L536), [`go/context/output_boundary.go:75`](../../go/context/output_boundary.go#L75), [`go/context/output_boundary.go:76`](../../go/context/output_boundary.go#L76), [`go/context/output_boundary.go:80`](../../go/context/output_boundary.go#L80), [`go/context/run_writer.go:1069`](../../go/context/run_writer.go#L1069), [`go/context/run_writer.go:1070`](../../go/context/run_writer.go#L1070) | -| `delegated_task` | [`packages/harness/delegation.ts:464`](../../packages/harness/delegation.ts#L464) | [`go/adapter/delegate/coordinator.go:368`](../../go/adapter/delegate/coordinator.go#L368) | [`packages/harness/storage/writer.ts:318`](../../packages/harness/storage/writer.ts#L318), [`packages/harness/storage/writer.ts:534`](../../packages/harness/storage/writer.ts#L534) | [`go/context/run_writer.go:2611`](../../go/context/run_writer.go#L2611), [`go/context/run_writer.go:2616`](../../go/context/run_writer.go#L2616), [`go/context/run_writer.go:2627`](../../go/context/run_writer.go#L2627), [`go/context/run_writer.go:2787`](../../go/context/run_writer.go#L2787), [`go/context/run_writer.go:2790`](../../go/context/run_writer.go#L2790), [`go/context/run_writer.go:2791`](../../go/context/run_writer.go#L2791), [`go/context/run_writer.go:730`](../../go/context/run_writer.go#L730), [`go/context/run_writer.go:733`](../../go/context/run_writer.go#L733) | +| `delegated_task` | [`packages/harness/delegation.ts:464`](../../packages/harness/delegation.ts#L464) | [`go/adapter/delegate/coordinator.go:368`](../../go/adapter/delegate/coordinator.go#L368) | [`packages/harness/storage/writer.ts:318`](../../packages/harness/storage/writer.ts#L318), [`packages/harness/storage/writer.ts:534`](../../packages/harness/storage/writer.ts#L534) | [`go/context/run_writer.go:2631`](../../go/context/run_writer.go#L2631), [`go/context/run_writer.go:2636`](../../go/context/run_writer.go#L2636), [`go/context/run_writer.go:2647`](../../go/context/run_writer.go#L2647), [`go/context/run_writer.go:2807`](../../go/context/run_writer.go#L2807), [`go/context/run_writer.go:2810`](../../go/context/run_writer.go#L2810), [`go/context/run_writer.go:2811`](../../go/context/run_writer.go#L2811), [`go/context/run_writer.go:730`](../../go/context/run_writer.go#L730), [`go/context/run_writer.go:733`](../../go/context/run_writer.go#L733) | | `user_question` | [`packages/harness/engines/codex/index.ts:191`](../../packages/harness/engines/codex/index.ts#L191), [`packages/harness/engines/deepagents/loop.ts:516`](../../packages/harness/engines/deepagents/loop.ts#L516), [`packages/harness/engines/vercel/loop.ts:976`](../../packages/harness/engines/vercel/loop.ts#L976) | [`go/adapter/agent/invoke.go:777`](../../go/adapter/agent/invoke.go#L777), [`go/adapter/eino/calls.go:318`](../../go/adapter/eino/calls.go#L318) | [`packages/harness/context/managed.ts:166`](../../packages/harness/context/managed.ts#L166), [`packages/harness/context/managed.ts:184`](../../packages/harness/context/managed.ts#L184), [`packages/harness/context/managed.ts:229`](../../packages/harness/context/managed.ts#L229), [`packages/harness/context/managed.ts:230`](../../packages/harness/context/managed.ts#L230), [`packages/harness/context/managed.ts:231`](../../packages/harness/context/managed.ts#L231), [`packages/harness/delegation.ts:732`](../../packages/harness/delegation.ts#L732) | [`go/adapter/delegate/batch.go:358`](../../go/adapter/delegate/batch.go#L358), [`go/adapter/delegate/batch.go:359`](../../go/adapter/delegate/batch.go#L359), [`go/context/managed.go:183`](../../go/context/managed.go#L183), [`go/context/managed.go:305`](../../go/context/managed.go#L305), [`go/context/managed.go:313`](../../go/context/managed.go#L313), [`go/context/output_boundary.go:67`](../../go/context/output_boundary.go#L67), [`go/context/output_boundary.go:68`](../../go/context/output_boundary.go#L68), [`go/context/output_boundary.go:72`](../../go/context/output_boundary.go#L72) | | `reasoning` | [`packages/harness/engines/deepagents/loop.ts:616`](../../packages/harness/engines/deepagents/loop.ts#L616), [`packages/harness/engines/deepagents/loop.ts:619`](../../packages/harness/engines/deepagents/loop.ts#L619), [`packages/harness/engines/vercel/loop.ts:1304`](../../packages/harness/engines/vercel/loop.ts#L1304), [`packages/harness/engines/vercel/loop.ts:1310`](../../packages/harness/engines/vercel/loop.ts#L1310), [`packages/harness/engines/vercel/loop.ts:1618`](../../packages/harness/engines/vercel/loop.ts#L1618), [`packages/harness/engines/vercel/loop.ts:1622`](../../packages/harness/engines/vercel/loop.ts#L1622) | [`go/adapter/eino/step.go:36`](../../go/adapter/eino/step.go#L36), [`go/adapter/eino/step.go:42`](../../go/adapter/eino/step.go#L42) | [`packages/harness/context/managed.ts:161`](../../packages/harness/context/managed.ts#L161), [`packages/harness/context/managed.ts:162`](../../packages/harness/context/managed.ts#L162) | [`go/context/managed.go:154`](../../go/context/managed.go#L154), [`go/context/output_boundary.go:49`](../../go/context/output_boundary.go#L49), [`go/context/output_boundary.go:50`](../../go/context/output_boundary.go#L50) | | `message` | [`packages/harness/engines/codex/index.ts:137`](../../packages/harness/engines/codex/index.ts#L137), [`packages/harness/engines/codex/index.ts:297`](../../packages/harness/engines/codex/index.ts#L297), [`packages/harness/engines/codex/index.ts:318`](../../packages/harness/engines/codex/index.ts#L318), [`packages/harness/engines/codex/index.ts:336`](../../packages/harness/engines/codex/index.ts#L336), [`packages/harness/engines/codex/index.ts:347`](../../packages/harness/engines/codex/index.ts#L347), [`packages/harness/engines/deepagents/loop.ts:680`](../../packages/harness/engines/deepagents/loop.ts#L680), [`packages/harness/engines/deepagents/loop.ts:889`](../../packages/harness/engines/deepagents/loop.ts#L889), [`packages/harness/engines/deepagents/loop.ts:895`](../../packages/harness/engines/deepagents/loop.ts#L895), [`packages/harness/engines/deepagents/loop.ts:900`](../../packages/harness/engines/deepagents/loop.ts#L900), [`packages/harness/engines/vercel/loop.ts:1163`](../../packages/harness/engines/vercel/loop.ts#L1163), [`packages/harness/engines/vercel/loop.ts:1445`](../../packages/harness/engines/vercel/loop.ts#L1445), [`packages/harness/engines/vercel/loop.ts:1451`](../../packages/harness/engines/vercel/loop.ts#L1451), [`packages/harness/engines/vercel/loop.ts:1458`](../../packages/harness/engines/vercel/loop.ts#L1458) | [`go/adapter/agent/agent.go:627`](../../go/adapter/agent/agent.go#L627), [`go/adapter/eino/loop.go:174`](../../go/adapter/eino/loop.go#L174), [`go/adapter/eino/loop.go:350`](../../go/adapter/eino/loop.go#L350) | [`packages/harness/context/managed.ts:163`](../../packages/harness/context/managed.ts#L163), [`packages/harness/delegation.ts:724`](../../packages/harness/delegation.ts#L724), [`packages/harness/history/feedback.ts:29`](../../packages/harness/history/feedback.ts#L29), [`packages/harness/storage/history.ts:129`](../../packages/harness/storage/history.ts#L129) | [`go/adapter/delegate/batch.go:332`](../../go/adapter/delegate/batch.go#L332), [`go/adapter/delegate/batch.go:336`](../../go/adapter/delegate/batch.go#L336), [`go/context/history_metadata_store.go:130`](../../go/context/history_metadata_store.go#L130), [`go/context/output_boundary.go:52`](../../go/context/output_boundary.go#L52), [`go/context/output_boundary.go:53`](../../go/context/output_boundary.go#L53) | | `message_progress` | [`packages/harness/delegation.ts:726`](../../packages/harness/delegation.ts#L726), [`packages/harness/delegation.ts:885`](../../packages/harness/delegation.ts#L885), [`packages/harness/delegation.ts:902`](../../packages/harness/delegation.ts#L902), [`packages/harness/engines/codex/index.ts:132`](../../packages/harness/engines/codex/index.ts#L132), [`packages/harness/engines/deepagents/loop.ts:613`](../../packages/harness/engines/deepagents/loop.ts#L613), [`packages/harness/engines/deepagents/loop.ts:710`](../../packages/harness/engines/deepagents/loop.ts#L710), [`packages/harness/engines/vercel/loop.ts:1174`](../../packages/harness/engines/vercel/loop.ts#L1174), [`packages/harness/engines/vercel/loop.ts:1191`](../../packages/harness/engines/vercel/loop.ts#L1191) | [`go/adapter/agent/invoke.go:522`](../../go/adapter/agent/invoke.go#L522), [`go/adapter/delegate/batch.go:342`](../../go/adapter/delegate/batch.go#L342), [`go/adapter/delegate/run.go:121`](../../go/adapter/delegate/run.go#L121), [`go/adapter/delegate/run.go:301`](../../go/adapter/delegate/run.go#L301), [`go/adapter/eino/loopphase.go:40`](../../go/adapter/eino/loopphase.go#L40), [`go/adapter/eino/step.go:30`](../../go/adapter/eino/step.go#L30) | [`packages/harness/context/managed.ts:161`](../../packages/harness/context/managed.ts#L161), [`packages/harness/delegation.ts:726`](../../packages/harness/delegation.ts#L726), [`packages/harness/engines/deepagents/loop.ts:409`](../../packages/harness/engines/deepagents/loop.ts#L409), [`packages/harness/engines/vercel/loop.ts:825`](../../packages/harness/engines/vercel/loop.ts#L825) | [`go/adapter/delegate/batch.go:338`](../../go/adapter/delegate/batch.go#L338), [`go/adapter/delegate/batch.go:339`](../../go/adapter/delegate/batch.go#L339), [`go/adapter/delegate/batch.go:340`](../../go/adapter/delegate/batch.go#L340), [`go/adapter/delegate/batch.go:342`](../../go/adapter/delegate/batch.go#L342), [`go/adapter/eino/run.go:259`](../../go/adapter/eino/run.go#L259), [`go/context/managed.go:154`](../../go/context/managed.go#L154) | -| `tool_call` | [`packages/harness/engines/codex/index.ts:153`](../../packages/harness/engines/codex/index.ts#L153), [`packages/harness/engines/codex/index.ts:171`](../../packages/harness/engines/codex/index.ts#L171), [`packages/harness/engines/codex/index.ts:247`](../../packages/harness/engines/codex/index.ts#L247), [`packages/harness/engines/deepagents/loop.ts:436`](../../packages/harness/engines/deepagents/loop.ts#L436), [`packages/harness/engines/deepagents/loop.ts:462`](../../packages/harness/engines/deepagents/loop.ts#L462), [`packages/harness/engines/deepagents/loop.ts:500`](../../packages/harness/engines/deepagents/loop.ts#L500), [`packages/harness/engines/deepagents/loop.ts:551`](../../packages/harness/engines/deepagents/loop.ts#L551), [`packages/harness/engines/deepagents/loop.ts:563`](../../packages/harness/engines/deepagents/loop.ts#L563), [`packages/harness/engines/vercel/loop.ts:1049`](../../packages/harness/engines/vercel/loop.ts#L1049), [`packages/harness/engines/vercel/loop.ts:848`](../../packages/harness/engines/vercel/loop.ts#L848), [`packages/harness/engines/vercel/loop.ts:899`](../../packages/harness/engines/vercel/loop.ts#L899), [`packages/harness/engines/vercel/loop.ts:959`](../../packages/harness/engines/vercel/loop.ts#L959) | [`go/adapter/agent/invoke.go:888`](../../go/adapter/agent/invoke.go#L888), [`go/adapter/eino/calls.go:103`](../../go/adapter/eino/calls.go#L103) | [`packages/harness/context/managed.ts:164`](../../packages/harness/context/managed.ts#L164), [`packages/harness/context/managed.ts:184`](../../packages/harness/context/managed.ts#L184), [`packages/harness/context/managed.ts:192`](../../packages/harness/context/managed.ts#L192), [`packages/harness/context/managed.ts:193`](../../packages/harness/context/managed.ts#L193), [`packages/harness/context/managed.ts:229`](../../packages/harness/context/managed.ts#L229), [`packages/harness/corpus.ts:168`](../../packages/harness/corpus.ts#L168), [`packages/harness/execution/controller.ts:269`](../../packages/harness/execution/controller.ts#L269), [`packages/harness/history/capture.ts:119`](../../packages/harness/history/capture.ts#L119), [`packages/harness/history/capture.ts:77`](../../packages/harness/history/capture.ts#L77), [`packages/harness/toolSources.ts:1244`](../../packages/harness/toolSources.ts#L1244), [`packages/harness/toolSources.ts:1247`](../../packages/harness/toolSources.ts#L1247) | [`go/context/managed.go:183`](../../go/context/managed.go#L183), [`go/context/managed.go:195`](../../go/context/managed.go#L195), [`go/context/managed.go:202`](../../go/context/managed.go#L202), [`go/context/managed.go:267`](../../go/context/managed.go#L267), [`go/context/managed.go:268`](../../go/context/managed.go#L268), [`go/context/managed.go:305`](../../go/context/managed.go#L305), [`go/context/managed.go:307`](../../go/context/managed.go#L307), [`go/context/managed.go:308`](../../go/context/managed.go#L308), [`go/context/output_boundary.go:55`](../../go/context/output_boundary.go#L55), [`go/context/output_boundary.go:57`](../../go/context/output_boundary.go#L57), [`go/context/output_boundary.go:59`](../../go/context/output_boundary.go#L59), [`go/context/output_boundary.go:60`](../../go/context/output_boundary.go#L60), [`go/context/sources.go:2032`](../../go/context/sources.go#L2032), [`go/context/sources.go:2033`](../../go/context/sources.go#L2033), [`go/context/sources.go:2037`](../../go/context/sources.go#L2037), [`go/context/sources.go:2040`](../../go/context/sources.go#L2040) | -| `tool_result` | [`packages/harness/context/managed.ts:199`](../../packages/harness/context/managed.ts#L199), [`packages/harness/engines/codex/index.ts:158`](../../packages/harness/engines/codex/index.ts#L158), [`packages/harness/engines/codex/index.ts:215`](../../packages/harness/engines/codex/index.ts#L215), [`packages/harness/engines/codex/index.ts:259`](../../packages/harness/engines/codex/index.ts#L259), [`packages/harness/engines/deepagents/loop.ts:437`](../../packages/harness/engines/deepagents/loop.ts#L437), [`packages/harness/engines/deepagents/loop.ts:470`](../../packages/harness/engines/deepagents/loop.ts#L470), [`packages/harness/engines/deepagents/loop.ts:474`](../../packages/harness/engines/deepagents/loop.ts#L474), [`packages/harness/engines/deepagents/loop.ts:534`](../../packages/harness/engines/deepagents/loop.ts#L534), [`packages/harness/engines/deepagents/loop.ts:538`](../../packages/harness/engines/deepagents/loop.ts#L538), [`packages/harness/engines/deepagents/loop.ts:553`](../../packages/harness/engines/deepagents/loop.ts#L553), [`packages/harness/engines/deepagents/loop.ts:564`](../../packages/harness/engines/deepagents/loop.ts#L564), [`packages/harness/engines/vercel/loop.ts:1000`](../../packages/harness/engines/vercel/loop.ts#L1000), [`packages/harness/engines/vercel/loop.ts:1005`](../../packages/harness/engines/vercel/loop.ts#L1005), [`packages/harness/engines/vercel/loop.ts:1051`](../../packages/harness/engines/vercel/loop.ts#L1051), [`packages/harness/engines/vercel/loop.ts:849`](../../packages/harness/engines/vercel/loop.ts#L849), [`packages/harness/engines/vercel/loop.ts:915`](../../packages/harness/engines/vercel/loop.ts#L915), [`packages/harness/engines/vercel/loop.ts:920`](../../packages/harness/engines/vercel/loop.ts#L920), [`packages/harness/engines/vercel/loop.ts:996`](../../packages/harness/engines/vercel/loop.ts#L996) | [`go/adapter/agent/invoke.go:899`](../../go/adapter/agent/invoke.go#L899), [`go/adapter/eino/calls.go:114`](../../go/adapter/eino/calls.go#L114), [`go/context/managed.go:206`](../../go/context/managed.go#L206), [`go/gate/session.go:355`](../../go/gate/session.go#L355) | [`packages/harness/context/managed.ts:165`](../../packages/harness/context/managed.ts#L165), [`packages/harness/context/managed.ts:184`](../../packages/harness/context/managed.ts#L184), [`packages/harness/context/managed.ts:205`](../../packages/harness/context/managed.ts#L205), [`packages/harness/context/managed.ts:228`](../../packages/harness/context/managed.ts#L228), [`packages/harness/context/managed.ts:229`](../../packages/harness/context/managed.ts#L229), [`packages/harness/corpus.ts:173`](../../packages/harness/corpus.ts#L173), [`packages/harness/corpus.ts:32`](../../packages/harness/corpus.ts#L32), [`packages/harness/execution/controller.ts:274`](../../packages/harness/execution/controller.ts#L274), [`packages/harness/history/capture.ts:119`](../../packages/harness/history/capture.ts#L119), [`packages/harness/history/capture.ts:77`](../../packages/harness/history/capture.ts#L77), [`packages/harness/toolSources.ts:1244`](../../packages/harness/toolSources.ts#L1244) | [`go/context/managed.go:183`](../../go/context/managed.go#L183), [`go/context/managed.go:208`](../../go/context/managed.go#L208), [`go/context/managed.go:217`](../../go/context/managed.go#L217), [`go/context/managed.go:269`](../../go/context/managed.go#L269), [`go/context/managed.go:270`](../../go/context/managed.go#L270), [`go/context/managed.go:291`](../../go/context/managed.go#L291), [`go/context/managed.go:305`](../../go/context/managed.go#L305), [`go/context/managed.go:310`](../../go/context/managed.go#L310), [`go/context/managed.go:311`](../../go/context/managed.go#L311), [`go/context/output_boundary.go:62`](../../go/context/output_boundary.go#L62), [`go/context/output_boundary.go:63`](../../go/context/output_boundary.go#L63), [`go/context/output_boundary.go:65`](../../go/context/output_boundary.go#L65), [`go/context/sources.go:2041`](../../go/context/sources.go#L2041), [`go/context/sources.go:2042`](../../go/context/sources.go#L2042), [`go/context/sources.go:2048`](../../go/context/sources.go#L2048), [`go/context/sources.go:2049`](../../go/context/sources.go#L2049), [`go/context/sources.go:2050`](../../go/context/sources.go#L2050), [`go/context/sources.go:2051`](../../go/context/sources.go#L2051), [`go/context/sources.go:2053`](../../go/context/sources.go#L2053), [`go/context/sources.go:2057`](../../go/context/sources.go#L2057), [`go/context/sources.go:2068`](../../go/context/sources.go#L2068) | -| `guardrail` | [`packages/harness/context/managed.ts:129`](../../packages/harness/context/managed.ts#L129), [`packages/harness/context/managed.ts:155`](../../packages/harness/context/managed.ts#L155), [`packages/harness/context/managed.ts:197`](../../packages/harness/context/managed.ts#L197), [`packages/harness/context/managed.ts:238`](../../packages/harness/context/managed.ts#L238), [`packages/harness/context/managed.ts:239`](../../packages/harness/context/managed.ts#L239), [`packages/harness/context/managed.ts:252`](../../packages/harness/context/managed.ts#L252), [`packages/harness/context/session.ts:1004`](../../packages/harness/context/session.ts#L1004), [`packages/harness/context/session.ts:275`](../../packages/harness/context/session.ts#L275), [`packages/harness/context/session.ts:298`](../../packages/harness/context/session.ts#L298), [`packages/harness/context/session.ts:454`](../../packages/harness/context/session.ts#L454), [`packages/harness/context/session.ts:506`](../../packages/harness/context/session.ts#L506), [`packages/harness/context/session.ts:798`](../../packages/harness/context/session.ts#L798), [`packages/harness/corpus.ts:64`](../../packages/harness/corpus.ts#L64), [`packages/harness/edits.ts:98`](../../packages/harness/edits.ts#L98), [`packages/harness/engines/contract.ts:727`](../../packages/harness/engines/contract.ts#L727), [`packages/harness/execution/controller.ts:214`](../../packages/harness/execution/controller.ts#L214), [`packages/harness/outputGuard.ts:46`](../../packages/harness/outputGuard.ts#L46), [`packages/harness/policy.ts:53`](../../packages/harness/policy.ts#L53), [`packages/harness/recordReader.ts:16`](../../packages/harness/recordReader.ts#L16), [`packages/harness/session.ts:472`](../../packages/harness/session.ts#L472), [`packages/harness/skills.ts:485`](../../packages/harness/skills.ts#L485), [`packages/harness/toolSources.ts:958`](../../packages/harness/toolSources.ts#L958) | [`go/adapter/agent/invoke.go:328`](../../go/adapter/agent/invoke.go#L328), [`go/adapter/eino/run.go:423`](../../go/adapter/eino/run.go#L423), [`go/adapter/policy.go:151`](../../go/adapter/policy.go#L151), [`go/adapter/policy.go:247`](../../go/adapter/policy.go#L247), [`go/adapter/wire/geminischema.go:329`](../../go/adapter/wire/geminischema.go#L329), [`go/context/controller.go:653`](../../go/context/controller.go#L653), [`go/context/corpus.go:243`](../../go/context/corpus.go#L243), [`go/context/critic.go:337`](../../go/context/critic.go#L337), [`go/context/edits.go:320`](../../go/context/edits.go#L320), [`go/context/live_capture.go:198`](../../go/context/live_capture.go#L198), [`go/context/managed.go:169`](../../go/context/managed.go#L169), [`go/context/managed.go:204`](../../go/context/managed.go#L204), [`go/context/managed.go:356`](../../go/context/managed.go#L356), [`go/context/managed.go:361`](../../go/context/managed.go#L361), [`go/context/managed.go:82`](../../go/context/managed.go#L82), [`go/context/memories.go:327`](../../go/context/memories.go#L327), [`go/context/output_guard.go:178`](../../go/context/output_guard.go#L178), [`go/context/plan_actions.go:512`](../../go/context/plan_actions.go#L512), [`go/context/policy_table.go:60`](../../go/context/policy_table.go#L60), [`go/context/records.go:230`](../../go/context/records.go#L230), [`go/context/runtime_actions.go:76`](../../go/context/runtime_actions.go#L76), [`go/context/session.go:1130`](../../go/context/session.go#L1130), [`go/context/session.go:1761`](../../go/context/session.go#L1761), [`go/context/session.go:2075`](../../go/context/session.go#L2075), [`go/context/skills.go:279`](../../go/context/skills.go#L279), [`go/context/skills.go:646`](../../go/context/skills.go#L646), [`go/context/sources.go:1061`](../../go/context/sources.go#L1061), [`go/context/sources.go:1165`](../../go/context/sources.go#L1165), [`go/context/sources.go:1291`](../../go/context/sources.go#L1291), [`go/context/subagents.go:41`](../../go/context/subagents.go#L41), [`go/contract/records.go:72`](../../go/contract/records.go#L72), [`go/gate/gate.go:125`](../../go/gate/gate.go#L125) | [`packages/harness/context/managed.ts:252`](../../packages/harness/context/managed.ts#L252), [`packages/harness/context/managed.ts:36`](../../packages/harness/context/managed.ts#L36), [`packages/harness/corpus.ts:28`](../../packages/harness/corpus.ts#L28), [`packages/harness/delegation.ts:723`](../../packages/harness/delegation.ts#L723), [`packages/harness/delegation.ts:731`](../../packages/harness/delegation.ts#L731), [`packages/harness/delegation.ts:733`](../../packages/harness/delegation.ts#L733) | [`go/adapter/delegate/batch.go:330`](../../go/adapter/delegate/batch.go#L330), [`go/adapter/delegate/batch.go:343`](../../go/adapter/delegate/batch.go#L343), [`go/adapter/delegate/batch.go:356`](../../go/adapter/delegate/batch.go#L356), [`go/context/output_boundary.go:125`](../../go/context/output_boundary.go#L125), [`go/context/output_boundary.go:131`](../../go/context/output_boundary.go#L131), [`go/context/session.go:1550`](../../go/context/session.go#L1550) | +| `tool_call` | [`packages/harness/engines/codex/index.ts:153`](../../packages/harness/engines/codex/index.ts#L153), [`packages/harness/engines/codex/index.ts:171`](../../packages/harness/engines/codex/index.ts#L171), [`packages/harness/engines/codex/index.ts:247`](../../packages/harness/engines/codex/index.ts#L247), [`packages/harness/engines/deepagents/loop.ts:436`](../../packages/harness/engines/deepagents/loop.ts#L436), [`packages/harness/engines/deepagents/loop.ts:462`](../../packages/harness/engines/deepagents/loop.ts#L462), [`packages/harness/engines/deepagents/loop.ts:500`](../../packages/harness/engines/deepagents/loop.ts#L500), [`packages/harness/engines/deepagents/loop.ts:551`](../../packages/harness/engines/deepagents/loop.ts#L551), [`packages/harness/engines/deepagents/loop.ts:563`](../../packages/harness/engines/deepagents/loop.ts#L563), [`packages/harness/engines/vercel/loop.ts:1049`](../../packages/harness/engines/vercel/loop.ts#L1049), [`packages/harness/engines/vercel/loop.ts:848`](../../packages/harness/engines/vercel/loop.ts#L848), [`packages/harness/engines/vercel/loop.ts:899`](../../packages/harness/engines/vercel/loop.ts#L899), [`packages/harness/engines/vercel/loop.ts:959`](../../packages/harness/engines/vercel/loop.ts#L959) | [`go/adapter/agent/invoke.go:888`](../../go/adapter/agent/invoke.go#L888), [`go/adapter/eino/calls.go:103`](../../go/adapter/eino/calls.go#L103) | [`packages/harness/context/managed.ts:164`](../../packages/harness/context/managed.ts#L164), [`packages/harness/context/managed.ts:184`](../../packages/harness/context/managed.ts#L184), [`packages/harness/context/managed.ts:192`](../../packages/harness/context/managed.ts#L192), [`packages/harness/context/managed.ts:193`](../../packages/harness/context/managed.ts#L193), [`packages/harness/context/managed.ts:229`](../../packages/harness/context/managed.ts#L229), [`packages/harness/corpus.ts:168`](../../packages/harness/corpus.ts#L168), [`packages/harness/execution/controller.ts:269`](../../packages/harness/execution/controller.ts#L269), [`packages/harness/history/capture.ts:119`](../../packages/harness/history/capture.ts#L119), [`packages/harness/history/capture.ts:77`](../../packages/harness/history/capture.ts#L77), [`packages/harness/toolSources.ts:1295`](../../packages/harness/toolSources.ts#L1295), [`packages/harness/toolSources.ts:1298`](../../packages/harness/toolSources.ts#L1298) | [`go/context/managed.go:183`](../../go/context/managed.go#L183), [`go/context/managed.go:195`](../../go/context/managed.go#L195), [`go/context/managed.go:202`](../../go/context/managed.go#L202), [`go/context/managed.go:267`](../../go/context/managed.go#L267), [`go/context/managed.go:268`](../../go/context/managed.go#L268), [`go/context/managed.go:305`](../../go/context/managed.go#L305), [`go/context/managed.go:307`](../../go/context/managed.go#L307), [`go/context/managed.go:308`](../../go/context/managed.go#L308), [`go/context/output_boundary.go:55`](../../go/context/output_boundary.go#L55), [`go/context/output_boundary.go:57`](../../go/context/output_boundary.go#L57), [`go/context/output_boundary.go:59`](../../go/context/output_boundary.go#L59), [`go/context/output_boundary.go:60`](../../go/context/output_boundary.go#L60), [`go/context/sources.go:2112`](../../go/context/sources.go#L2112), [`go/context/sources.go:2113`](../../go/context/sources.go#L2113), [`go/context/sources.go:2117`](../../go/context/sources.go#L2117), [`go/context/sources.go:2120`](../../go/context/sources.go#L2120) | +| `tool_result` | [`packages/harness/context/managed.ts:199`](../../packages/harness/context/managed.ts#L199), [`packages/harness/engines/codex/index.ts:158`](../../packages/harness/engines/codex/index.ts#L158), [`packages/harness/engines/codex/index.ts:215`](../../packages/harness/engines/codex/index.ts#L215), [`packages/harness/engines/codex/index.ts:259`](../../packages/harness/engines/codex/index.ts#L259), [`packages/harness/engines/deepagents/loop.ts:437`](../../packages/harness/engines/deepagents/loop.ts#L437), [`packages/harness/engines/deepagents/loop.ts:470`](../../packages/harness/engines/deepagents/loop.ts#L470), [`packages/harness/engines/deepagents/loop.ts:474`](../../packages/harness/engines/deepagents/loop.ts#L474), [`packages/harness/engines/deepagents/loop.ts:534`](../../packages/harness/engines/deepagents/loop.ts#L534), [`packages/harness/engines/deepagents/loop.ts:538`](../../packages/harness/engines/deepagents/loop.ts#L538), [`packages/harness/engines/deepagents/loop.ts:553`](../../packages/harness/engines/deepagents/loop.ts#L553), [`packages/harness/engines/deepagents/loop.ts:564`](../../packages/harness/engines/deepagents/loop.ts#L564), [`packages/harness/engines/vercel/loop.ts:1000`](../../packages/harness/engines/vercel/loop.ts#L1000), [`packages/harness/engines/vercel/loop.ts:1005`](../../packages/harness/engines/vercel/loop.ts#L1005), [`packages/harness/engines/vercel/loop.ts:1051`](../../packages/harness/engines/vercel/loop.ts#L1051), [`packages/harness/engines/vercel/loop.ts:849`](../../packages/harness/engines/vercel/loop.ts#L849), [`packages/harness/engines/vercel/loop.ts:915`](../../packages/harness/engines/vercel/loop.ts#L915), [`packages/harness/engines/vercel/loop.ts:920`](../../packages/harness/engines/vercel/loop.ts#L920), [`packages/harness/engines/vercel/loop.ts:996`](../../packages/harness/engines/vercel/loop.ts#L996) | [`go/adapter/agent/invoke.go:899`](../../go/adapter/agent/invoke.go#L899), [`go/adapter/eino/calls.go:114`](../../go/adapter/eino/calls.go#L114), [`go/context/managed.go:206`](../../go/context/managed.go#L206), [`go/gate/session.go:355`](../../go/gate/session.go#L355) | [`packages/harness/context/managed.ts:165`](../../packages/harness/context/managed.ts#L165), [`packages/harness/context/managed.ts:184`](../../packages/harness/context/managed.ts#L184), [`packages/harness/context/managed.ts:205`](../../packages/harness/context/managed.ts#L205), [`packages/harness/context/managed.ts:228`](../../packages/harness/context/managed.ts#L228), [`packages/harness/context/managed.ts:229`](../../packages/harness/context/managed.ts#L229), [`packages/harness/corpus.ts:173`](../../packages/harness/corpus.ts#L173), [`packages/harness/corpus.ts:32`](../../packages/harness/corpus.ts#L32), [`packages/harness/execution/controller.ts:274`](../../packages/harness/execution/controller.ts#L274), [`packages/harness/history/capture.ts:119`](../../packages/harness/history/capture.ts#L119), [`packages/harness/history/capture.ts:77`](../../packages/harness/history/capture.ts#L77), [`packages/harness/toolSources.ts:1295`](../../packages/harness/toolSources.ts#L1295) | [`go/context/managed.go:183`](../../go/context/managed.go#L183), [`go/context/managed.go:208`](../../go/context/managed.go#L208), [`go/context/managed.go:217`](../../go/context/managed.go#L217), [`go/context/managed.go:269`](../../go/context/managed.go#L269), [`go/context/managed.go:270`](../../go/context/managed.go#L270), [`go/context/managed.go:291`](../../go/context/managed.go#L291), [`go/context/managed.go:305`](../../go/context/managed.go#L305), [`go/context/managed.go:310`](../../go/context/managed.go#L310), [`go/context/managed.go:311`](../../go/context/managed.go#L311), [`go/context/output_boundary.go:62`](../../go/context/output_boundary.go#L62), [`go/context/output_boundary.go:63`](../../go/context/output_boundary.go#L63), [`go/context/output_boundary.go:65`](../../go/context/output_boundary.go#L65), [`go/context/sources.go:2121`](../../go/context/sources.go#L2121), [`go/context/sources.go:2122`](../../go/context/sources.go#L2122), [`go/context/sources.go:2128`](../../go/context/sources.go#L2128), [`go/context/sources.go:2129`](../../go/context/sources.go#L2129), [`go/context/sources.go:2130`](../../go/context/sources.go#L2130), [`go/context/sources.go:2131`](../../go/context/sources.go#L2131), [`go/context/sources.go:2133`](../../go/context/sources.go#L2133), [`go/context/sources.go:2137`](../../go/context/sources.go#L2137), [`go/context/sources.go:2148`](../../go/context/sources.go#L2148) | +| `guardrail` | [`packages/harness/context/managed.ts:129`](../../packages/harness/context/managed.ts#L129), [`packages/harness/context/managed.ts:155`](../../packages/harness/context/managed.ts#L155), [`packages/harness/context/managed.ts:197`](../../packages/harness/context/managed.ts#L197), [`packages/harness/context/managed.ts:238`](../../packages/harness/context/managed.ts#L238), [`packages/harness/context/managed.ts:239`](../../packages/harness/context/managed.ts#L239), [`packages/harness/context/managed.ts:252`](../../packages/harness/context/managed.ts#L252), [`packages/harness/context/session.ts:1005`](../../packages/harness/context/session.ts#L1005), [`packages/harness/context/session.ts:275`](../../packages/harness/context/session.ts#L275), [`packages/harness/context/session.ts:298`](../../packages/harness/context/session.ts#L298), [`packages/harness/context/session.ts:454`](../../packages/harness/context/session.ts#L454), [`packages/harness/context/session.ts:506`](../../packages/harness/context/session.ts#L506), [`packages/harness/context/session.ts:798`](../../packages/harness/context/session.ts#L798), [`packages/harness/corpus.ts:64`](../../packages/harness/corpus.ts#L64), [`packages/harness/edits.ts:98`](../../packages/harness/edits.ts#L98), [`packages/harness/engines/contract.ts:727`](../../packages/harness/engines/contract.ts#L727), [`packages/harness/execution/controller.ts:214`](../../packages/harness/execution/controller.ts#L214), [`packages/harness/outputGuard.ts:46`](../../packages/harness/outputGuard.ts#L46), [`packages/harness/policy.ts:53`](../../packages/harness/policy.ts#L53), [`packages/harness/recordReader.ts:16`](../../packages/harness/recordReader.ts#L16), [`packages/harness/session.ts:472`](../../packages/harness/session.ts#L472), [`packages/harness/skills.ts:485`](../../packages/harness/skills.ts#L485), [`packages/harness/toolSources.ts:986`](../../packages/harness/toolSources.ts#L986) | [`go/adapter/agent/invoke.go:328`](../../go/adapter/agent/invoke.go#L328), [`go/adapter/eino/run.go:423`](../../go/adapter/eino/run.go#L423), [`go/adapter/policy.go:151`](../../go/adapter/policy.go#L151), [`go/adapter/policy.go:247`](../../go/adapter/policy.go#L247), [`go/adapter/wire/geminischema.go:329`](../../go/adapter/wire/geminischema.go#L329), [`go/context/controller.go:653`](../../go/context/controller.go#L653), [`go/context/corpus.go:243`](../../go/context/corpus.go#L243), [`go/context/critic.go:337`](../../go/context/critic.go#L337), [`go/context/edits.go:320`](../../go/context/edits.go#L320), [`go/context/live_capture.go:198`](../../go/context/live_capture.go#L198), [`go/context/managed.go:169`](../../go/context/managed.go#L169), [`go/context/managed.go:204`](../../go/context/managed.go#L204), [`go/context/managed.go:356`](../../go/context/managed.go#L356), [`go/context/managed.go:361`](../../go/context/managed.go#L361), [`go/context/managed.go:82`](../../go/context/managed.go#L82), [`go/context/memories.go:327`](../../go/context/memories.go#L327), [`go/context/output_guard.go:178`](../../go/context/output_guard.go#L178), [`go/context/plan_actions.go:512`](../../go/context/plan_actions.go#L512), [`go/context/policy_table.go:60`](../../go/context/policy_table.go#L60), [`go/context/records.go:230`](../../go/context/records.go#L230), [`go/context/runtime_actions.go:76`](../../go/context/runtime_actions.go#L76), [`go/context/session.go:1130`](../../go/context/session.go#L1130), [`go/context/session.go:1761`](../../go/context/session.go#L1761), [`go/context/session.go:2075`](../../go/context/session.go#L2075), [`go/context/skills.go:279`](../../go/context/skills.go#L279), [`go/context/skills.go:646`](../../go/context/skills.go#L646), [`go/context/sources.go:1061`](../../go/context/sources.go#L1061), [`go/context/sources.go:1165`](../../go/context/sources.go#L1165), [`go/context/sources.go:1291`](../../go/context/sources.go#L1291), [`go/context/subagents.go:41`](../../go/context/subagents.go#L41), [`go/contract/records.go:72`](../../go/contract/records.go#L72), [`go/gate/gate.go:125`](../../go/gate/gate.go#L125) | [`packages/harness/context/managed.ts:252`](../../packages/harness/context/managed.ts#L252), [`packages/harness/context/managed.ts:36`](../../packages/harness/context/managed.ts#L36), [`packages/harness/corpus.ts:28`](../../packages/harness/corpus.ts#L28), [`packages/harness/delegation.ts:723`](../../packages/harness/delegation.ts#L723), [`packages/harness/delegation.ts:731`](../../packages/harness/delegation.ts#L731), [`packages/harness/delegation.ts:733`](../../packages/harness/delegation.ts#L733) | [`go/adapter/delegate/batch.go:330`](../../go/adapter/delegate/batch.go#L330), [`go/adapter/delegate/batch.go:343`](../../go/adapter/delegate/batch.go#L343), [`go/adapter/delegate/batch.go:356`](../../go/adapter/delegate/batch.go#L356), [`go/context/output_boundary.go:125`](../../go/context/output_boundary.go#L125), [`go/context/output_boundary.go:131`](../../go/context/output_boundary.go#L131), [`go/context/session.go:1550`](../../go/context/session.go#L1550) | | `thinking_unavailable` | [`packages/harness/thinking.ts:574`](../../packages/harness/thinking.ts#L574) | [`go/adapter/wire/thinking.go:470`](../../go/adapter/wire/thinking.go#L470) | [`packages/harness/thinking.ts:431`](../../packages/harness/thinking.ts#L431) | — | | `critic_decided` | [`packages/harness/criticSwitch.ts:263`](../../packages/harness/criticSwitch.ts#L263) | [`go/context/critic.go:381`](../../go/context/critic.go#L381) | [`packages/harness/context/managed.ts:235`](../../packages/harness/context/managed.ts#L235) | [`go/context/managed.go:326`](../../go/context/managed.go#L326) | | `critique` | [`packages/harness/refutation.ts:728`](../../packages/harness/refutation.ts#L728) | [`go/adapter/turn/refutation.go:975`](../../go/adapter/turn/refutation.go#L975) | [`packages/harness/context/managed.ts:220`](../../packages/harness/context/managed.ts#L220), [`packages/harness/corpus.ts:31`](../../packages/harness/corpus.ts#L31) | [`go/context/managed.go:251`](../../go/context/managed.go#L251), [`go/context/managed.go:252`](../../go/context/managed.go#L252), [`go/context/managed.go:261`](../../go/context/managed.go#L261) | @@ -99,16 +99,16 @@ Consumer entries identify explicit kind reads, not delivery guarantees. Generic | `output_guarded` | [`packages/harness/outputGuard.ts:41`](../../packages/harness/outputGuard.ts#L41) | [`go/context/output_guard.go:167`](../../go/context/output_guard.go#L167) | [`packages/harness/delegation.ts:722`](../../packages/harness/delegation.ts#L722) | [`go/adapter/delegate/batch.go:322`](../../go/adapter/delegate/batch.go#L322), [`go/adapter/delegate/batch.go:327`](../../go/adapter/delegate/batch.go#L327) | | `export_written` | [`packages/harness/records.ts:122`](../../packages/harness/records.ts#L122) | [`go/context/records.go:286`](../../go/context/records.go#L286) | — | — | | `steered` | [`packages/harness/execution/controller.ts:231`](../../packages/harness/execution/controller.ts#L231) | [`go/context/controller.go:693`](../../go/context/controller.go#L693) | — | — | -| `connection_switched` | [`packages/harness/context/session.ts:1121`](../../packages/harness/context/session.ts#L1121), [`packages/harness/context/session.ts:380`](../../packages/harness/context/session.ts#L380), [`packages/harness/engines/deepagents/loop.ts:604`](../../packages/harness/engines/deepagents/loop.ts#L604), [`packages/harness/engines/vercel/loop.ts:1094`](../../packages/harness/engines/vercel/loop.ts#L1094) | [`go/adapter/agent/invoke.go:299`](../../go/adapter/agent/invoke.go#L299), [`go/adapter/eino/run.go:440`](../../go/adapter/eino/run.go#L440) | — | — | +| `connection_switched` | [`packages/harness/context/session.ts:1122`](../../packages/harness/context/session.ts#L1122), [`packages/harness/context/session.ts:380`](../../packages/harness/context/session.ts#L380), [`packages/harness/engines/deepagents/loop.ts:604`](../../packages/harness/engines/deepagents/loop.ts#L604), [`packages/harness/engines/vercel/loop.ts:1094`](../../packages/harness/engines/vercel/loop.ts#L1094) | [`go/adapter/agent/invoke.go:299`](../../go/adapter/agent/invoke.go#L299), [`go/adapter/eino/run.go:440`](../../go/adapter/eino/run.go#L440) | — | — | | `usage` | [`packages/harness/context/managed.ts:215`](../../packages/harness/context/managed.ts#L215), [`packages/harness/context/managed.ts:228`](../../packages/harness/context/managed.ts#L228), [`packages/harness/context/managed.ts:240`](../../packages/harness/context/managed.ts#L240), [`packages/harness/context/managed.ts:246`](../../packages/harness/context/managed.ts#L246), [`packages/harness/context/managed.ts:257`](../../packages/harness/context/managed.ts#L257), [`packages/harness/context/managed.ts:268`](../../packages/harness/context/managed.ts#L268) | [`go/context/managed.go:144`](../../go/context/managed.go#L144), [`go/context/managed.go:242`](../../go/context/managed.go#L242), [`go/context/managed.go:299`](../../go/context/managed.go#L299), [`go/context/managed.go:409`](../../go/context/managed.go#L409) | [`packages/harness/delegation.ts:720`](../../packages/harness/delegation.ts#L720) | [`go/adapter/delegate/batch.go:305`](../../go/adapter/delegate/batch.go#L305), [`go/adapter/delegate/batch.go:311`](../../go/adapter/delegate/batch.go#L311), [`go/context/managed.go:173`](../../go/context/managed.go#L173) | | `recorded` | [`packages/harness/corpus.ts:62`](../../packages/harness/corpus.ts#L62) | [`go/context/corpus.go:236`](../../go/context/corpus.go#L236) | — | — | -| `plan_revised` | [`packages/harness/execution/controller.ts:356`](../../packages/harness/execution/controller.ts#L356), [`packages/harness/execution/controller.ts:397`](../../packages/harness/execution/controller.ts#L397) | [`go/context/controller.go:1355`](../../go/context/controller.go#L1355), [`go/context/plan_actions.go:432`](../../go/context/plan_actions.go#L432) | [`packages/harness/history/query.ts:22`](../../packages/harness/history/query.ts#L22), [`packages/harness/storage/writer.ts:527`](../../packages/harness/storage/writer.ts#L527) | [`go/context/run_writer.go:1924`](../../go/context/run_writer.go#L1924), [`go/context/run_writer.go:1925`](../../go/context/run_writer.go#L1925), [`go/context/run_writer.go:1942`](../../go/context/run_writer.go#L1942), [`go/context/run_writer.go:1943`](../../go/context/run_writer.go#L1943) | -| `plan_departed` | [`packages/harness/execution/controller.ts:382`](../../packages/harness/execution/controller.ts#L382) | [`go/context/plan_actions.go:365`](../../go/context/plan_actions.go#L365) | [`packages/harness/history/query.ts:23`](../../packages/harness/history/query.ts#L23), [`packages/harness/storage/writer.ts:527`](../../packages/harness/storage/writer.ts#L527) | [`go/context/run_writer.go:1927`](../../go/context/run_writer.go#L1927), [`go/context/run_writer.go:1928`](../../go/context/run_writer.go#L1928), [`go/context/run_writer.go:1945`](../../go/context/run_writer.go#L1945), [`go/context/run_writer.go:1946`](../../go/context/run_writer.go#L1946) | -| `plan_completion_refused` | [`packages/harness/execution/controller.ts:392`](../../packages/harness/execution/controller.ts#L392) | [`go/context/plan_actions.go:418`](../../go/context/plan_actions.go#L418) | [`packages/harness/history/query.ts:24`](../../packages/harness/history/query.ts#L24), [`packages/harness/storage/writer.ts:527`](../../packages/harness/storage/writer.ts#L527) | [`go/context/run_writer.go:1930`](../../go/context/run_writer.go#L1930), [`go/context/run_writer.go:1931`](../../go/context/run_writer.go#L1931), [`go/context/run_writer.go:1948`](../../go/context/run_writer.go#L1948), [`go/context/run_writer.go:1949`](../../go/context/run_writer.go#L1949) | -| `plan_drift_decided` | [`packages/harness/execution/controller.ts:104`](../../packages/harness/execution/controller.ts#L104) | [`go/context/plan_validation.go:274`](../../go/context/plan_validation.go#L274) | [`packages/harness/context/session.ts:1024`](../../packages/harness/context/session.ts#L1024), [`packages/harness/recordReader.ts:102`](../../packages/harness/recordReader.ts#L102), [`packages/harness/storage/nativePlanPause.ts:78`](../../packages/harness/storage/nativePlanPause.ts#L78), [`packages/harness/storage/writer.ts:526`](../../packages/harness/storage/writer.ts#L526), [`packages/harness/storage/writer.ts:527`](../../packages/harness/storage/writer.ts#L527), [`packages/harness/storage/writer.ts:653`](../../packages/harness/storage/writer.ts#L653) | [`go/context/native_plan_pause.go:188`](../../go/context/native_plan_pause.go#L188), [`go/context/native_plan_pause.go:237`](../../go/context/native_plan_pause.go#L237), [`go/context/native_plan_pause.go:464`](../../go/context/native_plan_pause.go#L464), [`go/context/native_plan_pause.go:473`](../../go/context/native_plan_pause.go#L473), [`go/context/run_writer.go:1933`](../../go/context/run_writer.go#L1933), [`go/context/run_writer.go:1934`](../../go/context/run_writer.go#L1934), [`go/context/run_writer.go:1951`](../../go/context/run_writer.go#L1951), [`go/context/run_writer.go:1952`](../../go/context/run_writer.go#L1952), [`go/contract/records.go:583`](../../go/contract/records.go#L583) | -| `route_decided` | [`packages/harness/storage/turnRouteOwner.ts:71`](../../packages/harness/storage/turnRouteOwner.ts#L71) | [`go/context/turn_route_owner.go:230`](../../go/context/turn_route_owner.go#L230) | [`packages/harness/recordReader.ts:102`](../../packages/harness/recordReader.ts#L102), [`packages/harness/storage/turnRouteOwner.ts:71`](../../packages/harness/storage/turnRouteOwner.ts#L71) | [`go/context/run_writer.go:1918`](../../go/context/run_writer.go#L1918), [`go/context/run_writer.go:1919`](../../go/context/run_writer.go#L1919), [`go/context/run_writer.go:942`](../../go/context/run_writer.go#L942), [`go/context/run_writer.go:943`](../../go/context/run_writer.go#L943), [`go/context/turn_route_owner.go:230`](../../go/context/turn_route_owner.go#L230), [`go/contract/records.go:583`](../../go/contract/records.go#L583) | -| `route_widened` | [`packages/harness/storage/turnRouteOwner.ts:71`](../../packages/harness/storage/turnRouteOwner.ts#L71) | [`go/context/turn_route_owner.go:232`](../../go/context/turn_route_owner.go#L232) | [`packages/harness/recordReader.ts:102`](../../packages/harness/recordReader.ts#L102), [`packages/harness/storage/turnRouteOwner.ts:71`](../../packages/harness/storage/turnRouteOwner.ts#L71), [`packages/harness/storage/writer.ts:598`](../../packages/harness/storage/writer.ts#L598), [`packages/harness/storage/writer.ts:615`](../../packages/harness/storage/writer.ts#L615) | [`go/context/run_writer.go:1921`](../../go/context/run_writer.go#L1921), [`go/context/run_writer.go:1922`](../../go/context/run_writer.go#L1922), [`go/context/run_writer.go:909`](../../go/context/run_writer.go#L909), [`go/context/run_writer.go:910`](../../go/context/run_writer.go#L910), [`go/context/run_writer.go:915`](../../go/context/run_writer.go#L915), [`go/context/run_writer.go:928`](../../go/context/run_writer.go#L928), [`go/context/run_writer.go:945`](../../go/context/run_writer.go#L945), [`go/context/run_writer.go:946`](../../go/context/run_writer.go#L946), [`go/context/turn_route_owner.go:232`](../../go/context/turn_route_owner.go#L232), [`go/context/turn_route_owner.go:246`](../../go/context/turn_route_owner.go#L246), [`go/context/turn_route_owner.go:247`](../../go/context/turn_route_owner.go#L247), [`go/context/turn_route_owner.go:251`](../../go/context/turn_route_owner.go#L251), [`go/context/turn_route_owner.go:753`](../../go/context/turn_route_owner.go#L753), [`go/contract/records.go:583`](../../go/contract/records.go#L583) | -| `repeat_detected` | [`packages/harness/repeatTools.ts:36`](../../packages/harness/repeatTools.ts#L36) | [`go/context/repeat_tools.go:99`](../../go/context/repeat_tools.go#L99) | [`packages/harness/recordReader.ts:102`](../../packages/harness/recordReader.ts#L102) | [`go/context/run_writer.go:1915`](../../go/context/run_writer.go#L1915), [`go/context/run_writer.go:1916`](../../go/context/run_writer.go#L1916), [`go/contract/records.go:583`](../../go/contract/records.go#L583) | +| `plan_revised` | [`packages/harness/execution/controller.ts:361`](../../packages/harness/execution/controller.ts#L361), [`packages/harness/execution/controller.ts:402`](../../packages/harness/execution/controller.ts#L402) | [`go/context/controller.go:1363`](../../go/context/controller.go#L1363), [`go/context/plan_actions.go:432`](../../go/context/plan_actions.go#L432) | [`packages/harness/history/query.ts:22`](../../packages/harness/history/query.ts#L22), [`packages/harness/storage/writer.ts:527`](../../packages/harness/storage/writer.ts#L527) | [`go/context/run_writer.go:1944`](../../go/context/run_writer.go#L1944), [`go/context/run_writer.go:1945`](../../go/context/run_writer.go#L1945), [`go/context/run_writer.go:1962`](../../go/context/run_writer.go#L1962), [`go/context/run_writer.go:1963`](../../go/context/run_writer.go#L1963) | +| `plan_departed` | [`packages/harness/execution/controller.ts:387`](../../packages/harness/execution/controller.ts#L387) | [`go/context/plan_actions.go:365`](../../go/context/plan_actions.go#L365) | [`packages/harness/history/query.ts:23`](../../packages/harness/history/query.ts#L23), [`packages/harness/storage/writer.ts:527`](../../packages/harness/storage/writer.ts#L527) | [`go/context/run_writer.go:1947`](../../go/context/run_writer.go#L1947), [`go/context/run_writer.go:1948`](../../go/context/run_writer.go#L1948), [`go/context/run_writer.go:1965`](../../go/context/run_writer.go#L1965), [`go/context/run_writer.go:1966`](../../go/context/run_writer.go#L1966) | +| `plan_completion_refused` | [`packages/harness/execution/controller.ts:397`](../../packages/harness/execution/controller.ts#L397) | [`go/context/plan_actions.go:418`](../../go/context/plan_actions.go#L418) | [`packages/harness/history/query.ts:24`](../../packages/harness/history/query.ts#L24), [`packages/harness/storage/writer.ts:527`](../../packages/harness/storage/writer.ts#L527) | [`go/context/run_writer.go:1950`](../../go/context/run_writer.go#L1950), [`go/context/run_writer.go:1951`](../../go/context/run_writer.go#L1951), [`go/context/run_writer.go:1968`](../../go/context/run_writer.go#L1968), [`go/context/run_writer.go:1969`](../../go/context/run_writer.go#L1969) | +| `plan_drift_decided` | [`packages/harness/execution/controller.ts:104`](../../packages/harness/execution/controller.ts#L104) | [`go/context/plan_validation.go:274`](../../go/context/plan_validation.go#L274) | [`packages/harness/context/session.ts:1025`](../../packages/harness/context/session.ts#L1025), [`packages/harness/recordReader.ts:102`](../../packages/harness/recordReader.ts#L102), [`packages/harness/storage/nativePlanPause.ts:78`](../../packages/harness/storage/nativePlanPause.ts#L78), [`packages/harness/storage/writer.ts:526`](../../packages/harness/storage/writer.ts#L526), [`packages/harness/storage/writer.ts:527`](../../packages/harness/storage/writer.ts#L527), [`packages/harness/storage/writer.ts:653`](../../packages/harness/storage/writer.ts#L653) | [`go/context/native_plan_pause.go:188`](../../go/context/native_plan_pause.go#L188), [`go/context/native_plan_pause.go:237`](../../go/context/native_plan_pause.go#L237), [`go/context/native_plan_pause.go:464`](../../go/context/native_plan_pause.go#L464), [`go/context/native_plan_pause.go:473`](../../go/context/native_plan_pause.go#L473), [`go/context/run_writer.go:1953`](../../go/context/run_writer.go#L1953), [`go/context/run_writer.go:1954`](../../go/context/run_writer.go#L1954), [`go/context/run_writer.go:1971`](../../go/context/run_writer.go#L1971), [`go/context/run_writer.go:1972`](../../go/context/run_writer.go#L1972), [`go/contract/records.go:583`](../../go/contract/records.go#L583) | +| `route_decided` | [`packages/harness/storage/turnRouteOwner.ts:71`](../../packages/harness/storage/turnRouteOwner.ts#L71) | [`go/context/turn_route_owner.go:230`](../../go/context/turn_route_owner.go#L230) | [`packages/harness/recordReader.ts:102`](../../packages/harness/recordReader.ts#L102), [`packages/harness/storage/turnRouteOwner.ts:71`](../../packages/harness/storage/turnRouteOwner.ts#L71) | [`go/context/run_writer.go:1938`](../../go/context/run_writer.go#L1938), [`go/context/run_writer.go:1939`](../../go/context/run_writer.go#L1939), [`go/context/run_writer.go:942`](../../go/context/run_writer.go#L942), [`go/context/run_writer.go:943`](../../go/context/run_writer.go#L943), [`go/context/turn_route_owner.go:230`](../../go/context/turn_route_owner.go#L230), [`go/contract/records.go:583`](../../go/contract/records.go#L583) | +| `route_widened` | [`packages/harness/storage/turnRouteOwner.ts:71`](../../packages/harness/storage/turnRouteOwner.ts#L71) | [`go/context/turn_route_owner.go:232`](../../go/context/turn_route_owner.go#L232) | [`packages/harness/recordReader.ts:102`](../../packages/harness/recordReader.ts#L102), [`packages/harness/storage/turnRouteOwner.ts:71`](../../packages/harness/storage/turnRouteOwner.ts#L71), [`packages/harness/storage/writer.ts:598`](../../packages/harness/storage/writer.ts#L598), [`packages/harness/storage/writer.ts:615`](../../packages/harness/storage/writer.ts#L615) | [`go/context/run_writer.go:1941`](../../go/context/run_writer.go#L1941), [`go/context/run_writer.go:1942`](../../go/context/run_writer.go#L1942), [`go/context/run_writer.go:909`](../../go/context/run_writer.go#L909), [`go/context/run_writer.go:910`](../../go/context/run_writer.go#L910), [`go/context/run_writer.go:915`](../../go/context/run_writer.go#L915), [`go/context/run_writer.go:928`](../../go/context/run_writer.go#L928), [`go/context/run_writer.go:945`](../../go/context/run_writer.go#L945), [`go/context/run_writer.go:946`](../../go/context/run_writer.go#L946), [`go/context/turn_route_owner.go:232`](../../go/context/turn_route_owner.go#L232), [`go/context/turn_route_owner.go:246`](../../go/context/turn_route_owner.go#L246), [`go/context/turn_route_owner.go:247`](../../go/context/turn_route_owner.go#L247), [`go/context/turn_route_owner.go:251`](../../go/context/turn_route_owner.go#L251), [`go/context/turn_route_owner.go:753`](../../go/context/turn_route_owner.go#L753), [`go/contract/records.go:583`](../../go/contract/records.go#L583) | +| `repeat_detected` | [`packages/harness/repeatTools.ts:36`](../../packages/harness/repeatTools.ts#L36) | [`go/context/repeat_tools.go:99`](../../go/context/repeat_tools.go#L99) | [`packages/harness/recordReader.ts:102`](../../packages/harness/recordReader.ts#L102) | [`go/context/run_writer.go:1935`](../../go/context/run_writer.go#L1935), [`go/context/run_writer.go:1936`](../../go/context/run_writer.go#L1936), [`go/contract/records.go:583`](../../go/contract/records.go#L583) | ## Every kind with its members diff --git a/go/README.md b/go/README.md index 0e6cf144..d564bf63 100644 --- a/go/README.md +++ b/go/README.md @@ -106,6 +106,17 @@ name, so a host opens its gate with `runcontext.OfferedHostTools(...)`, beside t context tools. `runcontext.ToolListDigest` is the digest a host pins when the person approves a server's list. +An external read's result (a tool whose taxonomy is `read-external`, checked by its source's +`VerifyReceipt` or `GatewayReceipt`) is kept only once its receipt verifies (ADR-0027's amendment, +agent#242). Until then nothing of it is retained in the ledger or the read cache, recorded as a +durable result or observation, listed or returned by `list_context`, `read_context`, `read_window` or +`search`, shown in a later run's index, or offered or accepted as Plan evidence. A rejected, missing or +expired receipt leaves the call inspectable as a failed operation, never as data: its `tool_result` +refusal (`tool-failed`, outcome `unknown`, not retried), its durable row (`unknown`, that failure, no +result) and, where the run lists its operations (the API adapter), its operation record +(` · failed`). A checkpoint written while the check runs +holds none of the result, and a call checked alongside another keeps only its own outcome. + Identity is `person`, `service` or `connection` with a recognisable label, never a credential; it defaults to a connection labelled by the source id. `ContextualSession` adds its digest, places `runs as: