Skip to content

fix(ci): OpenCode 접수를 기존 bootstrap runner로 통합 - #1955

Draft
seonghobae wants to merge 4 commits into
mainfrom
codex/opencode-bootstrap-admission
Draft

fix(ci): OpenCode 접수를 기존 bootstrap runner로 통합#1955
seonghobae wants to merge 4 commits into
mainfrom
codex/opencode-bootstrap-admission

Conversation

@seonghobae

Copy link
Copy Markdown
Contributor

변경

OpenCode 접수 shell을 기존 trusted bootstrap의 Pingora 검사 뒤로 옮겨 별도 runner 배정 1개를 제거합니다. 새 workflow·helper·API 호출·의존성·polling은 없습니다.

  • Exact head: 1c6241334daf641a885ef15da9516a558a787f76
  • Base: main@43024633eba9d96b0456970391360da5a171fbda
  • 기존 접수 shell은 byte-identical, 5분 metadata budget은 step으로 보존합니다. 모델 timeout은 변경하지 않습니다.
  • stale event는 성공한 admitted=false; API/이벤트 입력 실패는 별도 admission job 대신 필수 bootstrap failure로 남습니다.
  • 세 consumer의 needs/출력 조건, 필수 coverage-source-tree·coverage-evidence, 동일 PR 구형 실행 취소를 보존합니다. 실제 dispatch coverage는 삭제하지 않습니다.
  • OIDC 권한이 없던 별도 접수 job과 달리 옮긴 step은 id-token: write가 있는 기존 bootstrap에 속합니다. 이 ambient 권한 차이를 명시합니다. 해당 step은 OIDC 토큰을 요청하거나 PR 코드를 checkout·실행하지 않습니다. 새 permission scope·principal·allowlist·secret을 추가하지 않습니다.

구조적 효과와 실제 대기 사례

경로 기준 → 후보 감소율
유효 opened/ready PR의 runner job 5 → 4 20%
synchronize, 기존 cleanup 포함 6 → 5 16.7%
review까지 직렬 runner 배정 단계 3 → 2 33.3%

이는 이 entrypoint의 선언 구조 변화이며 조직 전체 점유·시간 절감·41개 요구의 완료율이 아닙니다. 2026-09-06 API에서 #1879 d4366f837afd9f988707618c6855c1661f81c3f8bootstrap은 성공했으나 별도 admission job은 queued로 확인됐습니다. 이 추가 배정이 제거 대상입니다. 해당 실행을 취소·재시작하지 않았습니다.

활성 저장소 75개·보호 브랜치 409개·고유 ruleset 34개를 모든 페이지와 상세 API로 조사했습니다. 두 admission 이름의 필수 context는 0개였지만 Naruon/linux-cluster-ops develop은 coverage-source-tree를 요구하므로 그대로 유지합니다. 설정을 변경하지 않았습니다. 조사 SHA-256: db783b2bcfa48ad9354ba075aad8e4d42fd379ac7f3e3b23b08519f1a88104ff. 병합 전 다시 확인해야 합니다.

정확한 검증 결과

  • 기존 관련 baseline 48 passed. 새 계약을 먼저 추가한 2320129a0c5be139ae913e1f271e04308d96bb22는 1 failed/52 passed로 runner 중복을 재현했습니다.
  • 최종 head 집중 테스트 209 passed, 0 failures/errors/skips, 21.58s. 현재/구형 head·열린/닫힌 PR·닫힘 이벤트·API 실패 6개 경우는 실제 접수 shell을 격리된 가짜 GitHub 응답으로 실행합니다.
  • actionlint .github/workflows/opencode-review.yml, git diff --check 통과. Docstring 1140/1140, 100%.
  • CI=true GITHUB_ACTIONS=true, 운영 환경 변수를 상속하지 않는 동일 macOS PATH로 원본과 후보 전체를 실행했습니다. 기준은 2916 passed/12 failed/1 skipped/21 subtests passed, 최종 후보는 2922 passed/12 failed/1 skipped/21 subtests passed, 219.25s입니다. 두 실패 목록이 정확히 일치하며 새로운 실패는 없습니다. 두 명령 모두 exit 1입니다.
  • 기존 실패 11개는 HTTPError 정리 경고이며 #1879가 소유합니다. 나머지 1개는 실제 setgid bit가 제거된 macOS fixture를 여전히 위험한 mode로 가정하는 테스트 전제입니다. BSD stat 자체의 권한 누락이나 loader 운영 결함으로 단정하지 않습니다. 두 원인 모두 이 PR에서 runtime 복제·warning 억제로 숨기지 않습니다.
  • 유일한 skip은 이 호스트에 검증된 LLVM 19 도구가 없기 때문입니다. 문장 13181/분기 5326의 coverage 100%는 실패·skip을 면제하지 않습니다.
  • 재사용한 격리 Python 3.14.6 환경의 결과이며 fresh-lock 설치, 실제 GitHub job output/step timeout 실행, provider 호출, 보호 병합·배포를 증명하지 않습니다.
python -m pytest -q -W error tests/test_opencode_required_rerun_capacity.py tests/test_opencode_required_verdict_regression.py tests/test_pingora_edge_workflow_contract.py tests/test_opencode_agent_contract.py tests/test_required_workflow_queue_contract.py tests/test_opencode_coverage_identity.py tests/test_opencode_coverage_publication_regression.py
CI=true GITHUB_ACTIONS=true python -m pytest -q -W error tests --cov --cov-branch --cov-report=term-missing

최종 집중 JUnit SHA-256: 40c1dccbcb72e0f55c7a6b1c6d3efd1143b9246fa09ff9fccf60ad5051b90f53.
최종 전체 JUnit SHA-256: 09641b03916612b129e57496183239edf9140872c73bbb51a9dc727a6f97ff70.
기준 전체 JUnit SHA-256: d37b5a7b76e5b25e8f856ddb341907d6b66b74f9f7e0ea0a6af0568c750bdefb.

병합 전 남은 일

Draft를 유지합니다. #1879 및 별도 fixture 수리의 보호 통합 후 최신 main을 일반 merge하고 전체 검증을 다시 실행해야 합니다. 현재 head의 hosted security/quality 검사·독립 리뷰·보호 설정도 재확인합니다. 독립 read-only source 검토 2건과 OIDC 문구 재검토는 GitHub 승인 대신 사용할 수 없습니다. force push, admin bypass, review dismissal, predecessor closure, gate 변경은 하지 않았습니다.

상세 설계·대안 기각·공식 GitHub 근거·rollback은 docs/doctoring/opencode-bootstrap-admission-consolidation.md에 기록했습니다. 41개 요구의 전체 목표는 여전히 진행 중입니다.

seonghobae and others added 4 commits September 6, 2026 18:37
기존 접수 shell과 coverage 검사 이름을 보존하고, metadata step budget을 기존 회귀 검사에 고정한다. 새 workflow나 권한을 추가하지 않는다.

Co-Authored-By: OpenAI Codex <noreply@openai.com>
Signed-off-by: Seongho Bae <me@seonghobae.me>
read-only 전용 job과 OIDC-capable bootstrap의 차이를 기록한다. 격리된 macOS 환경에서 기준과 후보의 동일한 12개 실패를 재현했으며 전체 통과로 보고하지 않는다.

Co-Authored-By: OpenAI Codex <noreply@openai.com>
Signed-off-by: Seongho Bae <me@seonghobae.me>
@coderabbitai

coderabbitai Bot commented Sep 6, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true

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.

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