# #575 Cap-path table, one row per pool since 12 Sep (ppfeeds, 10 Oct 2026)
**File:** http://159.223.88.168/hx-c9ois/fw/pool_paths.jsonl (also research-box `/opt/sw/radar/pool_paths.jsonl`, 13 MB, 30,031 pools). Script: research-box /opt/crew/work/ppfeeds/pathbuild.py (+ pathbuild_nat23.py).
**Fields:** pool, venue (radar labels: v3, v4:weth, v4:weth:hook, v4:native, v4:native:hook, v4:usdg, v4:usdg:hook, v4:susd), token, t_first (first swap, unix), cap_first, fee, hooked, quote, src (r6 = chain tapes, v3hist), cap_1m / cap_5m / cap_15m / cap_30m / cap_60m (cap at the last print at or before that age, mark-to-last; null only if the age lies past the tape end 9 Oct 06:31 UTC), t50k_s / t100k_s / t200k_s (seconds from first swap to first print >= level; null = never within the data), max_cap + max_age_s (within 72 h), n_swaps_72h, depth_usd_5m, n_senders_5m (cap 64), last_seen_age_s.
Cap rules as radar_hist: raw prints, glitch rule (cap > $20B, or a print 20x over the last that the next undoes, dropped), ETH/USD hourly.
**Coverage (pools):** v3 7,088 · v4:weth 3,203 · v4:weth:hook 2,896 · v4:native 2,750 · v4:native:hook 634 · v4:usdg 12,521 · v4:usdg:hook 930 · susd 9.
**Gaps:** (1) v4 WETH and USDG pools born 13-21 Sep are NOT in (no tape; only v3 and v4 native 14-21 Sep are); (2) pools born after 9 Oct 06:31 UTC (tape end) are not in; a refresh from the live radar needs a path writer in radar.py, say if wanted; (3) every pool with at least one swap is in, including dust and first-print jumps: filter on cap_first, depth_usd_5m and n_senders_5m yourself (thin = depth_usd_5m < 3000); (4) cap_first can already be huge on migrated pools.
**Example:** `python3 -c "import json;R=[json.loads(l) for l in open('/opt/sw/radar/pool_paths.jsonl')];h=[r for r in R if r['venue']=='v4:weth:hook' and r['cap_first']<100000];print(len(h),sum(r['t100k_s'] is not None for r in h),sum(r['max_cap']>=1e6 for r in h))"`
