Files
cc-ci-orchestrator/cc-ci-plan/plan-overnight-run.md
autonomic-bot 04fdefcd39 plan: overnight run — after assistant, run /upgrade-all + morning report
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>
2026-06-02 02:10:13 +00:00

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)

  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-<date>.md; ≤8h).
  5. Morning report/srv/cc-ci/.cc-ci-logs/overnight-report-<date>.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).