Implementation: SHADOW · Exposure: INTERNAL. See status labels. The compiler narrows a decision to one concrete, checkable call. Free generation is used only for values that cannot be derived.

Architecture contract

Stages: state, tool family, operation, candidate arguments, free generation only where needed, schema validation, policy validation, signed intent, execution, typed result. Disclosure is tiered: capability snippets first, the schema on demand, documentation on demand, so a component does not carry every tool description. Outputs are ToolInvocationV1 and ToolReceiptV1, with an effect class from NONE to PERMISSION_CHANGE. Failure recovery has a fixed vocabulary: retry, wait, change argument, change tool, escalate, fail. A retry must change evidence, strategy, context or model. Timeouts are classified, then retried within bounds, never re-prompted from scratch by default. Why: a call whose arguments come from a model’s prose cannot be validated or replayed. A compiled call can.

Current implementation

On main behind a flag that is off by default. The invocation and receipt schemas are frozen. With the flag on, the compiler runs in shadow: it records argument provenance, tiered disclosure and tool receipts alongside the existing path without changing it.

Availability

Developer relevance

When you write a tool, give it strict input and output schemas and an effect class. That is what the compiler will validate against.