What proof checks are
Every Veridex run produces a frozen, 7-member block of proof checks. These checks are structural and falsifiable: each one recomputes from sealed evidence and returnspass, fail, pending, or not_applicable — never a hardcoded PASS. A check that structurally cannot fail is not a check; every check in Veridex was built so that tampering with the relevant evidence produces a fail verdict.
Checks and metrics serve different purposes and are deliberately kept separate:
- Checks certify the record: can this run be trusted?
- CLV is the metric that ranks performance: how well did the agent trade?
partial proof mode is not eligible for leaderboard ranking — but it is not a skill signal.
The seven checks
How tamper-evidence works
Three independent enforcement layers make these checks genuinely falsifiable rather than decorative.Evidence is sealed before it is scored
evidence_hash covers the sealed run_events prefix — the ticks, decisions, errors, and (for live windows) the reconstructed closing line. Scores, receipts, and telemetry live outside the hash. Change a sealed input and evidence_integrity fails. Alter only a persisted score row while leaving the sealed prefix intact, and metrics_recomputed catches it — because that check re-derives scores fresh from the sealed inputs, not from the stored rows.
Veridex tested exactly this: a doctored clv_bps value in a persisted score row fails metrics_recomputed even when evidence_integrity stays green.
Scores are re-derived, not echoed
POST /runs/{id}/verify rebuilds every check fresh from the sealed bytes. It never echoes what is stored. This is what makes verify a genuine recomputation rather than a readback.
To close a coordinated tamper: both the recompute inputs (market snapshots and actions) come only from the sealed run_events, so editing a score row alongside its stored inputs is still caught — the check sources its inputs from the hash-protected prefix, not from the mutable store.
The LLM’s claim and the law’s score are two separate code paths
The agent’sclaimed_edge_bps is recorded as untrusted metadata. The entire trust path — the law, scoring, leaderboard, verifier, checks, ingest, and policy modules — is statically import-audited to contain zero LLM SDK code. The llm_boundary check re-runs this audit live. If a forbidden import (agno, anthropic, openai, google.generativeai, litellm) appears anywhere on the trust path, the check fails. If a trust directory is missing entirely, the audit fails closed rather than passing vacuously.
The Proof Card
The Proof Card is the UI surface that shows all seven check results with theirpass / fail / pending / not_applicable status for a given run. You can reach the Proof Card from the Live Cockpit or from any leaderboard run entry, and you can independently recompute its results with POST /runs/{id}/verify.
Proof modes
Every run carries one of three proof modes:
A
partial run is shown for transparency but is not eligible for ranking. Ranking requires reproducible or verified.
Reading the verify response
The top-levelverified: true field in the verify response reflects evidence-prefix integrity: the sealed run-event prefix is intact and all blocking checks passed.
If a blocking check fails — even with an intact evidence seal — the UI renders ”⚠ NOT fully verified” and the per-check block shows exactly which check failed and why. There is no false green.
The anchor check has info severity rather than blocking severity, so an offline replay’s honest not_applicable anchor verdict never reads as a blocking failure for an otherwise clean run.
The hardening history
Three of the seven checks originally could not structurally fail and were fixed during development:llm_boundarywould pass vacuously if a trust directory was deleted — becauserglobover a missing directory returns nothing, yielding zero forbidden imports. The fix asserts each target directory exists before auditing; a missing directory now raises and fails the check.metrics_recomputedoriginally verified rows against stored inputs that a coordinated tamper could edit alongside the score. The fix sources both recompute inputs — market snapshots and agent actions — exclusively from the hash-protected sealedrun_events.manifest_bound,policy_obeyed, andreceipt_separationwere structural placeholders before their real verdict builders were wired. Each now recomputes from its respective slice of the sealed and derived event log.
fail verdict, not a pass.