[codex] harden OpenCode agent evidence gate#405
Conversation
There was a problem hiding this comment.
Pull request overview
OpenCode found current-head GitHub Check failures and could not approve until they are mapped to source-backed fixes.
Findings
Line-specific fallback findings:
No deterministic missing-string markers or Strix report locations were recognized. Use the failed-check evidence below to map each failed check to exact local source lines before approving.
Verification
- Review source: independent OpenCode failed-check diagnosis using current-head check evidence.
- Result: REQUEST_CHANGES
- Reason: one or more GitHub Checks failed on current head
5bd378f66ceb426a605cc96925428bfbfb17e1e0.
Gate evidence
- Head SHA:
5bd378f66ceb426a605cc96925428bfbfb17e1e0 - Workflow run: 27911440302
- Workflow attempt: 1
Failed checks:
- ci/ci / build-and-test: FAILURE (https://github.com/ContextualWisdomLab/bandscope/actions/runs/27911440294/job/82589149128)
- release/release-preflight: FAILURE (https://github.com/ContextualWisdomLab/bandscope/actions/runs/27911440291/job/82589149047)
Failed check evidence for line-specific fixes:
Failed GitHub Check Evidence
- PR: #405
- Head SHA:
5bd378f66ceb426a605cc96925428bfbfb17e1e0 - Repository:
ContextualWisdomLab/bandscope
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_CHANGESfindings must includepath,line,root_cause,fix_direction,regression_test_direction, andsuggested_diff. -
Do not request changes with only a GitHub Actions URL or a generic check name.
-
When Strix logs contain multiple
Vulnerability ReportorModel ... 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: ci/ci / build-and-test
- Type:
check_run - Conclusion:
FAILURE - Details URL: https://github.com/ContextualWisdomLab/bandscope/actions/runs/27911440294/job/82589149128
- Workflow run id:
27911440294 - Check run id:
82589149128
Failed job steps
- step 7: Run quickcheck (failure)
Check annotations
- .github:97-97 [failure] Process completed with exit code 1.
Failed log excerpt
The failed job log could not be collected with gh run view --log-failed.
run 27911440294 is still in progress; logs will be available when it is complete
Failed check: release/release-preflight
- Type:
check_run - Conclusion:
FAILURE - Details URL: https://github.com/ContextualWisdomLab/bandscope/actions/runs/27911440291/job/82589149047
- Workflow run id:
27911440291 - Check run id:
82589149047
Failed job steps
- step 9: Run harness verification (failure)
Check annotations
- .github:103-103 [failure] Process completed with exit code 1.
Failed log signal summary
release-preflight Run harness verification 2026-06-21T17:05:24.0437829Z ##[error]Process completed with exit code 1.
Failed log excerpt
release-preflight Run harness verification 2026-06-21T17:05:18.4330347Z ##[group]Run ./scripts/harness/quickcheck.sh
release-preflight Run harness verification 2026-06-21T17:05:18.4331342Z ^[[36;1m./scripts/harness/quickcheck.sh^[[0m
release-preflight Run harness verification 2026-06-21T17:05:18.4363214Z shell: /usr/bin/bash -e {0}
release-preflight Run harness verification 2026-06-21T17:05:18.4363468Z env:
release-preflight Run harness verification 2026-06-21T17:05:18.4363666Z GIT_CONFIG_COUNT: 1
release-preflight Run harness verification 2026-06-21T17:05:18.4363905Z GIT_CONFIG_KEY_0: init.defaultBranch
release-preflight Run harness verification 2026-06-21T17:05:18.4364186Z GIT_CONFIG_VALUE_0: develop
release-preflight Run harness verification 2026-06-21T17:05:18.4364501Z pythonLocation: /opt/hostedtoolcache/Python/3.12.13/x64
release-preflight Run harness verification 2026-06-21T17:05:18.4364952Z PKG_CONFIG_PATH: /opt/hostedtoolcache/Python/3.12.13/x64/lib/pkgconfig
release-preflight Run harness verification 2026-06-21T17:05:18.4365387Z Python_ROOT_DIR: /opt/hostedtoolcache/Python/3.12.13/x64
release-preflight Run harness verification 2026-06-21T17:05:18.4365775Z Python2_ROOT_DIR: /opt/hostedtoolcache/Python/3.12.13/x64
release-preflight Run harness verification 2026-06-21T17:05:18.4366250Z Python3_ROOT_DIR: /opt/hostedtoolcache/Python/3.12.13/x64
release-preflight Run harness verification 2026-06-21T17:05:18.4366910Z LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.12.13/x64/lib
release-preflight Run harness verification 2026-06-21T17:05:18.4367333Z UV_PYTHON_INSTALL_DIR: /home/runner/work/_temp/uv-python-dir
release-preflight Run harness verification 2026-06-21T17:05:18.4367775Z ##[endgroup]
release-preflight Run harness verification 2026-06-21T17:05:18.4683795Z Documentation check passed
release-preflight Run harness verification 2026-06-21T17:05:18.4942231Z Security Notes check passed
release-preflight Run harness verification 2026-06-21T17:05:18.8436510Z Security pattern gate passed
release-preflight Run harness verification 2026-06-21T17:05:19.1980866Z Supply-chain verification passed
release-preflight Run harness verification 2026-06-21T17:05:19.2258107Z GitHub bootstrap policy check passed
release-preflight Run harness verification 2026-06-21T17:05:19.3197322Z
release-preflight Run harness verification 2026-06-21T17:05:19.3197965Z > bandscope@0.1.3 lint
release-preflight Run harness verification 2026-06-21T17:05:19.3199843Z > npm run lint:workspaces && npm run check:docs && npm run check:security-notes && npm run check:security-gates && npm run check:supply-chain && npm run check:github-bootstrap && npm run check:python-docstrings && npm run ruff:check && npm run ruff:format:check && npm run bandit:check
release-preflight Run harness verification 2026-06-21T17:05:19.3201593Z
release-preflight Run harness verification 2026-06-21T17:05:19.4169833Z
release-preflight Run harness verification 2026-06-21T17:05:19.4170495Z > bandscope@0.1.3 lint:workspaces
release-preflight Run harness verification 2026-06-21T17:05:19.4171300Z > npm run lint --workspaces --if-present
release-preflight Run harness verification 2026-06-21T17:05:19.4171582Z
release-preflight Run harness verification 2026-06-21T17:05:19.5305804Z
release-preflight Run harness verification 2026-06-21T17:05:19.5306354Z > @bandscope/desktop@0.1.0 lint
release-preflight Run harness verification 2026-06-21T17:05:19.5306833Z > eslint "src/**/*.{ts,tsx}" vite.config.ts
release-preflight Run harness verification 2026-06-21T17:05:19.5307070Z
release-preflight Run harness verification 2026-06-21T17:05:21.3852011Z
release-preflight Run harness verification 2026-06-21T17:05:21.3852651Z > @bandscope/shared-types@0.1.0 lint
release-preflight Run harness verification 2026-06-21T17:05:21.3853107Z > eslint "src/**/*.ts" "test/**/*.ts"
release-preflight Run harness verification 2026-06-21T17:05:21.3853312Z
release-preflight Run harness verification 2026-06-21T17:05:22.6871601Z
release-preflight Run harness verification 2026-06-21T17:05:22.6872301Z > bandscope@0.1.3 check:docs
release-preflight Run harness verification 2026-06-21T17:05:22.6872770Z > python3 scripts/checks/verify_docs.py
release-preflight Run harness verification 2026-06-21T17:05:22.6873020Z
release-preflight Run harness verification 2026-06-21T17:05:22.7124828Z Documentation check passed
release-preflight Run harness verification 2026-06-21T17:05:22.8119638Z
release-preflight Run harness verification 2026-06-21T17:05:22.8120282Z > bandscope@0.1.3 check:security-notes
release-preflight Run harness verification 2026-06-21T17:05:22.8121048Z > python3 scripts/checks/verify_security_notes.py
release-preflight Run harness verification 2026-06-21T17:05:22.8121304Z
release-preflight Run harness verification 2026-06-21T17:05:22.8379517Z Security Notes check passed
release-preflight Run harness verification 2026-06-21T17:05:22.9400463Z
release-preflight Run harness verification 2026-06-21T17:05:22.9401363Z > bandscope@0.1.3 check:security-gates
release-preflight Run harness verification 2026-06-21T17:05:22.9402152Z > python3 scripts/checks/security_gates.py
release-preflight Run harness verification 2026-06-21T17:05:22.9402587Z
release-preflight Run harness verification 2026-06-21T17:05:23.2756956Z Security pattern gate passed
release-preflight Run harness verification 2026-06-21T17:05:23.3785019Z
release-preflight Run harness verification 2026-06-21T17:05:23.3785648Z > bandscope@0.1.3 check:supply-chain
release-preflight Run harness verification 2026-06-21T17:05:23.3786216Z > python3 scripts/checks/verify_supply_chain.py
release-preflight Run harness verification 2026-06-21T17:05:23.3786484Z
release-preflight Run harness verification 2026-06-21T17:05:23.7191607Z Supply-chain verification passed
release-preflight Run harness verification 2026-06-21T17:05:23.8193079Z
release-preflight Run harness verification 2026-06-21T17:05:23.8193732Z > bandscope@0.1.3 check:github-bootstrap
release-preflight Run harness verification 2026-06-21T17:05:23.8194312Z > python3 scripts/checks/verify_github_bootstrap_policy.py
release-preflight Run harness verification 2026-06-21T17:05:23.8194603Z
release-preflight Run harness verification 2026-06-21T17:05:23.8440724Z GitHub bootstrap policy check passed
release-preflight Run harness verification 2026-06-21T17:05:23.9449019Z
release-preflight Run harness verification 2026-06-21T17:05:23.9449694Z > bandscope@0.1.3 check:python-docstrings
release-preflight Run harness verification 2026-06-21T17:05:23.9450915Z > sh -c 'cd services/analysis-engine && uv run ruff check src tests ../../scripts --select D100,D101,D102,D103,D104,D105,D106,D107'
release-preflight Run harness verification 2026-06-21T17:05:23.9451515Z
release-preflight Run harness verification 2026-06-21T17:05:24.0265356Z D103 Missing docstring in public function
release-preflight Run harness verification 2026-06-21T17:05:24.0266233Z --> /home/runner/work/bandscope/bandscope/scripts/ci/opencode_review_normalize_output.py:95:5
release-preflight Run harness verification 2026-06-21T17:05:24.0267032Z |
release-preflight Run harness verification 2026-06-21T17:05:24.0267404Z 95 | def check_structural_approval(control_file: Path) -> int:
release-preflight Run harness verification 2026-06-21T17:05:24.0267784Z | ^^^^^^^^^^^^^^^^^^^^^^^^^
release-preflight Run harness verification 2026-06-21T17:05:24.0268041Z 96 | try:
release-preflight Run harness verification 2026-06-21T17:05:24.0268422Z 97 | value = json.loads(control_file.read_text(encoding="utf-8"))
release-preflight Run harness verification 2026-06-21T17:05:24.0268777Z |
release-preflight Run harness verification 2026-06-21T17:05:24.0268896Z
release-preflight Run harness verification 2026-06-21T17:05:24.0269063Z D103 Missing docstring in public function
release-preflight Run harness verification 2026-06-21T17:05:24.0269614Z --> /home/runner/work/bandscope/bandscope/scripts/ci/opencode_review_normalize_output.py:122:5
release-preflight Run harness verification 2026-06-21T17:05:24.0270082Z |
release-preflight Run harness verification 2026-06-21T17:05:24.0270290Z 122 | def valid_control(
release-preflight Run harness verification 2026-06-21T17:05:24.0270754Z | ^^^^^^^^^^^^^
release-preflight Run harness verification 2026-06-21T17:05:24.0271024Z 123 | value: Any,
release-preflight Run harness verification 2026-06-21T17:05:24.0271234Z 124 | *,
release-preflight Run harness verification 2026-06-21T17:05:24.0271426Z |
release-preflight Run harness verification 2026-06-21T17:05:24.0271524Z
release-preflight Run harness verification 2026-06-21T17:05:24.0271685Z D103 Missing docstring in public function
release-preflight Run harness verification 2026-06-21T17:05:24.0272234Z --> /home/runner/work/bandscope/bandscope/scripts/ci/opencode_review_normalize_output.py:195:5
release-preflight Run harness verification 2026-06-21T17:05:24.0272711Z |
release-preflight Run harness verification 2026-06-21T17:05:24.0273016Z 195 | def iter_json_objects(text: str) -> list[Any]:
release-preflight Run harness verification 2026-06-21T17:05:24.0273326Z | ^^^^^^^^^^^^^^^^^
release-preflight Run harness verification 2026-06-21T17:05:24.0273618Z 196 | decoder = json.JSONDecoder()
release-preflight Run harness verification 2026-06-21T17:05:24.0273942Z 197 | values: list[Any] = []
release-preflight Run harness verification 2026-06-21T17:05:24.0274361Z |
release-preflight Run harness verification 2026-06-21T17:05:24.0274467Z
release-preflight Run harness verification 2026-06-21T17:05:24.0274622Z D103 Missing docstring in public function
release-preflight Run harness verification 2026-06-21T17:05:24.0275208Z --> /home/runner/work/bandscope/bandscope/scripts/ci/opencode_review_normalize_output.py:217:5
release-preflight Run harness verification 2026-06-21T17:05:24.0275687Z |
release-preflight Run harness verification 2026-06-21T17:05:24.0275943Z 217 | def main(argv: list[str]) -> int:
release-preflight Run harness verification 2026-06-21T17:05:24.0276220Z | ^^^^
release-preflight Run harness verification 2026-06-21T17:05:24.0276610Z 218 | if len(argv) == 3 and argv[1] == "--check-structural-approval":
release-preflight Run harness verification 2026-06-21T17:05:24.0277109Z 219 | return check_structural_approval(Path(argv[2]))
release-preflight Run harness verification 2026-06-21T17:05:24.0277433Z |
release-preflight Run harness verification 2026-06-21T17:05:24.0277607Z
release-preflight Run harness verification 2026-06-21T17:05:24.0277758Z Found 4 errors.
release-preflight Run harness verification 2026-06-21T17:05:24.0437829Z ##[error]Process completed with exit code 1.
OpenCode Review Overview
Pull request overviewReviewed workflow files in .github/workflows and found no issues. Structural exploration was performed, and no changes were required. FindingsNo blocking findings from OpenCode's independent review. Verification
Gate evidence
|
21d8a02 to
b0721ad
Compare
b0721ad to
2bdbf4a
Compare
There was a problem hiding this comment.
Pull request overview
Reviewed workflow files in .github/workflows and found no issues. Structural exploration was performed, and no changes were required.
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 actionable changes or issues found in the inspected files.
Gate evidence
- Head SHA:
2bdbf4a78de3b56af8ccc3f1fa78acc00d258a1a - Workflow run: 27912485660
- Workflow attempt: 1
What changed
Rolls out the OpenCode agent hardening validated in
ContextualWisdomLab/naruon.im-not-ai,ponytail,code-review-graph, andKKTVto the OpenCode review prompt without adding new runtime dependencies.APPROVEsummaries to name at least one exact changed file/path inspected as evidence.APPROVEpayloads that claim no changes/no files/no actionable changes were found.APPROVEpayloads that omit concrete changed-file evidence.true/false) as invalid source line numbers.Validation
python3 -m py_compile scripts/ci/opencode_review_normalize_output.pyactionlint -shellcheck= -pyflakes= .github/workflows/opencode-review.ymlgit diff --checkAPPROVEreturns exit code 4; path-backedAPPROVEreturns 0; boolean finding line returns exit code 4.Strix execution is not added to repos that do not already have Strix. Repos with Strix keep the existing scanner path; this PR only improves OpenCode interpretation and review gating.