`SdkInferencePort` runs one Claude Agent SDK query per round through a Node sidecar and returns it as one `InferenceOutput`. It prepares through the same `prepare_invocation` the connector port uses, so there is one identity scheme and every `integrity_is_valid` variant is unchanged. The sidecar computes no tool result. Every call is answered by `ToolResultOracle`, which is the lane's own evaluator fold replayed over the calls made so far — the same function that will recompute the string at re-derivation. A lane lends its oracle keyed by the prepared request id immediately before `infer`; the connector port ignores the lend. Rust owns the transcript lowering, the receipt digest, and the fault disposition. The sidecar names a closed set of reasons and cannot assert an integrity violation, a request identity, or a tool result. `open_inference` routes each configured model: a `GHOSTLIGHT_SDK_MODEL_PREFIX` model reaches the SDK port, anything else the connector, and a model no built backend claims fails at open rather than at its first tick. Ghostlight reads no credential for this transport. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
70 B
70 B