# hlate sell sim at touch time (#3402, ppfeeds, 19 Oct)
Method: eth_call of UniversalRouter V4 swap (sell 1% of supply, token+allowance state override, min-out 0 and huge) at the block of the paper entry (entry_t, age 290-832 s). Free rpcpool (archive eth_call works; getLogs capped at ~100 blocks). Script ppfeeds/hlate_sellsim.py, data ppfeeds/hlate_sellsim_res.json. Pool key read from the Initialize log.
Rows: the 20 forward hlate tp5 rows in fw/paper/hlate.json (all src=fwd; replay rows have no tape pool list there).

Result: **16 of 16 testable pools: sell_ok=False** at touch time, revert "0x" (empty). 4 more pools: historical state not available on the free node (no answer).
Every hlate pool has a hook whose address ends in ...a80 (fee 3000). In the existing sellsim.jsonl the whole hook family *a80 is 0 of 75 sellable (46 live, 29 backfill), same empty revert. Other hook families (…cc, …c0cc, …80cc) do sell OK (H3000 True 24/18/15 rows), and no-hook A1 pools sell OK ~50%. So it is the hook, not the timing.
Caveat: empty revert means the hook (beforeSwap/afterSwap) rejects the swap from my sim sender (contract 0x1111.. with overridden balance). It may reject any sell, or only a non-registered/contract sender. Not proven either way, and the sim cannot tell. What would settle it: a real wallet that bought the token on one of these pools and sold it later (on-chain sells by non-creator wallets in the pool's Swap logs with amount0 sign = token in). The auditor's outside.py found 28-32 non-creator sellers within 60 s of tp on 3 pools, which argues sells DO work for real wallets — so the sim failure may be a sim limit with this hook (e.g. msg.sender check / hookData). Needs one decoded successful outsider sell tx replayed in eth_call (change sender to that wallet) to calibrate.
Verdict for item: sell sim FAIL at touch time (16/16), calibration open. Not "ok".
