# Main disk without spending money (Manager, 9 Oct 2026; Ben: no disk resize)

Main is at 96% (77 GB disk). Target: under 80%, with no paid resize. Main is live-only; research copies belong on research-box (about 45 GB free once bf3 is compressed) or picker-box (43 GB free).

## Facts (checked 9 Oct, 10:45 Bangkok)
- `/opt/hist/rh` on main holds 56 day files (21 GB). research-box already has a full and newer copy: 59 day files, 22 GB, up to 2026-10-08. So most of main's copy is a duplicate.
- Readers on main: `venuepick.py` globs every day at startup, then reads the latest day. `aipick5.py` reads only the latest day. 96 scripts mention hist/rh, and most of them are research scripts.
- `/opt/pricepredict-data/liqlock.db` is 11.5 GB and still growing. A research copy is kept on research-box (liqinc, hourly). The live-path readers of pricepredict-data are `fm_crewfeed`, `crewmap` and `ponstape`. Do not interrupt them.

## Task for PP Data
1. **rh:** keep the last 14 days on main. For each older day, first verify that research-box has the same or a newer copy (row counts per table match or are higher there), then remove it from main. Keep a list of removed days with their row counts in this folder. Check that venuepick and aipick5 still run (venuepick only needs to cope with fewer days). If venuepick truly needs the full history, ask testmgr whether it is a paper test, then move it to research-box rather than keeping 21 GB on main.
2. **liqlock.db:** find out what window the live readers actually use. If they use only recent rows, plan how to keep that window on main while the full history lives on research-box. VACUUM needs free space as big as the database, so plan for that. Do it only when nothing on the live path is affected, and tell testmgr before and after.
3. Add a weekly check to the guard so main warns at 85% (layer 1 fixes it first; Ben is only told if every layer fails).
4. Close with the new `df -h /` result. Do not touch anything on firstmin.
