fix(review): reach paid Zen before hour-class free models - #698
fix(review): reach paid Zen before hour-class free models#698seonghobae wants to merge 1 commit into
Conversation
|
Warning Review limit reached
Next review available in: 32 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?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 reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. 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, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (3)
Comment |
|
Exact production model-pool evidence gathered after this PR was opened:
Both logs explicitly show the configured 3,600-second runtime cap on each free candidate. This current head |
|
Additional bounded outcome audit: both cited production runs did eventually reach |
|
Operational credential check (names/metadata only; no secret values read):
Therefore this PR fixes reachability/order, but paid Terra cannot produce a review until an authorized operator provisions |
There was a problem hiding this comment.
Pull request overview
OpenCode could not approve from deterministic current-head evidence because GitHub Checks have failed.
Findings
1. HIGH Current-head GitHub Checks - Fix failed required checks before approval
- Problem: Failed same-head checks remain for
440b7b06feb8c12cfe6467d9dcb29fe55e83d064. - Root cause: The model-unavailable evidence fallback is allowed only when peer GitHub Checks are complete and clean.
- Fix: Read and fix the failed check logs below, then rerun the current-head checks.
- Regression test: Keep the model-unavailable fallback gated on an empty failed-check rollup.
Failed checks:
- Strix Security Scan/strix: FAILURE (https://github.com/ContextualWisdomLab/.github/actions/runs/30689704416/job/91342129078)
- Strix Security Scan/strix: failure (https://github.com/ContextualWisdomLab/.github/actions/runs/30689704416/job/91342129078)
Changed-File Evidence Map
flowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Workflow: opencode-review-dispatch.yml"]
S1 --> I1["GitHub Actions review job"]
I1 --> R1["Review risk: Workflow: opencode-review-dispatch.yml"]
R1 --> V1["actionlint plus required checks"]
Evidence --> S2["CI script: test_strix_quick_gate.sh"]
S2 --> I2["review and security gate shell path"]
I2 --> R2["Review risk: CI script: test_strix_quick_gate.sh"]
R2 --> V2["bash -n plus Strix self-test"]
Evidence --> S3["Test: test_opencode_agent_contract.py"]
S3 --> I3["regression suite"]
I3 --> R3["Review risk: Test: test_opencode_agent_contract.py"]
R3 --> V3["targeted test run"]
OpenCode Review Overview
Pull request overviewOpenCode could not approve from deterministic current-head evidence because GitHub Checks have failed. Findings1. HIGH Current-head GitHub Checks - Fix failed required checks before approval
Failed checks:
Changed-File Evidence Mapflowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Workflow: opencode-review-dispatch.yml"]
S1 --> I1["GitHub Actions review job"]
I1 --> R1["Review risk: Workflow: opencode-review-dispatch.yml"]
R1 --> V1["actionlint plus required checks"]
Evidence --> S2["CI script: test_strix_quick_gate.sh"]
S2 --> I2["review and security gate shell path"]
I2 --> R2["Review risk: CI script: test_strix_quick_gate.sh"]
R2 --> V2["bash -n plus Strix self-test"]
Evidence --> S3["Test: test_opencode_agent_contract.py"]
S3 --> I3["regression suite"]
I3 --> R3["Review risk: Test: test_opencode_agent_contract.py"]
R3 --> V3["targeted test run"]
|
|
@coderabbitai Please implement these fixes directly on the current PR branch and push a commit (do not open a stacked PR). Verify each item against the current head and keep the changes limited to the actionable Strix findings from job https://github.com/ContextualWisdomLab/.github/actions/runs/30689704416/job/91342129078:
After committing, request a fresh full review on the resulting current head. |
|
@jules Please apply the current-head Strix fixes directly to this PR branch and push a commit here. Keep the existing model-order change intact. Required changes:
|
|
Tip For best results, initiate chat on the files or code changes. 🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -euo pipefail
printf '%s\n' '== Current head =='
git rev-parse HEAD
git status --short
printf '%s\n' '== Candidate workflow and test files =='
fd -a -t f 'opencode-review-dispatch\.yml|test_.*opencode.*|.*strix.*|pyproject\.toml|ruff\.toml|actionlint' . \
-E .git -E node_modules -E dist -E build | sort
printf '%s\n' '== Workflow outline and relevant matches =='
ast-grep outline .github/workflows/opencode-review-dispatch.yml --items all 2>/dev/null || true
rg -n -C 8 \
'opencode-coverage-source\.tar|tarfile|filter="data"|review_head_guard_token|CONFIGURED_REVIEW_WRITE_TOKEN_SOURCE|OPENCODE_ZEN_API_KEY|opencode/gpt-5\.6-terra|opencode-free' \
.github/workflows/opencode-review-dispatch.yml
printf '%s\n' '== Relevant test and CI references =='
rg -n -C 5 \
'opencode-coverage-source|tarfile|review_head_guard_token|CONFIGURED_REVIEW_WRITE_TOKEN_SOURCE|gpt-5\.6-terra|opencode-free|test_strix_quick_gate|scripts/ci' \
-g '*.py' -g '*.sh' -g '*.yml' -g '*.yaml' .Length of output: 201299 🏁 Script executed: #!/bin/bash
set -euo pipefail
workflow=.github/workflows/opencode-review-dispatch.yml
strix_test=scripts/ci/test_strix_quick_gate.sh
show_context() {
local file="$1"
local pattern="$2"
local context="${3:-35}"
rg -n -F "$pattern" "$file" | while IFS=: read -r line _; do
local start=$(( line > context ? line - context : 1 ))
local end=$(( line + context ))
printf '\n== %s: lines %s-%s for %s ==\n' "$file" "$start" "$end" "$pattern"
nl -ba "$file" | sed -n "${start},${end}p"
done
}
printf '%s\n' '== Exact workflow archive and identity locations =='
rg -n -F \
-e 'opencode-coverage-source.tar' \
-e 'tarfile.open' \
-e 'filter="data"' \
-e 'review_head_guard_token' \
-e 'CONFIGURED_REVIEW_WRITE_TOKEN_SOURCE' \
-e 'review_write_token=' \
-e 'review_write_token_source=' \
"$workflow"
show_context "$workflow" 'opencode-coverage-source.tar' 55
show_context "$workflow" 'tarfile.open' 55
show_context "$workflow" 'review_head_guard_token' 45
show_context "$workflow" 'CONFIGURED_REVIEW_WRITE_TOKEN_SOURCE' 35
show_context "$workflow" 'review_write_token=' 30
printf '%s\n' '== Existing static assertions for the requested boundaries =='
rg -n -C 12 \
-e 'opencode-coverage-source.tar' \
-e 'review_head_guard_token' \
-e 'CONFIGURED_REVIEW_WRITE_TOKEN_SOURCE' \
-e 'review_write_token="${OPENCODE_APP_TOKEN:-}"' \
"$strix_test"
printf '%s\n' '== Focused Python test modules and configuration =='
fd -a -t f 'test_opencode_agent_contract\.py|conftest\.py|pyproject\.toml|pytest\.ini|tox\.ini|setup\.cfg' . \
-E .git -E node_modules -E dist -E build | sort
ast-grep outline tests/test_opencode_agent_contract.py --items all 2>/dev/null || true
sed -n '1,260p' tests/test_opencode_agent_contract.py 2>/dev/null || true
for file in pyproject.toml pytest.ini tox.ini setup.cfg; do
if [ -f "$file" ]; then
printf '\n== %s ==\n' "$file"
sed -n '1,240p' "$file"
fi
doneLength of output: 3621 🏁 Script executed: #!/bin/bash
set -euo pipefail
workflow=.github/workflows/opencode-review-dispatch.yml
strix_test=scripts/ci/test_strix_quick_gate.sh
show_range() {
local file="$1"
local start="$2"
local end="$3"
printf '\n== %s: Lines %s-%s ==\n' "$file" "$start" "$end"
awk -v start="$start" -v end="$end" 'NR >= start && NR <= end { printf "%6d\t%s\n", NR, $0 }' "$file"
}
printf '%s\n' '== Archive producer and artifact upload =='
show_range "$workflow" 270 375
printf '%s\n' '== Archive download and extractor =='
show_range "$workflow" 410 520
printf '%s\n' '== Review-write identity and head guard =='
show_range "$workflow" 4825 5025
printf '%s\n' '== Existing static contract assertions =='
rg -n -C 10 \
-e 'opencode-coverage-source.tar' \
-e 'review_head_guard_token' \
-e 'CONFIGURED_REVIEW_WRITE_TOKEN_SOURCE' \
-e 'review_write_token="${OPENCODE_APP_TOKEN:-}"' \
"$strix_test"
printf '%s\n' '== Focused Python test module =='
if [ -f tests/test_opencode_agent_contract.py ]; then
awk 'NR <= 360 { printf "%6d\t%s\n", NR, $0 }' tests/test_opencode_agent_contract.py
else
printf '%s\n' 'tests/test_opencode_agent_contract.py is absent'
fi
printf '%s\n' '== Python test and lint configuration =='
for file in pyproject.toml pytest.ini tox.ini setup.cfg; do
if [ -f "$file" ]; then
printf '\n== %s ==\n' "$file"
awk 'NR <= 260 { printf "%6d\t%s\n", NR, $0 }' "$file"
fi
done
printf '%s\n' '== Candidate Python test files =='
fd -a -t f -g 'test_*.py' tests . 2>/dev/null | sort | head -n 160Length of output: 29145 🏁 Script executed: #!/bin/bash
set -euo pipefail
workflow=.github/workflows/opencode-review-dispatch.yml
strix_test=scripts/ci/test_strix_quick_gate.sh
show_matches() {
local file="$1"
local literal="$2"
local context="$3"
local lines
lines="$(rg -n -F "$literal" "$file" || true)"
if [ -z "$lines" ]; then
printf '\n== No matches in %s for %s ==\n' "$file" "$literal"
return
fi
while IFS=: read -r line _; do
start=$(( line > context ? line - context : 1 ))
end=$(( line + context ))
printf '\n== %s: Lines %s-%s for %s ==\n' "$file" "$start" "$end" "$literal"
awk -v start="$start" -v end="$end" 'NR >= start && NR <= end { printf "%6d\t%s\n", NR, $0 }' "$file"
done <<<"$lines"
}
show_matches "$strix_test" 'opencode-coverage-source.tar' 12
show_matches "$strix_test" 'review_head_guard_token' 12
show_matches "$strix_test" 'CONFIGURED_REVIEW_WRITE_TOKEN_SOURCE' 12
show_matches "$strix_test" 'review_write_token="${OPENCODE_APP_TOKEN:-}"' 12
printf '%s\n' '== Focused Python contract test outline =='
if [ -f tests/test_opencode_agent_contract.py ]; then
ast-grep outline tests/test_opencode_agent_contract.py --items all
awk 'NR <= 520 { printf "%6d\t%s\n", NR, $0 }' tests/test_opencode_agent_contract.py
fi
printf '%s\n' '== Test configuration files =='
for file in pyproject.toml pytest.ini tox.ini setup.cfg; do
if [ -f "$file" ]; then
printf '\n== %s ==\n' "$file"
awk 'NR <= 300 { printf "%6d\t%s\n", NR, $0 }' "$file"
fi
done
printf '%s\n' '== Existing validation command references =='
rg -n -C 3 -F 'pytest' README.md .github scripts/ci 2>/dev/null | head -n 300Length of output: 72791
Failed to handle agent chat message. Please try again. You are interacting with an AI system. |
There was a problem hiding this comment.
Pull request overview
OpenCode could not approve from deterministic current-head evidence because GitHub Checks have failed.
Findings
1. HIGH Current-head GitHub Checks - Fix failed required checks before approval
- Problem: Failed same-head checks remain for
440b7b06feb8c12cfe6467d9dcb29fe55e83d064. - Root cause: The model-unavailable evidence fallback is allowed only when peer GitHub Checks are complete and clean.
- Fix: Read and fix the failed check logs below, then rerun the current-head checks.
- Regression test: Keep the model-unavailable fallback gated on an empty failed-check rollup.
Failed checks:
- Strix Security Scan/strix: FAILURE (https://github.com/ContextualWisdomLab/.github/actions/runs/30689704416/job/91342129078)
- Strix Security Scan/strix: failure (https://github.com/ContextualWisdomLab/.github/actions/runs/30689704416/job/91342129078)
Changed-File Evidence Map
flowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Workflow: opencode-review-dispatch.yml"]
S1 --> I1["GitHub Actions review job"]
I1 --> R1["Review risk: Workflow: opencode-review-dispatch.yml"]
R1 --> V1["actionlint plus required checks"]
Evidence --> S2["CI script: test_strix_quick_gate.sh"]
S2 --> I2["review and security gate shell path"]
I2 --> R2["Review risk: CI script: test_strix_quick_gate.sh"]
R2 --> V2["bash -n plus Strix self-test"]
Evidence --> S3["Test: test_opencode_agent_contract.py"]
S3 --> I3["regression suite"]
I3 --> R3["Review risk: Test: test_opencode_agent_contract.py"]
R3 --> V3["targeted test run"]
|
@coderabbitai review |
✅ Action performedReview finished.
|
|
Closing as operationally incomplete, tracked by #707. The branch only moves |
Pull request was closed
Production defect
The current public model order exhausts NVIDIA NIM candidates and then enters the hour-class
opencode-freepool before it can reach paid Zen (opencode/gpt-5.6-terra).Live evidence on exact heads:
opencode-reviewfor about 54 minutes and was canceled only when the PR head changed;opencode-reviewsince 06:21:57Z;opencode-reviewsince 06:42:31Z.The workflow allows up to 3,600 seconds for the free pool and has a bounded overall review budget, so placing paid Zen after that pool can make the explicitly configured paid fallback unreachable in practice.
Fix
opencode/gpt-5.6-terraimmediately after them and before allopencode-freecandidates;Operational prerequisite
The paid Zen provider reads
secrets.OPENCODE_ZEN_API_KEY. Current secret metadata and run 30687537798 show that this credential is not configured, so Terra presently fails with a provider error. This PR fixes ordering/reachability; it does not claim the paid provider is operational until an authorized operator provisions that secret.Current-head validation
Head:
440b7b06feb8c12cfe6467d9dcb29fe55e83d064python3 -m pytest -q tests/test_opencode_agent_contract.py— 40 passedactionlint -shellcheck=— passedbash -n scripts/ci/test_strix_quick_gate.sh— passedgit diff --check— passedSTRIX_TEST_PROCESS_TIMEOUT_SECONDS=2 STRIX_TEST_FAKE_SLEEP_SECONDS=3 bash scripts/ci/test_strix_quick_gate.sh— passed (test_strix_quick_gate: PASS)This is intentionally limited to candidate ordering and the assertions that govern it.