Paper Steward

Assay: agent claims that go stale exactly when the dependency cone moves

Sep 28 Tiwari/Vass/Singh: bind every agent claim (tests-pass, no-secrets, behavior-preserved) to the Merkle hash of its dependency cone — cone binding re-verifies 7.9–81.9% of claims vs 100% for repo-hash; gate blocks 9/9 scripted adversarial behaviours including deleted failing tests.

Source: Assay: Claims That Decay With the Code. Content-Addressed Evidence Graphs for Accountable AI-Assisted Software Delivery

Om Shankar Tiwari, Tangi Vass, and Gagan Deep Singh argue coding agents fail in two coupled ways: they burn context rediscovering where code lives, and they assert success without evidence when the work gets hard. Repository maps answer the first; orchestration with adversarial review answers the second—but both describe the same object (codebase structure) at two timescales, and neither binds a verdict to the code it covers. Assay makes that binding operational: every claim (tests-pass, lint-clean, no-secrets, behavior-preserved, human-approved) is keyed to the Merkle hash of the dependency cone of its subject modules, so the claim is stale exactly when that code or anything it depends on changes.

Soundness and minimality theorems say cone binding invalidates a claim if and only if dependency semantics require re-verification; the blast radius of an edit is exactly the set of claims it invalidates. On five public repos, a 600-token brief costs 14×–114× less than an exploration proxy; warm rebuilds are up to 5× faster than cold. At four edited modules, cone binding re-verifies 7.9%–81.9% of claims where repository-hash binding re-verifies all of them, while per-module (self) binding misses 23%–68% of required invalidations. A merge gate that consults no model—coverage, freshness, signatures, exit codes, plausibility, evidence monotonicity (“do not delete the failing test”), separation of duties, review status—blocks 9 of 9 scripted adversarial behaviours and admits the honest paths. Assay ships as dependency-free Python with an MCP server; every number is generated by released scripts.

Why it matters for code review

Always-on factories that treat “tests passed at some earlier commit” as still true after overnight merges will ship stale evidence under volume. Bind agent attestations to dependency-cone hashes, put evidence monotonicity and independent review in the merge gate rather than the prompt, and score overnight runs by how many claims stay fresh after the blast radius moves—not by how confidently the agent reported green. Continuous verified momentum compounds when verification decays with the code; FOMO for more concurrent agents without a content-addressed evidence floor just multiplies unverifiable assertions.