Assess the claims Compare · Walker
Code compares. No model judges. It catches what the record can contradict.
1 Calling a tool
The model picks a tool and fills in its inputs.
| Check | Compares | Who decides | What happens |
|---|
Argument schemainputSchema | The arguments against the tool’s schema | Code | Rejected, with the reason. |
|---|
Permission policyPermissionPolicy | The call against your policy | Code | Denied or halted. |
|---|
Check incheckIn | The call against your rule, then a person | Code, then a person | Pauses for approval. |
|---|
Ask or assumeaskOrAssume | A missing value against the tool’s rule | Code | Asks once before anything runs, or fills it in and says so. |
|---|
Where a value came fromargumentSources | The source the model cites against the person’s words or a result | Code, when the model declares | Runs, asks or flags. |
|---|
Made-up tool inputsargumentsFrom | An ID the model passes against what it was shown | Code | Recorded only. The tool still runs. |
|---|
Which tool to call stays the model’s choice, and this is the thinnest part. An unknown tool is refused. The rest is recorded.
2 Reading a result
A tool returns something, and the model decides what it means.
| Check | Compares | Who decides | What happens |
|---|
Declared limitsabsent(), coverage() | What the tool says it checked and skipped | The tool declares, and code reads it | A reason on the standing. |
|---|
| Empty result | An empty result with nothing declared | Code | A reason on the standing. |
|---|
Time windowperiod | The period asked against the period held | Code | A reason on the standing. |
|---|
Column typesresultColumns | Rows against the declared columns | Code | Off by default. Warns, or refuses the rows. |
|---|
Conflicting readings.findings() | Two readings the model stood on for one fact | Code, when the model declares | A reason on the standing. |
|---|
A judge on tool results.findings({ judge }) | The result against the model’s proposition | A classifier | Filed apart. It never sets the standing. |
|---|
3 Giving the answer
The model says what it found.
| Check | Compares | Who decides | What happens |
|---|
Answer shape.outputSchema() | The answer against your parser | Code | No retry by default. { retries: N } gives N corrective turns. |
|---|
Invented values.namesAndNumbersFromEvidence() | Long numbers and IDs against tool results. Small numbers are skipped | Code | Flags it, gives one more turn, or refuses, by posture. |
|---|
Contradiction.claims() | A structured field against a fact the tool marked | Code | Recorded on its own. Withheld when an enforcing check lists it. |
|---|
Did it run at allcontext.toolCalls | The answer against the tools that ran | Your code | Through your check. |
|---|
Code shownTool.script | Code in the answer against the program submitted | Code | Marked unmatched. |
|---|
Steps left undoneskill steps | The answer against a skill’s declared steps | Code | A reason on the standing. |
|---|
“Not found” stretched too far.negativeClaims() | “None” against what the search covered | Code | Opt-in and unmeasured. Not recommended yet. |
|---|
Your own rule.answerValidation() | Anything you write | Your code | Enforce withholds. Observe records. The only path to known. |
|---|