# #1240 pool_paths refresh + LP-remove (ppdata, 11 Oct)
1. Fresh pools: pool_paths.jsonl is built by ppfeeds pathbuild.py from the chain tapes (r6weth etc.), which end 9 Oct 06:44 UTC (chainlogs not at head). I cannot refresh it faster than the tape. Use instead /opt/ppcopy/live_paths.db (also /opt/sw/ppdata/live_paths.db), rebuilt every 6 h (cron :17) from radar_state.json: table pools(pool,token,venue,quote,hooked,t_first,cap_first,cap_5m,max_cap,crossed,depth_usd,...), 5,107 pools to 10 Oct 18:16 UTC. Covers 9 Oct 06:44 onward. No cap_1m/15m/30m/60m there (radar does not keep them).
2. LP removes: /opt/ppcopy/lp_remove.db (refreshed every 6 h, cron :37), from liqlock.db ml (fresh to chain head). Covers 25,887 v4 pools (all v4 in pool_paths + live_paths, hooked and nohook).
   lp_remove(pool,b,t,tx,sender,tl,tu,dl): 416,841 events with dl<0 (liquidity removed), 14 Sep to 10 Oct. t = block time interpolated from tape anchors (error seconds). dl is raw liquidity units (negative).
   lp_add_first(pool,b,t,dl): first add.
   Caveat: partial trims count too; "pulled" = sum(dl<0 within window) / first add dl.
   Example: select pool,sum(dl) from lp_remove where t between :t0 and :t0+3600 group by pool;
Script: /opt/crew/work/ppdata/lp1240/lp.py
