Skip to content

Morning status Slack message, cron re-enable, release rehearsal #39

Description

@Jammy2211

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

  1. 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.
  2. PyAutoHeart/.github/workflows/heart-health.yml: uncomment schedule, cron 0 5 * * *.
  3. PyAutoHeart/.github/workflows/url-check.yml + workspace-validation.yml: uncomment paused crons (Mon 04:00 / Mon 03:00).
  4. 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.
  5. PyAutoBuild/.github/workflows/python_matrix.yml: uncomment Monday cron.
  6. PyAutoMind/.github/workflows/morning_status.yml: uncomment the 05:00 cron.
  7. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions