Bash runner (cheap polling, no claude budget) that gates on the assistant's PR-consolidation done-marker, waits past the usage-limit reset (~03:30 UTC) and for the loops to idle, runs the weekly /upgrade-all (DEFAULT, never merges), then writes overnight-report-<date>.md and pings the orchestrator to notify. One-off; the Sunday 02:00 timer is unchanged. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2.3 KiB
2.3 KiB
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)
- 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-allstarts from a clean one-open-PR-per-recipe state. (4h timeout → proceed anyway.) - Gate B — usage reset. Don't launch
/upgrade-alluntil 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.) - Gate C — Swarm free. Wait (≤1h) for the Builder/Adversary to be idle so
/upgrade-alldoesn't contend with the regression canaries on the shared Swarm; proceed anyway after the cap. - 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-<date>.md; ≤8h). - Morning report →
/srv/cc-ci/.cc-ci-logs/overnight-report-<date>.md: the/upgrade-allsummary, open-PR-per-recipe survey, andlaunch.py status. Then ping the orchestrator to send the operator a proactive PushNotification + journal it.
Guardrails / notes
/upgrade-allDEFAULT never merges anything and never weakens tests.- Shared claude budget: a full
/upgrade-allis 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).