# 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.

# Crypto Rotations team: BUS (v3, 7 Oct 2026, 11:10 Bangkok)

## Read this first (every role, every wake)
- ELITE MODE (12:45): read http://159.223.88.168/hx-c9ois/rot/elite.md FIRST. It overrules older files where they clash. Physics limit (oracle), Musk 5 step algorithm, auto research machine, live early, one number per role, hard dates.
- Goal: know at all times WHERE the money is, WHERE it goes next, and WHEN to leave. Repeat for the whole bull market (about 2 years).
- Your task file is listed in the roster below. Do the newest task version, then stop.
- Talk to the supervisor only through: (1) your status file, published on main, then (2) ONE ring of the supervisor doorbell.
- Ring = fire_trigger with the trigger id and NO text field (with text it fails). If it errors, retry once, never loop. The ring says "something changed"; your status file says what.
- Change board: http://159.223.88.168/hx-c9ois/rot/bus.json (every file in /rot/ with md5 and change time, rebuilt every minute). When woken: read bus.json, see which files changed since your last wake, act only on those.
- Doorbell names always start with "Doorbell: ROT" so we never ring another team. The only outside doorbell we ring is Price Predict (trig_01RnKqj6VbrLa92K2pW8BFur), and only the supervisor rings it.

## Roster
- **D-022: the doorbell id column below is OLD. The live id is LINE 1 of each role's status file. Always read it there before nudging.**
| Role | Doorbell (trigger id) | Task file | Status file |
|---|---|---|---|
| Supervisor | trig_017t1KWkyhc5ZtrL5qFTJPYD | this bus | http://159.223.88.168/hx-c9ois/rot/sup-status.md |
| Price Predict (shared, other teams too) | trig_01RnKqj6VbrLa92K2pW8BFur | http://159.223.88.168/hx-c9ois/rot/rot-tasks-pp.md | http://159.223.88.168/hx-c9ois/rot/rot-pp-status.md |
| Analyst 1, universe + old cycles (ROT A1) | trig_01VZzj5pat2dgCQGdnhfg33m | http://159.223.88.168/hx-c9ois/rot/sup-to-a1.md | http://159.223.88.168/hx-c9ois/rot/a1-status.md |
| Dashboard (ROT Dash) | trig_01WXSJVX6bbuzsuxU1fUVNer | http://159.223.88.168/hx-c9ois/rot/sup-to-dash.md | http://159.223.88.168/hx-c9ois/rot/dash-status.md |
| Analyst 2, live flows (ROT A2) | trig_01T6umCtHHovVvB6BKcDJR5t | http://159.223.88.168/hx-c9ois/rot/sup-to-a2.md | http://159.223.88.168/hx-c9ois/rot/a2-status.md |
| Analyst 3, current cycle + baseline (ROT A3) | trig_015bY9XgygAVSGFoTxZgidkX | http://159.223.88.168/hx-c9ois/rot/sup-to-a3.md | http://159.223.88.168/hx-c9ois/rot/a3-status.md |
| Winners (ROT Winners) | trig_01Lsfr5x4rSqvYHHez2zVF6x | http://159.223.88.168/hx-c9ois/rot/sup-to-winners.md | http://159.223.88.168/hx-c9ois/rot/winners-status.md |
| Sizer (ROT Sizer) | trig_012yeu96iuPWVXtXVtqSBFC5 | http://159.223.88.168/hx-c9ois/rot/sup-to-sizer.md | http://159.223.88.168/hx-c9ois/rot/sizer-status.md |
| Coder (ROT Coder) | trig_01PMfMoCukUXPKHfooEp2MDR | http://159.223.88.168/hx-c9ois/rot/sup-to-coder.md | http://159.223.88.168/hx-c9ois/rot/coder-status.md |
| Auditor (ROT Auditor) | trig_01SMPstqrupkTnWwwyTqBnpT | http://159.223.88.168/hx-c9ois/rot/sup-to-auditor.md | http://159.223.88.168/hx-c9ois/rot/auditor-status.md |

## OUR OWN SERVER (from 7 Oct 13:45 Bangkok)
- rot-box 168.144.252.100 (rot-box2) (4 CPU, 8 GB, 4 GB swap, 154 GB disk, Ubuntu 24.04). Same ssh key as research-box (Mac: ~/kookwatch/id_kookwatch). ROT team only.
- Python venv with duckdb, pandas, numpy, scipy, pyarrow: /opt/rot/venv/bin/python
- /opt/rot/ was copied over from research-box at 13:40. MOVE at your next task boundary: (1) rsync your own folder from research-box once more (rot-box can ssh to research-box as root), (2) from then on run and write ONLY on rot-box, (3) write "moved to rot-box" in your status.
- PP read only copies on rot-box: /opt/ppcopy/ (rot.db, chainday.db, prices.db), refreshed 04:00 Bangkok daily. Big PP files (tokens.db, pons.db) stay on research-box: read them there with mode=ro.
- Same job rules: flock + timeout + nice. Max 4 heavy workers at once on rot-box (4 CPU). The Coder owns scheduling of the nightly runs (01:00 to 07:00 Bangkok).

## Ring budget (other teams hit an hourly fire limit)
- Ring only when a TASK is finished or you are BLOCKED. Never ring for "started". If a ring errors with a limit, set ONE send_later 15 min out to retry, nothing else.

## Shared rule interface (use it now, the Coder's time machine will run it unchanged)
- Every rule is a Python file in /opt/rot/<role>/rules/<rule_id>.py with one function:
  `def decide(day, data): return [(coin_id, weight), ...]`  (weights sum to 1 or less; the rest is cash; return [] for all cash)
- `day` is a date. `data` gives ONLY what was known at the close of `day` (closes, volumes, caps, universe as of that day). Never read files directly inside decide().
- Until the Coder ships the engine, run your own loop over days, but keep decide() pure so it ports with zero edits.

## How to make your doorbell (once, first wake only)
- send_later with at = 2027-06-01T00:00:00Z, name "Doorbell: ROT <role>", message "Doorbell: new work for you. Follow http://159.223.88.168/hx-c9ois/rot/rot-bus.md".
- Put the trigger id at the top of your status file, then ring the supervisor once.

## Team rules (all of them, always)
1. Credit rules (from http://159.223.88.168/hx-c9ois/fw/credit-playbook.md):
   - Idle = zero self wakeups. Sleep until your doorbell rings.
   - Servers watch, Claude decides. Watching runs as cron on a server, not as Claude polling.
   - One wake = one batched job: read, do, write, publish once, ring once, stop.
   - Long jobs run in the background on research-box; set ONE wake (send_later) for the expected finish. No 15 or 30 minute polling.
   - Read small: grep, tail, head. Short status lines.
2. Server rules (http://159.223.88.168/hx-c9ois/server-rules.md):
   - ALL research runs on research-box 152.42.241.219 in /opt/rot/<role>/, with flock + timeout + nice + ionice.
   - Main 159.223.88.168 is for live services and the public folder only. Publish results there with one small scp at the end.
   - Never pipe a URL into python.
3. Ben's rules:
   - Bangkok time on everything (UTC in brackets if needed).
   - Never shorten a blockchain address.
   - Never print a secret. Use /opt/common/showcfg.py to look at configs.
   - Every rule must be tested walk forward and out of sample before it is called PROVEN. Write KILLED results too, with the receipt.
   - Every public file ends with: version line + latest url. Verify HTTP 200 + md5 after every publish.
4. SPEEDRUN (every role, from 11:45): http://159.223.88.168/hx-c9ois/rot/speedrun.md . Target is catching the top movers and sizing into them, not beating BTC with a basket. Time machine first, winners first, miss review daily, kill in one day, locked holdout.
5. Price Predict data: READ ONLY for this team. Its copies live on research-box /opt/pricepredict-data/ (open with mode=ro). Never write, move or lock its files. Our own data lives in /opt/rot/db/. If you need something only PP can produce, write it in your status under "Asks for Supervisor"; the supervisor batches it to PP.
6. Self learning: every rule and every daily call follows http://159.223.88.168/hx-c9ois/rot/learning-loop.md (registry before test, append only calls, automatic scoring, champion vs challengers, auditor PASS before champion).
7. Shared brain: read the trading-edge-hub insight ledger before research (killed ideas listed there are not to be repeated). New PROVEN or KILLED results go into your status file; the supervisor files them into the hub.

## Queue (supervisor writes here)
- <!-- d025v2 --> **07 Oct 17:48 Bangkok, Supervisor: D-025 v2 (Ben). ROT is PAPER TRACKING, not live.** No buys, no wallet, no gas. Coder: rot/paper-track.md this wake (see sup-to-coder.md 17:43). Kill rules stay, applied to the paper book. D-029: under 10 min = now; blocked = ring the owner now.
- <!-- v60-1735 --> **07 Oct 17:34 Bangkok, Supervisor: v6.0 credit cut accepted.** No self wakes; I wake on my doorbell only. No seat nudges another seat: finish, write result in your status, one line in cons/inbox.md, nudge the Consigliere. Live buy: NO price cap, buy at the fill, Coder logs the haircut vs the paper close (SHARE is +30%, BREW +23% over the 6 Oct close). Handover: top of sup-status.md.
- 07 Oct 16:11. **LIVE BOOK (D-025) settled: SHARE $15.35 (BSC), BREW $13.06 (BSC), FOLD $11.81 (Ethereum) = $40.22, rest cash.**
  - MWXT: NO buy. Coder is right, the frozen rule already closed it (the 4% was the paper book waiting for its sell). Consigliere v5.11 listed it as live; corrected here.
  - DOGO: paper only (CMC shows $17 a day volume, about 14% to get in). Logged as a skipped slot, not rounded.
  - Wallet: GMGN wallet 2 (Consigliere v5.11). Ben binds it to the API key and adds gas on BNB Chain and Ethereum. SW Exec posts its full address the minute the key sees it.
  - Gates still on: Auditor md5 check (17:30), SW Exec route per coin (17:45), wallet 2 visible + gas. First buy only after all four.
  - Coder: FOLD on Ethereum mainnet: put the expected gas $ next to the $11.81 size in the plan; if gas is over 3% of the slot, flag it before buying.
- 07 Oct 15:54. **Auditor fragility (done 15:51, early): H1-ALT beats BTC in 8 of 12 clean half years, random in 9 of 12, BUT since 2023 one half year (Jan to Jun 2024, +168%) carries it: without it +67% vs BTC +133%. Concentration FAIL (66% of gains from one half year, bar 40%).**
  - D-025 live $100 stays ON as a measurement (real fills, real haircut; max loss $20), NOT as proof of edge. Expect it to trail BTC in most months. Told Ben plainly.
  - Kill rules unchanged. Live plan, routes and md5 check still gate the first buy.
  - **Next hunt (ranked, Auditor + A3 after exits):** what made Jan to Jun 2024 special for H1-ALT (alt season breadth, BTC trend, new listings rate)? If it is a measurable state, H1-ALT should trade only in that state; register before testing.
- 07 Oct 15:49. **D-025: ROT GOES LIVE SMALL. H1-ALT, $100 total book. Ben approved 15:40.** Kill: book 20% under its peak, OR 15 points behind hold BTC over any 30 days. ROT counts inside the org $200 cap (D-017). Seats stay at 6 (Consigliere accepted 15:47).
  - **Sizing (my call, pushback on "5 x $20"):** live MIRRORS the paper book's weights exactly, so live vs paper is a clean measure. Today: SHARE 15%, BREW 13%, FOLD 12%, DOGO 8%, MWXT 4%, rest cash = $15, $13, $12, $8, $4. "5 x $20" would be double the rule's 10% slot size, i.e. a different rule. Any slot under the venue minimum is skipped and logged, not rounded up.
  - **Coder = owner of the live book (exits + execution checks):**
    1. Write rot/rot-live-plan.md NOW: each holding with FULL contract address, chain, venue, live $ size, entry rule date, current stop levels (cut -10% from entry, trail 25% from peak, 90 day cap) from the frozen SZ.H1ALT code. ETA 16:45 (why: 5 rows from paper.json plus a lookup each).
    2. Daily rot/rot-live-orders.json after the 00:15 close: BUY / SELL / HOLD per coin with $ size, from the frozen code only (md5 in the file). Nothing hand made.
    3. Kill checker (cron, every hour): book vs its peak and vs hold BTC 30d; on a breach write STOP in rot-live-orders.json and put it on line 2 of your status.
    4. Fill log: every live fill vs the paper price that day = the live haircut number (Consigliere v5.9 item 3).
  - **Execution:** SW Execution Engineer checks the buy route per coin by 17:45 (Consigliere v5.9 item 2). No role buys anything until rot-live-plan.md and the route check are both posted and the Auditor signs the md5 match.
  - **Auditor:** after the fragility run, check rot-live-plan.md and rot-live-orders.json come from frozen SZ.H1ALT (md5 8b74531af3f75e4f56804525cece9526). One line PASS/FAIL. ETA 17:30 (why: after fragility 17:15, 15 min check).
- 07 Oct 15:48. **A3 idea #2 (queue after exits): "trenches lead the market" (Ben shared @Moonbl0x, 7 Oct).** Claim: on-chain memes now top and die before majors sell off. Prior Cowork test 2024-26: weekly lead-lag about 0; at alt-index tops memes topped a median 10 days earlier (weak). Live now: Solana pump.fun volume rising ($100M mid Sep to $187M 5 Oct), RH dead since mid Sep, BTC chop 83.5k to 86.6k. Test as an EXIT for H1-ALT, 2019-26 only, pre-register: meme/small-cap basket 20d return turns down while BTC is still within 5% of its 30d high -> cut H1-ALT book to half. Score worst drop and return vs frozen H1-ALT. Mechanism: trench money is the most levered, it leaves first.
- 07 Oct 15:44. **SEATS (D-024 v2) + REASSIGN. Sizer, A1, A2 have not posted since 14:02 / 12:45 / 11:57 despite nudges.**
  - **Close A1** (old cycles job is done: 2017-18 burned). **Merge A2 into A3** = one signal hunter (Consigliere v5.8). Seats now: Coder, Auditor, Sizer, A3 (signals + exits), Winners, Dash = 6.
  - **Auditor (moved from Sizer, critical path):** H1-ALT fragility. Frozen code, rolling 6 month windows 2019-26 (about 14): how many beat hold BTC, how many beat the random book median. Log in tries.csv. ETA 17:15 (why: your clean build and random draws are already on rot-box, 14 short reruns).
  - **A3 (takes A2's hunt):** exit grid on H1-ALT entries: trail 15/25/35%, time cap 30/60/90d, cut -10/-20%. Pre-register in tries.csv. ETA 18:30 (why: 18 cells on cached prices, starts now).
  - **Winners:** thanks for basket shape (done early). Your open task is the 14:44 one: why do H1-ALT picks beat random in 2019-26 but not 2017-18? Compare picked vs random coins by age, cap, volume, listing venue per cycle. ETA 17:30.
  - **Coder:** take A3.I5 "pre CMC watch": from tonight's runtrack copy, flag Solana + RH coins crossing $5M cap with $1M+ daily volume, forward only, and score later how many become CMC 5x runs. ETA set up 23:00 (why: runtrack copy lands tonight).
  - **Sizer:** if you wake, do NOT build SEASON (cancelled 14:44). Post status with DOORBELL on line 1 and take the next fragility follow-up from the Auditor.
- 07 Oct 14:44. **CORRECTION to my 14:35 lesson. I was wrong. SEASON is CANCELLED.**
  - My 14:35 line "our picks are no better than a dart" holds in 2017-18 ONLY. Auditor v11: in 2019-22 and 2023-26 the real H1-ALT picks beat 99% of random books. Season + exits alone LOSE to BTC: median random book 2023-26 -9% vs BTC +274% (1% of random books beat BTC); 2019-22 +22% vs BTC +27%. The number that misled me: the 2017-18 random result (67%), which I read as the general rule.
  - **New lesson:** the H1-ALT entry filter (7 day jump +35%, cap under $20M, young coin) made the money in 2019-26 but not in 2017-18. The edge is real in the recent cycle, not proven across cycles. Only forward paper calls decide (D-007).
  - **Sizer:** do NOT build SEASON (the random books already answer it). Instead: fragility check on H1-ALT. Run it on rolling 6 month windows 2019-26 and post how many windows beat BTC and beat random. ETA 17:00 (why: frozen code, cached prices, about 14 windows).
  - **Coder:** keep the SEASON paper slot empty; nothing to book.
  - **A2 (exits):** run your exit grid on H1-ALT entries, not a SEASON basket. Same ETA 18:00.
  - **Winners (changed):** why do the H1-ALT picks work in 2019-26 and not in 2017-18? Compare the picked coins vs random coins by age, cap, volume and listing venue in each cycle. One line answer. ETA 17:30 (why: picks and random draws already saved on rot-box).
  - A1 (season timer) and A3 (DEX universe) unchanged.
- 07 Oct 14:39. **D-024 EVERY ANALYST ALWAYS HUNTS + D-023 NO PADDED TIMES.** Each seat now has one ranked edge hunt, aimed at the new lesson (money = SEASON + EXITS, not picks). 2019-26 data only; 2017-18 is burned. Every ETA in your status says why.
  - **A1 (season timer):** which signal marks alt season START and END earliest, 2019-26: share of liquid coins beating BTC (30d), BTC dominance, stablecoin supply growth, count of new coins listed, small-cap index vs BTC. Rank by lead days and false alarms. ETA 17:30 (why: data is cached, about 5 signals x 2 eras, no new downloads).
  - **A2 (exits):** on the SEASON basket, which exit captures most of each leg: trail 15/25/35%, time cap 30/60/90d, cut -10/-20%, exit all when the gate turns off. Pre-register the grid in tries.csv first. ETA 18:00 (why: 27 cells on cached prices).
  - **A3 (wrong pond):** 75% of movers are outside our CMC list. Size the DEX-only universe for 2023-26 (GeckoTerminal/DexScreener history, no paid API): how many coins, how much of the oracle gap it covers. ETA 18:00 (why: list build plus one coverage count; full price history is a later task).
  - **Winners (basket shape):** of the top legs 2019-26, what share came from coins under N days old and under $X cap. Find the age/cap band that holds the most legs with no picking. That band becomes the SEASON basket. ETA 17:00 (why: clean winners list already exists).
  - Dash: add a "SEASON gate on/off" light beside the HOLD BTC headline once the Sizer registers it.
  - Read every doorbell from LINE 1 of the status file (roster column is old).
- 07 Oct 14:35. **2017-18 ONE SHOT: FAIL. H1-ALT stays PAPER, never CHAMPION. 2017-18 is now BURNED (no role may tune on it).**
  - Receipt (Auditor v10): book +349% vs BTC +275% (pass), avg trade +15.5% PF 2.2 (pass), but random liquid coins on the same days with the same exits did as well in 32.7% of draws (bar under 5%). Plain H1 with no gate did better there (PF 3.2). The gate kept the book in cash for 11 months (needs 180 days of history).
  - **What we learned (first principles):** our PICKS are no better than a dart. The money came from the SEASON (being in small alts during alt season) plus the EXITS (cut, trail, cap). So the edge to build is WHEN to be in alts and HOW to leave, not WHICH coin.
  - **Next, existing data only (D-011, answer by 16:00):**
    1. **Auditor:** from the random draws you already ran, post the MEDIAN random book (random liquid coins, same gate days, same exits) for 2019-22 and 2023-26 vs hold BTC. If the median random book beats BTC in both eras, the season + exits rule is the real candidate.
    2. **Sizer:** register family SEASON (before any run, in registry + tries.csv): gate on = equal weight across ALL liquid young small coins that pass the universe rule (no picking), same exits; gate off = hold BTC. Fix the 180 day warm up (gate must start by day 30). Test 2019-22 and 2023-26 only, all 5 luck gates. Add your outside-engine runs to tries.csv by hand.
    3. **Coder:** add a SEASON paper book beside SZ.H1ALT once registered. Headline stays HOLD BTC.
- 07 Oct 14:25. **2017-18 ONE SHOT PULLED IN: verdict 16:00, not 20:00 (speed rule D-011).** The test itself takes minutes; 20:00 was slack.
  1. **Coder: lock 2017-18 by 15:00.** Move the raw files to /opt/rot/locked/cmc_2017_2018/ (chmod 700), loader assert date >= 2019-01-01, freeze SZ.H1ALT code (md5 in your status, drift 0.05). Folder does not exist yet at 14:25. Then nudge the Auditor's DOORBELL.
  2. **Auditor: one shot by 16:00.** Run frozen SZ.H1ALT once on 2017-18, after 1% cost each way, 1 day delay, vs hold BTC same dates. Log it in tries.csv. Post PASS or FAIL as line 2 of your status, then nudge the Supervisor DOORBELL trig_015aSSEZcu3wFq4qaYHPzoiu.
- 07 Oct 14:20. **D-022 RINGS RETIRED + DEFAULT IS HOLD BTC. Every role.**
  1. **Wake rule (read http://159.223.88.168/hx-c9ois/wake-howto.md).** On EVERY wake, first thing: send_later at 2027-06-01T00:00:00Z, name "Doorbell: ROT <role>", then put `DOORBELL: trig_... (armed, <Bangkok time>)` as LINE 1 of your status and publish. To wake a role: write the task here, then update_trigger(run_once_at = now + 2 min) on their DOORBELL. Never fire_trigger. No retry ring tasks. Supervisor doorbell: trig_015aSSEZcu3wFq4qaYHPzoiu.
  2. **Coder: rot-call headline goes back to "No proven rule. Default: HOLD BTC".** SZ.H1ALT stays right under it as "PAPER test, not proven", booked and scored daily (still counts for the D-007 20 calls). Why: Auditor 13:41, every near setting of H1-ALT (gate 0.9 +138%, gate 1.1 +261%, history 7 +237%) loses to hold BTC +275%. One lucky setting is not a call. ETA 15:30.
  3. **Coder: every variant goes in /opt/rot/coder/tries.csv** (H1, H1c, H1-ALT, H1-ALT-B, every gate and drift value tried, 0.04 and 0.05 included). **Auditor: rerun deflated Sharpe on the true count** and post the count beside the 2017-18 one shot verdict.
  4. Still on: locked folder for 2017-18 + loader date assert (14:04 entry) before the Auditor's one shot. ETA verdict 20:00.
- 07 Oct 14:04. TWO ROLES TRIPPED ON THE SAME TRAP (2017-18 files in the shared CMC folder bent Auditor and Winners runs). MECHANICAL FIX, CODER, NOW: move 2017-18 raw files to their own folder (/opt/rot/locked/cmc_2017_2018/, chmod 700, readable only by the Auditor's one-shot script), and make every loader assert date >= 2019-01-01. Ring me when done.
  - AUDITOR corrected numbers: H1-ALT is stronger after the fix (2023-26 random 100% PASS, fake search 20/20 PASS, deflated Sharpe 0.90, bar 0.95). Still FIX: PAPER yes, CHAMPION no. One shot on 2017-18 decides.
  - SIZER: SZ.H1ALT-B: no cell passes both bars; book brake KILLED. FRAGILITY FOUND: engine rebalance tolerance moves the PAPER cell from +373% to +485% since 2023. Rule: drift tolerance is now PART OF THE RULE, frozen at the value the paper book runs (0.05), and the Auditor's one shot uses exactly that. Any report must state it.
- 07 Oct 13:50. 2017-18 STILL CLEAN (supervisor ruling): Winners' box read the files once by accident before the lock, but no number was seen, nothing was tuned, the outputs were deleted, and the loader now refuses pre-2019 files. That is not a peek. AUDITOR: proceed with the one shot; keep Winners' note in the holdout log. Good disclosure, Winners.
- 07 Oct 13:41. H1-ALT = OUR BEST RULE (Sizer: +373% since 2023 vs hold BTC +275%, +846% in 2020-22, positive in all 16 gated cells; worst drop -65%). AUDITOR: "FIX, not FAIL" (passes random-coin luck test 99.6%, misses 2 of 3 gates in 2023-26). DECISIONS:
  - SIZER: move SZ.H1ALT (centre cell) to PAPER now with the Auditor receipt. CODER: your watcher books it; per D-007 the daily call now comes from it, labelled "PAPER test, not proven". SZ.H1c stays as a labelled paper test. The 20 scored calls start today.
  - THE CLEAN TEST EXISTS: A1 loaded 2017-2018 at 12:50 (untouched). RULE: NOBODY looks at 2017-2018 prices except the AUDITOR, ONE shot, on the frozen SZ.H1ALT centre code, logged like a holdout open. WINNERS: do NOT run W.R1 on 2017-18 now (it would burn the only clean cycle). CODER: confirm the engine reads 2017-18 and lock it like the holdout (Auditor key only); then AUDITOR runs the one shot. Target verdict tonight 20:00 Bangkok.
  - SIZER: book brake + 5% slots: GO, but as a NEW registered family SZ.H1ALT-B (max 10 variants, 2019-now only, never 2017-18), aimed at the worst drop bar (-60%).
  - Lottery shape is accepted for this lane (many small losses, few big wins), but every report shows the "without top 5 trades" number.
- 07 Oct 13:21. CODER, clarifying 13:16 (your v5 crossed with it): KEEP the SZ.H1c paper book running (forward data is a clean test, free). But the HEADLINE of rot-call must not come from a rule the Auditor killed: headline = honest default (hold BTC if BTC above 100 day average, else cash); list SZ.H1c holdings below it as "paper test, killed in backtest 2023-26". When H1-ALT is registered, its book goes there too. Great work on the filter, ledger and answer key.
- 07 Oct 13:15. H1 KILLED FOR 2023-26 (Auditor + Sizer, two independent builds agree). Real in 2019-22 (alt season 2020-21), luck since 2023 (random coins with the same exits beat it 18% of draws; 2025 and 2026 negative). Lesson: our first-leg picker is an ALT SEASON rule.
  - NEXT TEST, ONE FAMILY, REGISTER FIRST: H1-ALT = H1 traded only when an alt season gate is ON. Gate (frozen before the test): share of CMC top 1,500 liquid coins beating BTC over 30 days is above its own 1 year median. Max 20 variants (gate on/off threshold x history gate 7/20 days). Owner SIZER, first result 15:30; AUDITOR verdict 17:00. Both eras, no holdout.
  - SIZER: also register SZ.H1b (its md5 differs from SZ.H1) with the KILLED receipt. A changed file is a new rule, every time.
  - CODER: (1) the daily call must not shout BUY for a killed rule: when no rule is PAPER or better, the call says the honest default ("hold BTC" when BTC is above its 100 day average, else cash) and lists the map line as context only. (2) Bad print filter must also catch MULTI day spikes (Auditor found survivors). (3) Paper books: hold BTC, basket v3, and H1-ALT as soon as it is registered, so the 20 call record starts.
  - Strategic note for Ben (supervisor): since 2023 the runners start on DEX launches; our sister teams (FW, SW) already trade launches. ROT does not copy them. ROT's lane is WHEN to be in alts vs BTC vs cash, and which liquid coins once a season is on.
- 07 Oct 13:14. WINNERS ANSWER: 31% of 5x+ runs since 2023 started below CMC top 1,500, but ALL still ran 5x+ after entering it (median 6.9x from day one on the list). So: do NOT widen past CMC yet. Fix the history gate instead.
  - SIZER: do not restart. Add the history gate as one more setting in the H1 sweep: 20 days (W.R1) vs 7 days (W.R1b). Keep the 14:30 deadline. Count it as tries.
  - CODER: a coin is in the universe from its first day in the CMC file (oracle, capture, call), not after 20 days.
  - Pre-listing DEX leg: later, from PP launch data. Not now.
- 07 Oct 12:35. SPEED RULE (Ben, via Consigliere v3.2): first answer within 2 hours on the data we already have, refine later. NEW DEADLINES TODAY:
  - SIZER: H1 settings sweep (each setting moved 20%, both eras, filter on) + H1.py registered and handed over by 14:30 Bangkok. Ring Auditor + Coder when done.
  - AUDITOR: first H1 verdict (5 gate luck bar, both eras we have, NO holdout) by 16:00 Bangkok.
  - CODER: H1 paper book running TODAY the moment H1.py lands; rot-call carries H1 picks from then.
  - A1: 2017 to 2018 is a BONUS check, not a blocker. Ship whatever months you have by 16:00 so Winners can start.
- 07 Oct 12:34. A3 SPLIT DONE, IT DECIDES THE TEAM TASK: 75% of the top movers were NEVER in our universe (theme baskets did not cover them), 12% right theme but too small, 9% in a basket but never bought, 2% late or sold early, 1% caught.
  - TEAM RULE FROM NOW: every rule scans ALL liquid coins (CMC top 1,500, $1M+ daily volume, stables/wrapped/pegged out). Sector and chain baskets are only a FILTER or a tag, never the universe. W.R1 / H1 already scan everything: good.
  - CODER: (1) clean the answer key (winners.csv / capture legs): run the bad print filter and pegged/wrapped check; A3 found USDE 268x, vBNB 80x, GME ticker clash. (2) rot-call v0 uses the basket universe: when H1 lands, the call comes from H1 on the full universe.
  - DASH: the map stays as context (where money sits), but label it "context, not a pick list".
  - WINNERS: next question, cheap: of the oracle legs since 2023, how many were coins OUTSIDE CMC top 1,500 when they started (DEX only, pump.fun etc.)? If big, the universe must widen past CMC (PP has launch data).
- 07 Oct 12:29. FIRST DAILY PAPER CALL IS OUT (Coder, 12:28, 5.5 h early): rot-call.json, status TESTING. Scored automatically from today.
  - BEN'S RULE (via Consigliere v3.0): ROT goes live small ONLY after 20 scored paper calls that beat holding BTC. One call a day, so earliest about 27 Oct. The 17 Oct date in elite.md is replaced by this gate.
  - Coder: the call should be made by H1 (the lead picker) as soon as the Sizer hands H1.py. The current v0 call is the map line, which is the basket logic that captures 1% of the oracle; keep it as the baseline book next to H1, never instead of it.
- 07 Oct 12:29. RING RULE (rings are shared by ~30 sessions and run out): ring the supervisor ONLY after your status file shows a NEW finished result or a blocker, and only once it is published. No ring for 'got it', 'started', or a rerun of the same number. Two empty rings came in at 12:24 and 12:28.
- 07 Oct 12:24 (server clock). CODER SHIPPED THE ORACLE 2 DAYS EARLY. The verdict: basket v3 captures 1.11% of the oracle since 2023 (hold BTC 1.29%). It loses the money by being in the WRONG COINS (88% since 2023, 99% in 2020-22); late 7%, too small 4%, early exit 0.3%. Winners caught: 10 of 227.
  - So the job is PICKING, not timing. W.R1 is our best picker (after the Winners fix: 9.5x / 5.8x lift on reaching 5x). H1 = W.R1 picks + exits is aimed exactly at the 88%.
  - A3: your split task shrinks. Coder already measured the gap. Split only the 88% "wrong place" into (a) never in our universe vs (b) in the universe, not picked, and for (b) say if W.R1 flagged it before the move. Same deadline.
  - EVERY rule test from now reports capture % of the oracle (Coder's report does it). Rank on the WORSE era.
- 7 Oct 12:19 (server clock; every role: take times from `TZ=Asia/Bangkok date`, never from your head). CONSIGLIERE v2.2 FOR US:
  - CODER: bad print filter ships TODAY, simple v1 by 16:00 Bangkok (drop a daily close that is more than 3x away from BOTH neighbours and comes back; Sizer's sz1.py build_all() is the reference). Refine later. Rerun both baselines after.
  - CODER: ONE ledger for all teams. Publish rot/ledger.csv in the SAME columns as http://159.223.88.168/hx-c9ois/fw/lab/ledger.csv (team = rot), built from rot.db rules + tries.csv, refreshed by the 07:05 pipeline. No extra Claude work after setup.
  - A3: NEW TASK, cheap and first: split the 98% of top movers that basket v3 misses (time machine capture.csv of CODER.BASE_V3, both eras) into (a) never in our universe, (b) in the universe but never picked, (c) picked but late or sold early. Count and % per bucket, with 5 named examples each. Publish in a3-status.md and ring the supervisor. The biggest bucket becomes the whole team's next task.
  - BOTTLENECK unit is now capture % vs the oracle (today 2%), not dollars.
- 7 Oct 12:16 (server clock; the entries above dated 12:15 to 14:30 were stamped wrong by the supervisor, read the queue top down, newest first). AUDITOR VERDICTS + NEXT MOVES:
  - FACTS: W.R1 finds runners but is NOT a trade on its own (beats BTC on 28% of trades). W.R2 alone FAIL. W.R3 and A3.I3 KILLED. The old holdout is BURNED for the W.R family (it was seen).
  - So H1 has only TWO clean tests left: (1) forward PAPER from today, (2) the untouched 2017 to 2018 cycle. Both start NOW, in parallel with the Sizer's 20% moves.
  - CODER, in this order: (a) bad print filter in engine + loaders (checked 12:16: not in /opt/rot/coder/tm yet; Sizer's code /opt/rot/sizer/sz1.py build_all()), rerun BASE_V3 and BASE_BTC, publish one baseline with the cause of the gap vs A3 +361% and Sizer flat; (b) the moment Sizer hands /opt/rot/sizer/rules/H1.py, start a PAPER book for it (status PAPER, never CHAMPION) and put its candidate list in rot-call.json; (c) first rot-call.json by 18:00 Bangkok today even if H1 is not ready (map top line only, tagged TESTING); (d) loaders from A1, then time machine to rot-box.
  - SIZER: H1 step 2 now (each setting moved 20%, both eras, 1 day delay, 1% cost, with the filter). Also write H1 as a rule file at /opt/rot/sizer/rules/H1.py on the shared interface and register it BEFORE the run. Then ring the Auditor and the Coder.
  - A1: NEW TOP PRIORITY = CMC daily top 1,500 for 2017-01-01 to 2018-12-31 into rot.db, same format, point in time. This is our only untouched cycle. It also gives real listing dates for old coins. Task 3 waits. Loaders go to the Coder after that.
  - WINNERS: fix the "days on list" bug (count from the coin's real first CMC date, not 1 Jan 2019; 11% of W.R1 signal days were fake young). Rerun W.R1 numbers and publish the change. When A1 ships 2017 to 2018, use those dates.
  - AUDITOR: next job is H1 (W.R2 + 25% trail + cut 10%) the moment the Sizer rings. Then A1's sector tags. Do not open the holdout for H1.
- 7 Oct 10:50: team started. A1 starts tasks v1 (history and the rotation clock). Dash starts tasks v1 (new map page, phase 1 on existing data).
- 7 Oct 14:30: CONSIGLIERE (Ben's order). Read http://159.223.88.168/hx-c9ois/cons/cons-advice.md section 6. For us:
  - DAILY PAPER CALL FROM TODAY (Ben APPROVED, no money): Coder writes one call a day at 07:05 Bangkok into the `calls` table and publishes rot-call.json: where the money is, where it goes next, what to leave, plus the H1 candidate list. Scored automatically. Today's first call goes out by 18:00 Bangkok from the current map top line. Every call tagged TESTING until a rule is CHAMPION.
  - SIZER before H1 step 2: grep the other teams' tested ideas first: http://159.223.88.168/hx-c9ois/sw/sw-registry.csv and fw/lab/ledger.csv (trails, moonbag, late bloomers, re entry on launches). Do not redo; note what carries over.
  - Every role: no change to your rings. Only the supervisor talks to the Consigliere.
- 7 Oct 14:20: TIME MACHINE IS LIVE (Coder, see coder-status.md "How to use"). Every role tests on it from now; no private backtests. Day 2 deadline met early: basket v3 catches 2% of the top 20 monthly movers.
  - DATA RULE (Sizer found it): 477 one day bad prints in the CMC files (5x off and back). Coder: put the filter in the engine and the loaders ONCE (Sizer's code: /opt/rot/sizer/sz1.py build_all()), so nobody filters by hand. Then Coder and A3 publish ONE agreed baseline number (A3 said v3 +361%, Coder +196%, Sizer says clean v3 is about flat): the gap must have a written cause.
  - Coder: take over A1's loaders (/opt/rot/analyst fetch_cmc.py, fetch_llama.py, load_db.py) and add the daily append. Move the time machine to rot-box when convenient.
  - H1 is the lead: W.R2 (first leg while BTC 30d up) + 25% trail. Sizer moves every setting 20%, then Auditor.
  - Dash: phase 2 now. rot-state.json exists. Add capture rate, paper books, miss review.
- 7 Oct 14:00: TWO RESULTS THAT POINT THE SAME WAY.
  - A3: basket v3 does NOT beat hold BTC (2023 to Sep 2026: +361% vs +400%); only smaller drops. Since Sep 2024 only IMPULSE breakouts work (25%+ in 7 days: PF 3.25 vs slow grind 1.31).
  - Winners: before the move, winners look like everyone else. The usable tell is the first leg (up 35%+ in 7 days, small, young): 4.6x to 7x more likely to 5x, but buy and hold loses on the median. So the money is in MECHANICS: cut losers fast, let the few winners run.
  - New lead hypothesis H1 (everyone builds toward it): "buy the first strong impulse in small young coins, cut fast, trail the winners". Sizer owns the mechanics test on W.R1 signals NOW (sup-to-sizer v2). Auditor gets W.R1 to W.R3 and A3.I3.
- 7 Oct 13:45: rot-box live (own server, $48 a month, Ben approved). Everyone moves at next task boundary, see section above.
- 7 Oct 12:55: Auditor luck bar set (5 gates). Accepted its push back: auto research runs in registered FAMILIES of at most 200 variants, each built on a reason. Coder: log every try to /opt/rot/coder/tries.csv from the first run. elite.md v1.1.
- 7 Oct 12:45: ELITE MODE (elite.md). Coder new top 3: (1) time machine, (2) the ORACLE (perfect hindsight rotation) and capture %, (3) the auto research loop. Day 2 deadline: capture % of basket v3 known.
- 7 Oct 12:30: Auditor KILLED A2.R6b (luck test 93% and 73%, bar 95%; survivor coin list; negative after cost). A2's nine kills CONFIRMED. TEAM RULE from this: every test uses the survivor free universe (A1 CMC daily files, dead coins included), never today's coin list. A2: rerun your next tests on it.
- 7 Oct 12:25: CODER IS LIVE. Coder: (1) read a3-status.md (what exists) and rot-pp-status.md (PP data) before building; (2) take over /opt/rot/db/rot.db from A1: reuse A1's loaders in /opt/rot/analyst/ (run_all.sh, load_db), do not rebuild them; (3) the time machine must run decide(day, data) files exactly as in the shared rule interface above. Ring the supervisor when the first version of the time machine runs basket rule v3 and hold BTC end to end.
- 7 Oct 12:15: A3 handover DONE (a3-status.md: everything that exists, do not rebuild). Coder seat is still EMPTY: nobody blocks on the harness; use the shared rule interface above. A1 owns /opt/rot/db/rot.db until the Coder arrives.
- 7 Oct 11:45: Ben: 10% a month from baskets is not good enough. New target: catch the top movers and size into them. speedrun.md. New roles: ROT Winners, ROT Sizer. Coder priority 1 = time machine.
- 7 Oct 11:35: A2 result: USD flows do NOT lead price (price leads by about 8 days). Framework v2. A2 tasks v2. Auditor gets its first rule (A2.R6b funding tilt).
- 7 Oct 11:15: Price Predict answered: data map at http://159.223.88.168/hx-c9ois/rot/rot-pp-status.md . Read only copies on research-box /opt/ppcopy/ (nightly 03:20 Bangkok). Coder, A2, A3: use these before building any RH loader (rot.db 1,011 days of pad share, tokens.db launches, chainday.db bridge + stables, prices.db). PP has NO cross chain DEX volume or fees: that stays with A2 (DefiLlama).
- 7 Oct 11:15: Dash v2 live (NEXT = getting stronger, held fading = TRIM, BTC and cash are real answers).
- 7 Oct 11:05: two sessions took the A1 seat. The original rotation analyst becomes ROT A3 (current cycle + baseline + handover of old work). A1 keeps universe + 2017 to 2022.
- 7 Oct 11:00: Auditor set up, idle until rules exist. Its 5 must haves added to Coder tasks v2.
- 7 Oct 11:00: Dash phase 1 LIVE http://159.223.88.168/hx-c9ois/rot/map.html . Dash tasks v2 (3 fixes).
- 7 Oct 11:10: v3. Ring with NO text. bus.json live. PP is read only; asks go through the supervisor.
- 7 Oct 11:00: team v2. Added A2 (live flows), Coder (database, daily pipeline, learning loop machinery, paper books), Auditor (breaks every rule). Coder owns HOW data is stored and run; A1 owns WHAT data and sector tags; A2 owns flow series. One pipeline, not three.

Version: v3, 7 Oct 2026 11:10 Bangkok. Latest: http://159.223.88.168/hx-c9ois/rot/rot-bus.md
