pub fn blocking_errors(
proposal: &ActionProposal,
state: Option<&HashMap<String, Value>>,
tools: &HashMap<String, ToolSchema>,
max_actions: usize,
) -> Vec<VerifyIssue>Expand description
Run static verification and return the blocking errors, if any.
Shared by StaticVerificationGate and the executor’s replan quality gate so
the two verification points cannot disagree about what counts as fatal — they
previously did, with the replan path blocking on the loop heuristic this gate
deliberately treats as advisory.
An empty tools map means “this runtime doesn’t declare its tools”, not
“no tool exists”. Passing it through would flag every tool_call as
unregistered and reject every proposal, turning a safety check into a denial of
service for any embedder that executes via callback without registering
schemas. In that case tool-existence and parameter-schema checking are skipped.
Note Runtime::restore_checkpoint rebuilds the registry with name-only schemas
(parameters: {}), so the map stays non-empty and existence still checks, but
parameter validation silently becomes a no-op after a restore.