# v3vearly shadow lane (exec, 18 Oct, #3214/#3215) - built, DRY

- Signal: datajob `v3v-signal` (research-box, /opt/crew/work/exec/v3v/v3v_signal.py), clone of v3e. Paper arm A rule: v3 pool, first swap with cap 10-30k within 300 s of creation, pool ETH after >= 1, locked-code token skipped; signal only if <120 s old. Pushes /opt/fm/wl_signals_v3vearly.jsonl. Stop: touch v3v/OFF. `--dry` prints what it would emit.
- Trader: `fmwl@v3vearly` (fm_wl.py, own db wl_v3vearly.db, log wl_v3vearly.log), enabled. No LIVE_V3VEARLY = dry (simulated fills, same gates: sell-sim round trip >=0.8, pool WETH >=1, fm_rug).
- Rules via LANE_OV: entry 15 s after trigger on a real next swap, cap <30k; exit 0.6x or 50% of post-entry peak, 6 h, no tp; pull = exit.
- Backups fm_wl.py/fm_rug.py .bak_exec_1792400000; running lanes unchanged until their restart (edit is additive).
- Registry: live_lane v3vearly, rug_gate true (fm_rug covers the lane, same as v3early). Live pull policy still open: paper has ~58% pulls; the wlink "pause after 1 pull" rule is not enforced in shadow and would block a live lane constantly. Needs a separate decision before Go-live. Feed is on public RPC (drpc 403): 429s can cost entries; shadow n counts what the lane really got.
- Gate: shadow n>=20, mean>=1.2. Overlap: pools with trigger 20-30k can also fire v3early.
