8000
Skip to content

Stagger concurrent 0-minute cron schedules to prevent GitHub App rate limit burst#24144

Merged
pelikhan merged 2 commits intomainfrom
copilot/deep-report-stagger-schedules
Apr 2, 2026
Merged

Stagger concurrent 0-minute cron schedules to prevent GitHub App rate limit burst#24144
pelikhan merged 2 commits intomainfrom
copilot/deep-report-stagger-schedules

Conversation

Copy link
Copy Markdown
Contributor
Copilot AI commented Apr 2, 2026

~30 workflows firing at the top of the hour simultaneously exhausted the GitHub App installation rate limit within a 41-second window, causing safe-output failures (add_comment, create_issue, create_pull_request_review_comment, update_pull_request).

Changes

Converted explicit 0 <hour> cron expressions to fuzzy scatter formats in 34 workflow .md files (+ recompiled .lock.yml files):

  • 24 weekday workflows (0 HH * * 1-5) → daily around HH:00 on weekdays
  • 2 all-day workflows (0 HH * * *) → daily around HH:00
  • 3 weekly workflows (0 HH * * DOW) → weekly on <day> around HH:00
  • 2 interval workflows (0 */6 * * *) → every 6h
  • 3 non-standard patterns (Mon/Wed/Fri, Tue/Thu, twice-daily, monthly) — manually assigned non-zero minute offsets since no fuzzy format covers them

Before:

- cron: "0 13 * * 1-5"  # all four 1 PM workflows fire simultaneously

After:

- cron: "daily around 13:00 on weekdays"
# Compiles to unique offsets per workflow, e.g.:
#   ci-coach           → 7 13 * * 1-5
#   cli-consistency    → 51 12 * * 1-5
#   daily-file-diet    → 32 13 * * 1-5
#   repository-quality → 14 13 * * 1-5

The compiler hashes each workflow's identifier (scoped to owner/repo/workflow-path in release mode) to deterministically scatter execution within ±30 minutes of the target time.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • https://api.github.com/graphql
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw /home/REDACTED/work/gh-aw/gh-aw/.github/workflows/ci-coach.md /home/REDACTED/work/gh-aw/gh-aw/.github/workflows/ci-doctor.md /home/REDACTED/work/gh-aw/gh-aw/.github/workflows/claude-code-user-docs-review.md (http block)
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw (http block)
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw brave.md breaking-change---noprofile changeset.md ci-c�� ci-doctor.md claude-code-user-docs-review.md n-dir/bash (http block)
  • https://api.github.com/orgs/test-owner/actions/secrets
    • Triggering command: /usr/bin/gh gh api /orgs/test-owner/actions/secrets --jq .secrets[].name 5817298/001&#39; 5817298/001&#39; 64/bin/go -p github.com/githu-o -lang=go1.25 go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api /orgs/test-owner/actions/secrets --jq .secrets[].name INVALID,NEW -j DROP --ignore-path ../../../.pretti/home/REDACTED/work/gh-aw/gh-aw/actions/setup/js/node_modules/.bin/pre�� ache/go/1.25.0/x--check go env ath ../../../.pr**/*.json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/actions/ai-inference/git/ref/tags/v1
    • Triggering command: /usr/bin/gh gh api /repos/actions/ai-inference/git/ref/tags/v1 --jq .object.sha --show-toplevel x_amd64/compile /usr/bin/git -json o x_amd64/compile git rev-�� --show-toplevel x_amd64/compile /usr/bin/infocmp -json GO111MODULE 64/pkg/tool/linu--show-toplevel infocmp (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/v3
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v3 --jq .object.sha UpdateDiscussionFieldEnforcement1223109329/001 -trimpath /usr/lib/git-core/git-receive-pack l main -lang=go1.25 git-receive-pack /tmp�� YIBjnFnRnbI4d-yvFAR9/YIBjnFnRnbI4d-yvFAR9 -dwarf=false /usr/bin/git 5817298/001&#39; 5817298/001&#39; -nolocalimports git (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/v5
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq .object.sha 14347792/001 GO111MODULE ache/go/1.25.0/x64/bin/go GOINSECURE GOMOD bis 64/src/reflect/asm_wasm.s env BGfe18vs8 GO111MODULE ache/go/1.25.0/x64/pkg/tool/linux_amd64/compile (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq .object.sha list --json /usr/bin/git --workflow nonexistent-workrev-parse --limit git rev-�� --show-toplevel 64/pkg/tool/linux_amd64/compile /usr/bin/git /run/systemd/sysgit til.go 64/pkg/tool/linu--show-toplevel git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq .object.sha --show-toplevel 64/pkg/tool/linuowner=github /usr/bin/git 878379/b136/_pkggit k5wI/jjXPz6mLDCkrev-parse .cfg git rev-�� --show-toplevel /opt/hostedtoolcache/go/1.25.0/x64/pkg/tool/linux_amd64/compile 0/x64/bin/node iB15/wlIzl5jyZzagit -trimpath ache/node/24.14.--show-toplevel git (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq .object.sha --get remote.origin.url /usr/bin/git -json GO111MODULE x_amd64/compile git rev-�� --show-toplevel x_amd64/compile /usr/bin/git lGitbranch_with_git lGitbranch_with_rev-parse x_amd64/compile git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq .object.sha /home/REDACTED/work/gh-aw/gh-aw/.github/workflows/ai-moderator.md go /opt/hostedtoolcache/node/24.14.0/x64/bin/node -json GO111MODULE x_amd64/compile /opt/hostedtoolcache/node/24.14.0/x64/bin/node /tmp�� secrets.TOKEN St_2P28/4-jKiyOZwE2ToBGe9z02 /usr/bin/git -json GO111MODULE x_amd64/compile git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq .object.sha --show-toplevel ache/go/1.25.0/x64/pkg/tool/linux_amd64/compile /usr/bin/git 3900-39014/test-git dJlJ/gYqoO6gp39trev-parse 64/pkg/tool/linu--show-toplevel git rev-�� --show-toplevel 64/pkg/tool/linux_amd64/link /usr/bin/git ipts.test l5bd/BnHvriLGPCMrev-parse ortcfg.link git (http block)
  • https://api.github.com/repos/actions/github-script/git/ref/tags/v8
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq .object.sha wasm/ for Go &lt;1.24)&#34; -c=4 -nolocalimports -importcfg /tmp/go-build342878379/b242/importcfg -pack /home/REDACTED/go/pkg/mod/golang.org/x/text@v0.35.0/internal/language/compact/compact.go -o /tmp/go-build112-p -trimpath 64/bin/go -p main -lang=go1.25 go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq .object.sha -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq .object.sha led-with-env-template-expressions-in-body.md GO111MODULE x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile env -json GO111MODULE x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile (http block)
  • https://api.github.com/repos/actions/setup-go/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v4 --jq .object.sha user.email test@example.com /usr/bin/git -json GO111MODULE x_amd64/compile git comm�� -m Add workflow /usr/bin/git -json go x_amd64/compile git (http block)
  • https://api.github.com/repos/actions/setup-node/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq .object.sha /home/REDACTED/work/gh-aw/gh-aw/pkg/styles/huh_theme.go /home/REDACTED/work/gh-aw/gh-aw/pkg/styles/theme.go /usr/bin/git -json GO111MODULE x_amd64/compile git -C /tmp/gh-aw-test-runs/20260402-163900-39014/test-4186549301 rev-parse /usr/bin/git @{u} x86.go x_amd64/compile git (http block)
  • https://api.github.com/repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b
    • Triggering command: /usr/bin/gh gh api /repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b --jq .object.sha (http block)
    • Triggering command: /usr/bin/gh gh api /repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b --jq .object.sha k/gh-aw/gh-aw/.gremote.origin.url k/gh-aw/gh-aw/.github/workflows/owner=github /home/REDACTED/work/_temp/uv-pytho-f (http block)
    • Triggering command: /usr/bin/gh gh api /repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b --jq .object.sha ithub/workflows (http block)
  • https://api.github.com/repos/github/gh-aw
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw --jq .visibility get --local /usr/local/bin/git credential.helpegit (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw --jq .visibility k/gh-aw/gh-aw/.github/workflows (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw --jq .visibility graphql -f (http block)
  • https://api.github.com/repos/github/gh-aw-actions/git/ref/tags/v0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v0 --jq .object.sha tural-analysis.md (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v0 --jq .object.sha --abbrev-ref HEAD repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v0 --jq .object.sha ithub/workflows (http block)
  • https://api.github.com/repos/github/gh-aw-actions/git/ref/tags/v0.1.2
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v0.1.2 --jq .object.sha --get remote.origin.url /opt/hostedtoolcache/node/24.14.0/x64/bin/node -json GO111MODULE x_amd64/compile /opt/hostedtoolcache/node/24.14.0/x64/bin/node /tmp�� github.event.inputs.branch MfUMJVM/6d9ZkT5fi2k9u6GBKbIP /usr/bin/git Gitcustom_branchgit Gitcustom_branchrev-parse x_amd64/compile git (http block)
  • https://api.github.com/repos/github/gh-aw-actions/git/ref/tags/v1.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.0.0 --jq .object.sha runs/20260402-163900-39014/test-3144159418/.github/workflows -trimpath /opt/hostedtoolcache/go/1.25.0/x64/pkg/tool/linux_amd64/link l github.com/goccyrev-parse -lang=go1.21 /opt/hostedtoolcache/go/1.25.0/x64/pkg/tool/linux_amd64/link -V=f�� 4_acOEx_6w4INp4Hc7-a/4_acOEx_6w4INp4Hc7-a -dwarf=false /usr/lib/git-core/git go1.25.0 -c=4 -nolocalimports /usr/lib/git-core/git (http block)
  • https://api.github.com/repos/github/gh-aw-actions/git/ref/tags/v1.2.3
    • Triggering command: /usr/bin/g 8000 h gh api /repos/github/gh-aw-actions/git/ref/tags/v1.2.3 --jq .object.sha runs/20260402-163900-39014/test-3144159418/.github/workflows -trimpath /opt/hostedtoolcache/go/1.25.0/x64/pkg/tool/linux_amd64/compile -I /tmp/go-build342rev-parse -I /opt/hostedtoolcache/go/1.25.0/x64/pkg/tool/linux_amd64/compile -o /tmp/go-build2957498542/b070/_pkg_.a -trimpath /bin/sh -p main -lang=go1.25 /bin/sh (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/1/artifacts
    • Triggering command: /usr/bin/gh gh run download 1 --dir test-logs/run-1 LsRemoteWithRealGitmain_branch475817298/001&#39; 64/pkg/tool/linux_amd64/compile GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/compile env _.a GO111MODULE 64/pkg/tool/linux_amd64/compile GOINSECURE GOMOD bis 64/pkg/tool/linux_amd64/compile (http block)
    • Triggering command: /usr/bin/gh gh run download 1 --dir test-logs/run-1 GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE ache/go/1.25.0/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/12345/artifacts
    • Triggering command: /usr/bin/gh gh run download 12345 --dir test-logs/run-12345 GO111MODULE 64/pkg/tool/linux_amd64/compile GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linuorigin estl�� _.a verutil.go 64/pkg/tool/linux_amd64/compile GOINSECURE l_wasm.o 64/src/internal/--show-toplevel 64/pkg/tool/linux_amd64/compile (http block)
    • Triggering command: /usr/bin/gh gh run download 12345 --dir test-logs/run-12345 GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env LsRemoteWithRealGitbranch_with_hyphen545985228/001&#39; LsRemoteWithRealGitbranch_with_hyphen545985228/001&#39; 86_64/sh GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/12346/artifacts
    • Triggering command: /usr/bin/gh gh run download 12346 --dir test-logs/run-12346 GO111MODULE 64/pkg/tool/linux_amd64/compile GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linuorigin env _.a 4/apic.go 64/pkg/tool/linux_amd64/compile GOINSECURE GOMOD bis 64/pkg/tool/linux_amd64/compile (http block)
    • Triggering command: /usr/bin/gh gh run download 12346 --dir test-logs/run-12346 GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go itbr�� -json GO111MODULE ache/go/1.25.0/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/2/artifacts
    • Triggering command: /usr/bin/gh gh run download 2 --dir test-logs/run-2 GO111MODULE 64/pkg/tool/linux_amd64/compile GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/compile env _.a GO111MODULE 64/pkg/tool/linux_amd64/compile GOINSECURE GOMOD bis 64/pkg/tool/linux_amd64/compile (http block)
    • Triggering command: /usr/bin/gh gh run download 2 --dir test-logs/run-2 GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE ache/go/1.25.0/x64/bin/go GOINSECURE GOMOD GOMODCACHE int is not installed. Run &#39;make config (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/3/artifacts
    • Triggering command: /usr/bin/gh gh run download 3 --dir test-logs/run-3 GO111MODULE 64/pkg/tool/linux_amd64/compile GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/compile env _.a 4.0/internal/doc.go x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile (http block)
    • Triggering command: /usr/bin/gh gh run download 3 --dir test-logs/run-3 GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE ndor/bin/sh GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/4/artifacts
    • Triggering command: /usr/bin/gh gh run download 4 --dir test-logs/run-4 GO111MODULE 64/pkg/tool/linux_amd64/compile GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/compile env _.a GO111MODULE 64/pkg/tool/linux_amd64/compile GOINSECURE ic_wasm.o 64/src/internal/--show-toplevel 64/pkg/tool/linux_amd64/compile (http block)
    • Triggering command: /usr/bin/gh gh run download 4 --dir test-logs/run-4 GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE ache/go/1.25.0/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/5/artifacts
    • Triggering command: /usr/bin/gh gh run download 5 --dir test-logs/run-5 GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet env _.a o x_amd64/compile GOINSECURE y.o 64/src/internal/--show-toplevel x_amd64/compile (http block)
    • Triggering command: /usr/bin/gh gh run download 5 --dir test-logs/run-5 GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go eWit�� -json GO111MODULE ache/go/1.25.0/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/github/gh-aw/actions/workflows
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path /husky node 64/bin/go prettier --write 64/bin/go go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --workflow nonexistent-workflow-12345 --limit 100 GOMOD GOMODCACHE x_amd64/asm env -json GO111MODULE x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile (http block)
    • Triggering command: /usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --workflow nonexistent-workflow-12345 --limit 6 GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/compile env /run/systemd/system ]; then /usr/lib/php/sessionclean; fi til.go 64/pkg/tool/linux_amd64/compile GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/compile (http block)
  • https://api.github.com/repos/github/gh-aw/git/ref/tags/v0.47.4
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v0.47.4 --jq .object.sha --show-toplevel 64/pkg/tool/linuTest User /usr/bin/git _.a GO111MODULE 64/pkg/tool/linu--show-toplevel git rev-�� --show-toplevel 64/pkg/tool/linux_amd64/compile /usr/bin/git y_with_explicit_git 7Zp1oajrH 64/pkg/tool/linu--verify git (http block)
  • https://api.github.com/repos/github/gh-aw/git/ref/tags/v1.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.0.0 --jq .object.sha -json GO111MODULE x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile env _.a GO111MODULE x_amd64/vet GOINSECURE a20 64/src/internal/--show-toplevel x_amd64/vet (http block)
  • https://api.github.com/repos/github/gh-aw/git/ref/tags/v1.2.3
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.2.3 --jq .object.sha -json GO111MODULE x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile env -json color.go x_amd64/compile Action pins syn/opt/hostedtoolcache/go/1.25.0/x64/pkg/tool/linux_amd64/compile GOMOD GOMODCACHE x_amd64/compile (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.2.3 --jq .object.sha -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/github/gh-aw/git/ref/tags/v2.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v2.0.0 --jq .object.sha -json GO111MODULE x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile env -json GO111MODULE x_amd64/asm GOINSECURE GOMOD GOMODCACHE x_amd64/asm (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v2.0.0 --jq .object.sha -json GO111MODULE x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile env -json GO111MODULE x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v2.0.0 --jq .object.sha -json 1.4.1/oauthex/oago1.25.0 x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile env -json GO111MODULE x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile (http block)
  • https://api.github.com/repos/github/gh-aw/git/ref/tags/v3.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v3.0.0 --jq .object.sha -json GO111MODULE x_amd64/asm GOINSECURE GOMOD GOMODCACHE x_amd64/asm 7947�� -json GO111MODULE x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v3.0.0 --jq .object.sha -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/githubnext/agentics/git/ref/tags/
    • Triggering command: /usr/bin/gh gh api /repos/githubnext/agentics/git/ref/tags/# --jq .object.sha (http block)
    • Triggering command: /usr/bin/gh gh api /repos/githubnext/agentics/git/ref/tags/# --jq .object.sha HEAD k/gh-aw/gh-aw/.github/workflows/ace-editor.md $name) { hasDiscussionsEnabled } } k/gh-aw/gh-aw/.g/usr/bin/gh k/gh-aw/gh-aw/.gapi k/gh-aw/gh-aw/.ggraphql k/gh-aw/gh-aw/.g-f k/gh�� = get &amp;&amp; echo &#34;p-f = get &amp;&amp; echo &#34;powner=github ache/uv/0.11.3/x-f k/gh-aw/gh-aw/.ggit k/gh-aw/gh-aw/.g-C k/gh-aw/gh-aw/.g/home/REDACTED/work/gh-aw/gh-aw/.github/workflows k/gh-aw/gh-aw/.grev-parse (http block)
    • Triggering command: /usr/bin/gh gh api /repos/githubnext/agentics/git/ref/tags/# --jq .object.sha ithub/workflows origin $name) { hasDiscussionsEnabled } } /home/REDACTED/wor/usr/bin/gh /home/REDACTED/worapi /home/REDACTED/worgraphql iginal --no�� ithub/workflows /home/REDACTED/worowner=github repository(owne-f (http block)
  • https://api.github.com/repos/nonexistent/action/git/ref/tags/v999.999.999
    • Triggering command: /usr/bin/gh gh api /repos/nonexistent/action/git/ref/tags/v999.999.999 --jq .object.sha _.a GO111MODULE 64/pkg/tool/linux_amd64/compile GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/compile env 85/001/test-frontmatter-with-arrays.md Ph6VfAVNR x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (http block)
  • https://api.github.com/repos/nonexistent/repo/actions/runs/12345
    • Triggering command: /usr/bin/gh gh run view 12345 --repo nonexistent/repo --json status,conclusion GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/compile env _.a GO111MODULE 64/pkg/tool/linux_amd64/vet GOINSECURE ole bis 64/pkg/tool/linux_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh run view 12345 --repo nonexistent/repo --json status,conclusion GOINSECURE GOMOD GOMODCACHE go env 65/001/test-empty-frontmatter.mdremote.origin.url GO111MODULE ode GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/owner/repo/actions/workflows
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path --repo owner/repo 64/bin/go -p main -lang=go1.25 go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path --repo owner/repo -nolocalimports -importcfg /tmp/go-build2957498542/b417/importcfg -pack /tmp/go-build2957498542/b417/_testmain.go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path --repo owner/repo 64/bin/go --ignore-path ..node git ache/node/24.14.--check go env ath ../../../.pr**/*.json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/owner/repo/contents/file.md
    • Triggering command: /tmp/go-build2957498542/b396/cli.test /tmp/go-build2957498542/b396/cli.test -test.testlogfile=/tmp/go-build2957498542/b396/testlog.txt -test.paniconexit0 -test.v=true -test.parallel=4 -test.timeout=10m0s -test.run=^Test -test.short=true -nolocalimports -importcfg /tmp/go-build342878379/b206/importcfg -pack -c echo &#34;��� JavaSc-p node 64/bin/go tierignore **/*.cjs 64/bin/go go (http block)
    • Triggering command: /tmp/go-build828463254/b396/cli.test /tmp/go-build828463254/b396/cli.test -test.testlogfile=/tmp/go-build828463254/b396/testlog.txt -test.paniconexit0 -test.v=true -test.parallel=4 -test.timeout=10m0s -test.run=^Test -test.short=true tierignore btcJUd2m0T29q/IAenv /usr/bin/git go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/test-owner/test-repo/actions/secrets
    • Triggering command: /usr/bin/gh gh api /repos/test-owner/test-repo/actions/secrets --jq .secrets[].name go1.25.0 -c=4 -nolocalimports -importcfg /tmp/go-build2957498542/b411/importcfg -pack /tmp/go-build2957498542/b411/_testmain.go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/test-owner/test-repo/actions/secrets --jq .secrets[].name INVALID,NEW -j DROP --ignore-path ../../../.pretti-c cal/bin/node go env -json GO111MODULE modules/@npmcli/run-script/lib/node-gyp-bin/sh GOINSECURE GOMOD GOMODCACHE go (http block)

If you need me to access, download, or install something from one of these locations, you can either:

… burst

Convert explicit `0 <hour>` cron schedules to fuzzy `daily around`,
`weekly on <day> around`, and `every Nh` formats so each workflow
gets a unique scatter offset derived from its identifier.

Also manually stagger non-standard patterns (Mon/Wed/Fri, Tue/Thu,
twice-daily, monthly) that cannot use fuzzy format.

Recompile all 34 affected lock files.

Agent-Logs-Url: https://github.com/github/gh-aw/sessions/0fa97fb9-3773-4dd5-b94d-1666307db01d

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Copilot AI changed the title [WIP] Fix concurrent schedule bursts at 12:00 UTC Stagger concurrent 0-minute cron schedules to prevent GitHub App rate limit burst Apr 2, 2026
Copilot AI requested a review from pelikhan April 2, 2026 16:48
@pelikhan pelikhan marked this pull request as ready for review April 2, 2026 16:49
Copilot AI review requested due to automatic review settings April 2, 2026 16:49
@pelikhan pelikhan merged commit 6cb0ce9 into main Apr 2, 2026
51 checks passed
10000
@pelikhan pelikhan deleted the copilot/deep-report-stagger-schedules branch April 2, 2026 16:49
Copy link
Copy Markdown
Contributor
Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR reduces GitHub App installation rate-limit bursts by scattering scheduled workflow start times instead of having many workflows fire at exactly HH:00.

Changes:

  • Replaced many explicit 0 HH … cron expressions in workflow .md sources with fuzzy “daily/weekly around …” / “every 6h” schedules.
  • Recompiled the corresponding .lock.yml workflows to concrete, deterministic non-zero minute offsets.
  • Applied manual non-zero minute offsets for schedules not covered by the fuzzy format.

Reviewed changes

Copilot reviewed 68 out of 68 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
.github/workflows/weekly-issue-summary.md Switch weekly Monday schedule to fuzzy “weekly on monday around 15:00”.
.github/workflows/weekly-issue-summary.lock.yml Recompiled workflow with scattered cron minute offset and updated generated IDs/hashes.
.github/workflows/typist.md Switch weekday 11:00 schedule to fuzzy “daily around 11:00 on weekdays”.
.github/workflows/typist.lock.yml Recompiled workflow with scattered cron minute offset and updated generated IDs/hashes.
.github/workflows/tidy.md Switch daily 07:00 schedule to fuzzy “daily around 7:00”.
.github/workflows/tidy.lock.yml Recompiled workflow with scattered cron minute offset and updated generated IDs/hashes.
.github/workflows/super-linter.md Switch weekday 14:00 schedule to fuzzy “daily around 14:00 on weekdays”.
.github/workflows/super-linter.lock.yml Recompiled workflow with scattered cron minute offset and updated generated IDs/hashes.
.github/workflows/stale-repo-identifier.md Change monthly schedule to a fixed non-zero minute offset (15 9 1 * *).
.github/workflows/stale-repo-identifier.lock.yml Recompiled workflow to reflect the new monthly cron expression and updated generated IDs/hashes.
.github/workflows/slide-deck-maintainer.md Switch weekday 16:00 schedule to fuzzy “daily around 16:00 on weekdays”.
.github/workflows/slide-deck-maintainer.lock.yml Recompiled workflow with scattered cron minute offset and updated generated IDs/hashes.
.github/workflows/repository-quality-improver.md Switch weekday 13:00 schedule to fuzzy “daily around 13:00 on weekdays”.
.github/workflows/repository-quality-improver.lock.yml Recompiled workflow with scattered cron minute offset and updated generated IDs/hashes.
.github/workflows/pr-triage-agent.md Switch 0 */6 schedule to fuzzy “every 6h”.
.github/workflows/pr-triage-agent.lock.yml Recompiled workflow with scattered minute offset for the 6-hour interval cron.
.github/workflows/layout-spec-maintainer.md Switch weekly Monday 07:00 schedule to fuzzy “weekly on monday around 7:00”.
.github/workflows/layout-spec-maintainer.lock.yml Recompiled workflow with scattered cron minute offset and updated generated IDs/hashes.
.github/workflows/issue-triage-agent.md Switch weekday 14:00 schedule to fuzzy “daily around 14:00 on weekdays”.
.github/workflows/issue-triage-agent.lock.yml Recompiled workflow with scattered cron minute offset and updated generated IDs/hashes.
.github/workflows/hourly-ci-cleaner.md Apply a manual non-zero minute offset for the twice-daily schedule (15 6,18).
.github/workflows/hourly-ci-cleaner.lock.yml Recompiled workflow to reflect the new twice-daily cron expression and updated generated IDs/hashes.
.github/workflows/go-pattern-detector.md Switch weekday 14:00 schedule to fuzzy “daily around 14:00 on weekdays”.
.github/workflows/go-pattern-detector.lock.yml Recompiled workflow with scattered cron minute offset and updated generated IDs/hashes.
.github/workflows/go-fan.md Switch weekday 07:00 schedule to fuzzy “daily around 7:00 on weekdays”.
.github/workflows/go-fan.lock.yml Recompiled workflow with scattered cron minute offset and updated generated IDs/hashes.
.github/workflows/glossary-maintainer.md Switch weekday 10:00 schedule to fuzzy “daily around 10:00 on weekdays”.
.github/workflows/glossary-maintainer.lock.yml Recompiled workflow with scattered cron minute offset and updated generated IDs/hashes.
.github/workflows/github-mcp-structural-analysis.md Switch weekday 11:00 schedule to fuzzy “daily around 11:00 on weekdays”.
.github/workflows/github-mcp-structural-analysis.lock.yml Recompiled workflow with scattered cron minute offset and updated generated IDs/hashes.
.github/workflows/functional-pragmatist.md Apply a manual non-zero minute offset for Tue/Thu schedule (25 9 * * 2,4).
.github/workflows/functional-pragmatist.lock.yml Recompiled workflow to reflect the new fixed cron expression and updated generated IDs/hashes.
.github/workflows/dependabot-go-checker.md Apply a manual non-zero minute offset for M/W/F schedule (20 9 * * 1,3,5).
.github/workflows/dependabot-go-checker.lock.yml Recompiled workflow to reflect the new fixed cron expression and updated generated IDs/hashes.
.github/workflows/deep-report.md Switch weekday 15:00 schedule to fuzzy “daily around 15:00 on weekdays”.
.github/workflows/deep-report.lock.yml Recompiled workflow with scattered cron minute offset and updated generated IDs/hashes.
.github/workflows/dev.md Switch daily 09:00 schedule to fuzzy “daily around 9:00”.
.github/workflows/dev.lock.yml Recompiled workflow with scattered cron minute offset and updated generated IDs/hashes.
.github/workflows/daily-team-status.md Switch weekday 09:00 schedule to fuzzy “daily around 9:00 on weekdays”.
.github/workflows/daily-team-status.lock.yml Recompiled workflow with scattered cron minute offset and updated generated IDs/hashes.
.github/workflows/daily-repo-chronicle.md Switch weekday 16:00 schedule to fuzzy “daily around 16:00 on weekdays”.
.github/workflows/daily-repo-chronicle.lock.yml Recompiled workflow with scattered cron minute offset and updated generated IDs/hashes.
.github/workflows/daily-news.md Switch weekday 09:00 schedule to fuzzy “daily around 9:00 on weekdays”.
.github/workflows/daily-news.lock.yml Recompiled workflow with scattered cron minute offset and updated generated IDs/hashes.
.github/workflows/daily-mcp-concurrency-analysis.md Switch weekday 09:00 schedule to fuzzy “daily around 9:00 on weekdays”.
.github/workflows/daily-mcp-concurrency-analysis.lock.yml Recompiled workflow with scattered cron minute offset and updated generated IDs/hashes.
.github/workflows/daily-file-diet.md Switch weekday 13:00 schedule to fuzzy “daily around 13:00 on weekdays”.
.github/workflows/daily-file-diet.lock.yml Recompiled workflow with scattered cron minute offset and updated generated IDs/hashes.
.github/workflows/daily-fact.md Switch weekday 11:00 schedule to fuzzy “daily around 11:00 on weekdays”.
.github/workflows/daily-fact.lock.yml Recompiled workflow with scattered cron minute offset and updated generated IDs/hashes.
.github/workflows/dictation-prompt.md Switch weekly Sunday 06:00 schedule to fuzzy “weekly on sunday around 6:00”.
.github/workflows/dictation-prompt.lock.yml Recompiled workflow with scattered cron minute offset and updated generated IDs/hashes.
.github/workflows/daily-copilot-token-report.md Switch weekday 11:00 schedule to fuzzy “daily around 11:00 on weekdays”.
.github/workflows/daily-copilot-token-report.lock.yml Recompiled workflow with scattered cron minute offset and updated generated IDs/hashes.
.github/workflows/daily-choice-test.md Switch weekday 12:00 schedule to fuzzy “daily around 12:00 on weekdays”.
.github/workflows/daily-choice-test.lock.yml Recompiled workflow with scattered cron minute offset and updated generated IDs/hashes.
.github/workflows/copilot-pr-nlp-analysis.md Switch weekday 10:00 schedule to fuzzy “daily around 10:00 on weekdays”.
.github/workflows/copilot-pr-nlp-analysis.lock.yml Recompiled workflow with scattered cron minute offset and updated generated IDs/hashes.
.github/workflows/copilot-pr-merged-report.md Switch weekday 15:00 schedule to fuzzy “daily around 15:00 on weekdays”.
.github/workflows/ci-coach.md Switch weekday 13:00 schedule to fuzzy “daily around 13:00 on weekdays”.
.github/workflows/ci-coach.lock.yml Recompiled workflow with scattered cron minute offset and updated generated IDs/hashes.
.github/workflows/cli-consistency-checker.md Switch weekday 13:00 schedule to fuzzy “daily around 13:00 on weekdays”.
.github/workflows/cli-consistency-checker.lock.yml Recompiled workflow with scattered cron minute offset and updated generated IDs/hashes.
.github/workflows/breaking-change-checker.md Switch weekday 14:00 schedule to fuzzy “daily around 14:00 on weekdays”.
.github/workflows/breaking-change-checker.lock.yml Recompiled workflow with scattered cron minute offset and updated generated IDs/hashes.
.github/workflows/bot-detection.md Switch 0 */6 schedule to fuzzy “every 6h”.
.github/workflows/bot-detection.lock.yml Recompiled workflow with scattered minute offset for the 6-hour interval cron.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

on:
schedule:
- cron: 0 9 * * 1-5
- cron: "daily around 9:00 on weekdays"
Copy link
Copilot AI Apr 2, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

on.schedule list item is not indented under schedule:. As written, this frontmatter is invalid YAML and will likely fail parsing/compilation. Indent the - cron: entry beneath schedule: (or convert schedule to a single string) so the schedule is a proper child of on.

Suggested change
- cron: "daily around 9:00 on weekdays"
- cron: "daily around 9:00 on weekdays"

Copilot uses AI. Check for mistakes.
Co 8000 mment on lines 29 to +31
schedule:
- cron: "0 12 * * 1-5"
- cron: "6 11 * * 1-5"
# Friendly format: daily around 12:00 on weekdays (scattered)
Copy link
Copilot AI Apr 2, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The compiled cron time (11:06) is ~54 minutes earlier than the friendly target ("daily around 12:00"), which contradicts the PR description’s claim of ±30 minutes scatter. Either update the PR description/expectations to match the current ±1 hour scattering behavior, or adjust the scattering window if ±30 minutes is required.

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[deep-report] Stagger concurrent 12:00 UTC schedules to prevent GitHub App rate limit burst

3 participants

0