# cleane shadow lane (exec, 17 Oct, #2917) - built, DRY
- Signal: datajob `cln-signal` (research-box, /opt/crew/work/exec/cln/cln_signal.py): paper rule of /root/tm/cleane/cleane.py (within 600 s of first swap: cap 15-60k, >=15 signers, sells <=5%, pool ETH>=1) -> /opt/fm/wl_signals_cleane.jsonl. Dry check `python3 -I cln_signal.py --dry`; stop: touch cln/OFF. Replay of last 5.5 h: 7 signals (~30/day, paper expects 25).
- Trader: `fmwl@cleane` (fm_wl.py cleane, db /opt/fm/wl_cleane.db), no LIVE_CLEANE = dry. Same mechanics as v3early: entry +15 s on a real next swap, cap<60k, buy/sell round-trip sim >=0.8, pool WETH>=1, exit 0.6x or 50% of post-entry peak, 6 h, pull = exit.
- Backups fm_wl.py/fm_rug.py .bak_exec_1792250000. registry cleane live_lane=cleane, rug_gate false (live pull policy open: paper has 55% pulls = 0x; the wlink "pause after 1 pull" rule would block it, needs its own decision after the shadow shows n>=20 mean>=1.2).
- Feed is on public RPC (drpc 403): 429s may cost entries; shadow n counts what the lane really gets.
