Every run, every figure
Repay from collateral: 7 landed and 1 stopped itself, 8 Nov 2026, median 7.9 s from detection to inclusion. Repay from a reserve: 13 landed and 1 stopped itself, 7 Nov 2026, median 8.4 s from detection to inclusion. One test position on Base Sepolia. Nothing here has run on a mainnet. Failed and aborted runs stay on this page.
Timetable of 22 testnet runs
Repay from collateral: 7 landed and 1 stopped itself, 8 Nov 2026, median 7.9 s from detection to inclusion. Repay from a reserve: 13 landed and 1 stopped itself, 7 Nov 2026, median 8.4 s from detection to inclusion. One test position on Base Sepolia. Nothing here has run on a mainnet.
Every landed run, stop by stop
Each line is one run. Steeper means faster. The blue line is the run the home page replays.
Departures UTC, 7 and 8 Nov 2026
Repay from collateralv0.2 · 8 Nov 2026
- 12:00:197.5 sLandedNEARBase
- 10:39:376.7 sLanded· replayedNEARBaseLanded after both contract accounts lost their last key.
- 10:19:558.7 sLandedNEARBase
- 10:19:26noneStopped itselfThe pool asked 0.36% more WETH than the borrower’s price bound allows, so the keeper refused before asking NEAR, and nothing was sent.
- 10:16:598.2 sLandedNEARBase
- 10:15:569.2 sLandedNEARBase
- 10:14:437.6 sLandedNEARBase
- 10:13:297.9 sLandedNEARBase
Repay from a reservev0.1 · 7 Nov 2026
- 19:27:577.9 sLandedNEARBase
- 19:27:388.4 sLandedNEARBase
- 19:27:188.6 sLandedNEARBase
- 19:26:598.6 sLandedNEARBase
- 19:26:398.8 sLandedNEARBase
- 19:26:34noneStopped itselfTwo RPCs disagreed on the reserve balance by more than 0.5%, so the keeper did nothing.
- 19:26:167.5 sLandedNEARBase
- 19:25:559.6 sLandedNEARBase
- 19:25:377.3 sLandedNEARBase
- 19:25:1610.2 sLandedNEARBase
- 19:24:527.6 sLandedNEARBase
- 19:24:338.5 sLandedNEARBase
- 19:24:148.2 sLandedNEARBase
- 19:23:358.2 sLandedNEARBase
Signing on its own
15 of 15 signed on NEAR testnet, median 6.6 s, slowest 7.1 s. Signature only. Nothing was broadcast. Time from the keeper sending rescue to holding a verified signature.
Contracts and keys
Everything here is on testnet. Nothing is deployed on any mainnet. The last full-access key on each Levee contract account was deleted.
| Account | Version | Last full-access key, deleted | NEAR transaction | Block |
|---|---|---|---|---|
| levee-core-1503.testnet | v0.1 | ed25519:AgX6NqakXdaJD4PzFABsTLxnKmEEisozd617LNVi8Ead | 3u8yYEBB9eVJbRGjE27xiHru1aAA4W7Mh4C2rrsZ86fu | 276,764,277 |
| levee-core-v2-1503.testnet | v0.2 | ed25519:GRz6zN114TpPrRB5Go6zANhjC2csyW7kuLwUsWJV2ZdE | C5aHVAahMMa3BjqddSDSf7AK8VCkuFiuqizGj7vbzJJA | 276,764,289 |
Neither account has an access key left, so nobody can change either contract’s code or sign as the contract account. The rescue at 10:39:37 UTC on 8 Nov 2026 landed after both deletions, its NEAR call at block 276,764,677: NEAR, Base Sepolia. The claims ledger records it as contracts-keyless-rescue-after, and make verify reads both key lists from NEAR and fails if any key is there.
Levee’s own
| Contract | Network | Address | Source |
|---|---|---|---|
| Levee v0.2, repays from collateral or from a reserve | NEAR testnet | levee-core-v2-1503.testnet | contracts/levee |
| LeveeUnwind, sells collateral to repay. No owner, no upgrade | Base Sepolia | 0x308a7b2872F6006522280026a750fCD1c5Bd63D2 | evm/src/LeveeUnwind.sol, verified on Sourcify |
| Levee v0.1, reserve mode only | NEAR testnet | levee-core-1503.testnet | contracts/levee, before collateral mode was added |
Accounts Levee acts through
| Account | Network | Address |
|---|---|---|
| Keeper. One key limited to rescue_from_collateral on v0.2, one limited to rescue on v0.1 | NEAR testnet | levee-keeper-1503.testnet |
| Rescuer for v0.2 position 1, derived from the contract by Chain Signatures | Base Sepolia | 0x95ad19E5382ebEfF2C190ed1711515263efDc462 |
| Rescuer for v0.1 position 1 | Base Sepolia | 0xEA3ce7f3AeC39CE95D0fA32F867BA65EFF3b8971 |
Third-party contracts it calls
| Contract | Network | Address |
|---|---|---|
| Chain Signatures MPC signer | NEAR testnet | v1.signer-prod.testnet |
| Aave v3 Pool | Base Sepolia | 0x8bAB6d1b75f19e9eD9fCe8b9BD338844fF79aE27 |
| Aave v3 PoolAddressesProvider | Base Sepolia | 0xE4C23309117Aa30342BFaae6c95c6478e0A4Ad00 |
| USDC, Aave's test token | Base Sepolia | 0xba50Cd2A20f6DA35D788639E581bca8d0B5d4D5f |
| WETH | Base Sepolia | 0x4200000000000000000000000000000000000006 |
| Uniswap v3 Factory | Base Sepolia | 0x4752ba5DBc23f44D87826276BF6Fd6b1C372aD24 |
| Uniswap v3 QuoterV2 | Base Sepolia | 0xC5290058841028F1614F3A6F0F5816cAd0df5E27 |
| Uniswap v3 WETH/USDC 0.30% pool. The team added its liquidity at Aave's oracle price, so its prices are no market measure | Base Sepolia | 0x92266210FacF124f190fbad79AA230dfB85926Ce |
Each hop
Medians, and p95 by nearest rank, over the runs that landed in each mode. With this few runs the p95 is the slowest run. A run that stopped itself finished no hop, so it is in the list below and out of these times.
| Hop | From collateral, 7 runs | From a reserve, 13 runs | ||
|---|---|---|---|---|
| Median | p95 | Median | p95 | |
| Detection to the rescue call on NEARKeeper and NEAR | 1.6 s | 1.9 s | 1.7 s | 3.5 s |
| Rescue call to signatureMPC network | 5.2 s | 6.7 s | 5.3 s | 6.9 s |
| Signature to sentKeeper | under 0.1 s | under 0.1 s | under 0.1 s | under 0.1 s |
| Sent to includedLending chain | 0.5 s | 1.6 s | 1.5 s | 1.5 s |
| Detection to inclusionAll of it | 7.9 s | 9.2 s | 8.4 s | 10.2 s |
Every run
Each row is a file in evidence/runs, read when this site was built. Times are from detection. Failed and aborted runs stay on the list. The team added the liquidity in the testnet pool at Aave’s oracle price, so testnet sale prices are no measure of slippage. Slippage is measured in the backtest, from historical Uniswap quotes.
| Run, UTC | Mode | Outcome | Repaid | Sold, and the keeper’s cap | Price against the oracle, seeded pool | Health factor | On NEAR | Signed | Sent | Included | Transactions |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 12:00:192026-11-08T12-00-18Z-base-sepolia-1 | Collateralv0.2 | Landed | 5.88 USDC | 0.002640 WETHcap 0.002653 WETH | 45 bps under | 1.4800 to 1.8037 | 1.53 s | 6.99 s | 7.01 s | 7.54 s | NearBlocksBasescan Sepolia, block 56,086,791 |
| 10:39:372026-11-08T10-39-36Z-base-sepolia-1 | Collateralv0.2 | LandedReplayed on the home pageLanded after both contract accounts lost their last key | 7.31 USDC | 0.003288 WETHcap 0.003304 WETH | 50 bps under | 1.4800 to 1.8035 | 1.28 s | 6.20 s | 6.22 s | 6.67 s | NearBlocksBasescan Sepolia, block 56,062,575 |
| 10:19:552026-11-08T10-19-54Z-base-sepolia-1 | Collateralv0.2 | Landed | 9.10 USDC | 0.004089 WETHcap 0.004109 WETH | 41 bps under | 1.4800 to 1.8039 | 1.54 s | 8.25 s | 8.27 s | 8.74 s | NearBlocksBasescan Sepolia, block 56,056,678 |
| 10:19:262026-11-08T10-19-24Z-base-sepolia-1 | Collateralv0.2 | Stopped itselfThe pool asked 0.36% more WETH than the borrower’s price bound allows, so the keeper refused before asking NEAR, and nothing was sent.quote_over_slippage_bound: the pool asks 4127649486070153 for 9098767 USDC units, the helper allows 4112809988981552 | nonesized at 9.10 USDC | none | none | 1.4800nothing landed | none | none | none | none | none |
| 10:16:592026-11-08T10-16-58Z-base-sepolia-1 | Collateralv0.2 | Landed | 11.33 USDC | 0.005091 WETHcap 0.005117 WETH | 44 bps under | 1.4800 to 1.8037 | 1.75 s | 6.52 s | 6.52 s | 8.15 s | NearBlocksBasescan Sepolia, block 56,055,789 |
| 10:15:562026-11-08T10-15-55Z-base-sepolia-1 | Collateralv0.2 | Landed | 14.10 USDC | 0.006340 WETHcap 0.006372 WETH | 48 bps under | 1.4800 to 1.8036 | 1.71 s | 7.63 s | 7.65 s | 9.23 s | NearBlocksBasescan Sepolia, block 56,055,480 |
| 10:14:432026-11-08T10-14-42Z-base-sepolia-1 | Collateralv0.2 | Landed | 17.56 USDC | 0.007918 WETHcap 0.007955 WETH | 74 bps under | 1.4800 to 1.8024 | 1.89 s | 7.14 s | 7.17 s | 7.64 s | NearBlocksBasescan Sepolia, block 56,055,111 |
| 10:13:292026-11-08T10-13-28Z-base-sepolia-1 | Collateralv0.2 | Landed | 21.87 USDC | 0.009845 WETHcap 0.009894 WETH | 59 bps under | 1.4800 to 1.8031 | 1.57 s | 6.21 s | 6.23 s | 7.88 s | NearBlocksBasescan Sepolia, block 56,054,737 |
| 19:27:572026-11-07T19-27-57Z-base-sepolia-1 | Reservev0.1 | Landed | 7.85 USDC | none | none | 1.0609 to 1.5000 | 1.51 s | 6.38 s | 6.38 s | 7.91 s | NearBlocksBasescan Sepolia, block 55,789,078 |
| 19:27:382026-11-07T19-27-38Z-base-sepolia-1 | Reservev0.1 | Landed | 7.85 USDC | none | none | 1.0609 to 1.5000 | 1.57 s | 6.89 s | 6.89 s | 8.40 s | NearBlocksBasescan Sepolia, block 55,788,984 |
| 19:27:182026-11-07T19-27-18Z-base-sepolia-1 | Reservev0.1 | Landed | 7.85 USDC | none | none | 1.0609 to 1.5000 | 1.74 s | 7.13 s | 7.13 s | 8.65 s | NearBlocksBasescan Sepolia, block 55,788,888 |
| 19:26:592026-11-07T19-26-59Z-base-sepolia-1 | Reservev0.1 | Landed | 7.85 USDC | none | none | 1.0609 to 1.5000 | 1.55 s | 7.06 s | 7.07 s | 8.61 s | NearBlocksBasescan Sepolia, block 55,788,791 |
| 19:26:392026-11-07T19-26-39Z-base-sepolia-1 | Reservev0.1 | Landed | 7.85 USDC | none | none | 1.0609 to 1.5000 | 3.53 s | 8.48 s | 8.48 s | 8.84 s | NearBlocksBasescan Sepolia, block 55,788,699 |
| 19:26:342026-11-07T19-26-34Z-base-sepolia-1 | Reservev0.1 | Stopped itselfTwo RPCs disagreed on the reserve balance by more than 0.5%, so the keeper did nothing.quorum_disagreement: rescuerUsdc differs by more than 50 bps: https://sepolia.base.org=24135306 https://base-sepolia-rpc.publicnode.com=16285306 | none | none | none | not read | none | none | none | none | none |
| 19:26:162026-11-07T19-26-15Z-base-sepolia-1 | Reservev0.1 | Landed | 7.85 USDC | none | none | 1.0609 to 1.5000 | 1.63 s | 7.16 s | 7.16 s | 7.51 s | NearBlocksBasescan Sepolia, block 55,788,574 |
| 19:25:552026-11-07T19-25-55Z-base-sepolia-1 | Reservev0.1 | Landed | 7.85 USDC | none | none | 1.0609 to 1.5000 | 2.90 s | 8.05 s | 8.05 s | 9.58 s | NearBlocksBasescan Sepolia, block 55,788,477 |
| 19:25:372026-11-07T19-25-37Z-base-sepolia-1 | Reservev0.1 | Landed | 7.85 USDC | none | none | 1.0609 to 1.5000 | 1.45 s | 6.98 s | 6.98 s | 7.34 s | NearBlocksBasescan Sepolia, block 55,788,380 |
| 19:25:162026-11-07T19-25-16Z-base-sepolia-1 | Reservev0.1 | Landed | 7.85 USDC | none | none | 1.0609 to 1.5000 | 1.78 s | 8.65 s | 8.65 s | 10.19 s | NearBlocksBasescan Sepolia, block 55,788,284 |
| 19:24:522026-11-07T19-24-52Z-base-sepolia-1 | Reservev0.1 | Landed | 7.85 USDC | none | none | 1.0609 to 1.5000 | 1.65 s | 7.22 s | 7.22 s | 7.63 s | NearBlocksBasescan Sepolia, block 55,788,157 |
| 19:24:332026-11-07T19-24-32Z-base-sepolia-1 | Reservev0.1 | Landed | 7.85 USDC | none | none | 1.0609 to 1.5000 | 1.73 s | 6.96 s | 6.96 s | 8.50 s | NearBlocksBasescan Sepolia, block 55,788,059 |
| 19:24:142026-11-07T19-24-13Z-base-sepolia-1 | Reservev0.1 | Landed | 7.85 USDC | none | none | 1.0609 to 1.5000 | 1.88 s | 6.70 s | 6.72 s | 8.25 s | NearBlocksBasescan Sepolia, block 55,787,963 |
| 19:23:352026-11-07T19-23-34Z-base-sepolia-1 | Reservev0.1 | Landed | 7.86 USDC | none | none | 1.0606 to 1.5000 | 1.76 s | 6.66 s | 6.69 s | 8.22 s | NearBlocksBasescan Sepolia, block 55,787,769 |
The price includes the pool fee. Each unwind landed just above its target, because the keeper sizes for the fee and the whole bound.
Every signing sample
15 of 15 signed on NEAR testnet, median 6.6 s, p95 7.1 s, slowest 7.1 s. Signature only. Nothing was broadcast. Time from the keeper sending rescue to holding a verified signature.
| Sample | Outcome | Time | NEAR |
|---|---|---|---|
| 1 | signed | 6.1 s | NearBlocks |
| 2 | signed | 6.4 s | NearBlocks |
| 3 | signed | 6.6 s | NearBlocks |
| 4 | signed | 6.6 s | NearBlocks |
| 5 | signed | 6.8 s | NearBlocks |
| 6 | signed | 7.1 s | NearBlocks |
| 7 | signed | 6.1 s | NearBlocks |
| 8 | signed | 6.8 s | NearBlocks |
| 9 | signed | 6.4 s | NearBlocks |
| 10 | signed | 7.1 s | NearBlocks |
| 11 | signed | 5.9 s | NearBlocks |
| 12 | signed | 6.0 s | NearBlocks |
| 13 | signed | 6.7 s | NearBlocks |
| 14 | signed | 6.7 s | NearBlocks |
| 15 | signed | 6.6 s | NearBlocks |
The fork rehearsal
Rehearsal on a local anvil fork of Base Sepolia at block 55657033. The NEAR contract and the MPC signature are real testnet. The EVM transaction landed only on the fork, so public explorers will not show it.
A rehearsal of the reserve mode. It repaid 100.00 USDC, and health factor went from 1.060644 to 1.090979 in 7.4 s. It is kept apart from the runs above, because no public explorer can show a fork. The NEAR side is public on NearBlocks.
Backtest: repay from collateral
Every native USDC borrower on Aave v3 Base and Arbitrum, through two crashes and a calm month, replayed with trigger 1.20, target 1.50 and a 60 second delay. Each sale is priced from a real Uniswap v3 quote at its landing block, against Aave’s oracle in the same block. A simulation: it assumes the keeper, RPCs, NEAR and the MPC network all worked.
Liquidated positions saved
Of the borrowers really liquidated in each period. The reserve and the upfront repay hold 30% of debt in USDC; repaying from collateral holds none.
Net from collateral: +$174.7k at 1%, +$77.8k at 3%
Net from collateral: +$774.0k at 1%, +$473.0k at 3%
Net from collateral: −$122.0k at 1%, −$290.1k at 3%
- In both crashes, repaying from collateral avoided more liquidation bonus than it cost, at both bounds.
- In the calm month it cost more than it avoided: net −$122.0k at the 1% bound. Each of the 51,430 borrowers armed above the trigger paid $1.60 in swap cost and gas over 30 days, and sold 2.0% of their collateral.
- At the 1% bound it saved fewer liquidated positions than the reserve or the same USDC repaid upfront, in every period. Both of those need the cash in hand. The looser bound saved as many or more once: 3,547 against 3,541 at the 3% bound, 31 Jan to 6 Feb 2026.
- In 10 to 11 Oct 2025, at the 1% bound, positions under $10k of debt lost $312.7k, with $401.0k spent on their gas. Larger positions made $487.4k.
| Repay from collateral | Crash10 to 11 Oct 2025 | Crash31 Jan to 6 Feb 2026 | Calm month3 Dec 2025 to 1 Jan 2026 |
|---|---|---|---|
| Borrowers | 49,685 | 54,479 | 58,170 |
| Liquidated in reality | 952 | 4,077 | 229 |
| Bonus at risk, all paid when doing nothing | $1.40M | $1.42M | $26.1k |
| Saved from collateral, 1% / 3% | 635 / 654 | 3,424 / 3,547 | 114 / 114 |
| Reserve 30% / same USDC upfront, saved | 720 / 731 | 3,541 / 3,541 | 189 / 191 |
| Bonus avoided, 1% / 3% | $780.8k / $1.00M | $1.07M / $1.14M | $21.6k / $21.6k |
| Swap cost, 1% / 3% | $88.7k / $466.5k | $279.5k / $656.5k | $134.4k / $308.3k |
| Gas, 1% / 3% | $517.4k / $456.4k | $18.2k / $11.3k | $9.1k / $3.4k |
| Net, 1% / 3% | +$174.7k / +$77.8k | +$774.0k / +$473.0k | −$122.0k / −$290.1k |
Read these with the figures
- Saved counts include positions already below the trigger when armed, which unwind at once. At the 1% bound: 416 of 635 in 10 to 11 Oct 2025, 1,735 of 3,424 in 31 Jan to 6 Feb 2026, 73 of 114 in 3 Dec 2025 to 1 Jan 2026.
- The 10 to 11 Oct 2025 swap cost includes gains from pools that lagged a falling oracle. Counting no sale better than the oracle, it is $180.9k at the 1% bound, and the net is +$82.5k.
- The replayed keeper resends a reverted unwind every minute. In 10 to 11 Oct 2025 gas was high during a spike on Arbitrum, and 63% of it went on reverted unwinds. The live keeper quotes before sending; with no gas on reverts, the net at the 1% bound would be +$501.7k.
- Each sale fills at its quote, alone in its block. Infrastructure is up, with a fixed 60 second delay. Two crashes say nothing about how often crashes happen, so none of this is annualised.
Why liquidated positions were missed
| Missed because, 1% bound | Crash10 to 11 Oct 2025 | Crash31 Jan to 6 Feb 2026 | Calm month3 Dec 2025 to 1 Jan 2026 |
|---|---|---|---|
| An unwind was refused on the bound, or no pool could fill it | 128 | 75 | 0 |
| The next unwind was in flight or cooling down | 114 | 185 | 0 |
| All USDC debt was repaid, and it still fell | 23 | 120 | 1 |
| A liquidator won the race | 20 | 0 | 0 |
| The sellable collateral ran out | 16 | 81 | 42 |
| No collateral had a usable pool | 9 | 89 | 16 |
| Every unwind asked for was under the $1 floor | 7 | 103 | 56 |
| All missed, of those liquidated | 317 of 952 | 653 of 4,077 | 115 of 229 |
Net by size of position
| Net by debt at arming, 1% / 3% | Crash10 to 11 Oct 2025 | Crash31 Jan to 6 Feb 2026 | Calm month3 Dec 2025 to 1 Jan 2026 |
|---|---|---|---|
| Under $10k | −$312.7k / −$267.7k | +$122.7k / +$123.1k | +$10 / +$859 |
| $10k and up | +$487.4k / +$345.6k | +$651.3k / +$349.9k | −$122.0k / −$290.9k |
Method, validation and every table: backtest/README.md and backtest/results/collateral.md, recomputed by make backtest.
Repay from a reserve, the second mode
The earlier backtest replayed the 5,008 positions on Base and Arbitrum that were really liquidated in October 2025 and February 2026, with a USDC reserve held for each. Repaying the same USDC upfront, with no keeper, saved at least as many at every reserve size, and costs nothing to hold, so it protects one position as well as a reserve. That is why repaying from collateral, which needs no cash, is the main mode, and the reserve is the second.
| Reserve, share of debt | 5% | 10% | 20% | 30% | 50% |
|---|---|---|---|---|---|
| Repay from a reserve | 20.0% | 35.7% | 59.9% | 85.1% | 94.6% |
| Same USDC repaid upfront, no keeper | 20.0% | 35.7% | 60.0% | 85.3% | 95.6% |
| Same USDC held as collateral, no keeper | 15.8% | 29.7% | 50.6% | 69.2% | 96.4% |
Saved means the position outlived the window. 2,713 of the 5,008 were already below the trigger, so their repay was an upfront repay. Method and every table: backtest/results/summary.md and portfolio.md.
Limits of this proof
- Every live run is on Base Sepolia, from one position, on 7 and 8 Nov 2026. Nothing has run on a mainnet or during a crash.
- Seven landed collateral runs are too few for a p95 to mean much. With this many it is the slowest run.
- The team added the liquidity in the testnet pool at Aave’s oracle price, so testnet sale prices are no measure of slippage. Slippage is measured in the backtest, from historical Uniswap quotes.
- The replay on the home page draws the fall before detection. No record times it, and the page says so.
- The backtest is a simulation. It assumes the keeper, RPCs, NEAR and the MPC network all worked through the worst minutes, and that each sale filled at its quote, alone in its block.