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>
33 lines
2.3 KiB
Markdown
33 lines
2.3 KiB
Markdown
# 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).
|