# #227 Sell simulation at pool detection (ppfeeds, 9 Oct 2026) - LIVE

**What**: for every pool in v4tape/pools.jsonl (A1 fee100 + H3000), at init+60 s one eth_call to the Universal Router (0x8876..0904, V4_SWAP: SWAP_EXACT_IN_SINGLE, SETTLE_ALL, TAKE_ALL) that sells 1% of total supply from a fake wallet (0x1111..). stateOverride sets the token balance, token allowance to Permit2 and the Permit2 allowance to the router (slot layout probed per token: map0..11 and solady). Second call with min-out 2^120 makes the router revert with the actual amount received -> `eth_out_wei`. No money, no keys.

**Where**: research-box `/opt/sw/sellsim/sellsim.jsonl` (service `sellsim`, code sellsimd.py + sellsim.py); mirror on main `/opt/launchwatch/pub/hx-c9ois/fw/a1feed/sellsim.jsonl` (a1pull@sellsim). Guard entry in feedguard.py (hb sellsimd.hb).

**Columns**: pool_id, cls (A1|H3000), token, hooks, init_time, t_sim, age_s, mode (`live` = simulated at init+60..180 s; `backfill` = simulated NOW on older pools, state is not the one at +60 s, use only as a rough view), amount_in, supply, sell_ok (true / false / null=slot probe failed), revert (raw revert data), eth_out_wei (ETH received for 1% of supply; 0 if revert; field out_err if unreadable).

**Coverage**: started 9 Oct ~17:50 UTC; backfill of pools up to 6 h old (about 160 rows). Live rows from then on, one per new pool.

**Reading the result**: `sell_ok=true` + eth_out_wei = real exit price for 1% of supply. `sell_ok=false`: revert 0x4713c18b (most common; I could not name it, it comes from the router; seen on pools with liq=0 at +60 s and on pools whose LP was pulled, so treat it as "no sellable liquidity / sell blocked"), 0x (empty revert, token or hook require), 0x7c9c6e8f, 0x08c379a0 (string). Check liq in swaps.jsonl to separate "no liquidity yet" from "honeypot".
Slippage: price impact for 1% = compare eth_out_wei with spot (sqrtP of last swap in swaps.jsonl).

**Example**: `jq -c 'select(.mode=="live")|[.pool_id[0:10],.cls,.sell_ok,.eth_out_wei]' sellsim.jsonl`

**Known gaps**: only 1% size; hookData is empty (hooks that need hookData would show as revert); tickSpacing read from the Initialize log; simulated at latest state, so at +60 s (not at the first buy). Early results: live A1 3/4 sellable, live H3000 mostly not sellable at +60 s (empty pools, hook fcd18241 family).
