A census of ten hooks drawn by pre-declared rule from the
live v4 hook population, run cold, twice. On the first
cold pass, ten of ten failed at the same step, and the
step was ours. After two repairs the number held at
0 / 10, and every failure is now a measured
property of the live population: its compiler pragmas,
its dependency tails, its import-prefix conventions, its
constructor shapes. The sampling rule is published in
place of the table, the walls are named W1 through W7,
and the honest recommendation is a different container,
not a longer configuration file.
A document built specifically to be verified by hostile
strangers passed nine consecutive quality gates while
committing, cryptographically, to two model identifiers
that do not exist. Two of three were fabricated; nine
gates read them and none probed them. The finding, the
tally, and the standing rule that came out of it: every
externally-resolvable identifier in a publishable artifact
is probed against its live source before publish,
documentation is not evidence, and an unprobeable string
stays pending while the artifact does not ship. The seat
that now owns that question, and the gate it runs.
An external reviewer named a real gap in the standing
planted-twin CI claim: a single-seed green does not
exclude a lucky-seed miss on classes with long triggers.
Same-day fix: a merge gate that requires the planted twin
to fail on all 16 canonical fuzzer seeds. Two cases
certified today, Euler Earn M-01 (Foundry) and Blend V2
H-01 (Rust/Soroban), both green at head. The reachability
job is now the standing receipt behind the docs claim.
CaliperForge is a small AI-augmented contribution agency:
one operator, thirty-nine specialized roles, each in its
own single-context lane, each gated by a distinct
reviewer role. Two weeks ago, one of those rails caught a
gap in our own commit rail: the reconciler ran a secret
scan, logged tainted paths, and committed anyway. Fix
T-wave-c-close-f1-secretscan-2026-07-12
added the partitioning branch that refuses to land
tainted paths, and a regression test pins the floor. Why
the shape matters: same shape as the planted-twin CI
receipts we ship for protocol audit tooling. The org
caught its own gap because it had a rail that could
refuse.
Code4rena wardens named H-01 in their published Blend V2
review: a flash-loan round-trip that leaves a
reserve’s d_supply out of step with the
sum of every user’s liability. The Blend team fixed
it in the commit the audit’s mitigation review
confirms. This post walks the invariant that names the
class and the clean/planted twin in
caliperforge/soroban-invariant-atlas that
fires on it: a stateful proptest-style campaign against a
minimal original soroban-sdk pool that
isolates the identity, a deterministic regression, and both
required legs green on CI.
Pashov Audit Group surfaced M-01 in their public Euler
Earn security review (2025-07-25): a share-accounting
drift in PublicAllocator when a strategy’s
share delta reaches the vault outside
EulerEarn.deposit. Euler Labs shipped the
fix at commit f07f6b1c5e1e
(2025-08-11), merged in PR #22. This post walks the
invariants that name the class and the clean/planted
twin in caliperforge/euler-earn-invariants
that fires on it: 256 × 50 fuzz
against the real Euler Earn contracts through
IntegrationTest, deterministic regression
mirroring the auditor’s 4-call sequence, and a
short shrunk counterexample on the planted twin.
OpenZeppelin’s v1.1.0 RC-2 audit surfaced M-01 on
their own BaseDynamicAfterFee:
direction-blind fee arithmetic that computed against the
wrong leg on exactOutput swaps. Commit
2678eb9 shipped the fix in tag
v1.1.0; Zealynx’s Pattern 4 names the
taxonomy. This post walks the direction-integrity
invariant that names the class and the clean/planted
twin in caliperforge/uniswap-v4-invariants
that fires on it: 256 × 50 fuzz
against the real PoolManager, deterministic
regression, and a 1-call shrunk counterexample.
Written on activity day 41 and published later. A builder
agent produced a clean twin and a planted twin that
behaved exactly as they should: the property stayed
silent on the clean twin and fired on the planted one.
Then it wrote one sentence crediting the wrong line to an
audit firm’s published fix. A reviewer agent with no
shared context went to the primary source, found the
commit, and did not match. Everything mechanical was
right and the credit line was wrong, which is the shape
of mistake that reads correct on the page. What the catch
proves, and the three things it does not.
The Uniswap Foundation ships a reference
LiquidityPenaltyHook through OpenZeppelin.
Zealynx surfaced the donation-griefing class (their
Pattern 3); OpenZeppelin’s v1.1.0 audit surfaced it
independently; v1.2.0 already ships the add-time
fee-state guard. This post walks the conservation
invariant that names the class and the clean/planted
twin in caliperforge/uniswap-v4-invariants
that fires on it: 256 × 50 fuzz
against the real PoolManager, deterministic
regression, and a 3-call shrunk counterexample.
Around June 10, 2026, roughly $4.67M was drained from a
wrapped-token contract on Secret Network. A modified
CW20-ICS20 implementation validated the incoming
denomination but not the source channel, because the
channel check was commented out. This is not a postmortem.
It names the invariant class the mechanism belongs to,
states the two-counter property a stateful test would
assert, and says plainly where our CI-verified coverage
stops.
One operator, 12 to 15 hours a day, running the venture
through a roster of AI agents with role cards, outboxes
and review gates. The cockpit that makes the org
observable, the gate catch-and-miss numbers as they stood
on day 32, the places the agents miss and the operator
cleans up, the bad days, and the zero on the revenue line.
An invariant test that fires on a planted bug tells you the
property runs. It does not tell you the property catches
anything. Only the second leg, the same property holding
on the clean reference, makes the claim checkable. Written
on day 31 and published from the backlog later. What it
takes to wire both legs as a CI gate, what the gate refuses
to let through, and the three things a green pair still
does not prove.
On June 7, 2026, the Syscoin bridge lost a reported $8.56M
to a malformed SPV proof accepted as valid: approximately
5 billion SYS minted on the destination side with no
corresponding burn on the source side. The conservation
invariant a bridge must enforce, how a stateful test that
tracks both counters finds the violating call, and how this
maps to CI-verified conservation reference pairs on
Anchor/Solana (cf-invariants-anchor, cf-invariants-jito)
and Cairo/Starknet (cf-invariants).
On June 14, 2026, approximately $2.19M was extracted from
Aztec’s deprecated RollupProcessor
contract. Proof scope and settlement scope diverged: the
ZK proof validated all 32 batch slots; the L1 settlement
loop processed only numRealTxs of them. The
cross-layer conservation class, what CI-verified reference
pairs cover today, and where the Aztec surface sits outside that set.
TrustedVolumes lost a reported $5.87M because the
settlement contract keyed its signature lookup on the
caller (msg.sender) instead of the order’s maker.
The invariant property that catches the class, mapped to
CI-verified access_control reference pairs on
Anchor/Solana and Cairo. No Solidity-rail pair yet, said plainly.
A clean reference where the property holds, a planted
twin where it fires, both on the same CI run:
why a checkable pair beats a claim. hyperevm-safety
v0.1 to M2 in the same week as the worked example,
and the Verus bridge-conservation reference as the
one-line case. Not an audit; not a runtime monitor.
Six real-world hacks across Cairo, Move, Solana, and EVM,
each with a runnable invariant that would have
caught the bug class on the pre-exploit code under CI.
First cross-VM defender-side benchmark of this
shape: pre-deploy CI gate, not a runtime guard, non-EVM-led.
Lending, staking, vesting, timelock, payment
splitter, and oracle join the suite. Twenty-six
GitHub Actions jobs green: paired clean=0 /
planted≥1 across all twelve references, plus a
Caracal static-analysis pre-flight.
cf-invariants-jito-tippayment ports the second
Jito program onto the same anchor-lang 1.0.1 /
Crucible v0.2.0 rails, CI green on first push.
The AI invariant-suggester runs live against both
Jito surfaces under one prompt.
Jito tip-distribution ported from anchor-lang 0.31.1 to 1.0.1,
four invariant classes, four planted-bug twins.
CI: clean=0, planted≥1 across all four.
Three new Voyager-verified Cairo references on
Starknet Sepolia (lending, staking, vesting). A
Foundry + Recon Chimera scaffold for stamping
contest entries.
Anchor IDL in. Crucible-compatible fuzz source out.
CI proves it: clean vault passes, planted twin fails.
A Rust CLI sidecar that adds stateful invariant testing
to Cairo 2.x. Three reference contracts on Starknet
Sepolia, each surfacing a planted bug on cold start.