Repository navigation
fix(ci): backport pinned gh bootstrap to package stack - #2649
seonghobae wants to merge 1 commit into
Conversation
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configuration
You can disable this status message by setting the Use the checkbox below for a quick retry:
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. Comment |
There was a problem hiding this comment.
Noema LLM review
The pinned GitHub CLI bootstrap is correctly placed before every affected host call, verifies both provenance and PATH selection, preserves the docs-only shard admission behavior, and performs ownership-checked cleanup. No confirmed correctness, security, maintainability, or behavioral regression remains in the reviewed changes.
Reviewed changed lines
.github/workflows/codeql-pr.yml:184 (RIGHT): The analyze-head shard provisions the pinned CLI before its first host-side GitHub CLI consumer..github/workflows/codeql-pr.yml:185 (RIGHT): The provisioning guard matches the CodeQL language-detection condition, so docs-only shards do not perform network provisioning..github/workflows/codeql-pr.yml:251 (RIGHT): The installer publishes only the checksum-verified executable directory through GITHUB_PATH and records ownership identity for later cleanup..github/workflows/codeql-pr.yml:298 (RIGHT): The cleanup step is constrained to the original RUNNER_TEMP child and validates directory type, owner, device, and inode before deletion..github/workflows/codeql-pr.yml:535 (RIGHT): The dispatch-current-head job independently provisions the same pinned CLI before dispatching through gh..github/workflows/strix.yml:489 (RIGHT): The Strix job adds the pinned bootstrap after Python setup and before its existing GitHub CLI consumers..github/workflows/strix.yml:595 (RIGHT): The Strix verifier requires the expected job-local executable, checksum, and exact CLI version rather than trusting ambient runner state.tests/test_central_gh_first_use_contract.py:20 (RIGHT): The contract test verifies provisioning and selection precede every literal gh API/auth/pr/run invocation and reject optional or late setup.
Adversarial validation
.github/workflows/codeql-pr.yml:184 (RIGHT)falsified: A CodeQL shard could invoke the ambient gh binary before the pinned bootstrap runs. — The bootstrap and verifier are inserted before the first consumer in both jobs; the new ordering contract also exercises all three affected jobs..github/workflows/codeql-pr.yml:251 (RIGHT)falsified: A changed or structurally malicious downloaded archive could reach execution or PATH publication. — The installer checks the archive digest, requires exactly one regular expected member, checks the extracted binary digest, and publishes only the copied regular executable; the added fixture tests cover these cases..github/workflows/strix.yml:489 (RIGHT)falsified: The Strix bootstrap could impose a new fixed network timeout and regress its existing DNS/TLS readiness behavior. — Strix uses urlopen(url), while the CodeQL variants use the bounded timeout; the dedicated contract test explicitly checks this distinction.tests/test_central_gh_first_use_contract.py:20 (RIGHT)falsified: Docs-only CodeQL shards could still admit the runner and download the CLI unnecessarily. — All three prerequisite steps use the code=true guard, and the consumer retains the same guard; the docs-only admission test asserts this exact relationship.- Residual risk: The implementation duplicates the installer and verifier across three jobs, so future divergence remains a maintenance risk, but the added equivalence and behavioral contract tests cover the current duplication.
Findings
- No blocking findings.
- Result: APPROVE
- Head SHA:
3ef6ff147b25fce23343400600bb8cadad0a4672 - Reviewer credential:
noema-review-github-app-refresh - Actor:
cwl-noema-review[bot]
There was a problem hiding this comment.
Pull request overview
OpenCode reviewed the current-head product diff. Coverage is a separate gate.
Changed files
.github/workflows/codeql-pr.yml— GitHub Actions review job.github/workflows/strix.yml— GitHub Actions review jobtests/test_central_gh_first_use_contract.py— regression suitetests/test_docs_only_pr_runner_admission.py— regression suite
Changed behavior
flowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Workflow: codeql-pr.yml"]
S1 --> I1["GitHub Actions review job"]
I1 --> R1["Review risk: Workflow: codeql-pr.yml"]
R1 --> V1["actionlint plus required checks"]
Evidence --> S2["Workflow: strix.yml"]
S2 --> I2["GitHub Actions review job"]
I2 --> R2["Review risk: Workflow: strix.yml"]
R2 --> V2["actionlint plus required checks"]
Evidence --> S3["Test: test_central_gh_first_use_contract.py (2 files)"]
S3 --> I3["regression suite"]
I3 --> R3["Review risk: Test: test_central_gh_first_use_contract.py (2 files)"]
R3 --> V3["targeted test run"]
Findings
No source-backed product finding is synthesized from the coverage gate. A coverage miss belongs in the status comment.
- Head SHA:
3ef6ff147b25fce23343400600bb8cadad0a4672 - Workflow run: 38508656664
- Workflow attempt: 1
- Coverage gate:
failure
Review outcome
Coverage is a gate, not the review. This body reviews the changed product files.
Changed-File Evidence Map
flowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Workflow: codeql-pr.yml"]
S1 --> I1["GitHub Actions review job"]
I1 --> R1["Review risk: Workflow: codeql-pr.yml"]
R1 --> V1["actionlint plus required checks"]
Evidence --> S2["Workflow: strix.yml"]
S2 --> I2["GitHub Actions review job"]
I2 --> R2["Review risk: Workflow: strix.yml"]
R2 --> V2["actionlint plus required checks"]
Evidence --> S3["Test: test_central_gh_first_use_contract.py (2 files)"]
S3 --> I3["regression suite"]
I3 --> R3["Review risk: Test: test_central_gh_first_use_contract.py (2 files)"]
R3 --> V3["targeted test run"]
OpenCode Review Overview
Coverage evidence did not pass, so approval is blocked. The formal pull-request review is the source-backed diff review, not this status comment. |
범위
#2573 stack에 main의 병합 수리 #2645만 가져옵니다. 이 PR은 #2573 branch를 직접 수정하지 않는 별도 후속 PR입니다.
gh: command not found, exit 127로 실패했습니다.analyze-head,dispatch-current-head, Strixstrixjob이 처음gh를 쓰기 전에 고정 version·SHA-256·Linux x64 검증을 거쳐 job-localgh를 준비합니다.검증
Head:
3ef6ff147b25fce23343400600bb8cadad0a4672Base:
44eba247e76ae5be5c32927a1374c70aca328557미완료
이 stack의 기존 Strix workflow는 아직 main과 같은 isolated selector로 완전히 전환되지 않았습니다. 이 PR은
gh준비만 고칩니다. 실제 runner 다운로드·scanner 성공, OpenCode current-head App 승인, literal auto LiteLLM inference, main 배포는 별도 증거가 필요합니다.