ci: reject optional structural review claims#350
Conversation
|
Warning Review limit reached
More reviews will be available in 37 minutes and 8 seconds. Learn how PR review limits work. Your organization has used up its prepaid credits, and credit purchases are no longer available. Enable the review add-on in the billing tab to keep reviews running — you're only billed for reviews past your plan's rate limits ($0.25/file). ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based credits. 🚦 How do rate limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan refill rate. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, the refill rate gradually slows as usage increases. The highest same-day bursts are limited more strictly. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
📝 WalkthroughWalkthrough세 AI 에이전트(GPT-5, DeepSeek R1, DeepSeek V3) 프롬프트에 structural exploration 필수 문구를 삽입하고, Changes구조적 탐색 필수화 및 게이트 문구 감지 확장
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
✨ Simplify code
Warning Billing warning: we have not been able to collect payment for this subscription for more than 72 hours. Please update the payment method or pay any pending invoices in Billing to avoid service interruption. 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.
Pull request overview
Hardens the OpenCode CI robot-review contract by making “structural exploration is optional/not required” language a gate-failing condition, and by strengthening the workflow prompt to insist structural exploration is mandatory for every PR type.
Changes:
- Expanded structural-failure phrase detection in the Python normalizer and bash approval gate to reject more “structural exploration/review not required” claims.
- Updated the OpenCode review prompt (primary + fallbacks) to explicitly require structural exploration even for non-code changes and forbid waiving it.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 6 comments.
| File | Description |
|---|---|
| scripts/ci/opencode_review_normalize_output.py | Adds more structural-waiver phrases that invalidate APPROVE payloads during normalization. |
| scripts/ci/opencode_review_approve_gate.sh | Extends jq-based gate checks to reject additional structural-waiver phrasing for APPROVE results. |
| .github/workflows/opencode-review.yml | Tightens OpenCode prompt text to enforce mandatory structural exploration across PR types. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
OpenCode Review Overview
Pull request overviewPR #350 updates workflows, scripts, and adds a new test file. No findings requiring changes were identified. FindingsNo blocking findings from OpenCode's independent review. Verification
Gate evidence
|
There was a problem hiding this comment.
Pull request overview
The changes in PR #350 include updates to workflow and script files. No failed GitHub Checks were present, and the structural exploration of the changes did not reveal any issues. The changes are safe to merge.
Findings
No blocking findings from OpenCode's independent review.
Verification
- Review source: independent OpenCode review of the current checkout, focused changed hunks, and current-head GitHub Check evidence.
- Structural exploration: completed before approval; if structural exploration, changed-file inspection, or evidence completeness is missing, OpenCode must not approve.
- Result: APPROVE
- Reason: No source-backed blockers found and structural exploration was successful.
Gate evidence
- Head SHA:
4dfab7bf1e5d085445d73806df49687f69a0be36 - Workflow run: 27745223053
- Workflow attempt: 1
There was a problem hiding this comment.
🧹 Nitpick comments (1)
services/analysis-engine/tests/test_supply_chain_policy.py (1)
5178-5181: ⚡ Quick win구조적 문구 거부 테스트를 전체 확장 문구 집합으로 넓혀 주세요.
Line 5178, Line 5259에서 현재 2개 문구만 검증하고 있어, 정규화기/게이트에 추가된 나머지 표현과의 드리프트를 놓칠 수 있습니다.
테스트 문구 집합 확장 예시
+OPTIONAL_STRUCTURAL_REVIEW_PHRASES = ( + "structural exploration is not required", + "structural exploration not required", + "structural analysis is not required", + "structural analysis not required", + "structural review is not required", + "structural review not required", + "no structural exploration required", + "no structural analysis required", + "no structural review required", + "structural exploration is unnecessary", + "structural analysis is unnecessary", + "structural review is unnecessary", +) @@ - for phrase in ( - "no structural review required", - "structural review is unnecessary", - ): + for phrase in OPTIONAL_STRUCTURAL_REVIEW_PHRASES: @@ - for phrase in ( - "no structural review required", - "structural review is unnecessary", - ): + for phrase in OPTIONAL_STRUCTURAL_REVIEW_PHRASES:Also applies to: 5259-5262
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@services/analysis-engine/tests/test_supply_chain_policy.py` around lines 5178 - 5181, The test currently only validates 2 structural phrases in the for loop at the phrase iteration block, but this creates a gap where additional phrase variations supported by the normalizer/gate will not be tested. Expand the tuple of phrases in the for loop to include all structural phrase variations that are actually defined in the normalizer or gate implementation, ensuring comprehensive coverage of all phrase expressions rather than just the current 2 examples. Apply the same expansion to the second similar test block at line 5259 to maintain consistency across all structural phrase rejection tests.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Nitpick comments:
In `@services/analysis-engine/tests/test_supply_chain_policy.py`:
- Around line 5178-5181: The test currently only validates 2 structural phrases
in the for loop at the phrase iteration block, but this creates a gap where
additional phrase variations supported by the normalizer/gate will not be
tested. Expand the tuple of phrases in the for loop to include all structural
phrase variations that are actually defined in the normalizer or gate
implementation, ensuring comprehensive coverage of all phrase expressions rather
than just the current 2 examples. Apply the same expansion to the second similar
test block at line 5259 to maintain consistency across all structural phrase
rejection tests.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: cf854d3f-0f26-4dfc-9089-2ae1dae67be0
📒 Files selected for processing (4)
.github/workflows/opencode-review.ymlscripts/ci/opencode_review_approve_gate.shscripts/ci/opencode_review_normalize_output.pyservices/analysis-engine/tests/test_supply_chain_policy.py
There was a problem hiding this comment.
Pull request overview
PR #350 updates workflows, scripts, and adds a new test file. No findings requiring changes were identified.
Findings
No blocking findings from OpenCode's independent review.
Verification
- Review source: independent OpenCode review of the current checkout, focused changed hunks, and current-head GitHub Check evidence.
- Structural exploration: completed before approval; if structural exploration, changed-file inspection, or evidence completeness is missing, OpenCode must not approve.
- Result: APPROVE
- Reason: Changes are well-contained and introduce no regressions or security issues.
Gate evidence
- Head SHA:
6d051863db6336637583b9739b26c6b58de6fe60 - Workflow run: 27747321522
- Workflow attempt: 1
|
Merge evidence for current head
The only remaining merge blocker is the known Scorecard code-scanning neutral result while |
Summary
Verification
Security Notes