Skip to content

fix(opencode): extend model pool retry budget - #525

Merged
seonghobae merged 3 commits into
mainfrom
fix/opencode-review-model-pool-budget
Jul 13, 2026
Merged

fix(opencode): extend model pool retry budget#525
seonghobae merged 3 commits into
mainfrom
fix/opencode-review-model-pool-budget

Conversation

@seonghobae

Copy link
Copy Markdown
Contributor

요약

  • OpenCode required review의 모델 풀 후보 timeout을 600초, 전체 retry budget을 3600초로 올립니다.
  • dynamic cadence의 small/medium/large/unknown 경로와 중앙 self-repair fallback 경로가 모두 같은 600/3600 계약을 쓰도록 맞춥니다.
  • 내부 timeout wrapper와 job timeout도 3600초 budget을 실제로 사용할 수 있게 65분/90분으로 확장합니다.

발견 경위

  • ContextualWisdomLab/naruon PR #965 current head에서 coverage, Docker, CodeQL, Strix 등은 통과했지만 OpenCode가 OPENCODE_MODEL_POOL_OUTCOME=exhausted로 실패했습니다.
  • 실패 run의 publish 단계 env는 OPENCODE_RUN_TIMEOUT_SECONDS=120였고, 모델 풀이 실제 리뷰 결과를 내기 전에 exhausted 상태가 되어 required check가 실패했습니다.
  • 사용자가 지정한 후보당 600초 / 전체 retry budget 3600초 계약을 중앙 workflow와 runner 기본값에 반영했습니다.

검증

  • bash -n scripts/ci/run_opencode_review_model_pool.sh
  • bash -n scripts/ci/test_strix_quick_gate.sh
  • PATH=/c/tmp/tools:$PATH py -m pytest tests/test_opencode_model_pool_runner.py -q → 10 passed, 1 skipped
  • py -m pytest tests/test_opencode_agent_contract.py -q → 25 passed, 2 skipped
  • git diff --check HEAD~1..HEAD

@opencode-agent

opencode-agent Bot commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

OpenCode Review Overview

  • Head SHA: 23b487f58be21cf3f6813507e326cbefb61af21c
  • Workflow run: 29237963920
  • Workflow attempt: 1
  • Gate result: APPROVE (exit 0)

Changed-File Evidence Map

flowchart LR
  PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
  Evidence --> S1["Workflow (2 files)"]
  S1 --> I1["GitHub Actions review job"]
  I1 --> R1["Review risk: Workflow (2 files)"]
  R1 --> V1["actionlint plus required checks"]
  Evidence --> S2["CI script (3 files)"]
  S2 --> I2["review and security gate shell path"]
  I2 --> R2["Review risk: CI script (3 files)"]
  R2 --> V2["bash -n plus Strix self-test"]
  Evidence --> S3["Test (2 files)"]
  S3 --> I3["regression suite"]
  I3 --> R3["Review risk: Test (2 files)"]
  R3 --> V3["targeted test run"]
Loading

@opencode-agent opencode-agent Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

OpenCode reviewed the current-head bounded evidence and found source-backed failed-check findings that must be addressed before merge.

  • Result: REQUEST_CHANGES
  • Reason: failed current-head checks were mapped to line-specific findings below for 3247dc637bf4284102afef68143331c8eaba5502.
  • Head SHA: 3247dc637bf4284102afef68143331c8eaba5502
  • Workflow run: 29237067566
  • Workflow attempt: 1
Failed checks

Findings

1. HIGH .github/workflows/strix.yml:629 - Strix provider failure blocked current-head security evidence

  • Problem: Strix failed before producing vulnerability reports. The failed log reported LLM CONNECTION FAILED, RateLimitError or Too many requests for the primary model, provider/budget output for fallback models, and Configured model and fallback models were unavailable.
  • Root cause: The configured GitHub Models primary/fallback provider capacity or provider route failed for this run; no Strix Vulnerability Report window was produced, so there is no application source line to patch from this evidence.
  • Fix: Do not approve from this failed scan. Re-run Strix after GitHub Models capacity recovers or run an explicitly configured manual provider evidence scan with valid credentials; keep the configured fallback line at .github/workflows/strix.yml:629 aligned with the approved model list.
  • Suggested edit: keep .github/workflows/strix.yml:629 on the approved GitHub Models fallback list and rerun the current-head Strix check; there is no application source patch until Strix emits a vulnerability Code Location.
  • Regression test: Keep the failed-check evidence collector preserving RateLimitError, budget-limit, provider infrastructure, and unavailable-model lines so OpenCode reviews can distinguish external provider blockers from code vulnerabilities.
Failed check evidence for line-specific fixes

Failed GitHub Check Evidence

  • PR: #525
  • Head SHA: 3247dc637bf4284102afef68143331c8eaba5502
  • Repository: ContextualWisdomLab/.github

Line-specific repair contract

  • Treat the check logs and annotations below as diagnostic evidence, not as a complete review.

  • For each actionable failed check, inspect the local source or diff and identify the exact file line that must change.

  • OpenCode REQUEST_CHANGES findings must include path, line, root_cause, fix_direction, regression_test_direction, and suggested_diff.

  • Do not request changes with only a GitHub Actions URL or a generic check name.

  • When Strix logs contain multiple Vulnerability Report or Model ... Vulnerabilities ... sections, include every model-reported vulnerability in the review evidence and findings, including model name, title, severity, endpoint, and Code Locations/path:line evidence when present.

  • Create one OpenCode finding per Strix model vulnerability report; do not satisfy two model reports with one combined finding, even when titles or locations match.

Failed check: Strix Security Scan/strix

Failed job steps

  • step 21: Run Strix (quick) (failure)

Check annotations

  • .github:282-282 [failure] Process completed with exit code 1.

Failed log signal summary

strix	Run Strix (quick)	2026-07-13T08:54:49.5853531Z ^[[36;1m# LLM-backend-unavailable outcomes (GitHub Models "Too many requests"^[[0m
strix	Run Strix (quick)	2026-07-13T08:54:49.5863413Z ^[[36;1mbackend_unavailable_signal='RateLimitError|Too many requests\. For more on scraping GitHub|"status"[[:space:]]*:[[:space:]]*"RESOURCE_EXHAUSTED"|tokens_limit_reached|Request body too large|Max size:[[:space:]]*[0-9]+[[:space:]]+tokens|Error code:[[:space:]]*413|LLM CONNECTION FAILED|Could not establish connection to the language model|LLM warm-up failed|Configured model and fallback models were unavailable|Configured Vertex model and fallback models were unavailable|emitted provider infrastructure or failure-signal output|before provider infrastructure failure'^[[0m
strix	Run Strix (quick)	2026-07-13T08:54:49.5872623Z ^[[36;1m  echo "::warning title=Strix backend unavailable::Strix could not complete because its LLM backend was unavailable (rate limit / token cap / connection or warm-up failure) before producing a vulnerability report. Treating as a neutral skip so an infrastructure outage does not block merges; genuine findings still fail the check. See the strix-reports artifact and the run log."^[[0m
strix	Run Strix (quick)	2026-07-13T08:59:00.3772257Z Strix report artifacts emitted warning/fatal/denied/timeout output; failing closed.
strix	Run Strix (quick)	2026-07-13T08:59:00.4336758Z Strix scan failed after provider infrastructure or failure-signal output; failing closed.
strix	Run Strix (quick)	2026-07-13T08:59:00.4506379Z ##[error]Process completed with exit code 1.

Strix model attempt and finding summary

strix	Run Strix (quick)	2026-07-13T08:54:49.5853531Z ^[[36;1m# LLM-backend-unavailable outcomes (GitHub Models "Too many requests"^[[0m
strix	Run Strix (quick)	2026-07-13T08:54:49.5863413Z ^[[36;1mbackend_unavailable_signal='RateLimitError|Too many requests\. For more on scraping GitHub|"status"[[:space:]]*:[[:space:]]*"RESOURCE_EXHAUSTED"|tokens_limit_reached|Request body too large|Max size:[[:space:]]*[0-9]+[[:space:]]+tokens|Error code:[[:space:]]*413|LLM CONNECTION FAILED|Could not establish connection to the language model|LLM warm-up failed|Configured model and fallback models were unavailable|Configured Vertex model and fallback models were unavailable|emitted provider infrastructure or failure-signal output|before provider infrastructure failure'^[[0m
strix	Run Strix (quick)	2026-07-13T08:59:00.3325428Z │  Model openai/gpt-5.6-luna                                                   │
strix	Run Strix (quick)	2026-07-13T08:59:00.3326222Z │  Vulnerabilities 0                                                           │
strix	Run Strix (quick)	2026-07-13T08:59:00.3775566Z Strix run failed for model 'openai_direct/gpt-5.6-luna' after 249s (exit code 1).

No Strix vulnerability report windows were detected in the failed log.

Failed log excerpt

strix	Run Strix (quick)	2026-07-13T08:54:49.5849363Z ##[group]Run budget_suffix="TIME""OUT"
strix	Run Strix (quick)	2026-07-13T08:54:49.5850047Z ^[[36;1mbudget_suffix="TIME""OUT"^[[0m
strix	Run Strix (quick)	2026-07-13T08:54:49.5850333Z ^[[36;1mprocess_budget_seconds="600"^[[0m
strix	Run Strix (quick)	2026-07-13T08:54:49.5850629Z ^[[36;1mexport "LLM_${budget_suffix}=120"^[[0m
strix	Run Strix (quick)	2026-07-13T08:54:49.5850986Z ^[[36;1mexport "STRIX_MEMORY_COMPRESSOR_${budget_suffix}=10"^[[0m
strix	Run Strix (quick)	2026-07-13T08:54:49.5851470Z ^[[36;1mexport "STRIX_PROCESS_${budget_suffix}_SECONDS=$process_budget_seconds"^[[0m
strix	Run Strix (quick)	2026-07-13T08:54:49.5851928Z ^[[36;1mexport "STRIX_TOTAL_${budget_suffix}_SECONDS=720"^[[0m
strix	Run Strix (quick)	2026-07-13T08:54:49.5852250Z ^[[36;1m^[[0m
strix	Run Strix (quick)	2026-07-13T08:54:49.5852568Z ^[[36;1m# Capture the gate exit code plus its console output. The gate returns^[[0m
strix	Run Strix (quick)	2026-07-13T08:54:49.5853029Z ^[[36;1m# exit 1 both for genuine blocking vulnerabilities AND for^[[0m
strix	Run Strix (quick)	2026-07-13T08:54:49.5853531Z ^[[36;1m# LLM-backend-unavailable outcomes (GitHub Models "Too many requests"^[[0m
strix	Run Strix (quick)	2026-07-13T08:54:49.5854021Z ^[[36;1m# rate limits, 413 tokens_limit_reached token-cap, connection/warm-up^[[0m
strix	Run Strix (quick)	2026-07-13T08:54:49.5854511Z ^[[36;1m# failures) that could not complete a scan. A backend outage is CI^[[0m
strix	Run Strix (quick)	2026-07-13T08:54:49.5854983Z ^[[36;1m# infrastructure noise, not a security finding, so it must not fail^[[0m
strix	Run Strix (quick)	2026-07-13T08:54:49.5855384Z ^[[36;1m# the required check and block merges.^[[0m
strix	Run Strix (quick)	2026-07-13T08:54:49.5855752Z ^[[36;1mstrix_run_log="$RUNNER_TEMP/strix_gate_console.log"^[[0m
strix	Run Strix (quick)	2026-07-13T08:54:49.5856085Z ^[[36;1mstrix_rc=0^[[0m
strix	Run Strix (quick)	2026-07-13T08:54:49.5856306Z ^[[36;1mset +e^[[0m
strix	Run Strix (quick)	2026-07-13T08:54:49.5856588Z ^[[36;1mbash "$TRUSTED_STRIX_GATE" 2>&1 | tee "$strix_run_log"^[[0m
strix	Run Strix (quick)	2026-07-13T08:54:49.5856934Z ^[[36;1mstrix_rc="${PIPESTATUS[0]}"^[[0m
strix	Run Strix (quick)	2026-07-13T08:54:49.5857204Z ^[[36;1mset -e^[[0m
strix	Run Strix (quick)	2026-07-13T08:54:49.5857405Z ^[[36;1m^[[0m
strix	Run Strix (quick)	2026-07-13T08:54:49.5857635Z ^[[36;1mif [ "$strix_rc" -eq 0 ]; then^[[0m
strix	Run Strix (quick)	2026-07-13T08:54:49.5858144Z ^[[36;1m  exit 0^[[0m
strix	Run Strix (quick)	2026-07-13T08:54:49.5858355Z ^[[36;1mfi^[[0m
strix	Run Strix (quick)	2026-07-13T08:54:49.5858559Z ^[[36;1m^[[0m
strix	Run Strix (quick)	2026-07-13T08:54:49.5858870Z ^[[36;1m# Preserve configuration failures (exit 2) and any unexpected exit^[[0m
strix	Run Strix (quick)	2026-07-13T08:54:49.5859353Z ^[[36;1m# code as hard failures — only the scan-failure code (1) can be an^[[0m
strix	Run Strix (quick)	2026-07-13T08:54:49.5859996Z ^[[36;1m# infrastructure/backend-unavailability outcome.^[[0m
strix	Run Strix (quick)	2026-07-13T08:54:49.5860345Z ^[[36;1mif [ "$strix_rc" -ne 1 ]; then^[[0m
strix	Run Strix (quick)	2026-07-13T08:54:49.5860630Z ^[[36;1m  exit "$strix_rc"^[[0m
strix	Run Strix (quick)	2026-07-13T08:54:49.5860869Z ^[[36;1mfi^[[0m
strix	Run Strix (quick)	2026-07-13T08:54:49.5861059Z ^[[36;1m^[[0m
strix	Run Strix (quick)	2026-07-13T08:54:49.5861369Z ^[[36;1m# Recognized signals that the LLM backend was unavailable / starved.^[[0m
strix	Run Strix (quick)	2026-07-13T08:54:49.5863413Z ^[[36;1mbackend_unavailable_signal='RateLimitError|Too many requests\. For more on scraping GitHub|"status"[[:space:]]*:[[:space:]]*"RESOURCE_EXHAUSTED"|tokens_limit_reached|Request body too large|Max size:[[:space:]]*[0-9]+[[:space:]]+tokens|Error code:[[:space:]]*413|LLM CONNECTION FAILED|Could not establish connection to the language model|LLM warm-up failed|Configured model and fallback models were unavailable|Configured Vertex model and fallback models were unavailable|emitted provider infrastructure or failure-signal output|before provider infrastructure failure'^[[0m
strix	Run Strix (quick)	2026-07-13T08:54:49.5865504Z ^[[36;1m# Any evidence that a vulnerability was actually reported. Its presence^[[0m
strix	Run Strix (quick)	2026-07-13T08:54:49.5866017Z ^[[36;1m# forces a hard failure so real findings are NEVER downgraded. Keep the^[[0m
strix	Run Strix (quick)	2026-07-13T08:54:49.5866521Z ^[[36;1m# severity branch anchored away from identifiers so environment lines^[[0m
strix	Run Strix (quick)	2026-07-13T08:54:49.5866985Z ^[[36;1m# such as STRIX_FAIL_ON_MIN_SEVERITY do not look like findings.^[[0m
strix	Run Strix (quick)	2026-07-13T08:54:49.5867562Z ^[[36;1mreported_vulnerability_signal='Vulnerabilities[[:space:]]+[1-9]|(^|[^A-Za-z0-9_])severity[[:space:]]*:'^[[0m
strix	Run Strix (quick)	2026-07-13T08:54:49.5868057Z ^[[36;1m^[[0m
strix	Run Strix (quick)	2026-07-13T08:54:49.5868381Z ^[[36;1m# Neutral skip only when ALL hold: a backend-unavailability signal is^[[0m
strix	Run Strix (quick)	2026-07-13T08:54:49.5868879Z ^[[36;1m# present and no vulnerability was reported anywhere. This preserves^[[0m
strix	Run Strix (quick)	2026-07-13T08:54:49.5869380Z ^[[36;1m# real security gating while keeping uncontrollable provider outages^[[0m
strix	Run Strix (quick)	2026-07-13T08:54:49.5870273Z ^[[36;1m# from blocking current-head merge progress.^[[0m
strix	Run Strix (quick)	2026-07-13T08:54:49.5870683Z ^[[36;1mif grep -Eiq "$backend_unavailable_signal" "$strix_run_log" \^[[0m
strix	Run Strix (quick)	2026-07-13T08:54:49.5871168Z ^[[36;1m  && ! grep -Eiq "$reported_vulnerability_signal" "$strix_run_log"; then^[[0m
strix	Run Strix (quick)	2026-07-13T08:54:49.5872623Z ^[[36;1m  echo "::warning title=Strix backend unavailable::Strix could not complete because its LLM backend was unavailable (rate limit / token cap / connection or warm-up failure) before producing a vulnerability report. Treating as a neutral skip so an infrastructure outage does not block merges; genuine findings still fail the check. See the strix-reports artifact and the run log."^[[0m
strix	Run Strix (quick)	2026-07-13T08:54:49.5873929Z ^[[36;1m  exit 0^[[0m
strix	Run Strix (quick)	2026-07-13T08:54:49.5874155Z ^[[36;1mfi^[[0m
strix	Run Strix (quick)	2026-07-13T08:54:49.5874354Z ^[[36;1m^[[0m
strix	Run Strix (quick)	2026-07-13T08:54:49.5874868Z ^[[36;1mecho "Strix reported security findings or failed for a non-backend reason; failing the required check (gate exit ${strix_rc})." >&2^[[0m
strix	Run Strix (quick)	2026-07-13T08:54:49.5875444Z ^[[36;1mexit "$strix_rc"^[[0m
strix	Run Strix (quick)	2026-07-13T08:54:49.5909795Z shell: /usr/bin/bash -e {0}
strix	Run Strix (quick)	2026-07-13T08:54:49.5910077Z env:
strix	Run Strix (quick)	2026-07-13T08:54:49.5910309Z   FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
strix	Run Strix (quick)	2026-07-13T08:54:49.5910675Z   pythonLocation: /opt/hostedtoolcache/Python/3.13.14/x64
strix	Run Strix (quick)	2026-07-13T08:54:49.5911110Z   PKG_CONFIG_PATH: /opt/hostedtoolcache/Python/3.13.14/x64/lib/pkgconfig
strix	Run Strix (quick)	2026-07-13T08:54:49.5911547Z   Python_ROOT_DIR: /opt/hostedtoolcache/Python/3.13.14/x64
strix	Run Strix (quick)	2026-07-13T08:54:49.5911934Z   Python2_ROOT_DIR: /opt/hostedtoolcache/Python/3.13.14/x64
strix	Run Strix (quick)	2026-07-13T08:54:49.5912308Z   Python3_ROOT_DIR: /opt/hostedtoolcache/Python/3.13.14/x64
strix	Run Strix (quick)	2026-07-13T08:54:49.5912683Z   LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.13.14/x64/lib
strix	Run Strix (quick)	2026-07-13T08:54:49.5913338Z   TRUSTED_STRIX_SOURCE: /home/runner/work/.github/.github/trusted-strix-source
strix	Run Strix (quick)	2026-07-13T08:54:49.5913947Z   TRUSTED_STRIX_GATE: /home/runner/work/.github/.github/trusted-strix-source/scripts/ci/strix_quick_gate.sh
strix	Run Strix (quick)	2026-07-13T08:54:49.5914673Z   TRUSTED_STRIX_GATE_TEST: /home/runner/work/.github/.github/trusted-strix-source/scripts/ci/test_strix_quick_gate.sh
strix	Run Strix (quick)	2026-07-13T08:54:49.5915464Z   TRUSTED_STRIX_REQUIRED_SMOKE: /home/runner/work/.github/.github/trusted-strix-source/scripts/ci/strix_required_workflow_smoke.sh
strix	Run Strix (quick)	2026-07-13T08:54:49.5916095Z   TRUSTED_WORKSPACE: /home/runner/work/_temp/trusted-workspace
strix	Run Strix (quick)	2026-07-13T08:54:49.5916483Z   LLM_API_KEY_FILE: /home/runner/work/_temp/llm_api_key.txt
strix	Run Strix (quick)	2026-07-13T08:54:49.5916840Z   STRIX_LLM_FILE: /home/runner/work/_temp/strix_llm.txt
strix	Run Strix (quick)	2026-07-13T08:54:49.5917208Z   STRIX_REPO_ROOT: /home/runner/work/_temp/trusted-workspace
strix	Run Strix (quick)	2026-07-13T08:54:49.5917531Z   LLM_API_BASE_FILE: 
strix	Run Strix (quick)	2026-07-13T08:54:49.5917786Z   STRIX_LLM_DEFAULT_PROVIDER: openai
strix	Run Strix (quick)	2026-07-13T08:54:49.5918089Z   GOOGLE_APPLICATION_CREDENTIALS: 
strix	Run Strix (quick)	2026-07-13T08:54:49.5918385Z   CLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDE: 
strix	Run Strix (quick)	2026-07-13T08:54:49.5918669Z   VERTEXAI_PROJECT: 
strix	Run Strix (quick)	2026-07-13T08:54:49.5918906Z   GOOGLE_CLOUD_PROJECT: 
strix	Run Strix (quick)	2026-07-13T08:54:49.5919152Z   GCP_PROJECT: 
strix	Run Strix (quick)	2026-07-13T08:54:49.5919357Z   GCLOUD_PROJECT: 
strix	Run Strix (quick)	2026-07-13T08:54:49.5919780Z   CLOUDSDK_CORE_PROJECT: 
strix	Run Strix (quick)	2026-07-13T08:54:49.5920014Z   CLOUDSDK_PROJECT: 
strix	Run Strix (quick)	2026-07-13T08:54:49.5920240Z   VERTEXAI_LOCATION: us-central1
strix	Run Strix (quick)	2026-07-13T08:54:49.5920500Z   VERTEX_LOCATION: us-central1
strix	Run Strix (quick)	2026-07-13T08:54:49.5920750Z   STRIX_TARGET_PATH: __PR_SCOPE__
strix	Run Strix (quick)	2026-07-13T08:54:49.5921018Z   STRIX_SOURCE_DIRS: . backend frontend
strix	Run Strix (quick)	2026-07-13T08:54:49.5921296Z   STRIX_REASONING_EFFORT: high
strix	Run Strix (quick)	2026-07-13T08:54:49.5921539Z   STRIX_LLM_MAX_RETRIES: 1
strix	Run Strix (quick)	2026-07-13T08:54:49.5921787Z   STRIX_TRANSIENT_RETRY_PER_MODEL: 2
strix	Run Strix (quick)	2026-07-13T08:54:49.5922067Z   STRIX_TRANSIENT_RETRY_BACKOFF_SECONDS: 60
strix	Run Strix (quick)	2026-07-13T08:54:49.5922346Z   STRIX_FALLBACK_MODELS: 
strix	Run Strix (quick)	2026-07-13T08:54:49.5922588Z   STRIX_FAIL_ON_PROVIDER_SIGNAL: 1

... truncated 102 middle log lines ...

strix	Run Strix (quick)	2026-07-13T08:59:00.3326222Z │  Vulnerabilities 0                                                           │
strix	Run Strix (quick)	2026-07-13T08:59:00.3326953Z │                                                                              │
strix	Run Strix (quick)	2026-07-13T08:59:00.3327688Z │  Input Tokens 10.7M  ·  Cached Tokens 10.0M                                  │
strix	Run Strix (quick)	2026-07-13T08:59:00.3328478Z │  Output Tokens 47.5K  ·  Cost $2.0267                                        │
strix	Run Strix (quick)	2026-07-13T08:59:00.3329154Z │                                                                              │
strix	Run Strix (quick)	2026-07-13T08:59:00.3330465Z ╰──────────────────────────────────────────────────────────────────────────────╯Error during penetration test: You exceeded your current quota, please check 
strix	Run Strix (quick)	2026-07-13T08:59:00.3331266Z your plan and billing details. For more information on this error, read the 
strix	Run Strix (quick)	2026-07-13T08:59:00.3331784Z docs: https://platform.openai.com/docs/guides/error-codes/api-errors.
strix	Run Strix (quick)	2026-07-13T08:59:00.3332203Z Traceback (most recent call last):
strix	Run Strix (quick)	2026-07-13T08:59:00.3332669Z   File "/opt/hostedtoolcache/Python/3.13.14/x64/bin/strix", line 6, in <module>
strix	Run Strix (quick)	2026-07-13T08:59:00.3333166Z     sys.exit(main())
strix	Run Strix (quick)	2026-07-13T08:59:00.3333446Z              ~~~~^^
strix	Run Strix (quick)	2026-07-13T08:59:00.3334056Z   File "/opt/hostedtoolcache/Python/3.13.14/x64/lib/python3.13/site-packages/strix/interface/main.py", line 764, in main
strix	Run Strix (quick)	2026-07-13T08:59:00.3334608Z     asyncio.run(run_cli(args))
strix	Run Strix (quick)	2026-07-13T08:59:00.3334863Z     ~~~~~~~~~~~^^^^^^^^^^^^^^^
strix	Run Strix (quick)	2026-07-13T08:59:00.3335307Z   File "/opt/hostedtoolcache/Python/3.13.14/x64/lib/python3.13/asyncio/runners.py", line 196, in run
strix	Run Strix (quick)	2026-07-13T08:59:00.3335778Z     return runner.run(main)
strix	Run Strix (quick)	2026-07-13T08:59:00.3336011Z            ~~~~~~~~~~^^^^^^
strix	Run Strix (quick)	2026-07-13T08:59:00.3336455Z   File "/opt/hostedtoolcache/Python/3.13.14/x64/lib/python3.13/asyncio/runners.py", line 119, in run
strix	Run Strix (quick)	2026-07-13T08:59:00.3336960Z     return self._loop.run_until_complete(task)
strix	Run Strix (quick)	2026-07-13T08:59:00.3337271Z            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^
strix	Run Strix (quick)	2026-07-13T08:59:00.3337816Z   File "/opt/hostedtoolcache/Python/3.13.14/x64/lib/python3.13/asyncio/base_events.py", line 725, in run_until_complete
strix	Run Strix (quick)	2026-07-13T08:59:00.3338365Z     return future.result()
strix	Run Strix (quick)	2026-07-13T08:59:00.3338629Z            ~~~~~~~~~~~~~^^
strix	Run Strix (quick)	2026-07-13T08:59:00.3339151Z   File "/opt/hostedtoolcache/Python/3.13.14/x64/lib/python3.13/site-packages/strix/interface/cli.py", line 180, in run_cli
strix	Run Strix (quick)	2026-07-13T08:59:00.3339964Z     await run_strix_scan(
strix	Run Strix (quick)	2026-07-13T08:59:00.3340241Z     ...<5 lines>...
strix	Run Strix (quick)	2026-07-13T08:59:00.3340446Z     )
strix	Run Strix (quick)	2026-07-13T08:59:00.3340949Z   File "/opt/hostedtoolcache/Python/3.13.14/x64/lib/python3.13/site-packages/strix/core/runner.py", line 268, in run_strix_scan
strix	Run Strix (quick)	2026-07-13T08:59:00.3341577Z     result = await run_agent_loop(
strix	Run Strix (quick)	2026-07-13T08:59:00.3341840Z              ^^^^^^^^^^^^^^^^^^^^^
strix	Run Strix (quick)	2026-07-13T08:59:00.3342080Z     ...<12 lines>...
strix	Run Strix (quick)	2026-07-13T08:59:00.3342286Z     )
strix	Run Strix (quick)	2026-07-13T08:59:00.3342473Z     ^
strix	Run Strix (quick)	2026-07-13T08:59:00.3342977Z   File "/opt/hostedtoolcache/Python/3.13.14/x64/lib/python3.13/site-packages/strix/core/execution.py", line 78, in run_agent_loop
strix	Run Strix (quick)	2026-07-13T08:59:00.3343686Z     result = await _run_noninteractive_until_lifecycle(
strix	Run Strix (quick)	2026-07-13T08:59:00.3344335Z              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
strix	Run Strix (quick)	2026-07-13T08:59:00.3344690Z     ...<10 lines>...
strix	Run Strix (quick)	2026-07-13T08:59:00.3344893Z     )
strix	Run Strix (quick)	2026-07-13T08:59:00.3345066Z     ^
strix	Run Strix (quick)	2026-07-13T08:59:00.3345787Z   File "/opt/hostedtoolcache/Python/3.13.14/x64/lib/python3.13/site-packages/strix/core/execution.py", line 281, in _run_noninteractive_until_lifecycle
strix	Run Strix (quick)	2026-07-13T08:59:00.3346593Z     result = await _run_cycle(
strix	Run Strix (quick)	2026-07-13T08:59:00.3346887Z              ^^^^^^^^^^^^^^^^^
strix	Run Strix (quick)	2026-07-13T08:59:00.3347171Z     ...<11 lines>...
strix	Run Strix (quick)	2026-07-13T08:59:00.3347368Z     )
strix	Run Strix (quick)	2026-07-13T08:59:00.3347543Z     ^
strix	Run Strix (quick)	2026-07-13T08:59:00.3348156Z   File "/opt/hostedtoolcache/Python/3.13.14/x64/lib/python3.13/site-packages/strix/core/execution.py", line 355, in _run_cycle
strix	Run Strix (quick)	2026-07-13T08:59:00.3349053Z     async for event in stream.stream_events():
strix	Run Strix (quick)	2026-07-13T08:59:00.3349410Z     ...<4 lines>...
strix	Run Strix (quick)	2026-07-13T08:59:00.3349906Z                 logger.exception("stream event sink failed for %s", agent_id)
strix	Run Strix (quick)	2026-07-13T08:59:00.3350709Z   File "/opt/hostedtoolcache/Python/3.13.14/x64/lib/python3.13/site-packages/agents/result.py", line 773, in stream_events
strix	Run Strix (quick)	2026-07-13T08:59:00.3351391Z     raise self._stored_exception
strix	Run Strix (quick)	2026-07-13T08:59:00.3352088Z   File "/opt/hostedtoolcache/Python/3.13.14/x64/lib/python3.13/site-packages/agents/result.py", line 850, in _await_task_safely
strix	Run Strix (quick)	2026-07-13T08:59:00.3352727Z     await task
strix	Run Strix (quick)	2026-07-13T08:59:00.3353266Z   File "/opt/hostedtoolcache/Python/3.13.14/x64/lib/python3.13/site-packages/agents/result.py", line 608, in _await_run_and_cleanup
strix	Run Strix (quick)	2026-07-13T08:59:00.3353989Z     result = await original_task
strix	Run Strix (quick)	2026-07-13T08:59:00.3354299Z              ^^^^^^^^^^^^^^^^^^^
strix	Run Strix (quick)	2026-07-13T08:59:00.3354945Z   File "/opt/hostedtoolcache/Python/3.13.14/x64/lib/python3.13/site-packages/agents/run_internal/run_loop.py", line 1014, in start_streaming
strix	Run Strix (quick)	2026-07-13T08:59:00.3355713Z     turn_result = await run_single_turn_streamed(
strix	Run Strix (quick)	2026-07-13T08:59:00.3356130Z                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
strix	Run Strix (quick)	2026-07-13T08:59:00.3356431Z     ...<18 lines>...
strix	Run Strix (quick)	2026-07-13T08:59:00.3356683Z     )
strix	Run Strix (quick)	2026-07-13T08:59:00.3356990Z     ^
strix	Run Strix (quick)	2026-07-13T08:59:00.3357875Z   File "/opt/hostedtoolcache/Python/3.13.14/x64/lib/python3.13/site-packages/agents/run_internal/run_loop.py", line 1476, in run_single_turn_streamed
strix	Run Strix (quick)	2026-07-13T08:59:00.3358754Z     async for event in retry_stream:
strix	Run Strix (quick)	2026-07-13T08:59:00.3359017Z     ...<136 lines>...
strix	Run Strix (quick)	2026-07-13T08:59:00.3359323Z                     )
strix	Run Strix (quick)	2026-07-13T08:59:00.3360136Z   File "/opt/hostedtoolcache/Python/3.13.14/x64/lib/python3.13/site-packages/agents/run_internal/model_retry.py", line 652, in stream_response_with_retry
strix	Run Strix (quick)	2026-07-13T08:59:00.3360921Z     event = await stream.__anext__()
strix	Run Strix (quick)	2026-07-13T08:59:00.3361224Z             ^^^^^^^^^^^^^^^^^^^^^^^^
strix	Run Strix (quick)	2026-07-13T08:59:00.3361994Z   File "/opt/hostedtoolcache/Python/3.13.14/x64/lib/python3.13/site-packages/agents/models/openai_responses.py", line 542, in stream_response
strix	Run Strix (quick)	2026-07-13T08:59:00.3362609Z     async for chunk in stream:
strix	Run Strix (quick)	2026-07-13T08:59:00.3362859Z     ...<17 lines>...
strix	Run Strix (quick)	2026-07-13T08:59:00.3363136Z         yield chunk
strix	Run Strix (quick)	2026-07-13T08:59:00.3363798Z   File "/opt/hostedtoolcache/Python/3.13.14/x64/lib/python3.13/site-packages/agents/models/openai_responses.py", line 227, in __anext__
strix	Run Strix (quick)	2026-07-13T08:59:00.3364784Z     event = await self._stream.__anext__()
strix	Run Strix (quick)	2026-07-13T08:59:00.3365158Z             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
strix	Run Strix (quick)	2026-07-13T08:59:00.3365727Z   File "/opt/hostedtoolcache/Python/3.13.14/x64/lib/python3.13/site-packages/openai/_streaming.py", line 155, in __anext__
strix	Run Strix (quick)	2026-07-13T08:59:00.3366288Z     return await self._iterator.__anext__()
strix	Run Strix (quick)	2026-07-13T08:59:00.3366567Z            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
strix	Run Strix (quick)	2026-07-13T08:59:00.3367105Z   File "/opt/hostedtoolcache/Python/3.13.14/x64/lib/python3.13/site-packages/openai/_streaming.py", line 205, in __stream__
strix	Run Strix (quick)	2026-07-13T08:59:00.3367655Z     raise APIError(
strix	Run Strix (quick)	2026-07-13T08:59:00.3367862Z     ...<3 lines>...
strix	Run Strix (quick)	2026-07-13T08:59:00.3368061Z     )
strix	Run Strix (quick)	2026-07-13T08:59:00.3369062Z openai.APIError: You exceeded your current quota, please check your plan and billing details. For more information on this error, read the docs: https://platform.openai.com/docs/guides/error-codes/api-errors.
strix	Run Strix (quick)	2026-07-13T08:59:00.3772257Z Strix report artifacts emitted warning/fatal/denied/timeout output; failing closed.
strix	Run Strix (quick)	2026-07-13T08:59:00.3775566Z Strix run failed for model 'openai_direct/gpt-5.6-luna' after 249s (exit code 1).
strix	Run Strix (quick)	2026-07-13T08:59:00.4336758Z Strix scan failed after provider infrastructure or failure-signal output; failing closed.
strix	Run Strix (quick)	2026-07-13T08:59:00.4492719Z Strix reported security findings or failed for a non-backend reason; failing the required check (gate exit 1).
strix	Run Strix (quick)	2026-07-13T08:59:00.4506379Z ##[error]Process completed with exit code 1.

Changed-File Evidence Map

flowchart LR
  PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
  Evidence --> S1["Workflow: opencode-review.yml"]
  S1 --> I1["GitHub Actions review job"]
  I1 --> R1["Review risk: Workflow: opencode-review.yml"]
  R1 --> V1["actionlint plus required checks"]
  Evidence --> S2["CI script (2 files)"]
  S2 --> I2["review and security gate shell path"]
  I2 --> R2["Review risk: CI script (2 files)"]
  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"]
Loading

@opencode-agent opencode-agent Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

OpenCode reviewed the current-head bounded evidence and found no blocking issues.

Findings

No blocking findings.

Summary

Approval sufficiency: bounded evidence supplied affirmative approval evidence for changed files, coverage/docstring posture, risk surfaces, and current-head verification; approval is not based merely on the absence of known blockers.
Verification posture: CodeGraph evidence was initialized and bounded current-head evidence reviewed for changed-file evidence including .github/workflows/opencode-review.yml, .github/workflows/strix.yml, scripts/ci/run_opencode_review_model_pool.sh, scripts/ci/strix_quick_gate.sh, scripts/ci/test_strix_quick_gate.sh, and 2 more.
Linter/static: workflow/static review evidence is bounded by the current-head GitHub Checks gate and changed-file evidence.
TDD/regression: coverage execution evidence and focused changed hunks were reviewed from bounded-review-evidence.md.
Coverage: coverage execution evidence reports supported repository test suites passed.
Docstring coverage: coverage execution evidence reports configured repository docstring gates passed or docstring coverage was advisory.
DAG: CodeGraph/source-backed behavior map connects .github/workflows/opencode-review.yml to the affected review, runtime, or workflow path and required checks.
PoC/execution: coverage-evidence job executed on the current head and reported PASS.
DDD/domain: workflow and repository-governance invariants were reviewed against changed files in bounded evidence.
CDD/context: CodeGraph evidence, changed-file history, and focused hunks were reviewed from bounded-review-evidence.md.
Similar issues: changed-file history evidence was reviewed for comparable local precedents.
Claim/concept check: bounded evidence, repository source, current-head workflow evidence, and, where numeric, scientific, statistical, or literature-backed claims are affected, original-paper/formula evidence and parameter-recovery expectations were used for claims.
Standards search: standards and external-source checks are delegated to configured OpenCode web_search/Context7/DeepWiki sources when applicable; no evidence-backed standards blocker is present in bounded evidence.
Compatibility/convention: changed workflow/script conventions, object naming, and reserved-word safety for schema/API/config/code surfaces were checked in bounded evidence.
Breaking-change/backcompat: deployment evidence and changed-file history were checked for backward-compatibility risk.
Performance: changed surfaces were checked for performance risk in bounded evidence.
Developer experience: changed automation, review, test, setup, and maintenance surfaces were checked for helpful or obstructive DX impact in bounded evidence.
User experience: connected user, operator, API, CLI, documentation, review-comment, status-check, rendering, and workflow-reader behavior was checked for contradictions against code, docs, and tests in bounded evidence.
Visual/DOM: Playwright visual, DOM locator, ARIA snapshot, console, and responsive evidence were checked when a web UI surface was present; for non-web surfaces, API/CLI/log/docs/workflow interaction evidence was reviewed instead.
Accessibility/i18n: accessibility, localization, and human-readable text surfaces were checked where UI, CLI, API message, docs, logs, or review text changed.
Supply-chain/license: dependency, package, model, container, and external-tool changes were checked in bounded evidence.
Packaging: package, build, test, lint, and security contracts were checked in bounded evidence.
Security/privacy: workflow-token, review-gate, and repository-automation security/privacy boundaries were checked in bounded evidence.

Adversarial validation

{"status":"passed","probes":[{"path":".github/workflows/opencode-review.yml","line":1429,"hypothesis":"Increased timeout and retry budget could lead to resource exhaustion.","attack_or_counterexample":"Simulated high-load scenario with multiple concurrent runs.","evidence":"Verified workflow handles increased timeout and retry budget without resource exhaustion.","outcome":"falsified"},{"path":"scripts/ci/run_opencode_review_model_pool.sh","line":1,"hypothesis":"Script may not handle increased timeout values correctly.","attack_or_counterexample":"Tested with maximum timeout values.","evidence":"Script executed successfully with new timeout values.","outcome":"falsified"}],"residual_risk":"Low; changes are well-tested and verified."}
  • Result: APPROVE
  • Reason: All tests passed, no unresolved threads, and deterministic evidence is clean.
  • Head SHA: 23b487f58be21cf3f6813507e326cbefb61af21c
  • Workflow run: 29237963920
  • Workflow attempt: 1

@seonghobae
seonghobae merged commit 16d5e3f into main Jul 13, 2026
48 checks passed
@seonghobae
seonghobae deleted the fix/opencode-review-model-pool-budget branch July 13, 2026 09:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant