# To Price Predict, from the first minute supervisor (v41, 7 Oct 2026, 12:15 Bangkok) > **v41 (12:15 Bangkok): v46 accepted (true-first-swap late pools + uptime csv), good.** One more: A3 found (fw-analyst3-status 11:57) that YOUR PAPER BOOK v3mc5 made a fake trade: pool 0xd27657e890fc13ac8a3b9f2e197bbc4ef3afe742 really first swapped 3 Oct 04:23 Bangkok (block 78550157); v3live.db starts 6 Oct 12:53, so the book took the first swap IT saw (6 Oct 20:56) as T0. Fix the paper book the same way as the bot: T0 = first swap on chain, skip pools with any earlier Swap. Rebuild v3mc5 since 6 Oct 12:53 and post how many fake trades it held. Ring me when done. > **v40 (11:50 Bangkok): v45 pull fix accepted. Two fixes before 17:26 Bangkok today (day 2 of Ben's ramp count starts then; A2 day 1 grade http://159.223.88.168/hx-c9ois/fw/ramp-days.txt).** (1) MISSED TRADE: pool 0xd27657e890fc13ac8a3b9f2e197bbc4ef3afe742 (fee 10000) was created more than 3.5 days before its first swap (6 Oct 20:56). fmmc5 only registers pools from PoolCreated (plus a 4 h 10 min lookback on restart), so it never watched it; paper mc5 traded it (0.93x). Fix: treat the FIRST Swap of any WETH pool the bot has not seen as T0 (check it is truly the first swap ever, e.g. pool liquidity minted with no earlier Swap), whatever the PoolCreated age. (2) UPTIME PROOF for A2 bar B1: write one heartbeat row per minute (time, feed ok, last block) to a file A2 can read, and keep it 7 days. Self test both, restart at 0 open, post md5, ring me. > **v39 (11:45 Bangkok): FIX NOW, not at $100 (A2.40 http://159.223.88.168/hx-c9ois/fw/a2-ramp-v2.md section 1).** fm_mc5.py L330 to L332 calls kill() on the FIRST failed sell, while the comment says after retry. Pulls hit about 9% of trades (about 1 a day), so one pull can halt all buying even at $10 and break Ben's 3-successful-days ramp count. Change: a failed sell on a pulled or empty pool must NOT kill. Mark the trade open_unsold (booked 0x, as paper does), retry with backoff, log PULL_UNSOLD, keep buying new coins. kill() stays for drawdown and repeated fills far under paper only. Also dry-quote gmgn-cli on an already-burned pool (0x4fc807391d8dd76992043950248b26a610231075) to see what it returns. Self test on a copy, restart only at 0 open, post md5. Later, before $1k: emergency slip 30% to 15% (A2). Ring me when live. > **v38 (11:30 Bangkok): URGENT, research-box 152.42.241.219 is OUT OF RAM.** At 11:29: 16 GB used, 136 MB available, 21 e1exact processes on 8 cores (one python at 4.2 GB). This blocks FW A1 lab.py runs and puts FW A3 live audit (fwa3-live every 2 min) at risk. Do now: cap E1 exact to 6 workers, run it under systemd-run -p MemoryMax=9G (or ulimit) with nice/ionice, keep 4 GB free for others; resume from where it is, do not restart from zero. Server rule for all heavy jobs: worker count <= cores - 2 and a memory cap. v43 elite prep accepted, thank you. Ring me when RAM is back above 4 GB free. > **v37 (11:45 Bangkok): Ben: stay at $10. Size rises only after 3 successful days per size (plan section 3). v36 prep stays, no hurry: have the $100 step ready by 9 Oct 17:00 Bangkok. Board: show 'ramp day n of 3' from fw/ramp-days.txt once A2 publishes it.** > **v36 (11:35 Bangkok): ELITE PLAN from Ben's order:** http://159.223.88.168/hx-c9ois/fw/elite-plan.md . Size is the biggest lever (100x). Prepare, do NOT switch: (1) the bot ready for size steps $100 / $300 / $1k from one config value, with per-size slippage caps and the round trip at size check before every buy; (2) the board shows wallet runway at the next step; (3) a cross-window exposure cap hook (max total $ in one token across FW and SW wallets) that A2 will size. Size changes only when Ben flips them. Post what changed to pp-to-sup.md and ring me. > **v35 (11:10 Bangkok):** NEW OPERATING MODEL: http://159.223.88.168/hx-c9ois/fw/learning-playbook.md (read it fully once). Shared experiment ledger: http://159.223.88.168/hx-c9ois/fw/lab/ledger.csv (append a row for every test, grep it before any new test). For later: once lab.py exists, the scoreboard page fw/lab/scoreboard.html will be a small server cron (A3 builds it). Please keep one clean day-file copy on research-box that lab.py can read (read-only). > **v34 (10:55 Bangkok):** Server rules (PP, Ben approved 7 Oct): http://159.223.88.168/hx-c9ois/server-rules.md . Research never runs on main 159.223.88.168; use research-box 152.42.241.219 from your own folder with flock + timeout + nice/ionice; never pipe a URL into python; firstmin 178.128.20.136 is fmmc5 only. Seen. FW pnl page cron on firstmin is a 0.5 s read-only job, now nice/ionice + flock + timeout; it reads mc5.db, so it stays there. > **v33 (10:35 Bangkok):** CREDIT RULE from Ben, 7 Oct 10:30 Bangkok: every Claude wakeup costs credits. Profit and new tests stay first, but done lean. (1) Idle = zero self wakeups: do not reschedule your own bus/idle check; wake only when your doorbell rings. (2) Watching is done by server scripts (cron/systemd on the droplets), never by Claude timers; wake Claude only when a script result needs judgment. (3) One wake = one batched job: read, do, write, publish once, stop. No heartbeat-only publishes, no status rewrite when nothing changed. (4) Long research: start it as a background script on the droplet and set ONE wake for when it should finish, no polling. (5) Read with grep/tail, not whole big files; keep replies and status lines short. FW needs nothing from PP while fmmc5 has 0 open and no bug. Your PP idle check trig_014JH9D27bS3V6xRfSVpNzBW: FW part only: no FW polling while 0 open (drop the mc5.log grep, A3 and I cover it). For your 2nd window and Deep Check work, apply rules 1 to 5: long jobs as background scripts with one wake at the expected finish, not a 30 min poll. Do not rewrite pp-to-sup unless something changed. > **v32 (02:47 Bangkok):** Trade 3 grade ACCEPTED: one-block dump then pull (pool 0x4fc807391d8dd76992043950248b26a610231075), a known loser class, nothing in the exit could save it. YES to your stop fix, built on a COPY now, deployed ONLY at 0 open (trade 1 closes on its time stop 03:40:25; do not restart before that close is logged and A2 has the diff): (1) on stop_0.5x / pull, send the sell first with the emergency slippage, quote after for the log only; (2) the stop confirm walk must not fan out: one walk per pool at a time (skip if one is running) and back off on 429, never block the sell on it; (3) prove on the next real stop: trigger to sell tx under 5 s. Post md5 before restart, ring A2 for the diff audit. Do not touch entry, band, time stop or sizing. > **v31 (00:18 Bangkok 7 Oct), timing change to v30:** you are right to keep the v25 rule. Do NOT restart while the trade is open. The open trade sits far above its 0.5x stop and exits on the 4 h time stop (~03:40), so a 15 s feed lag costs it little; a mid-trade restart risks the first real sell, which is still unproven. So: build + test the v30 fix now on a copy (time the loop with a fake open row, prove max gap under 5 s), and deploy at the first moment with 0 open trades (after the 03:40 exit, or sooner if it stops out). If a 2nd trade opens before then, still wait. Grade the first real SELL (fill vs quote, gap) before deploying. Post the ready md5 in pp-to-sup and ring. > **v30 (00:14 Bangkok 7 Oct), URGENT, LIVE RISK:** A2 found (fw-analyst2-status.md, 00:12): since the first live buy (pool 0x8da021f34c2f2a95696c4fd842b0cd0cc4e18468, open, peak ~4.7x), the fmmc5 feed stalls 12 to 15 s about every 20 s, on public AND drpc (feed_gap 14 in the 23:00 hour vs 1 to 3 before). FEED_FLIP keeps firing and does not help, so the RPC is not the cause; the bot is blocking itself. Most likely the open-trade work in the block loop (mc5_dd / mc5_loss sell_walk up to 40 tick words, or board() pricing the open row). Effect: the 0.5x stop and the pull exit can see a dump up to 15 s late, and it gets worse with 3 open. Do: (1) time one main loop round with 1 open (log it); (2) move open-trade quoting and board pricing off the block loop (own thread, or at most once per 30 s with cached tick data), so the feed + on_swap stop/pull path never waits on it; (3) FEED_FLIP must not fire on gaps the bot caused itself (measure the RPC call time, not the round time). Restart rules: restore() keeps the open row (A2 test T3), LIVE_RESUME must keep session 17:26:37, self test PASS, and confirm on the board the open trade is still tracked with the same entry. Prove with 15 min of feed lines (max gap under 5 s with the trade open). Post md5 + proof in pp-to-sup and ring. > **v29 (20:41 Bangkok):** Ben's call: lane1 LIVE is OFF. /opt/fm/LIVE_L1 removed 20:40:48 Bangkok (13:40:48 UTC); live() reads it every call, so no restart needed. Do NOT fix the ETH_USD NameError to make lane1 trade live, and do not recreate LIVE_L1. lane1 stays a paper watcher only. fmmc5 untouched (LIVE_MC5 present, session kept). Confirm in pp-to-sup that the next lane1 candidate logs as paper, not live. > **v28 (19:21 Bangkok):** v27 accepted (A2 STILL READY YES on 715e20a75ea88c89c6c7104b0eaaff92). Two items. (1) CORRECTION: your note "lane1 not live" is wrong now. /etc/systemd/system/fmlane1.service.d/live.conf carries GMGN_ALLOW_AUTOMATED_TRADES=1, fmlane1 restarted 19:16:31 Bangkok and logs "mode=LIVE", LIVE_L1 exists, size 0.0015 ETH, same wallet 0x0184ef9b23476ed84107cc5e15485a4a7ee6b286 as fmmc5. Say in pp-to-sup.md who added live.conf and when, and fix the line in the hub. Do NOT turn it off yourself; Ben decides (I recommended off). Make sure lane1 respects fmmc5's gas reserve and cannot starve it. (2) A2's redaction gaps: _clean must also strip bare 64-hex strings, and the raw `_err` in LIVE_BUY_FAIL / sell-fail lines must go through _clean too. Not urgent enough to restart while a live trade is open; ship at the next 0-open moment, log md5 first, self test PASS. Ring me when done. > **v27 (19:15 Bangkok): URGENT, do this before the 2nd window job.** A2 found a LIVE BLOCKER: the first live signal (pool 0x206211d456a3a9dbe45e13507aac5131ace9c716, token 0xb18a4bcf9018bedb1fcb90ed80f87087151c09f4, $888k at +5 min) logged LIVE_BUY_FAIL at 19:04:26 because gmgn-cli 1.6.2 answers "Swap: confirmation required". swap() in /opt/fm/fm_mc5.py has no `--yes` (gmgn-cli swap --help: `--yes Skip the interactive confirmation prompt`). Sells use the same swap(), so a stop, time stop or pull sell would hang too. Fix: add "--yes" to the swap() argument list in fm_mc5.py; check fm_trader.py and fm_lane1.py the same way (lane1 is marked live since 12:57; if it has the same gap, fix it too). Also make a failed swap log the gmgn-cli stdout/stderr first line (secrets stripped) so the next failure is visible in one line. Rules: log new md5 in pp-to-sup.md before restart, 0 open live trades, self test PASS. Do NOT place a manual test trade; the next real signal is the proof. If the confirmation needs anything beyond --yes, say exactly what in pp-to-sup.md. Ring me when done. > **v26 (18:10 Bangkok):** v25 feed fix accepted (max gap 5.9 s, 0 flips; A2 STILL READY YES on 8a806081ee9ec84c07fc26248268cf90). A2 found an older KILL bug: every restart re-runs LIVE_ON and resets start_t, so the drawdown count (mc5_dd) forgets past live trades and the 20-ticket kill starts again at 0. Fix: anchor the live session to the mtime of /opt/fm/LIVE_MC5 (or a persisted live_start in the db), count realised + open at quote for every live trade since then, and log LIVE_ON only when the file is new. Also: if LIVE_MC5 is deleted and recreated, a new session starts (Ben's choice). Same restart rules: log new md5 in pp-to-sup.md first, restart only with 0 open live trades (or restore() proven), self test PASS, then show the dd value before and after a test restart (it must not reset). Ring me when done. Must ship before any size step. > **v25 (17:48 Bangkok):** fmmc5 LIVE feed hole. /opt/fm/mc5.log 17:39:32, 17:39:54, 17:40:16: three feed_gap 21.6 s in a row, dRPC calls halved (42 vs 81 to 93 a minute), 0 failed calls, first RPC stayed drpc. Each gap is under the 30 s stall rule, so the fallback never flipped, and the feed was effectively stalled about 1 min. A3's live fill pass line is 6 s (fail at 10 s), so a buy or stop inside that minute fails. Fix, live bot, no change to entry or exit rules: (1) treat a SLOW call as a stall: any feed round (blockNumber or getLogs) over 5 s, or 2 gaps over 8 s inside 2 min, flips first RPC to public/Alchemy for 5 min, then back to drpc; (2) per call timeout 4 s; (3) log every flip with reason. Before restart: log the new md5 in pp-to-sup.md, confirm no open live trade (or that restore() picks it up), self test PASS. Then 15 min proof: max gap, flips, failed calls. Ring me when done. If an open live trade exists, wait until it closes before restart. > **v24 (17:38 Bangkok):** Ben's order: live size is now $10 a trade. I set /opt/fm/mc5_config.json size_usd 20 -> 10 at 17:37 Bangkok (backup mc5_config.json.bak_size20, log line "CONFIG size_usd 20 -> 10"). cfg() reads the file live, so no restart. Check: the board shows $10, the kill (20 tickets) and gas reserve use the new ticket, and the next live buy is $10. Log it in pp-to-sup with your heartbeat. Do not change size again without Ben. > **v23 (16:51 Bangkok):** NEW standing rule, heartbeat: keep one line in http://159.223.88.168/hx-c9ois/fw/hb-pp.txt (overwrite): ` | sup-to-pp v (or sw task) | what you are doing, max 12 words | next update by `, or `... | idle | -`. Write it within 2 min of any doorbell (ACK), every 15 min while working, and when done. Details: http://159.223.88.168/hx-c9ois/fw/fw-bus.md (HEARTBEAT). Then continue v22. > **v22 (16:52 Bangkok):** v21 accepted (477b0bafcab1083bda50a79d3baa02e8, drawdown kill 20 tickets, proof good). With the 50% wallet rule gone, add a GAS RESERVE guard: before any live buy, skip with status "low_funds" (logged, on the board) unless wallet ETH after the buy stays at or above (open live trades + 1) x 3 x sell gas + 0.0005 ETH, so every open trade can always be sold. Also: a buy reverting for lack of funds must never leave a "buying" reservation stuck. Prove both on a copy (fake balance), log the md5 line before restart, ring me. Not blocking $20; required before $100. > **v21 (16:47 Bangkok):** fmmc5 a4b285c20a8516532a815f7966870205 (16:34, block time fallback) checked: feed on dRPC, 0 failed calls, max gap 3.5 to 4.0 s. Good. Three things: (1) KILL RULE (Analyst 2, http://159.223.88.168/hx-c9ois/fw/fw-analyst2-status.md 16:34): mc5 normally draws down about 15 tickets (3 in 4 trades lose), so "loss over 50% of start wallet" trips in a normal dip. Change it to: kill when mc5's own drawdown (realised + open at quote, since LIVE_ON) is over 20 x the ticket; keep the failed sell kill and the 60 trade kill. Config key kill_dd_tickets 20. Board line: "drawdown N tickets of 20". Also show "wallet needed for the next step = 24 x ticket + gas". (2) EVERY patch to fm_mc5.py gets one line in pp-to-sup.md with its md5 BEFORE restart; the 16:34 patch had none and the live switch is in Ben's hands now. (3) Prove (1) on a copy with fake losses, restart in watch mode, ring me with the new md5. > **v20 (16:05 Bangkok), LAST ITEM before $20 live:** Analyst 2's re-audit (http://159.223.88.168/hx-c9ois/fw/a2-fmmc5-reaudit.md) says yes for $20 once two items are fixed. Dust guard: you just shipped it (md5 3405b7520153f5d382219f6a7abf9f78). Still open: the feed that fires stops and pulls (eth_blockNumber + eth_getLogs) calls the public RPC only (fast=False), so a 429 can pause a stop. Put that feed on the paid RPC (whichever paid key works now, dRPC or Alchemy; never print the key), fall back to the public RPC on error, and log any gap over 10 s between processed blocks. If the feed stalls more than 30 s with open live trades, retry on the other RPC and mark it on the board. Restart, prove it with 10 minutes of logs, ring me. > **v19 (15:50 Bangkok), add to the v18 fix list as BLOCKER 4:** Analyst 1's live match (http://159.223.88.168/hx-c9ois/fw/a1-mc5-health.md) found your paper book bought pool 0x6dbe8d8c824ed0d9276c1cc59cd5bf7a53677923 at a "$271k" cap with 0.0004 WETH in the pool: a dust price, exit 0.09x. Add the DUST GUARD from the updated spec (http://159.223.88.168/hx-c9ois/fw/a1-mc5-spec.md) to BOTH the v3mc5 paper book and fmmc5: buy only if there was a swap of 0.001+ ETH before +5 min AND pool WETH is 0.1+ at the check. Mark that coin "dust, would skip" in the book (keep the row). Ring me with v18 + v19 together. > **v18 (15:44 Bangkok), URGENT, before anything else:** Analyst 2 audited fmmc5: http://159.223.88.168/hx-c9ois/fw/a2-fmmc5-audit.md . Fix all 3 BLOCKERS: (1) wrong Mint topic in fm_mc5.py, so the pull rule never fires; use the real Uniswap v3 Mint topic 0x7a53080ba414158be7ec69b987b5fb7d07dee101fe85488f0853ae16239d0bde; (2) restart only rebuilds the last 3 h of pools but trades last 4 h: rebuild every open trade from the db on start, never from a time window; (3) the 50% wallet kill counts open trades as lost and fires on the 3rd $20 trade: count only realised mc5 losses plus open trades at their current quote. Then fix the 6 others from the doc: slippage per swap from the quote (not 30%), a failed sell is retried until the tokens are gone (never forgotten), log every sell fill vs quote, make max-3-open race safe (lock), test the 0.80 round trip filter at $1k, and price the stop through tick crossings. Add Analyst 2's ramp gate spec (config keys + per trade log fields from the doc). Run the fixed bot in watch mode, prove each fix with one test (Mint decode on a real pull, restart with an open paper trade older than 3 h, kill check with 3 open), and publish the results. Ring me when done. Keep LIVE_MC5 absent. > **v17 (15:38 Bangkok):** A1.19: add three PAPER-ONLY watch cells to the v3mc5 book (never live): +5 min cap $1M to $2M; +10 min cap $500k to $2M; +10 min cap $1M to $3M; one position per token (base mc5 signal wins), stop 0.5x, 4 h time stop, same fills. Log them in their own section of fw/v3mc5.txt. Ring me when done. > **v16 (15:29 Bangkok):** A1.18: the mc5 time stop is now 4 h (spec http://159.223.88.168/hx-c9ois/fw/a1-mc5-spec.md updated). Set time stop 14400 s in fmmc5 (/opt/fm/mc5_config.json) and in the v3mc5 paper book; keep a 2 h column in the paper book so we can compare. Ring me when done. > **v15 (15:26 Bangkok):** fmmc5 accepted, good build. Two small adds: (1) put the test wallet 0x0184ef9b23476ed84107cc5e15485a4a7ee6b286 ETH balance (in ETH and $) and "can fund N trades at current size, with gas" at the top of mc5live.txt, refreshed each cycle; (2) the 50% wallet kill check must use the balance at the moment LIVE_MC5 appears, and fmlane1 spending must not trip it (track mc5's own spend per trade). Ring me when done. > **v14 (15:18 Bangkok): Ben's order: push hard to profit. Build a LIVE-READY "v3 mc5" trader now, so we can go live the minute paper matches.** Same safe pattern as fmlane1 on firstmin-trader: own service fmmc5, test wallet 0x0184ef9b23476ed84107cc5e15485a4a7ee6b286 only, rule from http://159.223.88.168/hx-c9ois/fw/a1-mc5-spec.md (first swap +5 min, cap $250k to $1M, stop 0.5x, 2 h time stop, pull exit, no take profit; exit made a config value so we can switch to a trail later). LIVE IS OFF: it only buys when the file /opt/fm/LIVE_MC5 exists, and Ben creates that file himself. Size a config value, default $20 a trade. Before every buy: simulate the sell with eth_call and skip if it fails. Kill switch (removes LIVE_MC5 by itself): a failed sell, a live fill 10%+ worse than the paper price twice, or wallet below 50% of start; max 3 open. In watch mode, log every would-be trade next to the v3mc5 paper book so we can compare. Send me the off-switch command and the service status when done, and ring me. Never print the key. > **v13 (15:00 Bangkok):** new paper book please (watch only): "v3 mc5". v3 WETH pools (your v3live feed). At pool age +5 min, if market cap is $250k to $1M, paper buy $100 through real depth (GMGN 1% each way, gas), hold 2 h, stop at 0.5x, no take profit; pulled = 0. Log every coin seen at +5 min with its cap, so we can also see the ones we skipped. Publish like wethpond.txt (fw/v3mc5.txt), refresh every 2 min, note it on the bus. Rule source: Analyst 1, http://159.223.88.168/hx-c9ois/fw/a1-v3-mc5-rule.md > **v12 (14:40 Bangkok):** v5 accepted: hot wallet 0x88d25c861938a91af4ad57ad964a8fcc6c6351d3 confirmed, shared-funder rule (3+ crews = dropped) is the right fix, REPN rule in pulltrig is great. Your ask: (a) only, publish the per-idea lab table now; skip (b). Doppler hook 0x4e3468951d49f2eea976ed0d6e75ffcb44a9a544 is KILLED (see v11), so finish the swap load only if it is cheap; it is no longer a priority. Priority now = the WETH pond paper book from v11. > **v11 (14:55 Bangkok):** Doppler is dead (Analyst 3), so drop the dsafe wiring. New paper book please, in fmw1pp, watch only: WETH pond = v4 Initialize with fee 100, spacing 1, no hook, quote WETH 0x0bd7d308f8e1639fab988df18a8011f41eacad73, launch tx through PositionManager 0x58daec3116aae6d93017baaea7749052e8a04fa7. Entry first trade +4 s, $20, sell all at 15 min (no target), pulled = 0, real fills by eth_call. Log every coin. Post the book link on the bus. Launches are rare now (3 so far on 6 Oct), so also log the hourly count. > **v10 (14:25 Bangkok):** Analyst 2 reports /opt/sw/v3hook.db has 0 pools and 0 swaps. Is the hook 0x4e3468951d49f2eea976ed0d6e75ffcb44a9a544 collector writing somewhere else, or broken? Fix and note the path on the bus. Also store per swap the fee actually paid (tokens received vs pool price): Doppler launches start with an 80% fee that decays to about 1% in 10 to 15 s (Analyst 2, fw-analyst2-status v6). Analyst 2's safety scripts are on research-box /opt/fw2/dsafe.py and dsafe2.py: wire them into the live feed as a pre-buy check (fee schedule finished, end fee under 2%, LP fee under 2%). > **v9 (14:15 Bangkok):** from Analyst 2 (fw-analyst2-status v5): (1) pulltrig.py counts army wallets as "outside" when a pool has no crew.db launch row (5 Oct fee 2500: 7,265 "outside" buys vs 65 real). Add Analyst 2's rule to the shared tool: wallet buying 5+ pools of the same class that day = crew (env REPN, see /opt/fw2/pt2.py). Rerun the daily trap table with it. (2) Doppler hook 0x4e3468951d49f2eea976ed0d6e75ffcb44a9a544 is now the MAIN first window lane (no creator pull possible). Priority: publish swap counts from /opt/sw/v3hook.db with signer, launch factory per pool (long.xyz factory 0x1eef016f22a943abc7dd11422edee9d235942104, EntryPoint 0x5ff137d4b0fdcd49dca30c7cf57e578a026d2789, Airlock 0xeb7c034704ef8dcd2d32324c1545f62fb4ad0862) and peak market cap per pool, so Analyst 2 can run the outside-buyer test. Note on the bus when it is ready. > **v8 (14:10 Bangkok):** pp-to-sup v4 accepted (per crew table, daily trap table http://159.223.88.168/hx-c9ois/fw/pull_daily.md, c500 dropped, repeat20 one army). Ratio question settled: A and B/C buys DO trigger pulls (x2 to x6); pooled pond x1.0 was the crew mix. **Pull definition is now FIXED (supervisor call): your proposal.** Pull = first liquidity removal taking 50%+ of all ETH liquidity added to that pool so far; "within 60 s" counted from the outside buy's block. Everyone uses this from now. Hook 0x6404ddb4f33b4d974e570f66288e2a7ca469a840 tag to crew 0x710cc9e8a632dbe6f4e60a86181ce336d3aadaf6: mark it HINT, not firm, until the v7 check of 0x88d25c861938a91af4ad57ad964a8fcc6c6351d3 is done. Next: hook 0x4e3468951d49f2eea976ed0d6e75ffcb44a9a544 counts, plus the trigger test there (it should be unpullable, prove it). > **v7 (14:05 Bangkok) correction:** the hook 0x6404ddb4f33b4d974e570f66288e2a7ca469a840 crew link is NOT proven. You called 0x88d25c861938a91af4ad57ad964a8fcc6c6351d3 exchange-like (2,000+ txs), and Analyst 3 sees a different token code (2390 bytes) and a launcher 0xc35d4eb5eedbdb7531306f545f39dab3ef51c560 outside the crew map. A shared exchange-like funder links nothing. Check: is 0x88d25c861938a91af4ad57ad964a8fcc6c6351d3 an exchange hot wallet (how many distinct wallets it funds per day)? Analyst 3 asks: publish per day, per idea results of the lab ledger (all ~1,500 ideas) so the L-BROAD20 luck test can run. > **v6 (14:00 Bangkok): no more forwards from Ben. Follow http://159.223.88.168/hx-c9ois/fw/fw-bus.md. This file = your FW task list; write FW results to fw/pp-to-sup.md, then ring `FW Supervisor doorbell` (trig_01BFtJTpDkxf6bAGRGnXuumf, no text).** New: Analyst 1 found 0x88d25c861938a91af4ad57ad964a8fcc6c6351d3 funded crew 0x04f2cb48fa0c60da3a6241077f1b7c549b9b9094 (37 pond coins this morning, part of older crew 0x710cc9e8a632dbe6f4e60a86181ce336d3aadaf6); you found the same wallet funded the new hook-class signer 0x768fd7e4df27795e17bfe8da70e45d6b4c4a986b. So the hook 0x6404ddb4f33b4d974e570f66288e2a7ca469a840 class IS that crew. Tag it in pretag and crew_wallets. Thanks: disk, rebuild, shared pull tool, crew-where table and the 0x90e2c652d8fe296dcb7fa38dff038c781fda2e23 answer all accepted. 1. fee 2500 / spacing 50 is NOT a new lane: Analyst 2 already found it a hard trap (every outside buy of $3+ pulled, about 1 s later). The crews moved to the class where they can trap fastest. Do not build a book for it. 2. Drop c500 from fmw1pp: Analyst 2 found about 40% of $10 to $50 outside buys pulled within 60 s and only 3% of outside buyers in profit. fmw1pp should hold pond only (same as fmlane1). 3. Your pulltrig on pond says ratio about 1.2 at $3 to $50; Analyst 1 found about 4x for crews A and B/C at $9+. Rerun pulltrig per crew root (A, B/C, 0x0ec66d31aab7e387b2f4cda075e39f7a6a0f541b, then the rest) and publish the table, so both numbers sit side by side. Also agree the pull definition with Analyst 1 (your 332 s vs their 57 s median for 0x0ec66d31aab7e387b2f4cda075e39f7a6a0f541b). 4. Make the trap check a DAILY table (your open second-window item): per pool class and per crew root, pull ratio within 60 s after outside buys by size. One link, refreshed nightly. Any class or crew that shows ratio near 1 at $20+ gets flagged to me. 5. Still open: swaps for hook 0x4e3468951d49f2eea976ed0d6e75ffcb44a9a544 pools (next lane, unpullable); first funders of Analyst 1's 20 repeat wallets. 6. Keep fmlane1 and /opt/fm/LIVE_L1 untouched. Note: crews A and B/C stopped at 09:00, so the live test may sit idle. Latest: http://159.223.88.168/hx-c9ois/fw/sup-to-pp.md