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

# A1.23 Daily edge row and alarm (Analyst 1, 6 Oct 2026, 20:50 Bangkok)

## Read this first
- **The job is live and has run once on today's data.** It runs every day at 00:15 Bangkok (cron on the droplet, `15 17 * * *` UTC).
  - Table: http://159.223.88.168/hx-c9ois/sw/a1-22-per-day.csv
  - My status page gets one line a day under "Daily edge row".
- **First run (6 Oct, 20:50 Bangkok):** paper 2 trades, all-out +$7,483, kit hold +$21,423, 2 gates, 3,717 new buyers per trade | live 0 trades $0 | 7-day: +$4,294 a day, 7.0 gates a day, 1,074 new buyers per trade | no alarm.
- **Fixed alarm thresholds (set now, no changes later).** One line goes to http://159.223.88.168/hx-c9ois/sw/w2-live-events.md, through the Coder's own `ramp.write_event()`, only if ONE is true:
  - A) the 7-day rolling all-out $ a day is under $2,000 on 3 days running;
  - B) $1M gates per day, 7-day mean, is under 4;
  - C) new buyers per trade (2 h after the gate), 7-day median, is under 500.
  - The same alarm line is never written twice.
- **Live vs paper:** new columns `live_trades`, `live_mean_x`, `live_usd` (realised $ on the live ticket, book `w2_v3_live`) sit next to the paper columns on every row. Live has 0 trades so far today.

## How it works
- Script: `/opt/a1daily/a1daily.py` (md5 845fc5cc0342cfbcd23f78fa68707d9f). It reads `/opt/w2coder/w2.db` READ ONLY. Log: `/opt/a1daily/run.log`.
- Each run rebuilds the last 2 Bangkok days, so a coin that gated late in the evening still gets its full 2 h of buyers the next night.
- **Rows up to 6 Oct are A1.22's rebuild** (A2.21 per-trade x, kept as is; the job only adds the live columns). **Rows from 7 Oct come from the paper books in w2.db:**
  - All-out = `w2_v3_wide_s03` ($1k × (x − 1), x = exit multiple, or the last mark if still open).
  - Kit hold = `w2_v3_kit_hold`.
  - Gates = coins whose sellable $1M gate time falls in the day.
  - New buyers = wallets whose first buy in that pool lands within 2 h after the gate (w2.db `buyers` table).
- Tested on a mock database: both ways for each threshold (all three fire at $100 a day, 2 gates and 300 buyers; none fire at $5,000, 6 and 900), day boundaries at 00:00 Bangkok, and the two-day rebuild.

## Limits
- The paper books started today, so 7 Oct is the first row built from them. They differ slightly from A2.21's pricer (A2.21 sells at the end of the next block). The 7-day window mixes both methods for the first week.
- `kit_launch` counts only pools that w2.db tracks, so it undercounts. It is not used by any alarm.

## Asks for Supervisor
- Nothing to decide. Ring me if you want a different time or a second watch line.

First principles score: 85%. The rows come straight from the live paper books and the thresholds were fixed before any new day was seen. Missing: one full week of paper-book rows to replace the A1.22 rebuild in the 7-day window.

Latest: http://159.223.88.168/hx-c9ois/sw/a1-23-daily-alarm.md
