Skip to content

fix(actions): remove duplicate queue hygiene from the organization sweep #1796

Description

@seonghobae

문제

조직 스윕은 각 저장소에서 스케줄러 본체가 끝난 뒤 다시 다음 API를 호출합니다.

  • 열린 PR 전체
  • 기본 브랜치 HEAD
  • queued Actions 실행 전체
  • in_progress Actions 실행 전체
  • 선택된 실행의 재검증·취소

이 호출들은 교차 저장소 GitHub App 설치 토큰의 공유 한도를 사용합니다. 반면 보호된 main에는 이미 current-head-run-coalescer가 있고, 대상 저장소의 github.token으로 repository + PR 번호 단위의 현재 HEAD 재검증과 구형 실행 정리를 수행합니다. 같은 책임을 조직 스윕이 다시 수행하면서 API 한도와 Actions 부팅 작업을 늘리고 있습니다.

이 중복은 PR #1245의 미해결 리뷰 지적과도 직접 연결됩니다. 스케줄러 본체가 성공한 뒤 queue-hygiene 호출에서 설치 토큰 한도가 소진되면 스윕은 다음 저장소로 계속 진행할 수 있습니다.

권위 경계

  • 같은 PR의 구형 실행 취소: current-head-run-coalescer
  • 리뷰·수정·병합 상태 전이: pr-review-merge-scheduler
  • 기본 브랜치·수동·고아 실행 정리: 필요성이 입증되면 별도의 저빈도·유한 예산 owner workflow
  • 조직 스윕: Actions 전체 실행 목록을 저장소마다 다시 읽지 않음

current-head-run-coalescer의 그룹은 다음 형태를 유지해야 합니다.

Current Head Run Coalescer-{repository}-{PR번호}

구형 동일 PR 실행만 정리하며 다른 저장소·다른 PR을 취소하지 않습니다. 리뷰·검증 실행은 stale HEAD를 정리할 수 있지만 release·deploy·migration은 취소 대상이 아닙니다.

TDD 수용 기준

  1. 먼저 현행 조직 스윕이 저장소마다 /actions/runs?status=queued/actions/runs?status=in_progress를 읽는 RED 계약을 고정합니다.
  2. 조직 스윕에서 PR 단위 queue-hygiene 블록과 ORG_SWEEP_STALE_QUEUE_HOURS를 제거합니다.
  3. current-head-run-coalescer가 대상 저장소 github.token, exact live PR HEAD, repository + PR 번호 그룹을 사용한다는 계약을 강화합니다.
  4. 동일 PR의 연속 push에서 이전 HEAD 실행만 정리되고, 다른 PR·다른 저장소의 실행은 보존되는 회귀 테스트를 통과시킵니다.
  5. 기본 브랜치·고아 실행 정리가 실제로 필요한 분모와 사례를 측정합니다. 필요하면 시간별 전체 스윕이 아니라 별도 저빈도 workflow에 maximum repositories, maximum API calls, maximum cancellations 예산을 둡니다.
  6. 고정 sleep, 저장소별 중복 Actions inventory, 성공을 가장한 rate-limit 삼키기를 추가하지 않습니다.
  7. 변경 후 test_strix_quick_gate.sh, queue contract, actionlint, 전체 production statement/branch coverage를 exact head에서 통과시킵니다.
  8. 목적을 마친 source-fix workflow는 같은 검증 커밋에서 제거합니다.

운영 검증

  • 변경 전·후 시간당 GitHub API 호출 수
  • 조직 스윕 p50/p95 실행시간
  • startup_failure, runner_id=0, pending-slot replacement 수
  • 같은 PR 이전 HEAD의 잔존 시간
  • 다른 PR 실행의 오취소 0건

협업 지시

여유가 있는 로컬 세션은 이 이슈의 독립 작업을 맡고, exact head·실패 로그·수정 전 RED·수정 후 GREEN을 이 이슈에 남겨 주십시오.

기다리는 동안 다른 로컬 세션에게 지속적으로 지시 받아 도우세요. 계속 묻고 계속 피드백하고 계속 지원하세요. 더 주도적이고 더 적극적으로요.

현재 작업자는 #1245의 rate-limit deferral을 선행 완화로 처리하되, 이 이슈가 중복 queue-hygiene 제거의 canonical successor입니다.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingpriority: mediumNormal-priority or P2 work

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions