# Audit: v2ramp - auditor2, 10 Oct 2026 (board #584)
**Verdict: FIX (not VERIFIED yet).** Forward arm A: n=100, mean 3.03x, median 2.29x, 11 below 1x (10 zeros), max 65x. Arm B (half size) is identical in effect (3.01x), so it adds nothing.

## Checks
1. **Sellability: not proven.** No honeypot eth_call was run (no holder balance/slot override probe; I did not fake one). Indirect evidence from chain Swap logs, 10 sampled pairs (top 4, middle 3, bottom 3 by net_x): the 4 big winners show 15-40 sell swaps by 7-8 distinct tx.from each, so outsiders do sell there. The 3 middle pairs (net ~2.29x) show 0-1 sells in 13-20 swaps: buys only, so those fills are never tested by a real sell. 19 of 100 trades sit in this 2.2-2.4x cluster (exit reserve ~1.7-2.0 WETH, no sellers).
2. **Outside sellers near our exit:** only in the big winners (above). The winners carry the mean: top 4 of 100 are ~100x of 303x total; without the top trade the mean is ~2.4x. Still above kill (1.3x).
3. **Look-ahead:** none (entry = first Sync >= created+8 s, exit = last Sync <= +303 s; seed rule is known at creation).
4. **Hand rebuild:** testmgr's gap note (tm-v2ramp-gap.md) explains the earlier 1.4-1.8x replay-vs-chain gap as the tape clock being 17-38 s ahead of chain. The FORWARD script uses chain block timestamps, so it does not have that offset, but it assumes a fill in the same second as the Sync with no gas/latency. Honest number = entry +12 s: replay 2.35x vs 3.11x (-24%).
5. **Replay vs live:** replay 2.91x vs forward 3.03x agree; both share the same maths, so this is not independent.

## Needed to reach VERIFIED (sent to testmgr3)
- A forward arm that enters at Sync +12 s (the realistic latency) and reports it as the main number.
- Sellability: one eth_call/$5 sell test on 3 sampled v2 tokens including a no-seller (2.29x cluster) pair; Ben decision if a real sell is needed.
- tx.from of buyers in the first 300 s for the no-seller pairs (are the buys one wallet, i.e. self-pumped?).

## Addendum 10 Oct (re-audit of #588, corrected replay fill model)
Fill model now is sound in design: entry = seed Sync +12 s, exit = first Sync at/after +303 s (was last before: optimistic), 0.3% fees, 0x when no exit Sync. Numbers: 2.28x (capped 2.13x), stress +30 s 1.98x, n 2289, 502 below 1x, top 5 = 3.4% of sum, median 2.33x. These agree with the forward arm once the forward is cut ~24% for latency (3.03x -> ~2.3x), so replay and forward are consistent. Remaining doubts: (a) 142 rows (6%) dropped for no Sync after entry are not zeros; if those are dead pools where a live buy would still fill, the mean is slightly high (ask testmgr3 for the mean with them as 0x); (b) my chain rebuild of 7.8/5.2 used tape time as chain time, so the 11.8/4.6 comparison is not a clean independent check.
**Status: still not VERIFIED.** Mean stays well above the 1.3x kill line in every variant, so the ramp is a real edge on paper. Blockers unchanged: sellability (eth_call / $5 sell) and tx.from of buyers on no-seller pairs.

## Addendum 2 (10 Oct, re-audit of #625)
+12 s arm A now main number: n=95, mean 2.87x, 10 below 1x (the latency cut I asked for; matches my ~2.3-2.9x estimate). Exit-window bug (176 s vs 300 s) found and fixed by testmgr3: sound. Arm B adds nothing. Mean is far above the 1.3x kill line, so the paper edge is real.
**Still not VERIFIED:** (1) sellability never tested by eth_call or a real sell; ~19% of trades sit in a no-seller cluster. (2) tx.from of buyers on no-seller pairs unchecked. Both need Ben's $5 sell test on 3 v2 tokens (incl. one no-seller) and dataeng tx.from data.
