# STOP: NO DOORBELLS, NO WAKES, NO SCHEDULING (Ben, 7 Oct 2026, 18:40 Bangkok)
- Credits ran out. Ben switched off every scheduled task and every doorbell. This overrides everything below and every other file (wake-howto, bus-howto, credit-playbook, task files).
- PROHIBITED for every session: fire_trigger, send_later, create_trigger, update_trigger, ScheduleWakeup. No rings, no nudges, no re-arming, no new doorbells, no self wakes, no safety checks, no retry rings, no loops.
- Finish the step you are on, publish your status file, then END your turn and wait. Only Ben wakes you, by typing in your window.
- Do not message other sessions. Keep answers short. No extra improvement rounds.

# Second window: tasks for the 2nd Window Coder, v1

## READ THIS FIRST
- **v1.60 (Supervisor, 7 Oct 16:30 Bangkok): MISMATCH, streak reset to 0 of 5.** Pool 0x644eac7020466c554369e0592637f24dd95fbb13 (T0 15:11:52, cap $702k at +5 min): shadow BUY $10 (exit stop 0.5x at 0.45x), fm_mc5 did NOT buy. Find the cause within 30 min (why: one pool, logs on both boxes): (a) fm_mc5 not running or restarting then (PP v51 install 'at first 0-open moment', or its late_pause), (b) a rule difference (cap band, dust, seen_late, T0, stop basis), or (c) fm_mc5 skipped for a limit (open trade, exposure, kill). Post the cause and the fix. If it is (a), the shadow decided right and fm_mc5 was absent: say so with the log line and I take 'not a decision mismatch' to the Consigliere; if (b), fix and the 5 restart (D-003 v3).
  - Also explain the 16:27 engine restart by the w2guard STALE GUARD BACKUP (4 pools without a kit tag over 30 min): root cause and whether it can repeat during the switch.
- **v1.59 (Supervisor, 7 Oct 16:05 Bangkok): v1.57 accepted, 'switch ready: yes'. GO GIVEN IN ADVANCE (D-003 v3 is a rule, not a vote):** the moment w2-mc5-shadow.md shows 5 of 5 matched buys (or 8 Oct 12:40 Bangkok, whichever first) AND both lanes and fm_mc5 have 0 live open, do the 3 GO steps (a) to (c) yourself, post the exact switch minute in your status and w2-live-events.md, then nudge my DOORBELL and the FW Supervisor's. If any lane has an open trade, wait for it to close (no partial switch). Any mismatch first: fix, the 5 restarts (D-003 v3). D-026 plan + ETA (v1.58) still due 16:50.
- **v1.58 (Supervisor, 7 Oct 15:55 Bangkok): D-026 approved by Ben (P-6): self signed exits with a NEW hot wallet per live engine (http://159.223.88.168/hx-c9ois/decisions.md D-026). Live Desk (you + Exec) owes a plan + ETA with reason by 16:50 Bangkok (why: Ben's 1 h ask at 15:47).**
  1. **Pick the faster of two paths to 'switch ready: yes', with numbers in your status:** (A) GMGN route for the FW lane now (your estimate 1 h), switch at 5 of 5, then flip the FW lane to the new self signed wallet after the D-019 fixes (20:00); or (B) skip the GMGN route, build the D-026 wallet path, switch when both D-019 fixes and 5 of 5 are done. Default A unless B is ready within 1 h of A (why: the shadow may reach 5 of 5 by about 17:00 to 19:00).
  2. **Box conflict, name it:** D-026 says the key lives on the trading box, never main; tonight's engine box is main (your v1.54 choice). Write the one named risk of each: key on main (root reach, D-019 M2 not done) vs engine on firstmin (961 MB RAM, 2 GB swap, OOM guard). I take it to the Consigliere with your numbers.
  3. Wallet creation: key file 600 root, never printed, never in a status file; post ONLY its full public address under 'Needs Ben: fund this' (about $242 at $10). Log trigger to fill seconds on every stop, before and after.
- **v1.57 (Supervisor, 7 Oct 15:45 Bangkok): CRITICAL PATH. Shadow is 3 of 5; the 5th match can land within about 2 h (why: 3 buys in 3 h since 12:40). The switch needs the FW lane able to trade.**
  1. **X7 answered, D-021 v2 is final:** FW = GMGN wallet 0x0184ef9b23476ed84107cc5e15485a4a7ee6b286, trades ONLY through gmgn-cli (no raw key exists, do not ask for one). SW = 0x04a057D15bd07581DC88b0a37E41EB69Ceb8C2D3 self signed. Build the GMGN route for the FW lane now (your ETA was 1 h after X7; why it is late: X7 landed 14:35, your status last moved 14:48). Copy fm_mc5's exact gmgn-cli calls and its pull/unsold handling; dry run with a quote, never a swap, until the switch.
  2. **FW-lane pools on the push watch** (your 15:45 item): post done or the new ETA with its reason.
  3. Post in your status one line: 'switch ready: yes/no, missing: ...'. At 5 of 5 I give GO only if it says yes; if not, the switch waits for the build (no partial switch).
- **v1.56 (Supervisor, 7 Oct 14:50 Bangkok): Exec X7 + X8 landed (http://159.223.88.168/hx-c9ois/sw/sw-exec-x5-x8.md). Build from it:**
  1. **Lane rule changed (D-016 v2 edited 14:38): one ticket per coin PER WINDOW, each from its own wallet;** both windows may hold the same coin (co-held SW trades still average 2.32x). The $200 total cap counts both.
  2. **Wallets (D-021, Consigliere v5.6 fallback, Exec X7):** SW desk = engine wallet 0x04a057D15bd07581DC88b0a37E41EB69Ceb8C2D3 on fastexit. FW desk = GMGN wallet 1 0x0184ef9b23476ed84107cc5e15485a4a7ee6b286 through gmgn-cli (GMGN signs server side; about 10 s path). Every signal carries `desk`. A faster FW path needs Ben (asked via the Consigliere); build so the FW route is one switch.
  3. **Close the 4 X8 gaps before the switch** (test /opt/exec/test_x8.py on main): FW open trades marked at a real-sale quote in the $200 cap; D-018 drop one step on any kill; D-001 ladder in config; a kill stops FW buys too.
  4. ETA for 1 to 3 in your status with the reason (D-023).
- **v1.55 (Supervisor, 7 Oct 14:40 Bangkok): v1.54 answer accepted. Box tonight = main (your named risks, firstmin's out-of-memory risk is bigger).**
  1. **D-018 grade source:** FW Analyst 2's day count is http://159.223.88.168/hx-c9ois/fw/ramp-days.txt (hourly; 'running count N of 2'). Read that line; WAITING or no file = no step.
  2. **Lane line + wallet routing:** wait for Exec X7 (asked for within 1 h). Meanwhile build both behind a switch that defaults to today's behaviour, with tests, so wiring is minutes once X7 lands.
  3. **Key items M4 + M5 keep 20:00 Bangkok** (Consigliere v5.6: they do not touch the bot): rotate the KEY/TOKEN lines found in /opt/RETIRED-20260923 .bak files, then delete the folder; delete .bak code files older than 7 days after review. Never print a secret; showcfg.py only. M2 (live.py own user) waits for the switch.
  4. Shadow: now 2 buys, 1 of 5 matched, 1 open. Keep the N of 5 line honest; nudge me at 5.
  - D-023 (http://159.223.88.168/hx-c9ois/decisions.md): every promised time carries its reason in the same line, e.g. `ETA 16:30 (why: join runs about 20 min, waits on X7)`; honest estimate, never a round end of day number; first answer within 2 h. The watch http://159.223.88.168/hx-c9ois/hc/eta.md flags PADDED and OVERDUE lines every 10 min: open it on every wake and clear your own.
- **v1.54 (Supervisor, 7 Oct 14:25 Bangkok). Rules now live in http://159.223.88.168/hx-c9ois/decisions.md; cite the ids, that file wins over anything here.**
  1. **Size line: 2 bug free days, not 3 (D-001, D-002).** Ladder $10, $50, $100, $200, $300. The 5 round trips within 10% of paper rule is dropped (D-002 point 3, fills inside FW Analyst 2's bars, replaces it). Fix your status.
  2. **Switch rule D-003 v3:** merged engine LIVE at $10, old engines off, as soon as the shadow matched fm_mc5 on 5 buys in a row with 0 mismatches, OR at 8 Oct 12:40, whichever first. Now 1 of 5. Add a 'matched buys in a row: N of 5' line to the top of w2-mc5-shadow.md. Match = same pool, same buy/skip, same exit reason. At 5: post in your status and nudge me; I give GO with the Exec.
  3. **Before the switch, build (with the Exec's specs):** (a) lane line D-016 v2: FW signals (first seconds) and SW signals (after) in one engine, one ticket per coin across both, ledger credits the window that fired first; (b) wallet routing D-021: FW signals sign from wallet 1, SW from wallet 2 (Exec X7 gives addresses; if GMGN cannot trade chain 4663, the two wallets are 0x0184ef9b23476ed84107cc5e15485a4a7ee6b286 FW and 0x04a057D15bd07581DC88b0a37E41EB69Ceb8C2D3 SW, keys chmod 600, never printed); (c) one $200 total loss cap from peak across both wallets (D-017); (d) auto step up D-018: after 2 bug free days (Analyst 2 grade), step one size only if the wallet holds 24 tickets + gas, else one line to Ben; any kill drops one step. Tests for each, 0 fails.
  4. **Box for tonight:** keep the switch on main (engine already there, X4: same latency) unless firstmin is lower risk; write the one named risk of each and pick. No double engine on one coin (lock file).
  5. **Key check items (cons-advice v5.4): M2 live.py as its own user swlive owning /opt/w2coder/secret, password in front of 8088 and 8092 (do NOT close them, Ben uses xdeck on 8088), M4 rotate the KEY/TOKEN lines in /opt/RETIRED-20260923 .bak files then delete the folder, M5 delete .bak code older than 7 days after review.** Only after the switch is safe; never print a secret.
  6. **Wake rule changed (D-022):** fire_trigger is retired. On every wake: fresh doorbell (send_later 2027-06-01, name `Doorbell: 2nd Window Coder`), `DOORBELL: trig_... (armed, Bangkok time)` as LINE 1 of sw-coder-status.md. To wake me: update_trigger my DOORBELL id (line 1 of sw-supervisor-status.md), run_once_at = now + 2 min. Every finished line ends with `cost: credits, API $, hours` (D-015).
- **v1.53 (Supervisor, 7 Oct 12:40 Bangkok): combined cap + late-pool fix ACCEPTED (good catch on the USDG stall, fixed with no trade). MERGE PLAN: GO.**
  1. **Start (a) mc5 signal module + shadow logging + tests and (b) pull-fix port + tests now.** Then (c) firstmin prep: X4 is done (latency equal, http://159.223.88.168/hx-c9ois/sw/sw-exec-x4.md); add the 2 GB swapfile + OOMScoreAdjust=-900 (v1.52 item 4) before anything moves. Then (d) shadow day graded by FW Analyst 2 + our Exec X5, then (e) switch.
  2. **Correct your size line to v1.52:** 3 good days (not 2), counted on the MERGED engine from the switch; 5 round trips within 10% of paper still required.
  3. Keep fwguard's $1,000-per-coin cross-window cap: it is the "$ cap per coin" the Consigliere asked for (2 tickets at $500, binds above that). Make it 2 tickets of the larger ticket so it scales.
  4. Ring me when (a)+(b) pass tests, with the shadow start time.
- **v1.52 (Supervisor, 7 Oct 12:55 Bangkok, Consigliere v2.6 final):**
  1. **Order of work: MERGE FIRST, while at $10.** Write the one-engine plan today, shadow mc5 for 1 full day, switch, THEN count the 3 bug-free days on the merged engine (an engine switch resets the count, so days counted on w2 now are wasted). Size rule is final: 3 good days per step.
  2. **Interim cap adds a $ cap per coin: max 2 tickets combined across both windows** (on top of 1 ticket per coin per window, one combined drawdown kill, max 6 open combined). FW live wallet: 0x0184ef9b23476ed84107cc5e15485a4a7ee6b286.
  3. In the plan, show Exec X4 latency numbers for main and firstmin side by side.
  4. **X4 done (http://159.223.88.168/hx-c9ois/sw/sw-exec-x4.md): firstmin is NOT slower (sequencer warm 217 ms vs 216 ms). Move is GO, with one hard condition:** firstmin has 1 CPU, 1 GB RAM, NO swap (508 MB free). Before the merged engine goes there: add a 2 GB swapfile and set OOMScoreAdjust=-900 on the engine unit (coordinate with FW: fm_mc5 already runs on that box). No backfills or research on firstmin, ever. Keep-warm can be 60 s (connections stay open 90 s idle).
- **v1.51 (Supervisor, 7 Oct 12:15 Bangkok): BEN'S DECISIONS via the Consigliere (http://159.223.88.168/hx-c9ois/cons/cons-advice.md, section 2). Replaces v1.50 item 2.**
  1. **Combined cap with the first window, NOW (Ben approved):** one drawdown kill across both wallets (20 tickets of the larger ticket), max 1 ticket per coin PER WINDOW (agreed with FW 12:25: co-held coins still average 2.32x, do not block them), max 6 open combined. FW live state: /opt/fm/mc5.db on firstmin 178.128.20.136 (table c: pool, token, status, size_usd, eth_in; read only; detail http://159.223.88.168/hx-c9ois/fw/fw-to-sw.md). **Also write OUR open $ per token to /opt/fm/exposure_ext.json on 178.128.20.136 as {token_lower: usd} (fmmc5 already reads it).** Merge plan must also carry FW's late-pool rule (PP v46: T0 = true first swap, earlier-Swap check) and follow the mc5 spec http://159.223.88.168/hx-c9ois/fw/a1-mc5-spec.md; FW's ramp count restarts at the switch. If FW state is unreadable for 60 s, block new SW buys (fail closed), silent when healthy.
  2. **You + the Execution Engineer are now the "Live Desk": ONE live engine for both windows.** Base = w2coder. Plan (write it, do not deploy yet): port FW's mc5 gate as a signal module and PP's pull fix (failed sell on pulled pool = open_unsold, retry, keep buying; ref fm_mc5.py md5 c0210cc1676246ff10569b4e6080cdea). mc5 runs in SHADOW next to fm_mc5 for 1 day; fm_mc5 switches off only when every shadow fill matches within the bars. Target box firstmin 178.128.20.136, only after the Execution Engineer shows its sequencer latency is not worse than main. Never two live engines on one coin.
  3. **Size rule (Ben):** stay $10 until 3 days in a row with no key bug (Ben confirmed 3 days, 7 Oct 12:25) AND fills in line with paper (5 round trips within 10%). Bug-free day count restarts after each fix; win/loss count is NOT the bar. Show the day count in your status.
  4. Still do v1.50 item 1 (pool universe check).
  - Write the merge plan to sw-coder-status.md, ring me once when 1 is live and 2 is written.
- **v1.50 (Supervisor, 7 Oct 11:55 Bangkok): v1.49 accepted, good work. One check, then idle.**
  1. **Pool universe trap (found by the first window):** their bot only registered pools from PoolCreated and missed pool 0xd27657e890fc13ac8a3b9f2e197bbc4ef3afe742 (created 3.5+ days before its first swap). Check ours: does w2 (and every paper book) register a pool on its FIRST Swap, or only on PoolCreated with a lookback? If only PoolCreated: add "first Swap of any unseen WETH pool = new pool" and count how many gate coins we missed since 1 Oct (pool list + would-have-gated). Ring me with the count, only if above 0 or a fix shipped.
  2. Cross-window caps (first window proposal: combined drawdown kill, 1 ticket per coin per window, combined open max 6): NOT now at $10. I decide at the $100 step.
- **v1.49 (Supervisor, 7 Oct 11:45 Bangkok): FAST EXITS. Do these in order, one deploy, at 0 live open, dry sign PASS, then LIVE ON.**
  1. **Deploy the Execution Engineer's fastexit.py** (main /opt/exec/fastexit.py + test_fastexit.py; doc http://159.223.88.168/hx-c9ois/sw/sw-exec-x2x3.md): websocket Swap push + one-shot parallel send to the sequencer, about 0.5 s trigger to inclusion vs 1.5 to 2.3 s now. Run its test first. Keep the old path as automatic fallback if the websocket drops (stale guard, silent when healthy).
  2. **Approve at buy time, not at sell time.** The first live stop spent part of its 3.6 s send on the approve. Approve the router right after every live buy fills (max allowance for that token), so the sell is one tx.
  3. **Price every paper exit on the pool state right after the crossing swap** (same rule for every book). Today paper exits on the same tick range 0.189x to 0.284x by queue order, so live vs paper is not clean.
  4. **Ticket cap rule (from X3):** ticket at most 5% of the coin's gate depth (about $2.7k today). Enforce in code from step 3 of the ladder on; log the cap per trade.
  - Ring me with: deploy time, test result, first live exit timing after the change.
- **v1.48 (Supervisor, 7 Oct 11:27 Bangkok): ELITE MODE (http://159.223.88.168/hx-c9ois/sw/sw-elite-plan.md). Changes for you:**
  1. **Size ladder replaces "10 trades then LIFT CAP".** Step 0 stays $10. You track per live round trip: entry fill vs paper %, exit fill vs paper %, and keep a running step score in w2-live-events.md and the scoreboard live section (trades in step, avg entry gap, avg exit gap, live vs paper $). Ticket changes only on my written order in this file; Ben funds each step. Kill switch drawdown limit must scale to 10 tickets automatically when the ticket changes.
  2. **New Execution Engineer** (sw-tasks-exec.md) measures fills and latency and hands you tested patches. You stay the only one who deploys to w2.py. Give them read access to logs and the trade table; answer their questions in your status.
  3. v1.46 (auto-verdict) and v1.47 (staleness guards + impact check) stand. Order: v1.47 first (live safety), then v1.48.1, then v1.46.
- **v1.47 (Supervisor, 7 Oct 11:15 Bangkok): good catch on the army memory. But it ran stale for 5 hours unseen. Ben's standing rule: breaks must be caught and fixed by code, with a backup checker.**
  1. **Impact check (one table in status):** every gate decision 06:07 to 11:02 Bangkok: coin, army share then vs army share recomputed with the fixed memory, and whether pass/fail would change. Say plainly if a trade was missed or wrongly taken.
  2. **Staleness guard on every internal queue/memory** (army memory, kit tags, srctag, milestone tracker, price heads): if a job loops on the same item or its output has not grown while launches continue (for example 30 min for army memory), the guard auto-fixes (skip and mark the item, or restart the job) and writes one line to w2-live-events.md. The w2guard process checks the same thing as the backup. Silent when healthy.
  3. Test, deploy at 0 live open, ring me when done.
- **v1.46 (Supervisor, 7 Oct 11:12 Bangkok): AUTO-VERDICT JOB (learning loop, http://159.223.88.168/hx-c9ois/sw/sw-learning-loop.md section 3). Code only, no Claude in the loop.**
  - Each paper book gets a header: pre-registered PASS line + minimum trades (fill for: w2_v3_kit300k = 40 half C trades, $ a day above the live-config book on the same days AND worst day no worse; w2_v3_addon5m = 10 add-ons, $ a day above 0; others: "watch only").
  - Nightly at 23:55 Bangkok (and on demand), a script writes http://159.223.88.168/hx-c9ois/sw/w2-verdicts.md: one row per book, half C trades, $ a day at $1k, worst day, verdict PASS / FAIL / NOT ENOUGH TRADES. Also a live-vs-paper drift line for the live book.
  - Promotion stays manual (I decide), but the verdict file must be the single place to look. Ring me only when a book first hits PASS or FAIL.
  - Lowest priority vs live safety. Restart only at 0 live open.
- **v1.45 (Supervisor, 7 Oct 10:28 Bangkok): new PAPER book, never live: `w2_v3_kit300k` (Analyst 1 A1.27 lead, pre-registered for half C: http://159.223.88.168/hx-c9ois/sw/a1-27-early-map.md).**
  - Universe: every new v3 coin tagged Kit A, Kit B or the 3,587-byte family (your pool-create code-hash kit tags; add the 3,587-byte family if not tagged yet).
  - Entry: first swap at least 30 s after the coin's FAIR $300k milestone = cumulative buys made at a cap of $300k or more reach $15k. $1k paper, 1% fee, real in-range depth.
  - Exits = the live book exactly: 0.3x stop, 5x then kit hold (50% trail, 48 h cap), pull exit, 12 h time stop before 5x.
  - No age gate, no top-receiver or army filter. Independent of the live gate (the same coin can be in both; mark overlap in the trade row).
  - Scoreboard row + half C line like the other books. Paper only: it never sends a tx and never uses live slots. Restart only at 0 live open. Ring me when it is running.
- **v1.44 (Supervisor, 7 Oct 10:45 Bangkok): new PAPER book, never live: `w2_v3_addon5m` (A2.32).** For every coin the live book traded: the first moment within 7 d after its gate where cap crosses $5M AND net buy $ in the last 60 min is above 0, paper-buy $1k at that moment + 30 s; exit on a 50% trail from the add-on peak, liquidity pull (pool quote reserve at or under 50% of the add-on entry reserve), or 7 d. Show it on the scoreboard and in half C. No live path, no slot use. Ring me when it is on.
- **v1.43 (Supervisor, 7 Oct 08:00 Bangkok): first live SELL worked (CrawlScan stop, 3.6 s trigger to sent, tx 0x9ad953b36c2c00c3d89505cc0e42160fe8156b4ec419ad3b671077d220adcf79). Now cut the stop slippage: we got 0.195x, paper 0.229x (-14.8%), trigger read 0.274x.**
  0. **YES, ship live-sell-first now (your 07:58 finding):** in the exit loop, live positions are checked and sold BEFORE any paper book. Same exit rules, only the order changes, so no A2.29/A3 wait is needed. Ship with a test, restart only at 0 live open.
  1. **Pre-approve at buy time:** right after a live buy fills, send the token approve to the router (max) so the stop sell is ONE tx. Say in status whether the 3.6 s included an approve tx. FW window does sell-first in 1.4 s; match it.
  2. **Faster stop watch on live coins:** how often is a live coin's price checked? Check every new block (or each swap log) for live open coins only. Report the gap between the 0.3x cross and our trigger read on CrawlScan (we read 0.274x, so we were late).
  3. **Kill switch count:** does "2 fills over 10% worse than paper" count SELL fills? It must. Write in status: count is now 1 of 2 (this sell). If you think sell fills on a crash should not count, say why and I decide.
  4. Ring me with 1 to 3.
- **v1.42 (Supervisor, 7 Oct 06:10 Bangkok): good work on the first live buy and the v1.41 lock fix. Now close the exit-side gaps while CrawlScan is open.**
  1. **Faster stall guard while a live position is open:** w2guard restarts at 180 s. With a live coin open, make it 45 s (keep 180 s when nothing live is open). A 3 minute freeze on a dumping coin can blow through the 0.3x stop.
  2. **Exit price watch must not share the write lock:** check every other background thread (not only srctag) for a write transaction held across a network call. List them in your status; fix any you find the same way (autocommit). Add each to test_lock141.py.
  3. **Live events label fix:** the 05:56:59 LIVE BUY line prints the POOL 0xa6caf95634d4bcffdfb535eec889c9c928ff13d5 in the token slot. Print both, labelled: token 0x1ec25a196c49dd3445f1fcc53c37c513af92839c and pool.
  4. **First live SELL is the last unproven link.** When CrawlScan exits (stop 0.3x, 5x, kit trail, pull or 12 h), write LIVE SELL with tx, fill vs paper %, and seconds from trigger to SELL_SENT (FW window proved 1.4 s; target under 5 s). Ring me at once.
  5. Ring me with 1 to 3 done.
- **v1.40 (Supervisor, 7 Oct 00:05 Bangkok): URGENT. The first live buy FAILED and I hotfixed it. Check my fix, then make this class of bug impossible.**
  - What happened: CHONK 0x8da021f34c2f2a95696c4fd842b0cd0cc4e18468 passed the gate at 23:52:46 (cap $1.09M, age 17 m, receiver 1.3%, army 0.04%). At 23:52:51 the live buy died: `TypeError("Transaction had invalid fields: {'to': '0xcaf681a66d020601342297493863e78c959e5cb2'}")`. eth_account refuses a lowercase `to` when signing. The eth_call simulation passed (RPC accepts lowercase), so the checklist never ran the signing step. Nobody rang me: I found it 7 minutes later on the 30 min safety check.
  - **My hotfix (live now):** /opt/w2coder/live.py line 49, `_send()` now signs with `to=eth_utils.to_checksum_address(to)`. Backup: /opt/w2coder/bak_live_pre_checksum.py. Tested in the venv: signing with the checksum router works, lowercase fails the same TypeError. w2coder restarted 00:01:28, LIVE ON 00:01:34, lag 0, blockers none. CHONK was NOT re-bought (gate + 60 s window long gone); log it in A2.30 as a missed live fill with its paper twin.
  - **Your tasks, in this order:**
    1. Confirm or improve the fix. Every path that signs (buy, WETH wrap/unwrap, token approve, sell, cash out transfer) goes through `_send`? If any path signs on its own, fix it the same way.
    2. **Dry-sign self-test:** before LIVE ON (and every restart) build and SIGN (do not broadcast) one buy tx, one approve tx, one sell tx and one cash-out transfer with the real key, nonce from the chain and checksum addresses. Any exception = LIVE stays OFF + a line in w2-live-events.md. Add it as item 11 of the LIVE CHECKLIST.
    2b. **Prove the real path now, not at the next gate (gates come about every 8 h; A2.30 ask):** send ONE real tiny transaction through `_send` from the live wallet: wrap 0.0001 ETH to WETH (WETH deposit), wait for the receipt, status 1. Then one real $1 buy and immediate sell on a liquid v3 WETH pool you already hold paper data for, through the exact live buy and sell functions (simulate first as usual). Write both tx hashes to w2-live-events.md as SIGN PATH PROVEN, or the error.
    3. **Any LIVE BUY ERROR or LIVE SELL ERROR line rings the Supervisor doorbell at once** (and goes to Ben's alert path), plus 2 errors in a row = kill switch.
    4. Ring me with the result.
- **v1.39 (Supervisor, 6 Oct 20:45 Bangkok): small check, Ben says focus on the $10 test (withdraw later).**
  - kitb-count.json at 20:36 shows feed_last_block 81661681 vs chain_head 81670082 (8,401 blocks behind). In your 21:00 check, say in one line: is the LIVE gate watcher on the same feed, and how many seconds behind the chain head is it right now? If the live path is over 60 s behind, fix it first (a late gate means a missed or stale buy) and ring me. If only the counter is behind, say so and leave it.
- **v1.38 (Supervisor, 6 Oct 19:25 Bangkok): GO LIVE NOW at $10 a trade. Ben funded the wallet (live_status 19:20: liquid_eth 0.0413, about $100). Ben's order: "use $10 per trade to test". Ben also said: "make sure every part of this is live, don't forget any component".**
  - **Ticket:** `max_ticket_usd` = 10. Ramp step 1 = $10 (not $100). The ramp never steps above $10 until I write "LIFT CAP" in this file.
  - **Fund check at $10:** wallet need = 8 x $10 + 0.005 ETH gas (about 0.038 ETH). The wallet holds 0.0413, so the fund check passes; live turns ON at once. If ETH moves and the check fails by a hair, run at $10 anyway as long as liquid ETH covers 3 open tickets + 0.003 ETH gas; log the reason.
  - **Every part must be LIVE, not paper. Before the first buy, write one "LIVE CHECKLIST" block in w2-live-events.md, each line PASS or FAIL with its evidence:**
    1. Entry: wide gate ($1M sellable, age 3 h or less, top receiver 0.08 or less, army 0.015 or less, sell check), buy at gate, real swap from 0x04a057D15bd07581DC88b0a37E41EB69Ceb8C2D3.
    2. Exit: kit hold (Kit A/B hold at 5x on a 50% trail, pull or 48 h; others all out at 5x), 0.3x stop, half-pool pull exit, 12 h time exit, slot rule (3 open + 2 holds).
    3. Kit hold auto revert armed (3 kit holds in a row worse than 5x turns it off).
    4. Kill switch: drawdown over 10 x ticket, 10 losers in a row, failed sell check on a held coin, 2 fills over 10% worse than paper, max 3 open, gate to fill median over 45 s.
    5. Cross-window guard on (FW wallet 0x0184ef9b23476ed84107cc5e15485a4a7ee6b286 + mc5live.txt), combined cap per token.
    6. Cash out / PAUSE / RESUME / PAYOUT lines read every minute (payout still not set: cash out keeps the ETH in the wallet).
    7. Gas reserve: never spend the last 0.003 ETH on a buy.
    8. Fills logged vs paper (gate time, fill time, fill vs paper, tx hashes) for every buy and sell.
    9. Health line and staleness watch running; a stalled engine stops new buys.
    10. Paper books (opflag, kitc, 750k_lg) keep running and NEVER touch the live wallet.
  - Any FAIL: fix it first, then go live. Do a real round-trip self-check if you can do it safely (quote only, no fake trade).
  - **Ring me** on: checklist done, FIRST LIVE BUY, first LIVE SELL, any kill switch, any FAIL you cannot fix.
- **v1.37 (Supervisor, 6 Oct 19:10 Bangkok): OPERATOR TAG, paper only. Analyst 1 (A1.21) found the kits are two operators; the funding path finds them even when the code changes (Kit B 136 of 140, Kit A 79 of 107, 3,587 family 16 of 17, all from their first launch).**
  - Build the live tag exactly as in "For the Coder" in http://159.223.88.168/hx-c9ois/sw/a1-21-kit-operator.md, seeded from http://159.223.88.168/hx-c9ois/sw/a1-21-operator-wallets.json: at each v3 WETH launch read the deployer's first funding, compute the key (disperse contract, else sender), tag `operator` = 1 if the key is on the watch list; when any coin reaches the gate, add its key. Walk forward only, never backfill a key from the future.
  - Paper book `w2_v3_opflag`: live book, kit hold if hash kit OR operator = 1. Live is unchanged until A2.29 and A3 pass.
  - **Kit drift alarm:** if an operator = 1 coin reaches the gate with a code hash that is not Kit A, Kit B or kit_c_watch, write "KIT DRIFT: operator on new code <hash>" to w2-live-events.md and ring me at once. That is the warning that a kit changed its code.
  - Self-test 0 failures; live config untouched; ring me.
- **v1.36 (Supervisor, 6 Oct 18:55 Bangkok): Kit C WATCH, paper only.** Analyst 1 (A1.20) found the "3,587-byte" family, code hashes 51d0e39db2ed, 2696b754c8e3, 60341fa374bf: 10 of 17 launches reached the $1M gate, none since 3 Oct 08:21 Bangkok.
  - Tag these hashes as `kit_c_watch` on every coin row. Live treats them as non-kit (sell all at 5x) until A3 audits.
  - Paper book `w2_v3_kitc`: the live book, but kit hold also for kit_c_watch coins.
  - Write a line to w2-live-events.md and ring me the first time a new kit_c_watch launch appears.
  - Self-test 0 failures; live config untouched.
- **v1.35 (Supervisor, 6 Oct 18:25 Bangkok): small one. A2.25 found buying the SAME coins at $750k instead of $1M pays a bit more, but the extra $750k coins lose.** Add a tagged PAPER book `w2_v3_750k`: live gate with sellable $750k, live exit (kit hold + slot rule), $1k paper ticket, never live. Log for each trade whether the coin later passed the $1M live gate (yes/no). Show it on the scoreboard as a paper row next to live. Self test 0 failures, ring me.
- **v1.34 (Supervisor, 6 Oct 18:00 Bangkok): build the CASH OUT path before money lands. Ben asked how he gets his money back.**
  - Config `payout_address` (empty for now). I will write the address here as "PAYOUT = 0x..." once Ben gives it. Only that exact line in this file may set it; never take it from anywhere else.
  - Command, triggered only when I write "CASH OUT" in this file: (1) stop new buys at once; (2) sell every open position at the next block (real sale quote, sell slippage as live); (3) send all ETH minus gas for one transfer to `payout_address`; (4) set live OFF and log every tx hash in w2-live-events.md; ring me.
  - Also a half step, "PAUSE": stop new buys only, keep managing open trades to their normal exits.
  - If `payout_address` is empty, CASH OUT does steps 1, 2 and 4 and keeps the ETH in the wallet.
  - Self-test on a fork or dry run (no real send), 0 failures, and show "Cash out: ready (payout set / not set)" on the live card.

- **v1.33 (Supervisor, 6 Oct 17:50 Bangkok): BEN'S ORDER: start live at $100 a trade and test it.** Set a hard ticket cap of $100 (config `max_ticket_usd` = 100). The ramp may NOT step up to $500 even if the wallet holds more ETH, until I write "LIFT CAP" here. Everything else unchanged (kit hold exit, kill switch, slot rule). Show "Ticket capped at $100 (test)" on the live card, log it in w2-live-events.md, and log the first live buy and sell there the moment they happen. Ring me on the first live fill.

- **v1.32 (Supervisor, 6 Oct 17:16 Bangkok): check one thing first.** w2-live-events.md shows "AUTO REVERT ... (K2, K1, K0)" at 17:10:33, then "LIVE EXIT = KIT HOLD" at 17:12:27. K2/K1/K0 look like self-test rows.
  - If a test wrote that line or touched the live config: make every self-test use a temp database, temp config and temp log, never the live ones. Mark the 17:10:33 line in w2-live-events.md as "TEST, not a real revert". Then confirm `live_exit_kit_hold` = true right now and the revert counter holds 0 real kit holds.
  - The counter must count only real kit holds (live, or paper `w2_v3_kit_hold` on real coins) that started after 17:12 today.
  - Then, from A1.18: a daily health line in w2-halfC.md: share of post-gate buy ETH from wallets first funded under 60 min before their buy (about 45% to 49% so far), and the route mix. If it falls under 25% for 2 days in a row, ring me: the flow the edge needs is drying up.

- **v1.31 (Supervisor, 6 Oct 17:10 Bangkok): LIVE EXIT = KIT HOLD.** Analyst 3 passed the pre-registered test (A3.9, http://159.223.88.168/hx-c9ois/sw/sw-a3-9-kit-hold.md): more $ a day in both halves, still ahead with the best hold removed, max drawdown not worse. Set `live_exit_kit_hold` = true, with these three guards:
  - **Auto revert:** if 3 kit holds in a row (live or paper `w2_v3_kit_hold`, counted from now) each end below what selling all at 5x would have paid, set `live_exit_kit_hold` back to false by itself, log it in w2-live-events.md, and ring me. Never turn it back on by itself.
  - **Slots:** a kit hold that is past its 5x moment does NOT count toward the max 3 open (its 50% trail floor is at least 2.5x entry). Allow at most 2 such holds on top of the 3. A new buy still needs wallet ETH of at least ticket + gas, and the drawdown kill switch still counts every open trade at a real sale quote.
  - **Check first:** replay the 70 wide-list trades with kit hold and the 3-open cap. How many entries would the old cap have skipped, and how many does the new slot rule skip? Put both numbers in your status.
  - Log the switch in w2-live-events.md, show "Live exit: kit hold (auto revert armed)" on the live card, and ring me.

- **v1.30 (Supervisor, 6 Oct 17:05 Bangkok): v1.29 ACCEPTED, fast and clean. Next: the half C scorecard.** Every decision now waits on fresh data the rules never saw.
  - New public file `w2-halfC.md` (+ `.json`), refreshed hourly: for every book (live config, kit_hold, 750k, regime, wide_ladder, nostop, s03), gates and trades from 7 Oct 00:00 Bangkok on only: trades, closed, mean x on block-end real swaps, $ a day at $1k, worst day, max drawdown, and open trades at a real sale quote.
  - One extra line per book: half C vs halves A and B (same columns), so drift shows at a glance.
  - When kit_hold or 750k reaches 10 closed half C trades, ring me.

- **v1.29 (Supervisor, 6 Oct 16:50 Bangkok): GO-LIVE CHECK 2 ACCEPTED. All three checks are green. Great work.** Funding is Ben's. While we wait, two new paper books (tracking only, live stays `w2_v3_wide_s03`):
  - **`w2_v3_kit_hold`** (Virality V8, http://159.223.88.168/hx-c9ois/sw/sw-virality-v8.md): same entries and exits as `w2_v3_wide_s03`, except at the 5x hit: if `kit` is A or B, hold the WHOLE position and sell on a 50% drop from the peak since entry, a half-pool pull, or 48 h after entry; other kits sell all at 5x as today. Use the live `kit` tag at the gate (no later info).
  - **`w2_v3_750k`** (A2.16 runner-up cell): gate $750k sellable, age ≤ 3 h, top receiver ≤ 0.10, army ≤ 0.015, sell check; exits as `w2_v3_wide_s03`. Report trades a day vs the $1M book.
  - **Prepare (do not switch on):** a one-line config switch so live can move to the kit-hold exit. It flips only when the Supervisor writes "LIVE EXIT = KIT HOLD" here.
  - Scoreboard: both books on the card, with $ a day at $1k. Ring me when they run.

- **v1.28 (Supervisor, 6 Oct 16:25 Bangkok): two more paper tags (A1.17).** On every candidate and trade row: `min_to_gate` (minutes from pool creation to the gate block) and `gate_hour` (Bangkok). Tracking only. No size tilt goes live.

- **v1.27 (Supervisor, 6 Oct 16:25 Bangkok): v1.25 and v1.26 ACCEPTED. One tag:** `farm_funded` = 1 when more than half of a coin's single-buy wallets got their first ETH from 0x84157d3d24630c297849c84d49ae7f1805c1b60f (disperse selector 0xe63d38ed). Sample up to 12 single-buy wallets at the gate (Analyst 1 A1.16 method: balance binary search + call trace of the first-ETH block). Tracking only, never a skip. Log it on every candidate and trade row.

- **v1.26 (Supervisor, 6 Oct 16:20 Bangkok): kill switch fix. The 50% wallet rule would stop us in a NORMAL dip.**
  - Analyst 2 A2.21 (http://159.223.88.168/hx-c9ois/sw/sw-a2-21-honest-money.md), everything priced in, $1k: +$2,733 / +$3,535 a day, but max drawdown -$4,257 / -$4,700 (about 4.7 tickets) and worst day -$3,161. A wallet of 3 x $1k + gas loses 50% after a -$1.7k dip, so the current rule would trip on ordinary noise.
  - **Replace "wallet under 50% of go-live value" with: stop new live buys when the running drawdown from the live peak exceeds 10 x the current ticket** (about 2x the worst seen). Keep: 10 losers in a row, failed sell check, two fills over 10% worse than paper, max 3 open.
  - **Size from the wallet:** ticket = the largest ramp step where wallet >= 3 x ticket + 5 x ticket (drawdown room) + 0.005 ETH, i.e. 8 x ticket + gas. Ramp steps and fill checks unchanged. Show "wallet supports up to $X a trade" on the live card.
  - Self-tests: a -4.7 ticket dip keeps trading; -10.1 tickets stops; wallet of 8.2 x $500 picks $500, not $1k.

- **v1.25 (Supervisor, 6 Oct 16:15 Bangkok): go-live check 3 CHANGED + one cross-window guard.**
  - **Check 3 is now: one real gate filled within 30 s of the gate** (was 6 s). Analyst 2 A2.20 (http://159.223.88.168/hx-c9ois/sw/sw-a2-20-fill-delay.md): every delay 2 s to 45 s gives the same money ($2,700+ / $3,600+ a day at $1k); real cost only starts at 60 s. CLAUS at 20.6 s already passes, so flip check 3 GREEN now, log it. Keep logging gate to fill seconds; if the 10-trade median goes over 45 s, stop new live buys and ring me.
  - **Cross-window guard:** 83% of our kit trades are also first-window mc5 coins (A1.15). Before any live buy, read the first window's open live positions (ask the First Window Supervisor for the path; until you have it, read `/opt/fm/` live state if present). If they hold the same token, buy only up to $1k minus their open cost on that token. Never sell into their exit in the same block: if both exits fire on the same coin, ours waits one block. Log `fw_overlap` on every trade.

- **v1.24 (Supervisor, 6 Oct 16:05 Bangkok): tags only (Analyst 1 A1.14, http://159.223.88.168/hx-c9ois/sw/a1-14-v3-source.md).**
  - On every candidate and every trade row: `kit` = A (bytecode hash 0e81be52d5cf) / B (89885b75fd29) / pm (position manager 0x73991a25c818bf1f1128deaab1492d45638de0d3) / other; `funder_84157` = 1 if the deployer was funded by 0x84157d3d24630c297849c84d49ae7f1805c1b60f; `farm_0x3393` = 1 if any pre-gate buyer traces to 0x3393cab3fcfc5668b46d83b89f924c01f00aa766; `kitb_bundle_share` = share of pre-gate ETH from the 0.01 ETH wallets funded in the deployer's funding tx.
  - TRACKING ONLY. No skip. No rep1_pre skip either (costs $302 a day).
  - Scoreboard: one small line "coin source last 24 h: Kit B n / Kit A n / pm n / other n".

- **v1.23 (Supervisor, 6 Oct 16:00 Bangkok): v1.21 ACCEPTED. Cascade finding is excellent work. Small add for `w2_v3_regime`:**
  - Analyst 3 audited V7 (http://159.223.88.168/hx-c9ois/sw/sw-a3-7-v7-audit.md): paper only. On every 5x hit log: prior_hold_share, n, the hold decision, and the result BOTH ways (held vs sold at 5x). Scoreboard card shows the running difference in $.
  - It goes live only after paper sees at least one switch back to "sell" and that switch costs no more than about 3 wrong holds. Do not wire it to live.

- **v1.22 (Supervisor, 6 Oct 15:55 Bangkok): yardstick decided for go-live check 2, plus one new paper book.**
  - **Check 2 new yardstick (replaces the 0.02x real-swap count):**
    - (a) R model at the trigger within 0.02x of Analyst 2 OR Analyst 3 on 51+ of 57, every other gap with a written cause. You have 51 and 0 unexplained: **(a) is MET.** Analyst 2 is the outlier on 0xa2508b15ab16826c720631b9afa0a90c453ae8a4 (you and Analyst 3 agree at 0.57x).
    - (b) Money test on the honest price: the end-of-block real-swap quote IS what live gets (our sell lands in a later block, never inside the crash block). So: pass 2 live book (wide + 0.3x) on end-of-block real swaps at $1k must be 1.5x or better in BOTH halves.
    - When (b) holds, flip check 2 GREEN yourself, log it, ring me. If (b) fails, ring me with the numbers.
  - **Stop exits that gap (0.10x to 0.37x real) are not a replay error, they are the real cost of a stop.** Keep them in every money number. Log on every live stop: trigger price, our fill, and the gap.
  - **New paper book `w2_v3_regime` (Virality V7, http://159.223.88.168/hx-c9ois/sw/sw-virality-v7.md):** live book's gate and 0.3x stop. At the 5x hit compute prior_hold_share over earlier 5x trades of the same book from the last 4 days that are FULLY CLOSED (their trail position has exited, not just 12 h old). If 0.3 or more: keep all on a 50% trail from peak (also exit on pull or 48 h). Else sell all at 5x. No closed prior trades: sell. Own scoreboard card, never merged. Paper only.

- **v1.21 (Supervisor, 6 Oct 15:50 Bangkok): replay pass 1 judged. Close to green. Three things.**
  - **My count on w2-replay58.csv (pass 1):** 45 of 57 within 0.02x of Analyst 2, **53 of 57 within 0.05x**. Most gaps are small and in our favour (your fill-state fix moved entry). Averages: Analyst 2 1.91x / 1.90x, yours 2.11x / 1.94x, real swap $500 2.09x / 1.91x, real swap $2k 1.93x / 1.78x. The edge holds on real swaps.
  - **1. Explain the 4 gaps over 0.05x in replay_explained.json:**
    - 0x978177408c2f741c24ddf5ea9eb14cecbf9b3926: Analyst 2 pull 0.00x, you target 4.81x. I expect: the out-of-range 1-tick burn (your v1.7 in-range rule; Analyst 3's range-aware rebuild agrees). Confirm.
    - 0xa2508b15ab16826c720631b9afa0a90c453ae8a4: Analyst 2 stop 0.027x, you stop 0.573x. Big. Which is true? If the real exit swap gives 0.03x, our stop cannot save us on coins like this; say so.
    - 0xc38c332012a9116dcade0c7f43b5d3c71799a9f8 (4.91x vs 4.80x) and 0xba1a2d9783ebe2b76493c5c12eb9813a0e062843 (4.83x vs 4.78x): entry state, I expect.
    - Not traded: 0x224a794031d54e49b46919ade2c55ff255dfdd97 (receiver 8.3%, knife edge). Fine.
  - **2. Stops that gap on real swaps (most important):** spec stop 0.57x but real swap at $500:
    - 0xf5a9da666eb257c0859b47efe8c2cb6745baff94 real 0.10x
    - 0x89262fb9d6b05de797c99a927994f7c2411469d4 real 0.15x
    - 0x2a6efa703d8f1f06da07d1960711f02b1ba66f10 real 0.37x
    - Why? (pull in the same block as the stop swap? our sell lands after a burn?) Write the cause per coin. With the live 0.3x stop this matters even more.
  - **3. Pass 2 must price the LIVE book on real swaps at $1k:** columns real_wide_s03_500 and real_wide_s03_1000 (and real_s03_1000), summary line per half. $1k is Ben's cap.
  - **4. Topic check (bug just found in the first-window bot):** its Mint topic was a wrong hash, so the pull rule never fired. At startup, compute keccak of every event signature you filter on (Swap, Mint, Burn, Transfer, Collect) and refuse to start on a mismatch. Write the check result in status.
  - **Go-live check 2 = GREEN when:** (a) every gap above 0.05x has a written cause, and (b) pass 2 real-swap wide_s03 at $1k is 1.5x or better in BOTH halves. You may flip it yourself when both hold; log it and ring me.

- **v1.20 (Supervisor, 6 Oct 15:40 Bangkok): BEN'S TARGET = $2,000 A DAY. Cap the ramp at $1k a trade for now.**
  - Ramp becomes: $100 x 10 -> $500 x 10 -> **$1k and stay there** (same step conditions as v1.18). Do not go to $2k / $3k until I write a new version. Reason: A2.18 paper at $1k = +$2,718 / +$4,156 a day (both halves above $2k), at $500 = +$1,432 / +$2,183. $1k reaches the target with the smallest bet.
  - Wallet need at $1k: 3 x $1k + gas. Show it in ETH on the scoreboard.
  - **Scoreboard: add a "Target $2,000 a day" card:** live $ today, live 7-day average $ a day, and the paper line at the current size, each green / red vs $2,000. Plain words.
  - Log in w2-live-events.md: "ramp capped at $1k (target $2k a day)".

- **v1.19 (Supervisor, 6 Oct 15:30 Bangkok): one more PAPER book + a log fix.**
  - `w2_v3_wide_ladder`: same gate and stop as the live book (wide + 0.3x), but exit = **sell 50% at 5x, rest on a trail** (sell the rest on a 50% drop from its peak after the first sale, or a half-pool pull, or 48 h). Why: Virality V6 (http://159.223.88.168/hx-c9ois/sw/sw-virality-v6.md): first half all-out-at-5x wins (2.34x vs 2.23x), second half the ladder wins big (2.51x vs 1.88x; 4 coins ran 15x to 74x). Paper only, so we see which one live markets reward.
  - **Log fix:** w2-live-events.md line 15:24:56 shows "00, 00, k, k, k" instead of "$100, $500, $1k, $2k, $3k": the shell ate the dollar signs. Escape them.

- **v1.18 (Supervisor, 6 Oct 15:25 Bangkok): LIVE CONFIG CHANGE + NEW RAMP. Both changes are audited (A3.5, A3.6) and sized (A2.18: http://159.223.88.168/hx-c9ois/sw/sw-a2-18-size-curve.md).**
  - **Live gate = wide:** $1M sellable, top receiver <= 0.08, **age <= 3 h, army <= 0.015**, sell check must pass. **Live exit = 0.3x stop set** (5x target, 0.3x stop, in-range half-pool pull, 12 h). Add paper book `w2_v3_wide_s03` (this exact pair) and point `live_exit_book` and the live gate at it. Keep `w2_v3_1m`, `w2_v3_nostop`, `w2_v3_s03`, `w2_v3_wide` as paper for comparison.
  - **Re-entry stays OFF in live** (A2.17: loses with loose stops).
  - **New ramp (replaces v1.10):** $100 x 10 trades (fill check) -> $500 x 10 -> $1k x 10 -> $2k x 10 -> $3k. Each step needs: live fills within 5% of paper on average over the step (A2.11 check), no kill switch, and wallet >= 3 x next size + 0.005 ETH gas. If the wallet is too small for the next step, **stay at the largest size the wallet covers** (do not stop). Hard cap $3k until 50 live trades; $5k only after 50 live trades with live mean >= 1.5x (I will confirm).
  - Kill switch unchanged (10 losers in a row, failed sell check, fill >10% worse than paper twice, wallet under 50%). Note: median trade is ~0.24 to 0.29x by design; many small losers are expected, the money is in the 5x hits.
  - Scoreboard: show the current ramp step, the next step's wallet need in ETH, and live $ a day vs the A2.18 paper line for that size.
  - Log the change in w2-live-events.md. Status line: "live = wide + s03, ramp v2".

- **v1.17 (Supervisor, 6 Oct 15:14 Bangkok): set `live_exit_book: w2_v3_s03` now (0.3x stop).** Analyst 3 audited V5 on its own rebuild (http://159.223.88.168/hx-c9ois/sw/sw-a3-5-v5-audit.md): 0.3x = 2.13x (2.22 / 2.05), no stop 2.11x (2.20 / 2.03), 0.6x 2.00x (2.11 / 1.90). 0.3x beats 0.6x in both halves in BOTH independent rebuilds and keeps a floor. Keep `w2_v3_1m` (0.6x) and `w2_v3_nostop` running as paper books for comparison. Kill switch unchanged. Log the switch in w2-live-events.md and say "live exit = s03" in status.

- **v1.16 (Supervisor, 6 Oct 15:12 Bangkok): one more PAPER book, `w2_v3_wide`.** Analyst 2's A2.16 (http://159.223.88.168/hx-c9ois/sw/sw-a2-16-gate-grid.md): same $1M sellable gate and top receiver 0.08, but **age up to 3 h** (was 1.54 h) and **army up to 0.015** (was 0.009), exits = no-stop set. More trades a day in both halves (2.6 / 3.8 vs 1.9 / 3.4), $ a day at $500 up in both halves, flat plateau. Paper only, own scoreboard card. Add it to replay58 if cheap. Live stays as is until Analyst 3 audits V5 and A2.16; then I write one config change.

- **v1.15 (Supervisor, 6 Oct 15:00 Bangkok): v1.13 accepted (good catch on the same-token other pool and the pruned-node replay bug). One kill switch change:** Analyst 3's A3.4 shows the rule's normal longest losing streak is 6 (http://159.223.88.168/hx-c9ois/sw/sw-a3-4-bad-day.md). "6 losers in a row" would stop a healthy bot. Change it to **10 losers in a row**. All other kill switch items stay (failed sell check, live fill >10% worse than paper twice, wallet under 50%). Max open stays 3 (history never needed more than 2).

- **v1.14 (Supervisor, 6 Oct 14:55 Bangkok): the 0.6x stop costs money. Add two PAPER books now, same gate and entry as `w2_v3_1m`:**
  - `w2_v3_nostop`: exits = 5x target, half-pool pull (in-range R <= 0.5 x entry R), 12 h. No price stop.
  - `w2_v3_s03`: same, plus stop at 0.3x.
  - Why: Virality V5 (http://159.223.88.168/hx-c9ois/sw/sw-virality-v5.md): 21 of 34 stopped trades later hit 2x, 5 hit 5x. No stop 2.20x / 2.19x vs stop 0.6x 2.07x / 1.89x; 0.3x 2.20x / 2.07x. Its pricer: http://159.223.88.168/hx-c9ois/sw/code/pricer.tar.gz
  - Also add both to replay58 output (columns per book).
  - **Live switch plan (prepare, do not flip yet):** make the live exit set a config value. When Analyst 3 confirms V5 on its own rebuild (both halves), I write v1.15 and the live main rule moves to no stop (or 0.3x). The kill switch stays as is. Until then live uses 0.6x.

- **v1.13 (Supervisor, 6 Oct 14:48 Bangkok): wallet address received, relayed to Ben for funding. Three items from Analyst 3's independent rebuild (A3.1: 58 trades 1.915x, same coins and exits as A2, http://159.223.88.168/hx-c9ois/sw/sw-a3-1-rebuild.md):**
  - **Army memory must never count the coin itself as an "earlier" coin.** If it does, every early buyer gets +1 and 13 good trades are blocked (58 drops to 45). Check your live army check and the replay; add a self-test; say in status "army self-exclusion: checked".
  - **Speed is money:** entry at +60 s drops the rule to 1.74x (second half 1.56x). Late selling (5 to 60 s) does not hurt. So all latency work goes on the BUY path; never trade buy speed for exit polish.
  - **Second replay reference:** compare your replay58 with Analyst 3's trade list too (http://159.223.88.168/hx-c9ois/sw/sw-a3-1-trades.csv). Knife-edge coins (top share near 0.08, stop missed by 1%) may land either side; list them as explained gaps, not failures.

- **v1.12 (Supervisor, 6 Oct 14:25 Bangkok): you make the wallet, Ben only sends ETH.** Ben should not handle a private key. Generate a fresh wallet ON the droplet yourself (e.g. `eth_account.Account.create()` inside one python process that writes straight to `/opt/w2coder/secret/live_key.json`, chmod 600, dir chmod 700). The private key is never printed, logged, echoed or copied anywhere else. Put ONLY the public address (full, never shortened) at the top of your status under "Needs Ben: fund this address", with the amount: 0.15 ETH covers 3 open $100 trades plus gas. Ring me. The trader watches the balance and goes live by itself once funded and the 2 other checks are green.
- **v1.11 (Supervisor, 6 Oct 14:20 Bangkok): BEN SAID "GO RAMP".** The live trader (C6) switches ON by itself, with no further approval, the moment all three go-live checks in v1.10 pass. Main rule `w2_v3_1m` only, ramp $100 x 10 trades, then $500, then $1,000, kill switch exactly as in v1.10, max 3 open live trades. Variants stay paper.
  - Before the first live buy: fund check (enough ETH for 3 open trades plus gas), sell check on every buy, key file chmod 600, never printed.
  - On the first live buy, every ramp step, and every kill-switch stop: write it at the top of your status and ring the Supervisor.
  - Log for every live trade: gate time, fill time, live fill vs paper fill, exit, result in x and in dollars.
- **v1.10 (Supervisor, 6 Oct 14:15 Bangkok): Ben's order: push hard to real profit. Real money today if the checks pass.** Key rotation: Ben says not needed, drop it.
  - **Go-live gate (all three, then you tell me in status and ring):** (1) entry cap measured at our fill (v1.9) live; (2) w2-replay58.csv published and within 0.02x of Analyst 2 on at least 55 of 58, every gap explained; (3) one real gate with gate to fill 6 s or less.
  - **Build the live ramp now, switched off until Ben's yes:** $100 per trade for the first 10 live trades; then $500 if live fills are within 5% of the paper fill on average; then $1,000 after 30 trades if the live result is at least 1.5x. Main rule only.
  - **Kill switch (automatic):** stop live buys and ring me if 6 losers in a row, a sell check fails on a held coin, live fill worse than paper by more than 10% twice in a row, or the wallet drops below a floor you set at 50% of start. Never more than 3 open live trades at once.
  - **Variants:** keep `w2_v3_age3h`, `w2_v3_reentry`, `w2_v3_rep` on paper. Each goes live only after 10 paper trades that match its backtest. Show all books on the scoreboard with trade count and result.

- **v1.9 (Supervisor, 6 Oct 14:15 Bangkok), two items, entry cap first:**
  - **Bug (Analyst 2, A2.11): entry cap is stored at the gate price, not the fill.** Target 5x and stop 0.6x must be measured from the market cap at OUR fill event. Fix in paper and in the live trader, then recompute CLAUS. Paper fills stay at the engine's real fill time (that is what live will get); the latency fix (v1.8) is how we close the gap. http://159.223.88.168/hx-c9ois/sw/sw-a2-11-live-check.md
  - **New field and tagged variant (Analyst 1, A1.11):** log `rep1_pre` on every v3 candidate = share of pre-gate buy ETH from wallets that bought pre-gate in at least 1 earlier gated coin (walk-forward, your own gated-coin memory, routers excluded, follow tokens up to 3 hops). Paper variant `w2_v3_rep` = main rule plus skip if rep1_pre > 5%. Do not change the main book. Backtest: 49 kept at 2.08x vs 1.94x, catches two wallet farms the army filter misses. http://159.223.88.168/hx-c9ois/sw/a1-11-self-buy-v3.md

- **v1.8 (Supervisor, 6 Oct 14:05 Bangkok), answers to your asks:**
  - **Entry latency: YES, use the paid dRPC key for the live engine's per-gate calls** (head, logs, transfers, sell check). Keep backfills on it too, but give the engine priority (separate rate budget, engine first). Target gate to fill 6 s or less.
  - Also cut calls at the gate itself: keep the army memory and the sell-check state warm for every coin already above $500k sellable, so at the $1M gate you only fetch what changed. Log gate to fill seconds per trade on the scoreboard.
  - **showcfg.py leaks keys** in drpc_paid.json and rpc_keys.json: patch it so every value that looks like a key, token, URL with a key, or secret prints masked (first 4 characters + ****), for every file it reads. Test on both files without printing them. This protects every session.
  - Key rotation: waits for Ben's yes (asked).
- **v1.7 (Supervisor, 6 Oct 14:00 Bangkok): one fix from Analyst 2's A2.14, do it now (it changes live exits):** http://159.223.88.168/hx-c9ois/sw/sw-a2-14-real-depth.md
  - **Pull guard on in-range liquidity only.** A Mint or Burn changes active liquidity only if tickLower <= current tick < tickUpper. Use the Swap event's own `liquidity` field as the truth. Old rule ("last swap liquidity minus burned units") called a far out-of-range 1-tick burn a pull on 0x978177408c2f741c24ddf5ea9eb14cecbf9b3926 (really a 4.83x winner). Same rule for the R used at entry.
  - Replay: your real-swap quote and Analyst 2's tick walk should agree within 0.02x on all 58. Bigger gap = different state block or a quote near the launch floor; log which. Publish w2-replay58.csv (it was 404 at 13:50).
  - CLAUS filled 15.6% below the gate price: log for every fill whether the gap came from price moving between gate and fill, and how many seconds that took.

- **v1.6 update (Supervisor, 6 Oct 13:40 Bangkok): Analyst 1 withdrew the "non-pulling crews" edge (A1.9).** http://159.223.88.168/hx-c9ois/sw/a1-9-non-pulling-crews.md
  - The "outside" buyers in crews 0x7028bab73f82dff14b199593abb76c8b6acb3aa9 and 0x2dacdf0f44d07234832799a10a7cc5c8eff0223a were the crew's own 20 wallets. Real result was minus 24% and minus 46%. Both crews stopped launching.
  - **C8 change, now:** delete the $100 lane for those two crews (paper too). Mark any rows it already opened as `void_a19`, keep them out of every total.
  - C8 keeps: crews A and B/C OFF until the live pull test passes; other hot crews $20 paper only. Their paper numbers are NOT proof (independent buyers lose in A, B/C and 0x0ec66d31aab7e387b2f4cda075e39f7a6a0f541b). Judge `w1_hot` only on `pulled_60s` and fills, never on paper profit alone.
  - Your STONKROBBERS find matters a lot: real swap 7.6% impact vs 0.9% from the R model. In the replay of the 58, report BOTH pricings per trade, at $500 and at $2k. Analyst 2 reprices the size table from it (A2.14).

- **v1.5 update (Supervisor, 6 Oct): window 1 is now split by crew. Replaces the v1.4 "C8 on hold".**
  - c10k is a honeypot: never trade it, not even on paper.
  - **Every book, from now on:** paper must mark a trade as pulled when the lane's measured "pull after an outside buy of our size" says so. A lane gets real money only after the chain test "outside buy of our size, then pull within 30 s" passes (v3 lane passed, A1.5).
  - **C8 `w1_hot`, rebuilt per Analyst 1 (http://159.223.88.168/hx-c9ois/sw/sw-analyst1-status.md):**
    - crews 0x7028bab73f82dff14b199593abb76c8b6acb3aa9 and 0x2dacdf0f44d07234832799a10a7cc5c8eff0223a: buy at 10 s on the launch tag, $80 to $150, sell by the pull-time rule (these crews did not pull after outside buys; real outside buyers made money);
    - crews A and B/C: only 0.0015 ETH, 10 s, sell all at 2x, and only after the live pull test says a tiny ticket is ignored;
    - other hot crews: $20, pull-time rule, log the pull rate after our buy.
  - **Add two paper variants to C1 (same engine, tagged rows, not merged into the main result):** `w2_v3_age3h` (age 1.5 to 3 h, same filters) and `w2_v3_reentry` (re-entry after a stop: within 6 h, cap back at or above first entry cap, 20+ new buyers since the stop, army share 0.009 or less). Rules: http://159.223.88.168/hx-c9ois/sw/sw-a2-9-more-trades.md

- **v1.3 update (Supervisor, 6 Oct): the v3 rule passed its strict rerun (1.90x, 58 trades, no look-ahead).**
  - Build C1 from the spec PLUS the A2.8 changes: http://159.223.88.168/hx-c9ois/sw/sw-a2-8-strict.md (section 7 of the spec is replaced; ETH-USD = last hourly close; supply at the gate block).
  - New replay target: the 58 trades in http://159.223.88.168/hx-c9ois/sw/sw-a2-8-trades.csv (19 targets, 34 stops, 3 pulls, 2 time exits, mean 1.90x).

- **v1.2 update (Supervisor, 6 Oct): new book C8 for window 1, build after C1 and C2.**

### C8. Paper book `w1_hot` (window 1, crew coins)
- Rules: Analyst 1, http://159.223.88.168/hx-c9ois/sw/a1-1-fair-crew-pick.md and http://159.223.88.168/hx-c9ois/sw/a1-4-launch-tag.md
- At each pond launch: read the crew from PP6's pre-tag table (or crew.db funder chain).
  - Tagged: if the crew is hot (5 or more of its last 10 ENDED coins hit 3x from their 10 s price), buy $20 at 10 s.
  - Not tagged: wait for the 33 s crew label, same hot check, buy at 35 s.
- Exits by the crew's median pull time on its last 10 ended coins: under 90 s sell all at 2x; 90 to 200 s half at 3x, rest at 10x; over 200 s all at 10x.
- Same sell check as C2. Log crew, tag or label, hot count, pull time, fill delay.
- This book fills fast (dozens of coins a day), so its 30-coin gate can pass within a day or two.
- C3 split buys: not needed for v3 (Analyst 1, A1.5: the v3 lane is not these crews). Keep $20 in `w1_hot` until A1.6 says a bigger size is safe.

- **v1.1 update (Supervisor, 6 Oct):** Analyst 2's exact spec is ready: http://159.223.88.168/hx-c9ois/sw/sw-a2-1-spec.md (59 trades: http://159.223.88.168/hx-c9ois/sw/sw-a2-trades59.csv, hubs: http://159.223.88.168/hx-c9ois/sw/sw-a2-hubs.txt). Build C1 from it.
  - Use the LIVE choices everywhere: pool where the gate fires, supply at the gate block, army memory and hubs only from data before the gate. Your replay may come out below the backtest's 1.88x because of this; log the gap, it is expected.
  - Exits stay: 100% at 5x. C5 `w2_v3_hold` becomes a paper only 70/30 split with a 3x floor on the 30% slice.

- From: the 2nd Window Supervisor, 6 Oct 2026. You own strategy code: paper books, safety checks, and later the live trader. Price Predict (PP) owns all data feeds; read its tables, do not re-collect chain data. PP's task list: http://159.223.88.168/hx-c9ois/sw/sw-tasks-pp.md (table paths will appear in http://159.223.88.168/hx-c9ois/sw/sw-pp-status.md).
- Exact v3 rule numbers come from Analyst 2's spec (task A2.1 in http://159.223.88.168/hx-c9ois/sw/sw-tasks-analyst2.md). Until it lands, build the engine with every threshold as a config value.
- Strategy docs: v3 rule http://159.223.88.168/hx-c9ois/hx/second-window-v3.md ; virality ladder http://159.223.88.168/hx-c9ois/brx/virality-map.md
- Everything is PAPER. No real money until Ben says go. Never print or log a private key; secret files chmod 600.
- Bangkok time in anything Ben reads. Staleness check plus automatic restart, redundant; Ben is told only if every fix fails.

## Tasks, in order

### C1. Paper book `w2_v3_1m` (top priority)
- Buy gate, all true:
  - Uniswap v3 WETH coin becomes sellable at $1M (buyers paid $20k+ at a cap of $1M or more);
  - within 1.5 h of its first trade;
  - no single receiver over 8% of buys;
  - army share near zero (number from Analyst 2's spec).
- Entry within 60 s of the gate. $500 per trade. Count 1% fee each way and our own price impact from pool reserves.
- Exits: sell all at 5x; stop at minus 40%; exit if half the pool ETH is removed; exit at 12 h.

### C2. Sell check before every buy (mandatory, also for paper)
- Simulate a buy then a sell of our size (eth_call with state override, or a quote through the router). Block the coin if the sell reverts or round trip cost is over 10%. Log the reason.
- Test it on at least 20 known coins from Analyst 2's list before trusting it.

### C3. Pull trigger guard
- Crews A and B/C pulled the pool within 60 s after every outside buy of 0.1 ETH or more (7 of 7). $500 is about 0.18 ETH.
- Add a config switch: buy in pieces under 0.1 ETH, spaced a few seconds apart. Paper book logs both versions so we can compare.

### C4. Fields to log on every coin the gate sees (pass or fail)
- crew tag at launch and crew label at 33 s (from PP5);
- new buyers per hour, repeat wallet share, army share;
- X posts per hour, 10k+ and 100k+ posts;
- pullable or not, share of LP removed, price when pulled;
- time from gate to fill, fill price vs gate price.

### C5. Shadow books (after Analyst 2 delivers A2.4)
- `w2_v3_hold`: same entries as C1; at 5x sell most, keep a slice while the ladder holds (new buyers per hour in the latest hour at least half of hour 1, price above the 5x level), sell the slice on the first fail, 7 days max. Split comes from A2.4.
- `w2_viral`: per the virality doc (buy at hour 4 when steps 1 to 3 pass; sell half at 2x, trail 50%, stop minus 50%). Run two versions: unpullable pools only, and all pools.

### C6. Live trader, built but OFF
- Same code path as C1 with a real wallet, $100 per trade. Stays off until Ben approves. Requires C2 working first.

### C7. Daily scoreboard
- One public page in this folder, phone and desktop width: trades, result per trade, result without the best coin, plus a plain action line per book (keep going, pause, stop).

## Hand back
- Write status, paths and the scoreboard link into http://159.223.88.168/hx-c9ois/sw/sw-coder-status.md (same folder).

Version: v1.20 (target $2k a day: ramp capped at $1k; target card), 6 Oct 2026 15:40 Bangkok, 2nd Window Supervisor. Latest version: http://159.223.88.168/hx-c9ois/sw/sw-tasks-coder.md
