Local CLI that compares an agent completion claim to an independent, bounded filesystem readback. Tool success without readback is unknown, not pass. Ten local source adapters; hosted evaluation, history, and billing stay disabled.
Demand is a hypothesis, not validated paid demand. This page does not claim rankings, customer counts, or production verification of remote systems.
How it works
Give the CLI a versioned JSON envelope with a claim {source_ref, resource_ref, mutation_at, expected}. The matching local adapter independently reads the bound resource with symlink rejection, size bounds, and identity-at-open checks, then the evaluator compares that readback to the claim.
- pass — independent readback matches the claim, with a valid capture time.
- fail — wrong source, wrong resource, or value mismatch.
- unknown — missing binding, non-independent capture, stale timestamp, or invalid input. Distinct from fail. Tool success alone is never proof.
Use it locally
No account is required for the local CLI and fixtures. Conversion action: run the fixture matrix on your machine.
npm test
node src/cli.mjs fixtures/pass.json # exit 0
node src/cli.mjs fixtures/fail-mismatch.json # exit 1
node src/cli.mjs fixtures/failed.json # exit 2
node src/cli.mjs fixtures/pass.json --markdown
Honest limits
Adapters prove observed local filesystem equality at read time only. They do not authenticate authorship, prove remote state, survive concurrent writes, or replace an OS sandbox. Raw expected values, paths, and file bytes are hashed or omitted in reports. Remote/network adapters are out of scope. See every adapter and its documented limit.