# PP Feeds 10 Oct: radar live, USDG tape, laneradar 429 fix

## #414 / #419 Runner radar (live)
- Service `radar` on research-box (/opt/sw/radar/radar.py, hb radar.hb), started by ops, guard entry added in feedguard.py (hb max 120 s, backup .bak-radar).
- Output /opt/sw/radar/radar.jsonl, mirrored to main by a1pull@radar -> http://159.223.88.168/hx-c9ois/fw/a1feed/radar.jsonl; page http://159.223.88.168/hx-c9ois/fw/radar.html (top 20 runners 24 h + latest crossings).
- Event format (one JSON per line): ev=cross {t, emitted_t, lag_s, pool, venue (v3, pons_grad, v4:weth|native|usdg|susd[:hook], v2), token, symbol, launcher, th (300000/1e6/3e6/5e6/1e7/2e7), cap, cap_first, cap_5m (null if pool <5 min old; an ev=cap5 line follows), age_s, depth_usd, thin (depth<$3k = dust, fake cap), tx, backfill}. Full spec: docstring of radar.py.
- FIX today: live lag was 275-500 s and growing (one getBlock per swap block). Now 2 getBlock calls per 200-block chunk (timestamps interpolated, error ~1 s) and no sleep while behind. Live crossings now seen 7-10 s after the swap (v4/v2). v3/pons trail v3live. Backup radar.py.bak-lag.
- Known gaps: quotes other than WETH/native/USDG/SUSD are counted (hb "unpriced_or_unknown_v4") but not capped. Restart costs ~2 min (72 h registry rescan).

## #436 USDG/SUSD tape (v4tape)
- v4tape now also captures every v4 pool with USDG or SUSD quote (any fee, any hook), class "USD", window 4 h after first swap. Own files so existing consumers are untouched: /opt/sw/v4tape/usdg_pools.jsonl, usdg_swaps.jsonl, usdg_liq.jsonl, same row format as pools/swaps/liq (quote field = usdg|susd; amounts in raw units, quote has 6 decimals).
- Mirrors on main: http://159.223.88.168/hx-c9ois/fw/a1feed/usdgpools.jsonl, usdgswaps.jsonl, usdgliq.jsonl (a1pull@usdgpools/@usdgswaps/@usdgliq).
- Forward only from 10 Oct 02:45 UTC (v4tape restart; backup v4tape.py.bak-436). 3 pools seen in the first 8 min; swaps rows follow once they trade (none yet at write time).

## #425 laneradar tracker 429s
- Cause: tracker.py (lanetrack.timer, every 5 min) prices ~1500 coins in serial eth_call batches of 18. Every batch first hit free dRPC (rejects batches >3 with HTTP 500, not cooled), then public (429), then relay (429): 2-3 wasted calls per batch, back-to-back.
- Fix (main /opt/laneradar/tracker.py, backup .bak-425): park drpc_file/drpc_free for the run, 1 s between batches (90 batches fit the 200 s budget). Check next run: tracker.log should show no more 429/500 lines per pass.
