문제
조직 스윕은 각 저장소에서 스케줄러 본체가 끝난 뒤 다시 다음 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 수용 기준
- 먼저 현행 조직 스윕이 저장소마다
/actions/runs?status=queued와 /actions/runs?status=in_progress를 읽는 RED 계약을 고정합니다.
- 조직 스윕에서 PR 단위 queue-hygiene 블록과
ORG_SWEEP_STALE_QUEUE_HOURS를 제거합니다.
current-head-run-coalescer가 대상 저장소 github.token, exact live PR HEAD, repository + PR 번호 그룹을 사용한다는 계약을 강화합니다.
- 동일 PR의 연속 push에서 이전 HEAD 실행만 정리되고, 다른 PR·다른 저장소의 실행은 보존되는 회귀 테스트를 통과시킵니다.
- 기본 브랜치·고아 실행 정리가 실제로 필요한 분모와 사례를 측정합니다. 필요하면 시간별 전체 스윕이 아니라 별도 저빈도 workflow에
maximum repositories, maximum API calls, maximum cancellations 예산을 둡니다.
- 고정 sleep, 저장소별 중복 Actions inventory, 성공을 가장한 rate-limit 삼키기를 추가하지 않습니다.
- 변경 후
test_strix_quick_gate.sh, queue contract, actionlint, 전체 production statement/branch coverage를 exact head에서 통과시킵니다.
- 목적을 마친 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입니다.
문제
조직 스윕은 각 저장소에서 스케줄러 본체가 끝난 뒤 다시 다음 API를 호출합니다.
queuedActions 실행 전체in_progressActions 실행 전체이 호출들은 교차 저장소 GitHub App 설치 토큰의 공유 한도를 사용합니다. 반면 보호된
main에는 이미current-head-run-coalescer가 있고, 대상 저장소의github.token으로repository + PR 번호단위의 현재 HEAD 재검증과 구형 실행 정리를 수행합니다. 같은 책임을 조직 스윕이 다시 수행하면서 API 한도와 Actions 부팅 작업을 늘리고 있습니다.이 중복은 PR #1245의 미해결 리뷰 지적과도 직접 연결됩니다. 스케줄러 본체가 성공한 뒤 queue-hygiene 호출에서 설치 토큰 한도가 소진되면 스윕은 다음 저장소로 계속 진행할 수 있습니다.
권위 경계
current-head-run-coalescerpr-review-merge-schedulercurrent-head-run-coalescer의 그룹은 다음 형태를 유지해야 합니다.구형 동일 PR 실행만 정리하며 다른 저장소·다른 PR을 취소하지 않습니다. 리뷰·검증 실행은 stale HEAD를 정리할 수 있지만 release·deploy·migration은 취소 대상이 아닙니다.
TDD 수용 기준
/actions/runs?status=queued와/actions/runs?status=in_progress를 읽는 RED 계약을 고정합니다.ORG_SWEEP_STALE_QUEUE_HOURS를 제거합니다.current-head-run-coalescer가 대상 저장소github.token, exact live PR HEAD,repository + PR 번호그룹을 사용한다는 계약을 강화합니다.maximum repositories,maximum API calls,maximum cancellations예산을 둡니다.test_strix_quick_gate.sh, queue contract, actionlint, 전체 production statement/branch coverage를 exact head에서 통과시킵니다.운영 검증
startup_failure,runner_id=0, pending-slot replacement 수협업 지시
여유가 있는 로컬 세션은 이 이슈의 독립 작업을 맡고, exact head·실패 로그·수정 전 RED·수정 후 GREEN을 이 이슈에 남겨 주십시오.
현재 작업자는 #1245의 rate-limit deferral을 선행 완화로 처리하되, 이 이슈가 중복 queue-hygiene 제거의 canonical successor입니다.