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.

@seonghobae seonghobae added bug Something isn't working priority: medium Normal-priority or P2 work status: draft Draft pull request type: bug Defect or incorrect behavior labels Sep 7, 2026 — with ChatGPT Codex Connector
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working priority: medium Normal-priority or P2 work status: draft Draft pull request type: bug Defect or incorrect behavior

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant