Skip to content

[Phase 1] Move all scheduled workflows off the top of the hour #723

Description

@github-actions

Story

As a maintainer of petry-projects/.github-private's scheduled automation,
I want change every schedule.cron that fires at minute 0 to a staggered off-peak minute, touching only the minute field,
so that scheduled runs land outside GitHub's most congested slot (the top of the hour), directly targeting the #1 documented cause of dropped/delayed cron runs.

Acceptance Criteria

  1. No schedule.cron entry in .github/workflows/.yml or in agentic .github/workflows/.md sources uses minute 0 (i.e. the leading cron field is no longer 0).
  2. Only the minute (first) field of each cron is changed; the hour, day-of-month, month, and day-of-week fields are preserved exactly so every workflow's cadence and any date guards remain unchanged (e.g. standards-sync.yml must still fire on Mondays so its first-Monday guard still works; idea-triage must still be Monday 13:xx UTC).
  3. Minutes are staggered across the edited workflows (not all set to one shared minute) and avoid :00 and its immediate neighborhood, so the change does not create a new self-inflicted burst at a single minute.
  4. agent-shield.yml is not modified at all, and thin-caller stubs are not changed beyond their cron minute; no behavior other than the cron minute is altered in any file.
  5. shellcheck/lint passes and gh aw compile succeeds for any edited agentic .md source (e.g. stale-manager.md).

Tasks / Subtasks

Dev Notes

  • Per GitHub docs (quoted in Improving reliability of scheduled GitHub Actions runs (cron is best-effort) #656): the schedule event is delayed during high load, and 'high load times include the start of every hour' -- moving off 0 * * * * is the lowest-cost, highest-leverage mitigation. Scheduled workflows run only on the default branch's latest commit (already satisfied here).
  • Changing only the minute keeps each workflow's intended time-of-day/day-of-week, which several workflows depend on: standards-sync.yml has a 'first Monday of month only' guard that re-derives the day from the run date, so the cron must still be a Monday; idea-triage is meant to land after Friday ideation; token-report is the weekly Monday report.
  • Do NOT touch agent-shield.yml (exempt from agent modification per AGENTS.md / standards/agent-standards.md). Thin-caller stubs noted in CLAUDE.md/AGENTS.md (claude.yml, agent-shield.yml, auto-rebase.yml, dependabot-automerge.yml) have no minute-0 schedule, so none are in the target set -- but if any cron is edited in a thin caller, limit the change to the minute field only.
  • This is a mechanical, low-risk edit. The complementary CI guard that prevents regressions and the standard that documents the convention are Story 2, which depends on this one landing first.

Project Structure Notes

All edits are confined to existing .github/workflows/*.yml and the stale-manager.md agentic source; no new files, scripts, or jobs. No script behavior changes.

References

  • .github/workflows/feature-ideation.yml
  • .github/workflows/standards-sync.yml#first-monday-guard
  • .github/workflows/daily-pr-review-health.yml
  • .github/workflows/content-twin-audit.yml
  • .github/workflows/docs-health-check.yml
  • .github/workflows/actions-fleet-monitor.yml
  • .github/workflows/stale-manager.yml
  • .github/workflows/stale-manager.md
  • .github/workflows/token-report.yml
  • .github/workflows/idea-enhancer.yml
  • .github/workflows/idea-triage.yml
  • AGENTS.md#workflow-files
  • CLAUDE.md#key-guidelines

Likely target surface

  • .github/workflows/feature-ideation.yml
  • .github/workflows/standards-sync.yml
  • .github/workflows/daily-pr-review-health.yml
  • .github/workflows/content-twin-audit.yml
  • .github/workflows/docs-health-check.yml
  • .github/workflows/actions-fleet-monitor.yml
  • .github/workflows/stale-manager.yml
  • .github/workflows/stale-manager.md
  • .github/workflows/token-report.yml
  • .github/workflows/idea-enhancer.yml
  • .github/workflows/idea-triage.yml

Story prepared by the BMAD Scrum Master (Bob) for epic #722. Status: ready-for-dev.

Metadata

Metadata

Assignees

No one assigned

    Labels

    dev-leadFor dev-lead agent pickupinitiativeEpic / initiative tracking issue

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions