fix(actions): coalesce Wardnet PR validation slots - #159
Conversation
📝 WalkthroughWalkthroughCI 워크플로우에 동시성 그룹을 추가했습니다. 동일 그룹에서 새 pull request 실행이 시작되면 진행 중인 실행을 취소합니다. ChangesCI 동시성 제어
Estimated code review effort: 1 (Trivial) | ~2 minutes Merge Risk: 🟡 Moderate · up to Rapid pushes to the same branch can replace pending CI runs, so independent main-branch validation may be skipped. Update the push grouping before merge or explicitly accept this bounded CI correctness risk. 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
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 |
|
Fresh dependency/ownership review: this PR's unique concurrency delta is useful, but its current head |
There was a problem hiding this comment.
Noema LLM review
The PR correctly adds concurrency control that cancels superseded pull request runs while leaving main-branch push runs intact. Pull request runs share a group keyed by PR number, while each push run gets a unique group via github.run_id, so event types cannot interfere. cancel-in-progress is scoped to pull_request events only, so push runs queue rather than being canceled.
Reviewed changed lines
.github/workflows/ci.yml:12 (RIGHT): Concurrency group expression falls back to github.run_id for push events and uses the PR number for pull requests, producing disjoint namespaces with no cross-event cancellation risk..github/workflows/ci.yml:13 (RIGHT): cancel-in-progress is true only for pull_request events; push events evaluate to false, so main-branch runs are queued rather than canceled.
Adversarial validation
.github/workflows/ci.yml:12 (RIGHT)falsified: A push to main after a PR's CI run starts cancels the PR run because both share the same concurrency group — For pull_request events, github.event.pull_request.number is set, yielding a group such as CI-42. For push events, that expression is empty and falls back to github.run_id, a unique run identifier. The two namespaces cannot collide..github/workflows/ci.yml:13 (RIGHT)falsified: Rapid pushes to main cancel pending main-branch CI runs, causing some commits to lack CI status — cancel-in-progress evaluates to github.event_name == 'pull_request'. For push events, github.event_name is 'push', so the expression is false. GitHub Actions queues pending runs when cancel-in-progress is false.- Residual risk: Low. The change is a minimal CI workflow configuration edit. Residual risk is limited to GitHub Actions expression behavior and possible future workflow edits that reuse the concurrency group definition.
Findings
- No blocking findings.
- Result: APPROVE
- Head SHA:
89176e2cc57088e4d772de9b1686ab89a3e69aeb - Reviewer credential:
noema-review-github-app-refresh - Actor:
cwl-noema-review[bot]
결과
Wardnet의 저장소 전용 PR 검증 슬롯을 줄입니다.
CI와Fuzz는고정 workflow명-repository-PR번호group을 사용하며 같은 PR의 구형 head만 취소합니다.cargo-fuzz재설치를 건너뜁니다. 설치 실패를 숨기던|| true도 제거했습니다.ubuntu-24.04고정과 실행 계약을 정확히 승계했습니다. CI/Fuzz/Scorecard는 더 이상ubuntu-latest를 사용하지 않습니다.중앙 required workflow 대조
ContextualWisdomLab/.github@769691526f8c73cf714de8fe8ba51ae6cfa2901a와 조직 ruleset18156473을 대조했습니다. 중앙 required workflow 7개는 OpenCode, PR review/merge scheduler, Security Scan, Strix, SAST Semgrep, Noema, CodeQL PR입니다. Wardnetmain@cc15cc2c34daf8c104eeb83d52a6a66f3cd6e128에는 local PR Governance, Dependency Review, Close Empty PR, CodeQL, Security Scan, SAST, Strix, OpenCode, Noema workflow가 이미 없습니다.Local Scorecard는 삭제하지 않습니다. PR 중복이 아니라
mainpush·주간·branch-protection 증거를 소유하며 Wardnet은 v2.4.4를 사용합니다. 지정 중앙 reusable workflow는 v2.4.3이라 지금 위임하면 보안 스캐너가 낮아집니다. 이 때문에 기존 #160은 이 PR과 중복되는 적체 해결책이 아니라 비약화 조건을 위반하는 후보입니다.검증
cc15cc2c34daf8c104eeb83d52a6a66f3cd6e1288dc374ed597292a9d97a25e7cdea832b5990b6ddcargo fmt --checkcargo test --locked --workspace: 157 passedcargo clippy --locked --workspace --all-targets -- -D warningsactionlintgit diff --check origin/main...HEAD33875121820/33875121875와33875211386/33875211398이 후속 head에서completed/cancelled; 최신 head 실행만 유지Self-approval, force push, review dismissal, required gate 변경은 사용하지 않았습니다.