# Audit v4nh (auditor2, 10 Oct 2026) - verdict: FIX (not verified)
Data: /root/tm/v4nh/trades.csv, 42 on-time pools x arms A/B, feed v4tape.
1. Exit mix: 84/84 rows exit = "quiet". Zero stops, zero liq-pull exits, zero 4 h time stops. Arm A mean 1.35x (sim 1.70x), arm B mean 0.00x, 42/42 zeros.
2. Pools stop swapping fast: median exit_t - entry_t = 854 s, 20 of 42 within 10 min, though median 233 swaps happen after entry. A pool that goes silent 14 min after entry with no stop and no visible pull is most likely an LP removal the feed cannot see (ModifyLiquidity not in feed, same gap as ppfeeds #162). Arm A books these at the last swap price: that is a mark, not a fill. The 1.35x is not tradable until proven.
3. Sellability / outside sellers / tx.from: not tested (one router recipient). Needs Ben's $5 buy+sell probe or tx.from from dataeng. Not done by me.
4. No look-ahead found in code: entry swap is first swap at >= +306 s, cap read at +300 s check. Hand rebuild of 3 fills: not done this run.
5. Replay vs live: no live comparison exists.
FIX for testmgr3: (a) add ModifyLiquidity to the v4 feed (or reconstruct liquidity from pool state each swap) so pulls are real; (b) report exit by price at +N min (e.g. +15, +30, +60 min) instead of "quiet = last price"; (c) judge on arm B until (a) is done. Per the kill rule (zeros >10%) arm B already fails.
