Skip to content

ci(scheduler): reduce organization sweep polling - #1828

Merged
seonghobae merged 1 commit into
mainfrom
codex/reduce-org-queue-sweep
Sep 4, 2026
Merged

ci(scheduler): reduce organization sweep polling#1828
seonghobae merged 1 commit into
mainfrom
codex/reduce-org-queue-sweep

Conversation

@seonghobae

@seonghobae seonghobae commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

변경 사항

pr-review-merge-scheduler.yml의 정상 경로를 native GitHub events로 옮기고, 조직 sweep은 missed-event recovery로 축소했습니다.

  • workflow_run.completedSecurity ScanSAST Semgrep을 추가해 마지막 security gate 완료 시 즉시 해당 PR scheduler를 깨웁니다.
  • repository-local recovery와 org-queue-sweep을 각각 hourly에서 하루 1회로 낮췄습니다. 두 cron은 30분 간격으로 분리했습니다.
  • fix(opencode): break runner-capacity dispatch deadlock #1823 이후 일반 PR OpenCode dispatch는 required workflow가 직접 수행하므로 org sweep의 일반 review dispatch 기본 예산을 1에서 0으로 바꿨습니다.
  • required workflow가 없는 stacked PR용 review budget 1은 유지했습니다.
  • org repository 목록에서 open_issues_count == 0인 저장소를 per-repository PR API 호출 전에 제외합니다. 필드가 없으면 기존처럼 포함해 fail-open합니다.
  • 명시적 repository_dispatch org sweep과 PR/review/protected-branch push 경로는 유지했습니다.

보존한 fallback

org-queue-sweep 자체는 삭제하지 않았습니다. stacked PR에는 required workflow completion event가 없고, GitHub event delivery 누락이나 일시적인 API 실패 뒤에는 재평가 이벤트가 남지 않을 수 있기 때문입니다. 수동 org_sweep dispatch도 운영 복구 경로로 유지했습니다.

효과

  • 고정 schedule: 48 workflow runs/day → 2 workflow runs/day
  • ordinary OpenCode redispatch from sweep: default 1 → 0
  • normal Security Scan/SAST completion: daily polling 대신 PR-scoped native wake
  • repositories with no open issues or PRs: per-repository open-PR probe 제거

검증

  • pytest -q tests/test_actions_queue_saturation_scheduler_cadence.py tests/test_required_workflow_queue_contract.py — 81 passed
  • actionlint .github/workflows/pr-review-merge-scheduler.yml — passed, no output
  • git diff --check origin/main...HEAD — passed

Exact revision

  • base: 5ec781dfdfdb86174ef93d1e69982032e7144378
  • head: a687de7b37c0f9f1683a6fa83468e56e1a3774f7

Summary by CodeRabbit

  • 변경 사항

    • PR 검토 및 보안 검사 완료 시 스케줄러가 즉시 실행되도록 지원 범위를 확대했습니다.
    • PR 큐 복구 및 조직 단위 점검 주기를 시간 단위에서 매일 1회로 변경했습니다.
    • 열린 이슈가 없는 저장소는 조직 점검 대상에서 제외됩니다.
    • 일반 리뷰 디스패치 기본 한도를 조정했습니다.
  • 테스트

    • 일일 스케줄, 복구 동작 및 필수 검사 완료 이벤트에 대한 검증을 업데이트했습니다.

Signed-off-by: Seongho Bae <me@seonghobae.me>
@coderabbitai

coderabbitai Bot commented Sep 4, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Team

Run ID: 5c227ee3-e9be-457b-bf78-ded06f6dda5b

📥 Commits

Reviewing files that changed from the base of the PR and between 5ec781d and a687de7.

📒 Files selected for processing (3)
  • .github/workflows/pr-review-merge-scheduler.yml
  • tests/test_actions_queue_saturation_scheduler_cadence.py
  • tests/test_required_workflow_queue_contract.py

📝 Walkthrough

Walkthrough

PR 리뷰 병합 스케줄러가 네 개의 필수 워크플로우 완료 이벤트를 수신합니다. 저장소 하트비트와 조직 스윕은 매일 실행됩니다. 회전 인덱스와 스윕 대상 필터도 일일 정책에 맞게 변경되었습니다.

Changes

스케줄러 일일 복구 전환

Layer / File(s) Summary
이벤트 수신과 일일 스케줄
.github/workflows/pr-review-merge-scheduler.yml, tests/test_actions_queue_saturation_scheduler_cadence.py, tests/test_required_workflow_queue_contract.py
Security ScanSAST Semgrep 완료 이벤트를 추가했습니다. 저장소 하트비트는 47 3 * * *, 조직 스윕은 17 3 * * *로 변경했습니다. 관련 스케줄 및 이벤트 계약 테스트를 갱신했습니다.
스윕 대상과 디스패치 기본값
.github/workflows/pr-review-merge-scheduler.yml, tests/test_required_workflow_queue_contract.py
열린 이슈 수가 0인 저장소를 sweep_targets에서 제외합니다. ORG_SWEEP_REVIEW_DISPATCH_LIMIT 기본값을 '0'으로 변경했습니다.
일일 회전 인덱스
.github/workflows/pr-review-merge-scheduler.yml, tests/test_required_workflow_queue_contract.py
회전 인덱스의 벽시계 폴백과 기본값 계산을 / 86400으로 변경했습니다. 관련 폴백 테스트의 기대값을 갱신했습니다.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Sequence Diagram(s)

sequenceDiagram
  participant WorkflowRun
  participant Scheduler
  participant ScanPrQueue
  participant OrgQueueSweep
  WorkflowRun->>Scheduler: 필수 워크플로우 완료
  Scheduler->>ScanPrQueue: 저장소 큐 실행
  Scheduler->>OrgQueueSweep: 매일 03:17 UTC 스윕 실행
  OrgQueueSweep->>OrgQueueSweep: 열린 이슈가 있는 저장소만 선택
Loading
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/reduce-org-queue-sweep

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@seonghobae
seonghobae merged commit 035b3e6 into main Sep 4, 2026
5 of 19 checks passed
@seonghobae
seonghobae deleted the codex/reduce-org-queue-sweep branch September 4, 2026 05:11
seonghobae added a commit that referenced this pull request Sep 4, 2026
… schedule (#1832)

[QUEUE_SATURATION_CHICKEN_EGG] Blocks the required test suite for every .github PR regardless of diff; bypass-merged per standing chicken-and-egg authorization. Full evidence in PR description: reproduced on fresh main (1 failed, 2804 passed), fixed (2805 passed, 100% coverage, 100% docstrings).
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.

1 participant