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 areToolInvocationV1 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.