Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .github/workflows/opencode-review-dispatch.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4206,9 +4206,9 @@ jobs:
NPM_CONFIG_IGNORE_SCRIPTS: "true"
NO_COLOR: "1"
# High-sensitivity review candidates only. Public repositories first
# try NVIDIA NIM when its scoped secret is available, then OpenCode
# Zen's anonymous active, zero-cost models, followed by the existing
# provider fallbacks. Trial/free-period data may be logged, retained,
# try NVIDIA NIM when its scoped secret is available, then paid Zen
# Terra before hour-class anonymous free models, followed by the
# existing provider fallbacks. Trial/free-period data may be logged, retained,
# or used for product/model improvement, so private repositories
# include neither NIM nor anonymous free candidates and start at the
# existing keyed fallback list: OpenCode Zen GPT-5.6 Terra, DeepSeek
Expand All @@ -4222,7 +4222,7 @@ jobs:
# cost-efficient tier, cheaper than the legacy gpt-5 it replaced
# ($1/$6 vs $1.25/$10 per 1M tokens) so the org OpenAI budget
# stretches further between top-ups.
OPENCODE_MODEL_CANDIDATES: "${{ needs.validate-pr-metadata.outputs.is_private == 'false' && 'nvidia-nim/nvidia/llama-3.3-nemotron-super-49b-v1.5 nvidia-nim/nvidia/llama-3.1-nemotron-ultra-253b-v1 nvidia-nim/nvidia/nemotron-3-super-120b-a12b nvidia-nim/nvidia/nemotron-3-ultra-550b-a55b nvidia-nim/meta/llama-3.3-70b-instruct nvidia-nim/deepseek-ai/deepseek-v4-pro nvidia-nim/mistralai/codestral-22b-instruct-v0.1 opencode-free/nemotron-3-ultra-free opencode-free/deepseek-v4-flash-free opencode-free/north-mini-code-free opencode-free/laguna-s-2.1-free opencode-free/ling-3.0-flash-free opencode-free/big-pickle opencode-free/mimo-v2.5-free ' || '' }}opencode/gpt-5.6-terra github-models/deepseek/deepseek-v3-0324 openai/gpt-5.6-luna openrouter/deepseek/deepseek-v3.2 openrouter/qwen/qwen3-coder github-models/openai/gpt-4.1 github-models/openai/gpt-5 github-models/openai/gpt-5-chat github-models/openai/o3 github-models/deepseek/deepseek-r1-0528 github-models/deepseek/deepseek-r1"
OPENCODE_MODEL_CANDIDATES: "${{ needs.validate-pr-metadata.outputs.is_private == 'false' && 'nvidia-nim/nvidia/llama-3.3-nemotron-super-49b-v1.5 nvidia-nim/nvidia/llama-3.1-nemotron-ultra-253b-v1 nvidia-nim/nvidia/nemotron-3-super-120b-a12b nvidia-nim/nvidia/nemotron-3-ultra-550b-a55b nvidia-nim/meta/llama-3.3-70b-instruct nvidia-nim/deepseek-ai/deepseek-v4-pro nvidia-nim/mistralai/codestral-22b-instruct-v0.1 opencode/gpt-5.6-terra opencode-free/nemotron-3-ultra-free opencode-free/deepseek-v4-flash-free opencode-free/north-mini-code-free opencode-free/laguna-s-2.1-free opencode-free/ling-3.0-flash-free opencode-free/big-pickle opencode-free/mimo-v2.5-free ' || 'opencode/gpt-5.6-terra ' }}github-models/deepseek/deepseek-v3-0324 openai/gpt-5.6-luna openrouter/deepseek/deepseek-v3.2 openrouter/qwen/qwen3-coder github-models/openai/gpt-4.1 github-models/openai/gpt-5 github-models/openai/gpt-5-chat github-models/openai/o3 github-models/deepseek/deepseek-r1-0528 github-models/deepseek/deepseek-r1"
# One attempt per model, then fall through to the next model. Retrying
# the SAME model 5x let a rate-limited/hung leader consume the whole
# step, so the pool never reached a healthy fallback model.
Expand Down
10 changes: 5 additions & 5 deletions scripts/ci/test_strix_quick_gate.sh
Original file line number Diff line number Diff line change
Expand Up @@ -752,8 +752,8 @@ assert_file_contains "$REPO_ROOT/scripts/ci/run_opencode_review_model_pool.sh" '
assert_file_contains "$workflow_file" 'OPENCODE_MODEL_ATTEMPTS: "1"' "opencode fallback tries the catalog promptly instead of spending the entire review on one model"
assert_file_contains "$workflow_file" "Run OpenCode PR Review model pool" "opencode review includes a broad catalog fallback pool"
assert_file_not_contains "$workflow_file" "steps.opencode_review_model_pool.outcome == 'success'" "opencode approval gate still runs after model pool failure to publish a reason"
assert_file_contains "$workflow_file" "opencode-free/north-mini-code-free" "opencode review starts public repository reviews with a free coding model"
assert_file_contains "$workflow_file" "opencode/gpt-5.6-terra github-models/deepseek/deepseek-v3-0324 openai/gpt-5.6-luna openrouter/deepseek/deepseek-v3.2 openrouter/qwen/qwen3-coder github-models/openai/gpt-4.1 github-models/openai/gpt-5" "opencode review retains paid Zen and DeepSeek V3 before full-size GPT fallbacks"
assert_file_contains "$workflow_file" "opencode-free/north-mini-code-free" "opencode review retains a public free coding fallback"
assert_file_contains "$workflow_file" "opencode/gpt-5.6-terra opencode-free/nemotron-3-ultra-free" "opencode review reaches paid Zen before hour-class free fallbacks"
assert_file_contains "$workflow_file" "The publish gate re-runs source-backed validation against PR-head data" "opencode review publish gate validates model output against the PR-head worktree"
assert_file_contains "$workflow_file" '"openai/o3"' "opencode config declares OpenAI o3 fallback"
assert_file_contains "$workflow_file" '"openai/o4-mini"' "opencode config declares OpenAI o4-mini fallback"
Expand Down Expand Up @@ -904,7 +904,7 @@ assert_file_contains "$REPO_ROOT/scripts/ci/run_opencode_review_model_pool.sh" '
assert_file_contains "$workflow_file" 'OPENCODE_RUN_TIMEOUT_SECONDS: "5400"' "opencode catalog fallback preserves legitimate full-hour provider sessions"
assert_file_contains "$REPO_ROOT/scripts/ci/run_opencode_review_model_pool.sh" "OpenCode %s attempt %s/%s failed" "opencode catalog fallback records per-model retry failures"
assert_file_contains "$REPO_ROOT/scripts/ci/run_opencode_review_model_pool.sh" "exponential backoff" "opencode model retry paths use exponential backoff instead of fixed sleeps"
assert_file_contains "$workflow_file" "opencode/gpt-5.6-terra github-models/deepseek/deepseek-v3-0324 openai/gpt-5.6-luna openrouter/deepseek/deepseek-v3.2 openrouter/qwen/qwen3-coder github-models/openai/gpt-4.1 github-models/openai/gpt-5" "opencode review tries paid Zen and DeepSeek V3 before OpenAI fallbacks"
assert_file_contains "$workflow_file" "opencode/gpt-5.6-terra opencode-free/nemotron-3-ultra-free" "opencode review tries paid Zen before hour-class free fallbacks"
assert_file_contains "$workflow_file" "github-models/deepseek/deepseek-r1-0528 github-models/deepseek/deepseek-r1" "opencode review keeps DeepSeek reasoning fallback coverage after OpenAI candidates"
assert_file_contains "$workflow_file" "coverage-source-tree:" "opencode workflow materializes coverage source before running PR-head tests"
assert_file_contains "$workflow_file" "coverage-evidence:" "opencode workflow measures coverage before review"
Expand Down Expand Up @@ -1249,8 +1249,8 @@ assert_file_contains "$REPO_ROOT/scripts/ci/run_opencode_review_model_pool.sh" '
assert_file_contains "$workflow_file" 'GH_TOKEN: ${{ secrets.OPENCODE_APPROVE_TOKEN || steps.review_read_app_token.outputs.token || github.token }}' "opencode manual dispatch uses the cross-repo approval token for target PR evidence lookups with app-token fallback"
assert_file_contains "$workflow_file" 'repos/${GH_REPOSITORY}' "opencode review workflow uses env-backed repository context in shell commands"
assert_file_contains "$workflow_file" "Run OpenCode PR Review model pool" "opencode review starts the central model pool"
assert_file_contains "$workflow_file" "nvidia-nim/nvidia/llama-3.3-nemotron-super-49b-v1.5 nvidia-nim/nvidia/llama-3.1-nemotron-ultra-253b-v1 nvidia-nim/nvidia/nemotron-3-super-120b-a12b nvidia-nim/nvidia/nemotron-3-ultra-550b-a55b nvidia-nim/meta/llama-3.3-70b-instruct nvidia-nim/deepseek-ai/deepseek-v4-pro nvidia-nim/mistralai/codestral-22b-instruct-v0.1 opencode-free/nemotron-3-ultra-free" "opencode review keeps all NVIDIA NIM candidates inside the public-repository pool"
assert_file_contains "$workflow_file" "opencode/gpt-5.6-terra github-models/deepseek/deepseek-v3-0324 openai/gpt-5.6-luna openrouter/deepseek/deepseek-v3.2 openrouter/qwen/qwen3-coder github-models/openai/gpt-4.1 github-models/openai/gpt-5" "opencode review keeps paid Zen, DeepSeek V3, and full-size GPT fallbacks"
assert_file_contains "$workflow_file" "nvidia-nim/nvidia/llama-3.3-nemotron-super-49b-v1.5 nvidia-nim/nvidia/llama-3.1-nemotron-ultra-253b-v1 nvidia-nim/nvidia/nemotron-3-super-120b-a12b nvidia-nim/nvidia/nemotron-3-ultra-550b-a55b nvidia-nim/meta/llama-3.3-70b-instruct nvidia-nim/deepseek-ai/deepseek-v4-pro nvidia-nim/mistralai/codestral-22b-instruct-v0.1 opencode/gpt-5.6-terra opencode-free/nemotron-3-ultra-free" "opencode review keeps all NVIDIA NIM candidates before the paid Zen fallback"
assert_file_contains "$workflow_file" "}}github-models/deepseek/deepseek-v3-0324 openai/gpt-5.6-luna openrouter/deepseek/deepseek-v3.2 openrouter/qwen/qwen3-coder github-models/openai/gpt-4.1 github-models/openai/gpt-5" "opencode review keeps DeepSeek V3 and full-size GPT fallbacks after the visibility-specific pool"
assert_file_contains "$workflow_file" "github-models/deepseek/deepseek-r1-0528" "opencode review keeps a reachable DeepSeek R1 reasoning fallback model"
assert_file_contains "$workflow_file" "github-models/deepseek/deepseek-v3-0324" "opencode review has a reachable DeepSeek V3 fallback model"
assert_file_not_contains "$workflow_file" "secrets.NVIDIA_NIM_API_KEY || secrets.NVIDIA_API_KEY" "opencode review never falls back from the scoped NVIDIA NIM secret to the legacy provider secret"
Expand Down
12 changes: 7 additions & 5 deletions tests/test_opencode_agent_contract.py
Original file line number Diff line number Diff line change
Expand Up @@ -99,13 +99,14 @@ def test_opencode_model_pool_sets_high_effort_for_capable_candidates():
"nvidia-nim/meta/llama-3.3-70b-instruct "
"nvidia-nim/deepseek-ai/deepseek-v4-pro "
"nvidia-nim/mistralai/codestral-22b-instruct-v0.1 "
"opencode/gpt-5.6-terra "
"opencode-free/nemotron-3-ultra-free "
"opencode-free/deepseek-v4-flash-free "
"opencode-free/north-mini-code-free "
"opencode-free/laguna-s-2.1-free "
"opencode-free/ling-3.0-flash-free "
"opencode-free/big-pickle "
"opencode-free/mimo-v2.5-free ' || '' }}"
"opencode-free/mimo-v2.5-free ' || 'opencode/gpt-5.6-terra ' }}"
)
candidates_text = candidates_match.group(1)
assert candidates_text.startswith(conditional_public_candidate)
Expand All @@ -117,6 +118,7 @@ def test_opencode_model_pool_sets_high_effort_for_capable_candidates():
"nvidia-nim/meta/llama-3.3-70b-instruct",
"nvidia-nim/deepseek-ai/deepseek-v4-pro",
"nvidia-nim/mistralai/codestral-22b-instruct-v0.1",
"opencode/gpt-5.6-terra",
"opencode-free/nemotron-3-ultra-free",
"opencode-free/deepseek-v4-flash-free",
"opencode-free/north-mini-code-free",
Expand Down Expand Up @@ -155,14 +157,14 @@ def test_opencode_model_pool_sets_high_effort_for_capable_candidates():
["nvidia-nim", "meta/llama-3.3-70b-instruct"],
["nvidia-nim", "deepseek-ai/deepseek-v4-pro"],
["nvidia-nim", "mistralai/codestral-22b-instruct-v0.1"],
["opencode", "gpt-5.6-terra"],
["opencode-free", "nemotron-3-ultra-free"],
["opencode-free", "deepseek-v4-flash-free"],
["opencode-free", "north-mini-code-free"],
["opencode-free", "laguna-s-2.1-free"],
["opencode-free", "ling-3.0-flash-free"],
["opencode-free", "big-pickle"],
["opencode-free", "mimo-v2.5-free"],
["opencode", "gpt-5.6-terra"],
["github-models", "deepseek/deepseek-v3-0324"],
["openai", "gpt-5.6-luna"],
["openrouter", "deepseek/deepseek-v3.2"],
Expand Down Expand Up @@ -1513,17 +1515,17 @@ def test_workflow_provisions_sandbox_tool_and_reviewer_agent():
"nvidia-nim/meta/llama-3.3-70b-instruct "
"nvidia-nim/deepseek-ai/deepseek-v4-pro "
"nvidia-nim/mistralai/codestral-22b-instruct-v0.1 "
"opencode/gpt-5.6-terra "
"opencode-free/nemotron-3-ultra-free "
"opencode-free/deepseek-v4-flash-free "
"opencode-free/north-mini-code-free "
"opencode-free/laguna-s-2.1-free "
"opencode-free/ling-3.0-flash-free "
"opencode-free/big-pickle "
"opencode-free/mimo-v2.5-free ' || ''"
"opencode-free/mimo-v2.5-free ' || 'opencode/gpt-5.6-terra '"
) in workflow
assert (
"opencode/gpt-5.6-terra "
"github-models/deepseek/deepseek-v3-0324 "
"}}github-models/deepseek/deepseek-v3-0324 "
"openai/gpt-5.6-luna "
"openrouter/deepseek/deepseek-v3.2 "
"openrouter/qwen/qwen3-coder "
Expand Down
Loading