Skip to content

Run Checks (Proof)

Proof is an experimental evidence layer. Model text cannot mark a run verified. Only a valid operator-controlled contract with passing assertions can do that.

Terminal window
odinn experimental enable proof --confirm-impact

Restart a running gateway after changing the gate.

A Proof contract can check:

  • files under the run workspace;
  • bounded HTTP GET or HEAD responses;
  • fixed Git working-tree conditions;
  • an exact operator-allowlisted command argument vector.

Command assertions are denied by default. Allowing only an executable name is not enough; the complete argument vector must match an operator-owned entry. Approved commands run without a shell, receive a minimal environment without provider credentials, and have bounded output and deadlines.

Validate the contract before using it:

Terminal window
odinn experimental proof contract validate ./contract.yml

Run checks against a recorded run:

Terminal window
odinn experimental proof run <run-id> --contract ./contract.yml
odinn experimental proof show <run-id>

Evidence is stored in the content-addressed run ledger. A failed assertion records a failed verification; it does not disappear as an ordinary model response.

Advanced: contract shape

A version 1 contract contains an identifier, the target run, and bounded assertions. File and working-directory paths are confined to the run workspace. Command output and HTTP response evidence are size-limited. See the Task contract reference for a complete example.

HTTP Proof is loopback-only by default so an untrusted contract cannot become a generic request-forgery primitive. Verification proves only the specified assertions at the observed time. It does not prove arbitrary semantic correctness or reverse external effects.