# v2trig feed (#2020) - live trigger + LP-pull watcher, factory 0x8bce
Service v2trig (research-box, systemd, flag file /opt/sw/v2feed/trig/v2trig.off stops it). Code /opt/sw/v2trig/v2trig.py. Built on v2feed (pairs.jsonl = PairCreated + first Sync p0).
Output dir /opt/sw/v2feed/trig/ (research-box):
- v2trig.jsonl: one row per pair at first Sync with price(r0/r1) >= 8 x p0 AND reserve0 >= 2 WETH. Fields pair, token, birth_blk, birth_t, blk, t, age_s, price, mult, reserve0, emitted_t (lag = emitted_t - t).
- v2lppull.jsonl: first Sync with reserve0 < 0.6 x running max (pair, token, blk, t, age_s, reserve0, qmax, triggered).
- v2sync.jsonl: every Sync of tracked pairs (pair, blk, r0, r1), up to 3 h after birth (v2feed v2tape stops at 780 s). v2trig.hb = heartbeat.
Dedupe on state (trig/pull sets rebuilt from the files; last block in state.json). Restart backfills 44000 blocks (~3 h) so no gap.
Dry-run on last 3 h: 0 triggers (expected ~5/day), 15 LP pulls, 240 active pairs. Only WETH-token0 pairs of factory 0x8bce.
Backfill of the 3.3 d replay stays in analyst3's v2_*.jsonl. Trigger mult uses p0 = first Sync of birth block (same as replay).
Not covered: sell executability/token tax. Lag: poll every 2 s + RPC, ~2-4 s after the Sync block.
