Overview
All routine crons were paused org-wide on 2026-07-06 because per-workflow GitHub failure emails were bloating the inbox. Heart is now green and CI is passing, so this task restores the routine builds behind one aggregated morning Slack message ("all is OK" / "problem: …") and brings the daily release back in rehearsal mode (TestPyPI-only) until the human flips it live.
Plan
- PyAutoMind: new
morning_health.yml — daily 06:00 UTC; reads Heart's Pages verdict (badge.json) + latest run conclusions of every routine workflow via gh api (all repos public, zero new secrets); posts one Slack message via the existing PYAUTO_UPDATE_WEBHOOK_URL. Deterministic bash+jq — no LLM in the health path.
- PyAutoHeart: re-enable
heart-health daily cron, moved 06:00→05:00 UTC so the verdict is fresh before the morning message; re-enable weekly url-check + workspace-validation crons.
- PyAutoBuild:
release.yml — re-enable the weekday 02:00 cron with a new resolve_mode job: scheduled runs are rehearsal (TestPyPI-only) unless repo variable RELEASE_MODE=live; dispatch behaviour unchanged; minor_version falls back to 1 on schedule. Re-enable python_matrix Monday cron.
- PyAutoMind: re-enable the user-facing update-digest cron (one-line uncomment, separate audience/channel-message).
- Verify by dispatch: morning_health posts to Slack; heart-health refreshes the stale YELLOW badge; one release.yml rehearsal dispatch from the feature branch proves TestPyPI end-to-end before any cron fires.
Human actions (post-merge, deliberately manual): flip vars.RELEASE_MODE=live on PyAutoBuild when satisfied with rehearsals; optionally silence GitHub Actions failure emails now that Slack covers it.
Deferred follow-ups: PyAutoFit nss_install_smoke cron uncomment (repo claimed by ep-diagnostics / ep-graphical-docs); optional dedicated Slack channel/webhook for health messages.
Detailed implementation plan
Affected Repositories
- PyAutoHeart (primary)
- PyAutoBuild
- PyAutoMind
Branch Survey
| Repository |
Current Branch |
Dirty? |
| ./PyAutoHeart |
main |
clean |
| ./PyAutoBuild |
main |
clean |
| ./PyAutoMind |
main |
clean |
Suggested branch: feature/morning-status-release-rehearsal
Implementation Steps
PyAutoMind/.github/workflows/morning_health.yml (new): schedule: 0 6 * * * + workflow_dispatch. Steps: (a) fetch https://pyautolabs.github.io/PyAutoHeart/badge.json → verdict; query the latest completed heart-health.yml run for freshness (>26 h old → the message says the verdict is stale, with its timestamp); (b) gh api repos/<owner>/<repo>/actions/workflows/<file>/runs?per_page=1 for PyAutoBuild/release.yml, PyAutoBuild/python_matrix.yml, PyAutoHeart/workspace-validation.yml, PyAutoHeart/url-check.yml, PyAutoFit/nss_install_smoke.yml; (c) compose "☀️ All is OK" or "⚠️ Problem: <list with run/issue links>" + link to the Pages board; (d) POST via secrets.PYAUTO_UPDATE_WEBHOOK_URL.
PyAutoHeart/.github/workflows/heart-health.yml: uncomment schedule, cron 0 5 * * *.
PyAutoHeart/.github/workflows/url-check.yml + workspace-validation.yml: uncomment paused crons (Mon 04:00 / Mon 03:00).
PyAutoBuild/.github/workflows/release.yml: add first job resolve_mode emitting outputs.rehearsal = 'true' when github.event_name == 'schedule' && vars.RELEASE_MODE != 'live', else github.event.inputs.rehearsal; switch the eight github.event.inputs.rehearsal references to needs.resolve_mode.outputs.rehearsal; MINOR_VERSION fallback 1 on schedule; uncomment the weekday cron.
PyAutoBuild/.github/workflows/python_matrix.yml: uncomment Monday cron.
PyAutoMind/.github/workflows/morning_status.yml: uncomment the 05:00 cron.
- Push feature branches; dispatch verification runs (
morning_health, heart-health, release.yml with rehearsal from branch); confirm the Slack message arrives and TestPyPI receives dev-versioned wheels.
Key Files
PyAutoMind/.github/workflows/morning_health.yml — new morning verdict message
PyAutoHeart/.github/workflows/heart-health.yml — daily verdict source (cron + time shift)
PyAutoBuild/.github/workflows/release.yml — resolve_mode job + cron
PyAutoBuild/.github/workflows/python_matrix.yml, PyAutoHeart/.github/workflows/{url-check,workspace-validation}.yml, PyAutoMind/.github/workflows/morning_status.yml — cron uncomments
Original Prompt
Click to expand starting prompt
I recently disabled a number of nightly (or less than daily) auto runs because it was bloating my email. However, PyAutoHeart is now green, CI is passing and I think it would be good to have a nightly task which gives me an email (or ideally a Slack message, but make this follow up if it requires faff with manual inputs) that every morning says 'all is ok' or 'this is a problem'. Also: review all nightly / routine builds and work out if there is a better or more optimal setup. I want to get automated daily release back very soon too, perhaps set up but temporarily publishing to test PyPI (via rehearsal) mode for a bit, then switch over.
Autonomy: launched --auto; effective level human-required (release-type cap) — plan approved in-session; ship sign-off and merge stay human.
Overview
All routine crons were paused org-wide on 2026-07-06 because per-workflow GitHub failure emails were bloating the inbox. Heart is now green and CI is passing, so this task restores the routine builds behind one aggregated morning Slack message ("all is OK" / "problem: …") and brings the daily release back in rehearsal mode (TestPyPI-only) until the human flips it live.
Plan
morning_health.yml— daily 06:00 UTC; reads Heart's Pages verdict (badge.json) + latest run conclusions of every routine workflow viagh api(all repos public, zero new secrets); posts one Slack message via the existingPYAUTO_UPDATE_WEBHOOK_URL. Deterministic bash+jq — no LLM in the health path.heart-healthdaily cron, moved 06:00→05:00 UTC so the verdict is fresh before the morning message; re-enable weeklyurl-check+workspace-validationcrons.release.yml— re-enable the weekday 02:00 cron with a newresolve_modejob: scheduled runs are rehearsal (TestPyPI-only) unless repo variableRELEASE_MODE=live; dispatch behaviour unchanged;minor_versionfalls back to1on schedule. Re-enablepython_matrixMonday cron.Human actions (post-merge, deliberately manual): flip
vars.RELEASE_MODE=liveon PyAutoBuild when satisfied with rehearsals; optionally silence GitHub Actions failure emails now that Slack covers it.Deferred follow-ups: PyAutoFit
nss_install_smokecron uncomment (repo claimed by ep-diagnostics / ep-graphical-docs); optional dedicated Slack channel/webhook for health messages.Detailed implementation plan
Affected Repositories
Branch Survey
Suggested branch:
feature/morning-status-release-rehearsalImplementation Steps
PyAutoMind/.github/workflows/morning_health.yml(new):schedule: 0 6 * * *+workflow_dispatch. Steps: (a) fetchhttps://pyautolabs.github.io/PyAutoHeart/badge.json→ verdict; query the latest completedheart-health.ymlrun for freshness (>26 h old → the message says the verdict is stale, with its timestamp); (b)gh api repos/<owner>/<repo>/actions/workflows/<file>/runs?per_page=1forPyAutoBuild/release.yml,PyAutoBuild/python_matrix.yml,PyAutoHeart/workspace-validation.yml,PyAutoHeart/url-check.yml,PyAutoFit/nss_install_smoke.yml; (c) compose "☀️ All is OK" or "secrets.PYAUTO_UPDATE_WEBHOOK_URL.PyAutoHeart/.github/workflows/heart-health.yml: uncomment schedule, cron0 5 * * *.PyAutoHeart/.github/workflows/url-check.yml+workspace-validation.yml: uncomment paused crons (Mon 04:00 / Mon 03:00).PyAutoBuild/.github/workflows/release.yml: add first jobresolve_modeemittingoutputs.rehearsal='true'whengithub.event_name == 'schedule' && vars.RELEASE_MODE != 'live', elsegithub.event.inputs.rehearsal; switch the eightgithub.event.inputs.rehearsalreferences toneeds.resolve_mode.outputs.rehearsal;MINOR_VERSIONfallback1on schedule; uncomment the weekday cron.PyAutoBuild/.github/workflows/python_matrix.yml: uncomment Monday cron.PyAutoMind/.github/workflows/morning_status.yml: uncomment the 05:00 cron.morning_health,heart-health,release.ymlwith rehearsal from branch); confirm the Slack message arrives and TestPyPI receives dev-versioned wheels.Key Files
PyAutoMind/.github/workflows/morning_health.yml— new morning verdict messagePyAutoHeart/.github/workflows/heart-health.yml— daily verdict source (cron + time shift)PyAutoBuild/.github/workflows/release.yml— resolve_mode job + cronPyAutoBuild/.github/workflows/python_matrix.yml,PyAutoHeart/.github/workflows/{url-check,workspace-validation}.yml,PyAutoMind/.github/workflows/morning_status.yml— cron uncommentsOriginal Prompt
Click to expand starting prompt
I recently disabled a number of nightly (or less than daily) auto runs because it was bloating my email. However, PyAutoHeart is now green, CI is passing and I think it would be good to have a nightly task which gives me an email (or ideally a Slack message, but make this follow up if it requires faff with manual inputs) that every morning says 'all is ok' or 'this is a problem'. Also: review all nightly / routine builds and work out if there is a better or more optimal setup. I want to get automated daily release back very soon too, perhaps set up but temporarily publishing to test PyPI (via rehearsal) mode for a bit, then switch over.
Autonomy: launched
--auto; effective level human-required (release-type cap) — plan approved in-session; ship sign-off and merge stay human.