# Plan — overnight run (consolidate → /upgrade-all → morning report) **Created:** 2026-06-02 ~02:10 UTC. **Runs via:** `cc-ci-plan/overnight-run.sh` in tmux `cc-ci-overnight`. ## Goal By morning, have a full picture of CI + all recipes: let things settle overnight, then run the weekly **`/upgrade-all`** as a full test run and leave a report — so we can see whether it makes it through, how many recipe PRs it produced, and the overall state. ## Sequence (the runner enforces it; polls in pure bash so it doesn't burn the shared claude budget) 1. **Gate A — Assistant done.** Wait for the PR-consolidation task to finish (marker `/srv/cc-ci/.cc-ci-logs/pr-consolidation.done`, which the assistant writes as its last step). So `/upgrade-all` starts from a clean one-open-PR-per-recipe state. (4h timeout → proceed anyway.) 2. **Gate B — usage reset.** Don't launch `/upgrade-all` until after the claude usage-limit reset (~03:30 UTC) so it has budget. (The loops + assistant are at ~90% now and may stall until reset; the watchdog resumes the loops on lift.) 3. **Gate C — Swarm free.** Wait (≤1h) for the Builder/Adversary to be idle so `/upgrade-all` doesn't contend with the regression canaries on the shared Swarm; proceed anyway after the cap. 4. **Run `/upgrade-all`** (`launch-upgrader.py fresh` → DEFAULT mode: surveys every enrolled recipe, opens/updates a recipe PR per upgradeable one verified by `!testme`, **NEVER merges**). Wait for it to finish (it self-terminates + writes `…/upgrades/upgrade-all-.md`; ≤8h). 5. **Morning report** → `/srv/cc-ci/.cc-ci-logs/overnight-report-.md`: the `/upgrade-all` summary, open-PR-per-recipe survey, and `launch.py status`. Then ping the orchestrator to send the operator a proactive PushNotification + journal it. ## Guardrails / notes - `/upgrade-all` DEFAULT **never merges** anything and never weakens tests. - Shared claude budget: a full `/upgrade-all` is heavy; if it re-exhausts the limit it may stall mid-run — the report will show how far it got (a partial result is still a result, per the ask). - Neither the upgrader nor the assistant is watchdog-managed; if either limit-stalls, it stays stalled until nudged. The runner has bounded timeouts so it never blocks forever. - This is a one-off overnight run (not the recurring Sunday-02:00 timer, which stays as-is).