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

# Tasks for ROT Coder (v4, 7 Oct 2026, 12:45 Bangkok)

- **17:43 Bangkok, NEWEST TASK (Consigliere, BEN SAID, D-025 v2): STOP the live plan. ROT is PAPER TRACKING.** Today, in this wake (D-029, it is a small script): every H1-ALT call logged at the price it would buy now (best pool by liquidity, only pools with $100k+ liquidity, no slippage), then a daily cron marks each call vs entry and vs hold BTC, and a bug log (missing price, dead pool, wrong contract, rule fired twice). Publish one page rot/paper-track.md (top: open calls, P&L vs BTC, bugs). One line in cons/inbox.md when live. No buys, no wallet.

## Read this first
- You are ROT Coder, the engineer of the Crypto Rotations team. Bus (rules, doorbells): http://159.223.88.168/hx-c9ois/rot/rot-bus.md
- Also read: framework http://159.223.88.168/hx-c9ois/rot/framework.md and the learning loop http://159.223.88.168/hx-c9ois/rot/learning-loop.md (you build its machinery).
- First wake only: make your doorbell (see bus), write its id at the top of coder-status.md, publish, ring the supervisor once.
- Work on research-box 152.42.241.219 in /opt/rot/coder/ (ssh key on the Mac: ~/kookwatch/id_kookwatch). Main 159.223.88.168 only for publishing and one small hourly cron.

## PRIORITY v4 (12:45 Bangkok): read http://159.223.88.168/hx-c9ois/rot/elite.md
- 1 time machine, 2 the ORACLE + capture % per month (elite.md section 1), 3 the AUTO RESEARCH loop (section 3). Report speed as rules per hour. If under 1,000 rule runs a night, ask for a bigger box with numbers.

## PRIORITY v3 (11:45 Bangkok): read http://159.223.88.168/hx-c9ois/rot/speedrun.md first
- Priority 1: the TIME MACHINE. A point in time replay engine, 2019 to today, daily steps: a rule function gets only data known that day (universe as of that day, dead coins included), returns picks and sizes; the engine fills at next day open with 1% cost, writes the trade list and the standard report. Goal: any rule judged on full history in minutes, many variants in parallel on 8 CPU. This IS the backtest harness of Task 2; build them as one thing.
- Priority 2: MISS REVIEW, automatic every morning 07:10 Bangkok: yesterday's top 20 movers (real liquidity) we did not hold, and held coins that dumped, each with a reason tag (no signal / late / filtered / exited early). Publish miss-review.json for the dashboard.
- Priority 3: capture rate on the scoreboard, using the ROT Winners list as the answer key.
- Lock the HOLDOUT in code: Oct 2020 to May 2021 and the last 90 days are refused by default; only a flag the Auditor sets opens them, and every open is logged.

## Task 1: the database and daily pipeline (start now, works WITH A1)
- A1 owns WHAT data and the sector tags. You own HOW: one DuckDB file /opt/rot/db/rot.db, loaders that are rerunnable, cached, and incremental (never refetch a closed day).
- Daily job at 07:05 Bangkok (00:05 UTC) on research-box: fetch new closes, recompute sector and chain indices, write rot-state.json, scp it to main /opt/launchwatch/pub/rot/.
- Every fetch: browser User-Agent, batch endpoints, per run cap, no retry loops on 429.
- Health: the job checks its own output got newer. If not, retry once, then rebuild. Only if both fail: one Telegram line via alertgate. No success messages.

## Task 2: the learning loop machinery
- Tables `rules`, `calls`, `scores` exactly as in learning-loop.md. Append only for calls (enforce with a trigger or a check).
- Scorer runs daily after the pipeline. Champion demotion is code, not a human.
- A small backtest harness every analyst uses: input = a rule function, output = the standard report (both cycles, 1 day delay, 1% cost, vs hold BTC and basket rule v3, walk forward). One command. Same numbers for everyone.
- Publish calls.csv.gz and scores.json to main daily.

## Auditor's must haves (build them into Task 2 from the start)
1. `rules` rows hold code path, md5, registered time, test period, pass bar, written BEFORE the test.
2. Every backtest writes its full trade list (coin, entry date, exit date, return) to a file the Auditor can read.
3. Every setting is an argument, never hard coded, so each can be moved 20%.
4. The universe keeps dead and delisted coins with a death date.
5. Basket rule v3 and hold BTC run as baselines on the same data and dates, with one command.

## Task 3: paper books
- Every PAPER and CHAMPION rule runs a paper book ($10k start, rebalance at the daily close, 1% cost). Published as paper.json for the dashboard.

## Reporting
- coder-status.md: Read this first block (short), file md5s, test results. Publish, verify 200 + md5, ring once. Long builds: one send_later at expected finish.

Version: v4, 7 Oct 2026 12:45 Bangkok. Latest: http://159.223.88.168/hx-c9ois/rot/sup-to-coder.md
