Skip to content

feat(coverage): add bounded PyO3 peer-evidence gate - #789

Open
seonghobae wants to merge 33 commits into
mainfrom
fix/pyo3-native-peer-gate
Open

feat(coverage): add bounded PyO3 peer-evidence gate#789
seonghobae wants to merge 33 commits into
mainfrom
fix/pyo3-native-peer-gate

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Buyer-visible blocker

Central OpenCode coverage can fail before pytest collection in maturin/PyO3 repositories because the source-only sandbox intentionally does not build or import an unchanged compiled extension. Treating that environment limitation as an ordinary source-test failure blocks otherwise valid exact-head review evidence; treating it as success would weaken the gate.

Bounded peer-evidence repair

  • Classify only complete pytest collection failures caused exclusively by the declared maturin/PyO3 module being unavailable.
  • Seal and descriptor-validate the repository pyproject.toml before untrusted tests; reject symlinked ancestors, final links, non-regular files, device/inode/path drift, growth, malformed input, and bounded-read overflow.
  • Reject deferral whenever the PR changes Rust/Cargo/native crate or stub files, packaging inputs, dependency locks, any actual requirements/ dependency path, workflow/action files, or any repository pyproject.toml.
  • Distinguish prose under docs/requirements/ from dependency inputs.
  • Preserve both sides of renames as delete/add paths.
  • Emit DEFERRED, never PASS.
  • Require exact-current-head successful CheckRun evidence for CI::python, CI::rust, and CI::package, with bounded complete GraphQL pagination and rejection of stale, pending, failed, status-only, lookalike, missing, or duplicate contexts.
  • Keep potentially large pytest output on runner-owned storage and retain the Python 3.10/3.14 compatibility contract.

Exact identity and scope correction

  • exact current head: 791ca881f50360b24825dbdcba848f2c6ace7920;
  • protected base and independently resolved live base: main@6eb06cdd08c79a06f7b390069d4ffa49e2eb7dba;
  • state: Draft and mechanically mergeable.

The final protected-base diff is limited to the peer-evidence vertical slice:

  • .github/workflows/opencode-review-dispatch.yml
  • .github/workflows/python-native-extension-peer-gate-quality-ci.yml
  • scripts/ci/python_native_extension_peer_gate.py
  • the focused peer-gate, file-safety, nested-project, dependency-path, workflow-contract, OpenCode-contract, and isolated-Git regression tests
  • docs/doctoring/python-native-extension-peer-evidence.md
  • docs/doctoring/python-native-extension-peer-file-safety.md
  • CHANGELOG.md

The overlapping AGENTS.md, CLAUDE.md, and root ARCHITECTURE.md changes were removed because PR #896 owns the canonical central documentation graph. Requirements-directory lock discovery and its materializer tests were restored to protected-main content because PR #785 owns that independent trust boundary.

Verification lineage

The prior bounded head and review-driven repairs reported focused and complete suites with 100% owned production statement/branch coverage and complete public docstrings. Those results prove predecessor trees only. The current head must regenerate every applicable exact-head quality, security, supply-chain, and semantic-review result.

Security and merge gate

This PR does not skip tests, build PR-selected extensions, enable sandbox network access, introduce a Python substitute for Rust arithmetic, or convert missing evidence into success. Keep Draft until the unchanged current head completes the peer-gate/full-suite, exact 100% owned statement/branch coverage, public-docstring, security, SAST, dependency/SBOM, and semantic-review cycle with zero valid unresolved findings. Then mark Ready and require qualifying non-author exact-head approvals plus normal protected-main last-push semantics. No self-approval, stale evidence, temporary writer, administrative bypass, or weakened gate is authorized.

After protected integration, a real affected PyO3 consumer must rerun the protected-main path before incident closure.

@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown

Review Change Stack

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: b39d4d43-4818-4a2f-b146-97121b4b9479

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

PyO3/maturin 네이티브 확장 수집 실패 분류기와 안전한 증거 파일 처리를 추가했습니다. 정확한 PR HEAD의 Python·Rust·package CheckRun 성공을 검증하고, 결과를 OpenCode 승인 흐름과 품질 CI에 연결했습니다.

Changes

Python 네이티브 확장 peer-gate

Layer / File(s) Summary
안전한 입력과 프로젝트 계약
scripts/ci/python_native_extension_peer_gate.py, tests/test_python_native_extension_peer_gate.py, tests/test_python_native_extension_peer_gate_file_safety.py, docs/doctoring/python-native-extension-peer-file-safety.md
제한된 일반 파일 읽기, 경로 검증, UTF-8 디코딩, Maturin/PyO3 메타데이터 검증을 추가했습니다. 심볼릭 링크, 비정규 파일, 크기 초과, 파일 교체와 동시 변경을 거부합니다.
pytest 수집 실패 분류
scripts/ci/python_native_extension_peer_gate.py, tests/test_python_native_extension_peer_gate.py, tests/test_python_native_extension_peer_gate_nested_project.py, tests/test_python_native_extension_peer_gate_requirements_directory.py
변경 파일 경계와 완전한 pytest collection 로그를 검사합니다. 선언된 네이티브 모듈 누락만 분류하고 다른 실패는 거부합니다.
exact-head peer check 검증
scripts/ci/python_native_extension_peer_gate.py, tests/test_python_native_extension_peer_gate.py
중첩 CheckRun 레코드를 해석합니다. CI::python, CI::rust, CI::package가 동일한 40자리 HEAD에서 COMPLETEDSUCCESS인지 검증합니다.
OpenCode 승인 흐름 연동
.github/workflows/opencode-review-dispatch.yml, tests/test_python_native_extension_peer_gate_workflow_contract.py, tests/test_opencode_agent_contract.py, tests/test_repository_branch_coverage_pr743_cleanup.py, CHANGELOG.md
Python 테스트 로그와 pyproject.toml 스냅샷을 수집합니다. 제한된 실패는 DEFERRED로 기록하고 peer check가 충족될 때만 승인을 허용합니다. 일반 승인과 모델 출력 불가 폴백에도 같은 검사를 적용합니다.
품질 게이트와 운영 문서
.github/workflows/python-native-extension-peer-gate-quality-ci.yml, docs/doctoring/python-native-extension-peer-evidence.md
Python 3.10·3.14 검증, 전체 테스트, 브랜치·docstring 커버리지, compileall, 체크섬 고정 actionlint, git diff --check를 추가했습니다. peer-evidence 조건과 운영 범위를 문서화했습니다.

Estimated code review effort: 5 (Critical) | ~120 minutes

Sequence Diagram(s)

sequenceDiagram
  participant PythonTest as Python 테스트 실행
  participant Classifier as classify-pytest
  participant GitHub as GitHub CheckRuns
  participant PeerGate as require-checks
  participant Approval as OpenCode 승인 흐름

  PythonTest->>Classifier: 로그·pyproject 스냅샷·변경 파일 전달
  Classifier-->>PythonTest: PASS 또는 DEFERRED 모듈명
  Approval->>GitHub: PR HEAD의 CheckRun 조회
  GitHub-->>PeerGate: Python·Rust·package CheckRun JSON
  PeerGate-->>Approval: exact-head 성공 여부
  Approval-->>Approval: peer check 충족 시 승인 진행
Loading

Possibly related issues

Possibly related PRs

Suggested reviewers: opencode-agent

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed Docstring coverage is 95.00% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed 제목은 bounded PyO3 peer-evidence gate 추가라는 변경의 핵심 내용을 간결하고 정확하게 설명합니다.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/pyo3-native-peer-gate

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Copy link
Copy Markdown
Contributor Author

@opencode-agent address

Integrate the published PyO3 native-extension helper into the protected central OpenCode coverage/review path on this same branch; keep the PR Draft until the integration is complete and exact-head evidence passes.

Mirror the existing fail-closed R peer-evidence pattern rather than creating a second privileged reviewer. Required behavior:

  1. In .github/workflows/opencode-review-dispatch.yml, capture each Python pytest/coverage command's complete bounded log and exit status without changing successful behavior.
  2. When and only when a Python suite fails, invoke scripts/ci/python_native_extension_peer_gate.py classify-pytest against the exact log, the relevant regular non-symlink pyproject.toml, and the exact base-to-head changed-file list.
  3. A successful classification must not be reported as ordinary passing coverage. Publish a distinct compact marker stating that source-only Python collection was deferred exclusively for the unchanged declared PyO3 module and requires exact-head native peer evidence.
  4. In the trusted review/approval phase, query live CheckRun objects for the exact PR head and verify the repository-owned Python, Rust/PyO3, and package checks with require-checks. Do not accept statuses, stale heads, queued/cancelled/skipped checks, name lookalikes, duplicate requirements, or predecessor evidence. Preserve the existing R peer gate and all normal failure paths.
  5. Approval must remain blocked if the classifier, changed-file trust boundary, check inventory, or required peer check is absent or malformed. The classifier is a deferral classifier, never approval evidence by itself.
  6. Add permanent workflow-contract tests covering: pure declared-module collection failure; mixed missing imports; test/setup/teardown/internal/crash/truncated failures; native/Cargo/Rust/stub/packaging/lock/requirements/workflow changes; exact-head successful peer checks; stale/pending/failed/status/lookalike evidence; coexistence with R deferral; coverage summary wording; and approval-gate enforcement.
  7. Include the helper and workflow contract tests in permanent Python 3.10/3.14, compilation, 100% production statement/branch coverage, and public-docstring gates. No temporary repair workflow, branch-selected privileged execution, Python compatibility stub, networked PR test, skipped test, synthesized approval, merge, release, or protection change may remain.
  8. After exact-head central checks pass, rerun OpenCode/Noema review for unchanged fast-mlsirm heads build(deps): bump cloudflare/wrangler-action from 3.15.0 to 4.0.0 #546 d111e2b1341b0daab6b813074c7a7dbcf5c24ff4, fix(deps): protobuf를 aiplatform 호환 범위로 유지 #549 12fc519ca798c8400840f04b3b19c07754ad7dfe, and build(deps): bump google-cloud-bigquery from 3.42.0 to 3.42.2 #550 8db4c235d466446429fc32bdeeef3ca1fdaa8827; do not reuse their failed source-only coverage verdicts.

Update the doctoring and CHANGELOG to distinguish source-only measurement, trusted native peer evidence, and remaining interpretation limits. Preserve immutable called-workflow source, reviewer credentials, NVIDIA/OpenCode model policy, independent approval, unresolved-thread, and branch-protection boundaries.

Copy link
Copy Markdown
Contributor Author

@jules Implement the remaining central workflow integration on this existing Draft PR. Preserve the published helper and fail-closed trust boundary; do not create another PR or temporary workflow.

Required scope:

  • wire python_native_extension_peer_gate.py classify-pytest into .github/workflows/opencode-review-dispatch.yml only after a real bounded Python suite failure, using the exact pytest log, regular non-symlink pyproject, and exact base-to-head changed-file list;
  • publish a distinct PyO3 deferral marker rather than ordinary passing coverage;
  • in the trusted approval phase, query live exact-head CheckRun records and call require-checks for protected Python, Rust/PyO3, and package peer checks;
  • reject stale/pending/failed/status/lookalike/missing/malformed evidence and preserve the existing R deferral independently;
  • add permanent workflow-contract tests for classification, changed-boundary rejection, exact-head peer evidence, R/PyO3 coexistence, summary wording, and approval enforcement;
  • include the helper and workflow integration in Python 3.10/3.14 compile, 100% statement/branch coverage, public docstrings, actionlint, security, and changelog/doctoring checks.

Do not build PR-selected native code in the central sandbox, add a compatibility stub, skip product tests, use networked PR execution, change reviewer tokens or NVIDIA/OpenCode policy, weaken approval/protection gates, mark Ready, merge, or release. Commit as normal descendants without force-push, and report exact verification commands and the final head SHA.

Copy link
Copy Markdown
Contributor Author

@jules Implement the remaining integration directly on this branch; do not create any temporary, self-modifying, encoded-patch, or branch-writing workflow.

Required GREEN slice:

  1. Wire scripts/ci/python_native_extension_peer_gate.py into .github/workflows/opencode-review-dispatch.yml after the isolated pytest attempt has produced a complete bounded log and exact changed-file inventory.
  2. Accept deferral only when classify-pytest proves the sole failure is the exact declared maturin/PyO3 module and require-checks proves trusted exact-head CI::python, CI::rust, and CI::package CheckRuns are completed/successful.
  3. Treat classification as deferred peer evidence, never as a passing test; preserve all coverage/docstring gates for the Python-owned changed files and fail closed on mixed failures, native/package/lock/workflow changes, stale or status-only evidence.
  4. Add permanent workflow-contract tests covering ordering, trusted workflow/check-name ownership, exact-head binding, malformed evidence, and the fast_mlsirm._core case.
  5. Run the focused suite, complete central tests, 100% production statement/branch/docstring evidence, compilation, and exact-head security workflows. Keep Draft until all current-head evidence is GREEN.

After integration, rerun OpenCode review for unchanged fast-mlsirm PRs #546, #549, and #550; predecessor coverage failures are not reusable.

Copy link
Copy Markdown
Contributor Author

@jules Integrate the committed helper into the central opencode-review-dispatch.yml now; keep this PR Draft until end-to-end exact-head evidence is complete.

Required fail-closed flow:

  1. Preserve the current central source-only coverage run and capture its complete bounded combined stdout/stderr plus exit status. On success, continue unchanged.
  2. On failure, write the exact base…head changed-file list to a bounded newline file and invoke python_native_extension_peer_gate.py classify-pytest. Deferral is allowed only when that helper proves the sole failure is absence of the exact unchanged maturin/PyO3 module-name; any native/Cargo/stub/packaging/lock/requirements/workflow/maturin-metadata change or mixed pytest failure remains blocking.
  3. A successful classification is not a pass. Query CheckRun—not StatusContext—evidence for the exact PR head and invoke require-checks for these exact fast-mlsirm CI jobs before the central review may treat source-only coverage as peer-proven:
    • CI::python
    • CI::rust
    • CI::package
    • CI::gpu-smoke
    • CI::fuzz
      Keep Security Scan and SAST under the existing central gates. Reject absent, pending, failed, stale-head, lookalike-workflow, duplicate-requirement, or malformed evidence.
  4. Emit an explicit non-success classification such as coverage_deferred_to_exact_head_native_peer_evidence; do not report the source-only sandbox as passing and do not lower the repository's 100% coverage contract.
  5. Add workflow contract tests that exercise the exact fast_mlsirm._core collection failure, successful exact-head peer evidence, stale/pending/failed/status-only/check-name/workflow-name mismatches, native-boundary changes, mixed failures, truncation, and normal pure-Python pytest failures.
  6. Re-run the central workflow against current exact heads of fast-mlsirm#546, #549, and #550. The integration is accepted only if those previously blocked Python-only PRs receive no coverage CHANGES_REQUESTED, while a synthetic native-code change and mixed pytest failure still block.

Do not build PR-selected native code inside the central sandbox, introduce a Python stub, auto-approve, weaken required checks, use COPILOT_GITHUB_TOKEN, or disturb the existing reviewer-agent secret contract. Update APA 7 doctoring and the authoritative changelog after GREEN.

Copy link
Copy Markdown
Contributor Author

@coderabbitai Review the current Draft head 68e8b1695280d11c58b5553457442527f9d0542c specifically as an implementation-design review for the remaining PyO3 workflow integration. Do not approve, mutate, or merge. Identify the exact existing R-deferral variables/functions/approval gates in .github/workflows/opencode-review-dispatch.yml, and provide a minimal patch plan that reuses them for python_native_extension_peer_gate.py while preserving ordinary Python failures, exact-head CheckRun validation, R/PyO3 coexistence, and all immutable-source/credential boundaries. Flag any defect in the published helper or tests before integration.

@coderabbitai

coderabbitai Bot commented Aug 6, 2026

Copy link
Copy Markdown

Rate Limit Exceeded

@seonghobae have exceeded the limit for the number of chat messages per hour. Please wait 5 minutes and 1 seconds before sending another message.

Copy link
Copy Markdown
Contributor Author

@opencode-agent

Prepare the next bounded integration only after .github#759 produces a GREEN exact head, because both changes touch the authoritative coverage workflow and stale-base integration would reintroduce or overwrite the LLVM runtime-boundary repair.

For the eventual current-main integration:

  • invoke python_native_extension_peer_gate.py classify-pytest only after a real pytest collection failure has been captured completely and before converting that failure into deferred peer-evidence requirements;
  • write changed paths from the exact base/head diff into a bounded regular file;
  • require the declared maturin/PyO3 module and refuse deferral for every native, packaging, dependency, workflow, stub, or metadata change already covered by the helper;
  • query CheckRun evidence from trusted GitHub metadata and require exact current head plus repository-owned Python, Rust/PyO3, and package checks, all completed/successful; statuses, stale heads, duplicates, lookalikes, and missing evidence remain blocking;
  • keep classification explicitly non-passing until peer checks are proven;
  • add permanent workflow-ordering, permission, exact-head, and fail-closed contracts; execute/cover/compile the helper through the exact-head quality lane;
  • rerun fast-mlsirm#546 only after the central integration merges.

Keep Draft. Do not mutate the authoritative workflow from the pre-#759 base, approve, or merge.

Copy link
Copy Markdown
Contributor Author

@jules Implement the existing TDD RED workflow contracts on exact live head 5bc9ba4070866934ed819c2ff06f209b785d7b88 as normal descendant commits. Keep this PR Draft. Do not amend, rebase, force-push, create a repair workflow, mark Ready, merge, release, change branch protection, change reviewer credentials, or alter NVIDIA/OpenCode model policy.

Precondition: before every write, re-read the live head and stop without mutation unless it is the expected current head or your own direct descendant.

Coverage integration

In .github/workflows/opencode-review-dispatch.yml, preserve the existing sandbox, run_and_capture, R deferral, immutable-source, credential, and publication boundaries. Add a separate Python-suite runner that uses the identical timeout --kill-after=20 900 setpriv ... low-privilege environment but retains the complete bounded log long enough to classify a real nonzero Python suite exit.

Initialize exactly:

python_native_peer_check_required=0

Only after a Python configured/default pytest/coverage command actually fails:

  1. snapshot changed_files_for_coverage to a bounded regular file;
  2. require the relevant ${project_dir}/pyproject.toml to be regular and non-symlink;
  3. invoke the trusted helper:
python3 "$GITHUB_WORKSPACE/scripts/ci/python_native_extension_peer_gate.py" classify-pytest \
  --log "$log_file" \
  --pyproject "$project_dir/pyproject.toml" \
  --changed-files "$changed_files_file" \
  --repo-root "$COVERAGE_SOURCE_WORKDIR"
  1. on classifier success, do not report ordinary PASS and do not increment failures; emit a distinct section containing all these literal contracts:
### Python native-extension source-only deferral
- Result: DEFERRED
the unchanged declared PyO3 module was unavailable in the source-only sandbox
exact-head Python, Rust/PyO3, and package CheckRuns

and set python_native_peer_check_required=1;
5. on classifier rejection, retain the ordinary exact exit failure and increment failures;
6. any other Python suite failure in the same run remains blocking.

In the compact PASS decision, when the variable is 1, emit exactly:

- Python native-extension peer evidence: deferred source-only collection requires successful exact-head peer checks

Do not build/install PR-selected native code, add a Python stub, skip tests, or grant network access.

Approval integration

Mirror—but do not replace—the existing R peer-check pattern. Add independent functions that:

  • detect only the exact compact Python deferral marker;
  • query the live PR statusCheckRollup immediately before approval and normalize only CheckRun nodes with __typename, workflow name, check name, exact trusted $HEAD_SHA, status, and conclusion into a bounded JSON file;
  • call:
python3 "$GITHUB_WORKSPACE/scripts/ci/python_native_extension_peer_gate.py" require-checks \
  --checks-json "$checks_file" \
  --head-sha "$HEAD_SHA" \
  --required-check "CI::python" \
  --required-check "CI::rust" \
  --required-check "CI::package"
  • reject missing, pending, failed, skipped, cancelled, stale, status-only, lookalike, malformed, or lookup-failed evidence.

Call this gate in both approval paths that already call require_r_cmd_check_for_deferred_coverage: the deterministic model-unavailable blocker path and the normal APPROVE path. R and PyO3 deferrals must coexist independently. On failure, leave review state unchanged with a bounded WAITING_FOR_PYTHON_NATIVE_PEER_CHECKS explanation; never synthesize approval.

Permanent tests and verification

Make the current tests GREEN without weakening them:

python -m pytest -q \
  tests/test_python_native_extension_peer_gate.py \
  tests/test_python_native_extension_peer_gate_nested_project.py \
  tests/test_python_native_extension_peer_gate_workflow_contract.py

Then run the permanent Python 3.10/3.14 quality workflow, focused and complete 100% production statement/branch coverage, interrogate 100%, compileall, actionlint, full central tests, security and supply-chain checks. Fix actual failures only. Preserve CHANGELOG.md and docs/doctoring/python-native-extension-peer-evidence.md; update them only where integration semantics or verified limitations changed.

After GREEN, report the exact final SHA and verification commands in a PR comment. Do not request approval or change Draft state.

Copy link
Copy Markdown
Contributor Author

Exact-head quality run 31133025300 confirms the intended integration RED: 87 focused tests passed and only the three workflow-contract tests failed because opencode-review-dispatch.yml still lacks python_native_peer_check_required, the distinct source-only deferral summary, and trusted require-checks enforcement. Python 3.10 compatibility passed; all security workflows passed.

@jules Implement the central workflow integration now rather than weakening these tests. Preserve the existing R peer gate and privileged reviewer chain. After GREEN, run full central coverage/docstrings/actionlint and replay OpenCode review against exact fast-mlsirm heads #546, #549, and #550.

Copy link
Copy Markdown
Contributor Author

@opencode-agent address

Fix the exact current-head quality failure on 5bc9ba4070866934ed819c2ff06f209b785d7b88 by completing the integration already required by this Draft PR; do not weaken or delete the three failing workflow-contract tests.

Run 31133025300, job 92726135563, proves 87/90 focused tests pass and these exact contracts remain RED:

  1. python_native_peer_check_required=0 and the bounded classify-pytest invocation are absent from .github/workflows/opencode-review-dispatch.yml;
  2. the coverage artifact lacks the distinct ### Python native-extension source-only deferral, - Result: DEFERRED, and exact-head peer-check requirement text;
  3. the approval phase does not yet call require-checks for CI::python, CI::rust, and CI::package against PR_HEAD_SHA using live GraphQL CheckRun evidence.

Implement the documented fail-closed flow:

  • initialize python_native_peer_check_required=0 and keep ordinary source-test failure authoritative;
  • only after a real Python pytest failure, call scripts/ci/python_native_extension_peer_gate.py classify-pytest with the bounded pytest log, changed-file list, --repo-root "$COVERAGE_SOURCE_WORKDIR", and exact --pyproject "$project_dir/pyproject.toml";
  • if and only if that classifier succeeds, serialize a distinct DEFERRED section, never PASS, stating the unchanged declared PyO3 module was unavailable in the source-only sandbox and that exact-head Python, Rust/PyO3, and package CheckRuns are mandatory;
  • pass this state into the trusted approval job;
  • query current live check runs, preserve __typename, require actual CheckRun values, and call the helper's require-checks for CI::python, CI::rust, and CI::package with --head-sha "$PR_HEAD_SHA";
  • retain R CMD check deferral logic independently;
  • reject mixed failures, changed native/package/workflow boundaries, missing/pending/failed/stale/status-only/lookalike evidence, malformed metadata, or any classifier error;
  • keep all source handling read-only and bounded, no PR-selected build/install, no Python native stub, no token weakening, no approval or merge inside the helper.

After GREEN, run all 90 focused tests at 100% statement/branch coverage, the complete central suite, interrogate 100%, compileall, actionlint, Python 3.10 compatibility, security workflows, and exact-head review. Keep Draft, needs-revision, do-not-merge, and no auto-merge until integration and a live fast-mlsirm proof run are complete.

Copy link
Copy Markdown
Contributor Author

@jules Implement the missing production integration on current branch fix/pyo3-native-peer-gate; do not create a separate workflow-only substitute. Wire scripts/ci/python_native_extension_peer_gate.py into .github/workflows/opencode-review-dispatch.yml after the isolated pytest log and exact changed-file inventory exist. Deferral must remain non-PASS evidence and require exact-head successful trusted CheckRuns CI::python, CI::rust, and CI::package; preserve all Python coverage/docstring gates and the independent R peer gate; fail closed on mixed/native/package/lock/workflow changes or malformed/stale/status-only evidence. Add permanent ordering/ownership/exact-head workflow-contract tests, run focused/full quality and security, and keep Draft.

Copy link
Copy Markdown
Contributor Author

@opencode-agent address

Implement the committed workflow-integration RED contract on this Draft branch. Do not weaken the helper or tests. Preserve the existing R peer gate and reviewer credential chain.

The central coverage job must capture bounded combined pytest output and status, classify only the exact unchanged maturin/PyO3 module-absence collection failure, then require trusted exact-head CheckRun success for CI::python, CI::rust, CI::package, CI::gpu-smoke, and CI::fuzz. StatusContext, stale heads, lookalike workflow/check names, pending/failed/missing/malformed evidence, native-boundary changes, and mixed failures remain blocking. Emit an explicit non-success source-only deferral classification; never call it passing, never build PR-selected native code, and never auto-approve.

After GREEN, run the permanent workflow contracts, full central coverage/docstrings/actionlint/security, then replay exact current heads of fast-mlsirm #546, #549, and #550.

Copy link
Copy Markdown
Contributor Author

@opencode-agent address

A new RED trust-boundary contract is committed at 9878fe3e9db6b35d8d7274595d996b80f5faaad2. _touches_native_or_trust_boundary() currently catches requirements-ci.txt but misses direct children such as requirements/ci.txt, requirements/ci.in, and nested-service .../requirements/package.txt. Implement the minimal GREEN rule: when a safe changed path's parent directory is named requirements, direct .txt and .in children must block native peer deferral; unrelated .txt files outside that directory must remain eligible. Keep all existing lock, native, package, workflow, exact-head, and mixed-failure gates. Include the new file in 100% added-production coverage/compilation and the permanent central workflow integration. Keep Draft.

Copy link
Copy Markdown
Contributor Author

@jules Apply and remove the committed one-shot patcher scripts/ci/apply_pyo3_peer_gate_workflow_integration.py on the current branch, then run the exact verification below and commit the resulting ordinary source changes. Do not force-push, mark Ready, merge, or weaken tests.

python3 scripts/ci/apply_pyo3_peer_gate_workflow_integration.py
rm scripts/ci/apply_pyo3_peer_gate_workflow_integration.py
python3 -m coverage erase
python3 -m coverage run --branch -m pytest -q \
  tests/test_python_native_extension_peer_gate.py \
  tests/test_python_native_extension_peer_gate_nested_project.py \
  tests/test_python_native_extension_peer_gate_workflow_contract.py
python3 -m coverage report \
  --include=scripts/ci/python_native_extension_peer_gate.py \
  --show-missing --fail-under=100
python3 -m pytest -q \
  tests/test_opencode_agent_contract.py \
  tests/test_repository_branch_coverage_review_schedulers.py
python3 -m compileall -q \
  scripts/ci/python_native_extension_peer_gate.py \
  tests/test_python_native_extension_peer_gate.py \
  tests/test_python_native_extension_peer_gate_nested_project.py \
  tests/test_python_native_extension_peer_gate_workflow_contract.py

The reviewed local proof is 91 focused tests and 100% helper statement/branch coverage. The patch also removes the temporary source-snapshot workflow and the duplicate quality workflow. Keep only python-native-extension-peer-gate-quality-ci.yml, then run its actionlint/complete-suite gates on the pushed exact head.

Copy link
Copy Markdown
Contributor Author

@opencode-agent address

The branch now contains scripts/ci/apply_pyo3_peer_gate_workflow_integration.py, which is only an intermediate patch plan and is not an accepted product artifact. Apply its reviewed transformations as ordinary commits to .github/workflows/opencode-review-dispatch.yml, permanent workflow-contract tests, doctoring, and CHANGELOG; correct any integration defects found by the real suites; then delete the patcher itself. Keep tests/test_python_native_extension_peer_gate_requirements_directory.py GREEN by making direct .txt/.in children of a directory named requirements block deferral. Do not add a branch-writing workflow, trigger, compatibility stub, skipped tests, or duplicated reviewer. Run actionlint, focused/full Python 3.10/3.14, 100% production statement/branch coverage, docstrings, security/supply-chain, and keep Draft.

Copy link
Copy Markdown
Contributor Author

@jules @opencode-agent The implementation patcher remains committed at exact head e92ed9f5f3aad6f0f49744109cbf1984a71e288b and has not yet been applied. Execute python3 scripts/ci/apply_pyo3_peer_gate_workflow_integration.py, remove the patcher, run the exact 91-test/100%-coverage verification from comment 5210490512, and push one ordinary descendant commit. Do not add another workflow, force-push, mark Ready, merge, or alter protections. This is the active integration blocker for current-head OpenCode approvals in fast-mlsirm.

Copy link
Copy Markdown
Contributor Author

/oc

Complete the current Draft PR by applying the already reviewed permanent integration directly; do not add or retain another one-shot/branch-writer workflow.

  1. Run the logic represented by scripts/ci/apply_pyo3_peer_gate_workflow_integration.py against .github/workflows/opencode-review-dispatch.yml, then remove the integration script from the final tree.
  2. Preserve the bounded classifier contract: only unchanged declared maturin/PyO3 module absence during complete pytest collection may become distinct DEFERRED evidence; mixed imports, real test failures, changed native/packaging/lock/workflow surfaces, malformed logs, unsafe paths, and missing exact-head peer CheckRuns remain blockers.
  3. Require live exact-head CheckRun evidence for Python, Rust/PyO3, and package workflows before approval; a classifier result alone is never PASS.
  4. Remove duplicate or temporary integration workflow machinery that is not part of the permanent control plane. Keep only the permanent quality workflow(s) necessary to enforce the integrated contract.
  5. Run all focused peer-gate tests (including file safety, nested projects, requirements-directory cases, and workflow contracts), the complete central statement/branch coverage and docstring gates, Python 3.10/3.14 compilation, actionlint, and git diff --check.

Keep Draft until a workflow-free exact head is green. Do not build PR-selected native code in the central sandbox, alter reviewer credentials, weaken branch protection, or introduce COPILOT_GITHUB_TOKEN.

Copy link
Copy Markdown
Contributor Author

@opencode-agent address

Exact head e92ed9f5f3aad6f0f49744109cbf1984a71e288b has Python 3.10 compatibility plus Security, SAST, CodeQL, Secret Scan, OSV, Scorecard, SBOM, and Python Security green. The Python 3.14 quality gate fails only the three committed protected-workflow integration contracts (87 passed, 3 failed):

  • missing python_native_peer_check_required=0 and bounded failed-suite classifier path;
  • missing distinct ### Python native-extension source-only deferral evidence;
  • missing trusted approval enforcement for exact-head peer CheckRun evidence.

Apply the reviewed integration directly to .github/workflows/opencode-review-dispatch.yml; do not leave scripts/ci/apply_pyo3_peer_gate_workflow_integration.py or either duplicate/temporary snapshot-quality workflow in the final diff. CI must validate committed source, never rely on a one-shot source-rewriting patcher.

Preserve the existing R peer gate and reviewer credential chain. The PyO3 classifier is a non-success deferral only. Approval must query live exact-head CheckRun records and require successful CI::python, CI::rust, CI::package, CI::gpu-smoke, and CI::fuzz; reject StatusContext, stale heads, lookalikes, pending/failed/skipped/missing/malformed evidence, mixed pytest failures, and native-boundary changes. Do not build PR-selected native code or add a compatibility stub.

After direct integration, delete the patcher and temporary workflows, update permanent workflow contracts/doctoring/changelog, run Python 3.10/3.14, complete central tests, 100% production statement/branch coverage, docstrings, compilation, actionlint, security and supply-chain gates on one unchanged head. Keep Draft until GREEN.

Copy link
Copy Markdown
Contributor Author

@opencode-agent address

The branch has been reduced to a reviewable permanent-source state at exact head 0948976a88888b8a06e27b42a4689bc5b478d59a: the PR-wide source snapshot, PR-controlled integration patcher, and duplicate quality workflow have been deleted. Do not recreate any source snapshot, self-removing workflow, patch generator, branch writer, or compatibility stub.

Complete the vertical slice through ordinary reviewed commits only:

  1. Integrate scripts/ci/python_native_extension_peer_gate.py directly into the authoritative .github/workflows/opencode-review-dispatch.yml.
  2. A source-only pytest failure may become DEFERRED, never PASS, only when the bounded classifier proves complete collection failure caused exclusively by the unchanged exact dotted maturin/PyO3 module-name being unavailable.
  3. Refuse deferral when any Rust/Cargo/native crate or stub, Python packaging/build metadata, dependency lock/requirements, GitHub workflow/action, maturin metadata, unsafe path, mixed import, test/setup/teardown/internal error, crash, truncation, or malformed evidence is present.
  4. Snapshot and hash the exact project pyproject.toml and changed-file list before untrusted tests; revalidate them before classification. Support nested projects without allowing path escape, symlink substitution, or ambient working-directory drift.
  5. Emit one stable source-text-free peer-evidence marker. The final review path must then require live GraphQL CheckRun evidence on the literal current head for the repository's authoritative Python, Rust/PyO3, and package checks. Reject status contexts, stale SHA, pending/failed/skipped/cancelled checks, lookalike workflow/check names, missing or duplicate requirements, malformed GraphQL, pagination truncation, and absent workflow identity.
  6. Preserve the existing R-package peer gate independently; one deferral must not satisfy another language's evidence contract.
  7. No PR-selected native build, network access, test skip, approval, branch update, merge, release, or protection change may be introduced.
  8. Keep only .github/workflows/python-native-extension-peer-gate-quality-ci.yml as the permanent quality workflow. Expand its path filters, Python 3.10/3.14 compile/tests, complete central tests, 100% production statement/branch/docstrings, actionlint, clean-worktree checks, and immutable/hash-locked dependencies to cover all permanent helper, workflow-contract, nested-project, file-safety, requirements-directory, doctoring, and changelog files.
  9. Update APA 7 doctoring and authoritative CHANGELOG.md; remove obsolete text claiming integration remains future work.

Prove the exact fast-mlsirm._core source-only failure shape is RED on protected main, GREEN only after the ordinary integration, then rerun all current-head quality/security/supply-chain and independent-review gates. Keep Draft and merge-block labels until complete.

Copy link
Copy Markdown
Contributor Author

@opencode-agent address

Integrate the published PyO3 deferral helper into the permanent central workflow on exact current Draft head 0948976a88888b8a06e27b42a4689bc5b478d59a. Quality run 31139377250 has 87 passing focused tests and exactly three RED workflow-contract failures; Python 3.10 compatibility and all completed security/supply-chain gates are green. The helper itself is present, but .github/workflows/opencode-review-dispatch.yml still lacks the integration.

Required bounded implementation:

  1. Initialize a stable python_native_peer_check_required=0 state in the coverage measurement path. Capture every supported Python pytest/coverage command's complete bounded log and exact exit status without changing successful behavior.
  2. Only after a real Python suite failure, locate the relevant regular non-symlink pyproject.toml under the validated repository root and invoke scripts/ci/python_native_extension_peer_gate.py classify-pytest with the exact log and exact base-to-head changed-file list. Never classify setup/tool-install failures or successful runs.
  3. On successful classification, set the peer-evidence requirement and emit a distinct ### Python native-extension source-only deferral section. Do not serialize it as passing Python coverage; state that collection was deferred solely for the unchanged declared PyO3 module and still requires exact-head native peer checks.
  4. In the trusted approval phase, query live CheckRun records for the exact PR head and call the helper's require-checks path for repository-owned Python, Rust/PyO3, and package checks. Reject statuses, stale heads, pending/failed/cancelled/skipped checks, workflow/check-name lookalikes, duplicate requirements, missing/malformed evidence, and predecessor runs.
  5. Preserve the existing R source-only deferral independently. Normal Python failures, classifier rejection, changed native/Cargo/Rust/stub/packaging/lock/requirements/workflow boundaries, missing check inventory, or any peer-check failure must continue to block approval.
  6. Keep the permanent three focused suites, complete central 100% statement/branch/docstring gates, Python 3.10/3.14 compilation, actionlint, security, and clean-tree checks. Remove no RED assertion and add no branch-selected privileged execution, compatibility stub, networked PR test, generated patcher, transient workflow, reviewer credential change, model-policy change, synthesized approval, merge, release, or protection change.

Run:

python -m coverage erase
python -m coverage run -m pytest -q \
  tests/test_python_native_extension_peer_gate.py \
  tests/test_python_native_extension_peer_gate_nested_project.py \
  tests/test_python_native_extension_peer_gate_workflow_contract.py
python -m coverage report
pytest -q
python -m interrogate scripts/ci
python -m compileall -q scripts/ci tests

Then rerun exact-head CodeQL, Python Security, SAST, Security Scan, Secret Scan, OSV, Scorecard, SBOM, CodeRabbit/OpenCode/Noema. Keep Draft until the complete unchanged head is GREEN and independently approved.

Copy link
Copy Markdown
Contributor Author

Additional current-head hardening before GREEN:

  • _read_bounded_regular() currently performs is_file() / is_symlink() / stat() / read_bytes() as separate path operations. A caller-controlled path can be replaced between validation and read. Replace this with one fail-closed descriptor-bound read (os.open with O_RDONLY | O_CLOEXEC | O_NOFOLLOW where available, fstat, regular-file and size checks, bounded reads, EOF/size revalidation) and tests for post-check symlink/file replacement. Do not echo path content or exception text.
  • Bind pyproject.toml, pytest log, changed-file list, and check JSON through that same primitive. The outer workflow hash check does not remove the helper's standalone trust obligation.
  • Define rerun semantics for duplicate exact-head CheckRun records. Do not silently accept an arbitrary member. Either require exactly one authoritative workflow/check context after GraphQL normalization, or bind the accepted record to an explicit latest run/attempt identity while rejecting older, ambiguous, and status-only evidence. Add a regression proving that a stale successful run cannot authorize a current failed or pending rerun and that an obsolete failure cannot permanently block a later uniquely authoritative success.

Preserve 100% branch coverage and Python 3.10 compatibility.

Copy link
Copy Markdown
Contributor Author

@opencode-agent address

Complete the permanent integration for exact head 0948976a88888b8a06e27b42a4689bc5b478d59a through ordinary reviewed commits. Do not add a trigger, repair, materializer, self-modifying, encoded-patch, or branch-writing workflow.

Wire scripts/ci/python_native_extension_peer_gate.py into .github/workflows/opencode-review-dispatch.yml without weakening the existing source-only sandbox:

  • initialize python_native_peer_check_required=0;
  • capture the real failed pytest collection log and exact changed-file list into bounded files;
  • invoke classify-pytest only after a nonzero Python test result, with --repo-root "$COVERAGE_SOURCE_WORKDIR", the selected project --pyproject, and exact changed-file evidence;
  • allow only the helper's proven unchanged maturin/PyO3 native-module collection failure to become a distinct ### Python native-extension source-only deferral section with - Result: DEFERRED;
  • never serialize deferral as passing test evidence and never approve from the classifier alone;
  • propagate python_native_peer_check_required to the trusted approval phase;
  • query live GitHub CheckRun records at the exact PR_HEAD_SHA and require unambiguous completed-success checks for CI::python, CI::rust, and CI::package via the helper's require-checks command before approval;
  • reject statuses, stale heads, lookalikes, pending/failing/missing/duplicate evidence, and preserve the existing R CMD peer-check path;
  • keep all repository, dependency, native-source, lockfile, packaging, workflow/action, unsafe-path, symlink, hard-link, descriptor, and source-root exclusions fail closed.

Update the permanent workflow contracts, quality workflow path/test/compile coverage for every current helper/test/doctoring file, authoritative doctoring and CHANGELOG. Run Python 3.10 compatibility, Python 3.14 focused and complete tests, 100% production statement/branch/docstrings, actionlint, compilation, all security/supply-chain gates, and keep Draft until the workflow-free exact head succeeds.

Copy link
Copy Markdown
Contributor Author

/opencode

Continue directly on fix/pyo3-native-peer-gate at exact RED head 0948976a88888b8a06e27b42a4689bc5b478d59a; do not open a stacked PR, do not update main, and do not add any one-shot/self-modifying branch writer.

The helper tests pass, but the permanent workflow-contract tests correctly fail because the gate has not yet been integrated into .github/workflows/opencode-review-dispatch.yml. Apply the intended integration test-first and keep the PR Draft until the new exact head is green:

  1. In the isolated Python coverage path, initialize a distinct python_native_peer_check_required=0 state and invoke scripts/ci/python_native_extension_peer_gate.py only after a real repository Python test/collection failure. Pass the validated repository root and bounded captured pytest log; never invoke the classifier after a passing suite.
  2. Treat a successful classifier result only as ### Python native-extension source-only deferral, never as ordinary PASS. Preserve the original failure output and set the peer-evidence requirement explicitly.
  3. Before APPROVE, require live same-head successful CheckRun evidence for all repository-declared Python, Rust/PyO3, and package/build checks. Verify exact head_sha, trusted workflow/check names, completed status, success conclusion, uniqueness, and the declared maturin/PyO3 module identity. Reject status-only, stale, lookalike, duplicate, missing, pending, failed, or malformed evidence.
  4. Keep every existing no-network/no-credential sandbox boundary, exact-head materialization, unsupported/mixed failure rejection, unsafe-path rejection, source/lock/workflow-change exclusions, 100% statement/branch coverage, public docstrings, and bounded diagnostics unchanged.
  5. Do not delete or weaken tests/test_python_native_extension_peer_gate_workflow_contract.py; make its three current RED assertions pass through the canonical production integration. Keep only the permanent quality workflow already present on this branch.

Run the focused helper and workflow-contract suite first, then the complete central quality/coverage/docstring/compile/actionlint/security suite. Commit the minimal integration directly to the current branch.

Copy link
Copy Markdown
Contributor Author

@opencode-agent Complete the missing permanent workflow integration on current Draft head 0948976a88888b8a06e27b42a4689bc5b478d59a.

Exact failure evidence: quality run 31139377250, job 92745853221, has 87 passing tests and exactly three failing workflow contracts because .github/workflows/opencode-review-dispatch.yml does not yet contain python_native_peer_check_required, the distinct ### Python native-extension source-only deferral evidence marker, or exact-head Python/Rust/package CheckRun enforcement.

Implement the bounded integration directly in permanent source:

  • initialize an independent python_native_peer_check_required=0 state beside, not replacing, the existing R peer state;
  • route configured/project/root pytest coverage failures through the bounded repo-root-aware classifier only after the actual source-only pytest command fails;
  • preserve complete captured evidence; serialize a successful classifier result as DEFERRED, never PASS, with the exact distinct marker required by the permanent tests;
  • continue treating mixed imports, test/setup/teardown/internal errors, crashes, truncation, unsafe paths, changed Rust/Cargo/native/packaging/lock/workflow/maturin inputs, and malformed metadata as ordinary failures;
  • in the trusted approval phase, collect live CheckRun records for the literal current head and require exact successful CI::python, CI::rust, and CI::package evidence through python_native_extension_peer_gate.py require-checks before a deferred coverage result can authorize approval;
  • keep status-only, pending, failed, stale-head, lookalike, missing, duplicated, or malformed records fail-closed;
  • preserve the existing R deferral path independently;
  • include .github/workflows/opencode-review-dispatch.yml in the permanent quality workflow triggers and final PR diff;
  • add no patcher, temporary, self-removing, branch-writing, encoded-payload, or model-executing workflow.

Run the focused 90-test gate, complete central 100% statement/branch coverage, production docstrings, Python 3.10/3.14 compilation, actionlint, and clean-tree verification. Keep Draft; do not approve, merge, tag, release, or publish.

Copy link
Copy Markdown
Contributor Author

/oc

Complete the missing permanent workflow integration on exact head 0948976a88888b8a06e27b42a4689bc5b478d59a; the focused quality run has 87 behavior tests green and only the three intentional workflow-contract tests RED because .github/workflows/opencode-review-dispatch.yml still lacks the peer-gate path.

Directly integrate the bounded classifier and approval evidence into the permanent review workflow:

  • initialize python_native_peer_check_required=0 and related exact module/repository evidence before coverage classification;
  • invoke scripts/ci/python_native_extension_peer_gate.py only after a real complete Python collection failure, passing the bounded repository root and exact changed-path/evidence inputs;
  • serialize a distinct ### Python native-extension source-only deferral section; never convert it to ordinary PASS coverage;
  • set the peer-check-required flag only for a valid exclusive declared-module absence classified as deferred;
  • before formal approval, query live CheckRun records for the exact current head and require the configured Python, Rust/PyO3, and package workflow/check names to be completed successfully; reject stale, pending, failed, status-only, lookalike, missing, or duplicate evidence;
  • preserve every existing branch, coverage, exact-head, credential, dependency, native-fuzz, and reviewer gate, and do not build PR-selected native code in the central sandbox.

Run all five focused peer-gate test files, complete central statement/branch coverage and production docstrings, Python 3.10/3.14 compilation, actionlint, and git diff --check. Keep the ten-file permanent scope plus the required modification to .github/workflows/opencode-review-dispatch.yml; do not add helper or branch-writer workflows.

Copy link
Copy Markdown
Contributor Author

@opencode-agent address

Apply the exact-current-head integration request already specified for 0948976a88888b8a06e27b42a4689bc5b478d59a directly on fix/pyo3-native-peer-gate. The three permanent workflow-contract failures are the acceptance tests: add distinct python_native_peer_check_required=0 state, emit ### Python native-extension source-only deferral only after a real Python suite failure classified by python_native_extension_peer_gate.py, and require live exact-head successful Python + Rust/PyO3 + package CheckRun evidence before approval while preserving the independent R peer gate. Do not create another PR, temporary writer workflow, native compatibility stub, skipped test, networked PR execution, synthesized approval, or merge. Run focused contracts first, then full 100% statement/branch/docstring, Python 3.10/3.14, actionlint, and security gates; commit normal descendants to this branch and keep Draft.

@seonghobae

Copy link
Copy Markdown
Contributor Author

Resolved the exact-head Python 3.14 coverage failure: covered the negative byte-limit and rebound metadata paths, and marked only the structurally unreachable bounded-read sentinel. The focused native-peer suite is 109 passed with 100% statement/branch coverage; the new exact-head Checks are running.

@seonghobae

Copy link
Copy Markdown
Contributor Author

Correction: resolved the exact-head Python 3.14 coverage failure by covering the negative byte-limit and rebound metadata paths, with only the structurally unreachable bounded-read sentinel excluded. The focused native-peer suite is 109 passed with 100% statement and branch coverage. New exact-head Checks are running.

@seonghobae

Copy link
Copy Markdown
Contributor Author

Current head 6146bb9: fixed the remaining full-suite coverage gap by covering bounded relative requirements includes and made pinned uv installer tests portable on non-Linux development hosts while preserving Linux x86_64 runtime enforcement. Local proof: 1357 passed, 16 subtests, total 100% statement and branch coverage; Ruff and diff check pass. Please evaluate this exact head.

@opencode-agent opencode-agent Bot added area: ci-cd CI, GitHub Actions, checks, release, or supply chain priority: medium Normal-priority or P2 work status: draft Draft pull request type: feature New or expanded product capability labels Aug 22, 2026
@coderabbitai

coderabbitai Bot commented Aug 22, 2026

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 24 minutes.

View limit details

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: c17190e8-75c3-4529-a1db-65a486ecf8f0

📥 Commits

Reviewing files that changed from the base of the PR and between f1dfc2f and 31c8d20.

📒 Files selected for processing (13)
  • .github/workflows/opencode-review-dispatch.yml
  • .github/workflows/python-native-extension-peer-gate-quality-ci.yml
  • AGENTS.md
  • ARCHITECTURE.md
  • CHANGELOG.md
  • docs/doctoring/python-native-extension-peer-evidence.md
  • scripts/ci/python_native_extension_peer_gate.py
  • tests/test_opencode_agent_contract.py
  • tests/test_pr_review_autofix_nvidia_nim_contract.py
  • tests/test_python_native_extension_peer_gate.py
  • tests/test_python_native_extension_peer_gate_file_safety.py
  • tests/test_python_native_extension_peer_gate_nested_project.py
  • tests/test_python_native_extension_peer_gate_workflow_contract.py

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@seonghobae
seonghobae marked this pull request as ready for review August 23, 2026 15:58
@seonghobae

Copy link
Copy Markdown
Contributor Author

Reconciled the branch by a normal fast-forward update onto current protected main. The native peer gate is now connected to all three Python execution paths and both approval paths; current-main materializer behavior was preserved. Exact local evidence at f08e1c2: 1502 passed, 1 skipped, 16 subtests; 8607 statements and 3330 branches at 100%; scripts/ci docstrings 100%; focused native gate 109 passed with 261 statements and 116 branches at 100%; actionlint, compileall, git diff check, and CodeGraph are clean. @opencode-agent please review the exact current head.

devin-ai-integration[bot]

This comment was marked as resolved.

@seonghobae

Copy link
Copy Markdown
Contributor Author

@opencode-agent Please review exact head 861478bb11ba89f71b97dbbdd874b3d872372125. The actionable review defect is fixed at the request boundary: the PyO3 classifier now separates bounded sealed TOML bytes from canonical repository-relative path identity, and an integration regression executes the real embedded workflow command. Exact local gates: 115 focused tests with helper 272 statements/122 branches at 100%; full 1,508 passed/1 skipped/16 subtests with 8,618 statements/3,336 branches at 100%; docstrings 100%, compileall, actionlint, diff, and CodeGraph clean.

devin-ai-integration[bot]

This comment was marked as resolved.

@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 861478bb11ba89f71b97dbbdd874b3d872372125.
  • Head SHA: 861478bb11ba89f71b97dbbdd874b3d872372125
  • Workflow run: 32655009492
  • Workflow attempt: 1
Failed checks

Findings

1. HIGH .github/workflows/strix.yml:825 - 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:825 aligned with the approved model list.
  • Suggested edit: keep .github/workflows/strix.yml:825 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: #789
  • Head SHA: 861478bb11ba89f71b97dbbdd874b3d872372125
  • 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 26: Run Strix (quick) (failure)

Check annotations

  • .github:490-490 [failure] Process completed with exit code 1.
  • .github:489-489 [failure] Strix could not complete authoritative vulnerability analysis because its provider/backend was unavailable (rate limit, token cap, connection, warm-up, or model-behavior failure). See the strix-reports artifact and run log.

Failed log signal summary

strix	Run Strix (quick)	2026-08-23T16:50:36.5669609Z ^[[36;1m# LLM-backend-unavailable outcomes (GitHub Models "Too many requests"^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5680053Z ^[[36;1mbackend_unavailable_signal='RateLimitError|Too many requests\. For more on scraping GitHub|exceeded your current quota|insufficient_quota|billing details|"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|litellm(\.exceptions)?\.NotFoundError[^[:cntrl:]]*Nvidia_nimException[^[:cntrl:]]*Error code:[[:space:]]*404|Error during penetration test: loginAsGuest failed after [0-9]+ attempts: curl exit 7: curl: \(7\) Failed to connect to 127\.0\.0\.1 port 48080'^[[0m
strix	Run Strix (quick)	2026-08-23T16:52:05.9890731Z │  LLM CONNECTION FAILED                                                       │
strix	Run Strix (quick)	2026-08-23T16:52:05.9893527Z │  Error: litellm.RateLimitError: RateLimitError: Nvidia_nimException - Error  │
strix	Run Strix (quick)	2026-08-23T16:53:11.5356580Z │  LLM CONNECTION FAILED                                                       │
strix	Run Strix (quick)	2026-08-23T16:53:11.5359534Z │  Error: litellm.RateLimitError: RateLimitError: Nvidia_nimException - Error  │
strix	Run Strix (quick)	2026-08-23T16:54:16.9995655Z │  LLM CONNECTION FAILED                                                       │
strix	Run Strix (quick)	2026-08-23T16:54:16.9998637Z │  Error: litellm.RateLimitError: RateLimitError: Nvidia_nimException - Error  │
strix	Run Strix (quick)	2026-08-23T17:09:35.1190402Z Warning: You are sending unauthenticated requests to the HF Hub. Please set a HF_TOKEN to enable higher rate limits and faster downloads.
strix	Run Strix (quick)	2026-08-23T17:09:35.1659616Z Strix run emitted provider infrastructure or failure-signal output; failing closed.
strix	Run Strix (quick)	2026-08-23T17:09:35.6481637Z Strix fallback model 'nvidia_nim/nvidia/llama-3.3-nemotron-super-49b-v1.5' emitted provider infrastructure or failure-signal output; trying next configured fallback if available.
strix	Run Strix (quick)	2026-08-23T17:09:39.0642574Z │  LLM CONNECTION FAILED                                                       │
strix	Run Strix (quick)	2026-08-23T17:09:39.6328992Z Strix fallback model 'openai-direct/gpt-5.6-luna' emitted provider infrastructure or failure-signal output; trying next configured fallback if available.
strix	Run Strix (quick)	2026-08-23T17:09:39.6345530Z Strix reported zero vulnerabilities before provider infrastructure failure; failing closed because provider infrastructure failures are not clean scan evidence.
strix	Run Strix (quick)	2026-08-23T17:09:39.6526439Z ##[error]Strix could not complete authoritative vulnerability analysis because its provider/backend was unavailable (rate limit, token cap, connection, warm-up, or model-behavior failure). See the strix-reports artifact and run log.
strix	Run Strix (quick)	2026-08-23T17:09:39.6534665Z ##[error]Process completed with exit code 1.

Strix model attempt and finding summary

strix	Run Strix (quick)	2026-08-23T16:50:36.5669609Z ^[[36;1m# LLM-backend-unavailable outcomes (GitHub Models "Too many requests"^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5680053Z ^[[36;1mbackend_unavailable_signal='RateLimitError|Too many requests\. For more on scraping GitHub|exceeded your current quota|insufficient_quota|billing details|"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|litellm(\.exceptions)?\.NotFoundError[^[:cntrl:]]*Nvidia_nimException[^[:cntrl:]]*Error code:[[:space:]]*404|Error during penetration test: loginAsGuest failed after [0-9]+ attempts: curl exit 7: curl: \(7\) Failed to connect to 127\.0\.0\.1 port 48080'^[[0m
strix	Run Strix (quick)	2026-08-23T16:52:05.9890731Z │  LLM CONNECTION FAILED                                                       │
strix	Run Strix (quick)	2026-08-23T16:52:05.9893527Z │  Error: litellm.RateLimitError: RateLimitError: Nvidia_nimException - Error  │
strix	Run Strix (quick)	2026-08-23T16:52:06.0300669Z Strix run failed for model 'nvidia_nim/nvidia/nemotron-3-super-120b-a12b' after 86s (exit code 1).
strix	Run Strix (quick)	2026-08-23T16:53:11.5356580Z │  LLM CONNECTION FAILED                                                       │
strix	Run Strix (quick)	2026-08-23T16:53:11.5359534Z │  Error: litellm.RateLimitError: RateLimitError: Nvidia_nimException - Error  │
strix	Run Strix (quick)	2026-08-23T16:53:11.5772998Z Strix run failed for model 'nvidia_nim/nvidia/nemotron-3-super-120b-a12b' after 5s (exit code 1).
strix	Run Strix (quick)	2026-08-23T16:54:16.9995655Z │  LLM CONNECTION FAILED                                                       │
strix	Run Strix (quick)	2026-08-23T16:54:16.9998637Z │  Error: litellm.RateLimitError: RateLimitError: Nvidia_nimException - Error  │
strix	Run Strix (quick)	2026-08-23T16:54:17.0411200Z Strix run failed for model 'nvidia_nim/nvidia/nemotron-3-super-120b-a12b' after 6s (exit code 1).
strix	Run Strix (quick)	2026-08-23T16:54:17.4771168Z Primary model unavailable; retrying with fallback 'nvidia_nim/nvidia/llama-3.3-nemotron-super-49b-v1.5'.
strix	Run Strix (quick)	2026-08-23T17:09:35.1193323Z │  Model nvidia_nim/nvidia/llama-3.3-nemotron-super-49b-v1.5                   │
strix	Run Strix (quick)	2026-08-23T17:09:35.1193918Z │  Vulnerabilities 0                                                           │
strix	Run Strix (quick)	2026-08-23T17:09:35.1265507Z │  Vulnerabilities  0 (No exploitable vulnerabilities detected)                │
strix	Run Strix (quick)	2026-08-23T17:09:35.6481637Z Strix fallback model 'nvidia_nim/nvidia/llama-3.3-nemotron-super-49b-v1.5' emitted provider infrastructure or failure-signal output; trying next configured fallback if available.
strix	Run Strix (quick)	2026-08-23T17:09:35.6525739Z Primary model unavailable; retrying with fallback 'openai-direct/gpt-5.6-luna'.
strix	Run Strix (quick)	2026-08-23T17:09:39.0642574Z │  LLM CONNECTION FAILED                                                       │
strix	Run Strix (quick)	2026-08-23T17:09:39.1372935Z Strix run failed for model 'openai-direct/gpt-5.6-luna' after 4s (exit code 1).
strix	Run Strix (quick)	2026-08-23T17:09:39.6328992Z Strix fallback model 'openai-direct/gpt-5.6-luna' emitted provider infrastructure or failure-signal output; trying next configured fallback if available.

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

Failed log excerpt

strix	Run Strix (quick)	2026-08-23T16:50:36.5665718Z ##[group]Run budget_suffix="TIME""OUT"
strix	Run Strix (quick)	2026-08-23T16:50:36.5666086Z ^[[36;1mbudget_suffix="TIME""OUT"^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5666370Z ^[[36;1mprocess_budget_seconds="5400"^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5666654Z ^[[36;1mexport "LLM_${budget_suffix}=900"^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5666986Z ^[[36;1mexport "STRIX_MEMORY_COMPRESSOR_${budget_suffix}=300"^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5667428Z ^[[36;1mexport "STRIX_PROCESS_${budget_suffix}_SECONDS=$process_budget_seconds"^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5667851Z ^[[36;1mexport "STRIX_TOTAL_${budget_suffix}_SECONDS=5700"^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5668157Z ^[[36;1m^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5668461Z ^[[36;1m# Capture the gate exit code plus its console output. The gate returns^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5668887Z ^[[36;1m# exit 1 both for genuine blocking vulnerabilities AND for^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5669609Z ^[[36;1m# LLM-backend-unavailable outcomes (GitHub Models "Too many requests"^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5670085Z ^[[36;1m# rate limits, OpenAI quota starvation, 413 tokens_limit_reached,^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5670570Z ^[[36;1m# connection/warm-up failures, and scanner ModelBehaviorError) that^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5671037Z ^[[36;1m# could not complete a scan. Provider failure is typed infrastructure^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5671496Z ^[[36;1m# evidence, but remains non-passing because no authoritative complete^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5671869Z ^[[36;1m# vulnerability result exists.^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5672208Z ^[[36;1mstrix_run_log="$RUNNER_TEMP/strix_gate_console.log"^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5672532Z ^[[36;1mstrix_rc=0^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5672775Z ^[[36;1mset +e^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5673058Z ^[[36;1mbash "$TRUSTED_STRIX_GATE" 2>&1 | tee "$strix_run_log"^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5673387Z ^[[36;1mstrix_rc="${PIPESTATUS[0]}"^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5673647Z ^[[36;1mset -e^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5673862Z ^[[36;1m^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5674073Z ^[[36;1mif [ "$strix_rc" -eq 0 ]; then^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5674331Z ^[[36;1m  exit 0^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5674555Z ^[[36;1mfi^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5674756Z ^[[36;1m^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5675052Z ^[[36;1m# Preserve configuration failures (exit 2) and any unexpected exit^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5675507Z ^[[36;1m# code as hard failures — only the scan-failure code (1) can be an^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5675906Z ^[[36;1m# infrastructure/backend-unavailability outcome.^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5676232Z ^[[36;1mif [ "$strix_rc" -ne 1 ]; then^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5676498Z ^[[36;1m  exit "$strix_rc"^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5676731Z ^[[36;1mfi^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5676935Z ^[[36;1m^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5677229Z ^[[36;1m# Recognized signals that the LLM backend was unavailable / starved.^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5680053Z ^[[36;1mbackend_unavailable_signal='RateLimitError|Too many requests\. For more on scraping GitHub|exceeded your current quota|insufficient_quota|billing details|"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|litellm(\.exceptions)?\.NotFoundError[^[:cntrl:]]*Nvidia_nimException[^[:cntrl:]]*Error code:[[:space:]]*404|Error during penetration test: loginAsGuest failed after [0-9]+ attempts: curl exit 7: curl: \(7\) Failed to connect to 127\.0\.0\.1 port 48080'^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5682854Z ^[[36;1mmodel_behavior_error_signal='(^|[^A-Za-z0-9_])(agents|pydantic_ai|strix)(\.[A-Za-z_][A-Za-z0-9_]*)*\.ModelBehaviorError([^A-Za-z0-9_]|$)'^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5683488Z ^[[36;1m# Any evidence that a vulnerability was actually reported. Its presence^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5683956Z ^[[36;1m# forces a hard failure so real findings are NEVER downgraded. Keep the^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5684534Z ^[[36;1m# severity branch anchored away from identifiers so environment lines^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5685062Z ^[[36;1m# such as STRIX_FAIL_ON_MIN_SEVERITY do not look like findings.^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5685587Z ^[[36;1mreported_vulnerability_signal='Vulnerabilities[[:space:]]+[1-9]|(^|[^A-Za-z0-9_])severity[[:space:]]*:'^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5686032Z ^[[36;1m^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5686321Z ^[[36;1m# An earlier out-of-scope/below-threshold finding may already have^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5686747Z ^[[36;1m# been exempted by the trusted gate. Classify a later provider^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5687172Z ^[[36;1m# outage from the tail after the last continuation marker, but keep^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5687559Z ^[[36;1m# that incomplete later scan non-passing.^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5687899Z ^[[36;1mstrix_neutralization_scope_log="$strix_run_log"^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5688299Z ^[[36;1mif grep -Fq 'allowing pipeline continuation' "$strix_run_log"; then^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5688769Z ^[[36;1m  strix_neutralization_scope_log="$RUNNER_TEMP/strix_gate_console_tail.log"^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5689486Z ^[[36;1m  awk '/allowing pipeline continuation/{buf=""; next} {buf=buf $0 "\n"} END{printf "%s", buf}' \^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5689990Z ^[[36;1m    "$strix_run_log" > "$strix_neutralization_scope_log"^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5690307Z ^[[36;1mfi^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5690516Z ^[[36;1m^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5690823Z ^[[36;1m# Classify provider/backend exhaustion only when no vulnerability^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5691263Z ^[[36;1m# finding was emitted. Classification improves diagnosis; it never^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5691687Z ^[[36;1m# converts an incomplete scan into passing security evidence.^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5692160Z ^[[36;1mif ( grep -Eiq "$backend_unavailable_signal" "$strix_neutralization_scope_log" \^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5692707Z ^[[36;1m  || grep -Eq "$model_behavior_error_signal" "$strix_neutralization_scope_log" ) \^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5693242Z ^[[36;1m  && ! grep -Eiq "$reported_vulnerability_signal" "$strix_neutralization_scope_log"; then^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5694315Z ^[[36;1m  echo "::error title=STRIX_PROVIDER_UNAVAILABLE::Strix could not complete authoritative vulnerability analysis because its provider/backend was unavailable (rate limit, token cap, connection, warm-up, or model-behavior failure). See the strix-reports artifact and run log."^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5695235Z ^[[36;1m  exit "$strix_rc"^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5695477Z ^[[36;1mfi^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5695678Z ^[[36;1m^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5696149Z ^[[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-08-23T16:50:36.5696679Z ^[[36;1mexit "$strix_rc"^[[0m
strix	Run Strix (quick)	2026-08-23T16:50:36.5714998Z shell: /usr/bin/bash -e {0}
strix	Run Strix (quick)	2026-08-23T16:50:36.5715278Z env:
strix	Run Strix (quick)	2026-08-23T16:50:36.5715517Z   FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
strix	Run Strix (quick)	2026-08-23T16:50:36.5715879Z   pythonLocation: /opt/hostedtoolcache/Python/3.13.15/x64
strix	Run Strix (quick)	2026-08-23T16:50:36.5716295Z   PKG_CONFIG_PATH: /opt/hostedtoolcache/Python/3.13.15/x64/lib/pkgconfig
strix	Run Strix (quick)	2026-08-23T16:50:36.5716774Z   Python_ROOT_DIR: /opt/hostedtoolcache/Python/3.13.15/x64
strix	Run Strix (quick)	2026-08-23T16:50:36.5717147Z   Python2_ROOT_DIR: /opt/hostedtoolcache/Python/3.13.15/x64
strix	Run Strix (quick)	2026-08-23T16:50:36.5717509Z   Python3_ROOT_DIR: /opt/hostedtoolcache/Python/3.13.15/x64
strix	Run Strix (quick)	2026-08-23T16:50:36.5717873Z   LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.13.15/x64/lib
strix	Run Strix (quick)	2026-08-23T16:50:36.5718299Z   TRUSTED_STRIX_SOURCE: /home/runner/work/.github/.github/trusted-strix-source
strix	Run Strix (quick)	2026-08-23T16:50:36.5718856Z   TRUSTED_STRIX_GATE: /home/runner/work/.github/.github/trusted-strix-source/scripts/ci/strix_quick_gate.sh
strix	Run Strix (quick)	2026-08-23T16:50:36.5719681Z   TRUSTED_STRIX_GATE_TEST: /home/runner/work/.github/.github/trusted-strix-source/scripts/ci/test_strix_quick_gate.sh
strix	Run Strix (quick)	2026-08-23T16:50:36.5720402Z   TRUSTED_STRIX_REQUIRED_SMOKE: /home/runner/work/.github/.github/trusted-strix-source/scripts/ci/strix_required_workflow_smoke.sh
strix	Run Strix (quick)	2026-08-23T16:50:36.5720980Z   TRUSTED_WORKSPACE: /home/runner/work/_temp/trusted-workspace
strix	Run Strix (quick)	2026-08-23T16:50:36.5721590Z   STRIX_EXECUTABLE_PATH: /opt/hostedtoolcache/Python/3.13.15/x64/bin/strix
strix	Run Strix (quick)	2026-08-23T16:50:36.5722025Z   STRIX_EXECUTABLE_ROOT: /opt/hostedtoolcache/Python/3.13.15/x64/bin
strix	Run Strix (quick)	2026-08-23T16:50:36.5722509Z   STRIX_EXECUTABLE_SHA256: d2dd9753453674e0081508a08d869e7b629c15f11b70294b980033272734f073
strix	Run Strix (quick)	2026-08-23T16:50:36.5722961Z   LLM_API_KEY_FILE: [REDACTED]
strix	Run Strix (quick)	2026-08-23T16:50:36.5723332Z   LLM_API_BASE_FILE: /home/runner/work/_temp/llm_api_base.txt
strix	Run Strix (quick)	2026-08-23T16:50:36.5723764Z   STRIX_GITHUB_MODELS_KEY_FILE: /home/runner/work/_temp/github_models_fallback_key.txt
strix	Run Strix (quick)	2026-08-23T16:50:36.5724258Z   STRIX_GITHUB_MODELS_API_BASE_FILE: /home/runner/work/_temp/github_models_api_base.txt
strix	Run Strix (quick)	2026-08-23T16:50:36.5724689Z   STRIX_LLM_FILE: /home/runner/work/_temp/strix_llm.txt
strix	Run Strix (quick)	2026-08-23T16:50:36.5725044Z   STRIX_REPO_ROOT: /home/runner/work/_temp/trusted-workspace
strix	Run Strix (quick)	2026-08-23T16:50:36.5725386Z   STRIX_LLM_DEFAULT_PROVIDER: nvidia_nim

... truncated 310 middle log lines ...

strix	Run Strix (quick)	2026-08-23T17:09:35.1234303Z │  - **Impact**: Scripts could introduce vulnerabilities if not securely       │
strix	Run Strix (quick)	2026-08-23T17:09:35.1234966Z │  coded.                                                                      │
strix	Run Strix (quick)	2026-08-23T17:09:35.1235780Z │  - **Recommendation**: Audit scripts for secure practices and input          │
strix	Run Strix (quick)	2026-08-23T17:09:35.1236448Z │  validation.                                                                 │
strix	Run Strix (quick)	2026-08-23T17:09:35.1236961Z │                                                                              │
strix	Run Strix (quick)	2026-08-23T17:09:35.1237567Z │  ### Dependency Scanning                                                     │
strix	Run Strix (quick)	2026-08-23T17:09:35.1238225Z │  - **Finding**: No dependency scanning steps were observed in the            │
strix	Run Strix (quick)	2026-08-23T17:09:35.1238837Z │  workflows.                                                                  │
strix	Run Strix (quick)	2026-08-23T17:09:35.1239621Z │  - **Recommendation**: Integrate tools like `trivy` or `snyk` to scan for    │
strix	Run Strix (quick)	2026-08-23T17:09:35.1240322Z │  vulnerabilities in dependencies.                                            │
strix	Run Strix (quick)	2026-08-23T17:09:35.1240939Z │                                                                              │
strix	Run Strix (quick)	2026-08-23T17:09:35.1241480Z │  # Recommendations                                                           │
strix	Run Strix (quick)	2026-08-23T17:09:35.1242230Z │                                                                              │
strix	Run Strix (quick)	2026-08-23T17:09:35.1242817Z │  # Recommendations                                                           │
strix	Run Strix (quick)	2026-08-23T17:09:35.1243353Z │                                                                              │
strix	Run Strix (quick)	2026-08-23T17:09:35.1243919Z │  ## Immediate Actions                                                        │
strix	Run Strix (quick)	2026-08-23T17:09:35.1244820Z │  1. **Review Token Permissions**: Ensure all tokens (e.g.,                   │
strix	Run Strix (quick)	2026-08-23T17:09:35.1245607Z │  `PR_REVIEW_MERGE_TOKEN`, `OPENCODE_APPROVE_TOKEN`) follow the principle of  │
strix	Run Strix (quick)	2026-08-23T17:09:35.1246276Z │  least privilege.                                                            │
strix	Run Strix (quick)	2026-08-23T17:09:35.1246900Z │  2. **Validate Repository Dispatch Configuration**: Confirm that             │
strix	Run Strix (quick)	2026-08-23T17:09:35.1247659Z │  `ALLOWED_DISPATCH_ACTOR` and `ALLOWED_DISPATCH_TARGETS` are correctly set   │
strix	Run Strix (quick)	2026-08-23T17:09:35.1248370Z │  to restrict event triggers.                                                 │
strix	Run Strix (quick)	2026-08-23T17:09:35.1249068Z │  3. **Audit Custom Scripts**: Review `scripts/ci/` for secure coding         │
strix	Run Strix (quick)	2026-08-23T17:09:35.1250468Z │  practices, input validation, and error handling.                            │
strix	Run Strix (quick)	2026-08-23T17:09:35.1251109Z │                                                                              │
strix	Run Strix (quick)	2026-08-23T17:09:35.1251745Z │  ## Short-Term Actions                                                       │
strix	Run Strix (quick)	2026-08-23T17:09:35.1252403Z │  1. **Integrate Dependency Scanning**: Add steps to scan dependencies using  │
strix	Run Strix (quick)	2026-08-23T17:09:35.1253130Z │  tools like `trivy fs` or `snyk`.                                            │
strix	Run Strix (quick)	2026-08-23T17:09:35.1253824Z │  2. **Enforce Branch Protections**: Ensure default branches are dynamically  │
strix	Run Strix (quick)	2026-08-23T17:09:35.1254744Z │  determined and protected against force pushes or unauthorized changes.      │
strix	Run Strix (quick)	2026-08-23T17:09:35.1255646Z │                                                                              │
strix	Run Strix (quick)	2026-08-23T17:09:35.1256192Z │  ## Long-Term Actions                                                        │
strix	Run Strix (quick)	2026-08-23T17:09:35.1256860Z │  1. **Implement Security Gatekeeping**: Use tools to enforce security        │
strix	Run Strix (quick)	2026-08-23T17:09:35.1257532Z │  policies in CI/CD pipelines.                                                │
strix	Run Strix (quick)	2026-08-23T17:09:35.1258227Z │  2. **Regular Security Audits**: Schedule periodic reviews of workflows and  │
strix	Run Strix (quick)	2026-08-23T17:09:35.1258965Z │  scripts to address new vulnerabilities and best practices.                  │
strix	Run Strix (quick)	2026-08-23T17:09:35.1259661Z │                                                                              │
strix	Run Strix (quick)	2026-08-23T17:09:35.1260147Z │                                                                              │
strix	Run Strix (quick)	2026-08-23T17:09:35.1260772Z ╰──────────────────────────────────────────────────────────────────────────────╯
strix	Run Strix (quick)	2026-08-23T17:09:35.1261233Z 
strix	Run Strix (quick)	2026-08-23T17:09:35.1261250Z 
strix	Run Strix (quick)	2026-08-23T17:09:35.1261382Z 
strix	Run Strix (quick)	2026-08-23T17:09:35.1261675Z ╭─ STRIX ──────────────────────────────────────────────────────────────────────╮
strix	Run Strix (quick)	2026-08-23T17:09:35.1262259Z │                                                                              │
strix	Run Strix (quick)	2026-08-23T17:09:35.1263121Z │  Penetration test completed                                                  │
strix	Run Strix (quick)	2026-08-23T17:09:35.1264039Z │                                                                              │
strix	Run Strix (quick)	2026-08-23T17:09:35.1264800Z │  Target  /tmp/strix-runtime.bDXLWs/pr-scopes/strix-pr-scope.1ORE19           │
strix	Run Strix (quick)	2026-08-23T17:09:35.1265507Z │  Vulnerabilities  0 (No exploitable vulnerabilities detected)                │
strix	Run Strix (quick)	2026-08-23T17:09:35.1266122Z │                                                                              │
strix	Run Strix (quick)	2026-08-23T17:09:35.1266733Z │  Input Tokens 669.5K  ·  Output Tokens 12.8K                                 │
strix	Run Strix (quick)	2026-08-23T17:09:35.1267356Z │                                                                              │
strix	Run Strix (quick)	2026-08-23T17:09:35.1267988Z │  Output                                                                      │
strix	Run Strix (quick)	2026-08-23T17:09:35.1268721Z │  /tmp/strix-runtime.bDXLWs/scan-cwd/strix_runs/strix-pr-scope-1ore19_73c6    │
strix	Run Strix (quick)	2026-08-23T17:09:35.1269648Z │                                                                              │
strix	Run Strix (quick)	2026-08-23T17:09:35.1270359Z │  View    strix view strix-pr-scope-1ore19_73c6                               │
strix	Run Strix (quick)	2026-08-23T17:09:35.1271017Z │                                                                              │
strix	Run Strix (quick)	2026-08-23T17:09:35.1271589Z ╰──────────────────────────────────────────────────────────────────────────────╯
strix	Run Strix (quick)	2026-08-23T17:09:35.1271878Z 
strix	Run Strix (quick)	2026-08-23T17:09:35.1272104Z strix.ai  ·  docs.strix.ai  ·  discord.gg/strix-ai
strix	Run Strix (quick)	2026-08-23T17:09:35.1272377Z 
strix	Run Strix (quick)	2026-08-23T17:09:35.1659616Z Strix run emitted provider infrastructure or failure-signal output; failing closed.
strix	Run Strix (quick)	2026-08-23T17:09:35.1973547Z No Strix vulnerability report artifact was produced; log-only severity markers are incomplete evidence, so the scan is failing closed.
strix	Run Strix (quick)	2026-08-23T17:09:35.2077193Z INFO: Unable to compute PR merge base; falling back to direct base/head diff for changed file enumeration.
strix	Run Strix (quick)	2026-08-23T17:09:35.6481637Z Strix fallback model 'nvidia_nim/nvidia/llama-3.3-nemotron-super-49b-v1.5' emitted provider infrastructure or failure-signal output; trying next configured fallback if available.
strix	Run Strix (quick)	2026-08-23T17:09:35.6525739Z Primary model unavailable; retrying with fallback 'openai-direct/gpt-5.6-luna'.
strix	Run Strix (quick)	2026-08-23T17:09:39.0638961Z 
strix	Run Strix (quick)	2026-08-23T17:09:39.0639523Z 
strix	Run Strix (quick)	2026-08-23T17:09:39.0640935Z ╭─ STRIX ──────────────────────────────────────────────────────────────────────╮
strix	Run Strix (quick)	2026-08-23T17:09:39.0641752Z │                                                                              │
strix	Run Strix (quick)	2026-08-23T17:09:39.0642574Z │  LLM CONNECTION FAILED                                                       │
strix	Run Strix (quick)	2026-08-23T17:09:39.0643246Z │                                                                              │
strix	Run Strix (quick)	2026-08-23T17:09:39.0644236Z │  Could not establish connection to the language model.                       │
strix	Run Strix (quick)	2026-08-23T17:09:39.0645098Z │  Please check your configuration and try again.                              │
strix	Run Strix (quick)	2026-08-23T17:09:39.0645695Z │                                                                              │
strix	Run Strix (quick)	2026-08-23T17:09:39.0646325Z │  Error: litellm.BadRequestError: LLM Provider NOT provided. Pass in the LLM  │
strix	Run Strix (quick)	2026-08-23T17:09:39.0647037Z │  provider you are trying to call. You passed                                 │
strix	Run Strix (quick)	2026-08-23T17:09:39.0647662Z │  model=openai-direct/gpt-5.6-luna                                            │
strix	Run Strix (quick)	2026-08-23T17:09:39.0648283Z │   Pass model as E.g. For 'Huggingface' inference endpoints pass in           │
strix	Run Strix (quick)	2026-08-23T17:09:39.0648913Z │  `completion(model='huggingface/starcoder',..)` Learn more:                  │
strix	Run Strix (quick)	2026-08-23T17:09:39.0649779Z │  https://docs.litellm.ai/docs/providers                                      │
strix	Run Strix (quick)	2026-08-23T17:09:39.0650322Z │                                                                              │
strix	Run Strix (quick)	2026-08-23T17:09:39.0651001Z ╰──────────────────────────────────────────────────────────────────────────────╯
strix	Run Strix (quick)	2026-08-23T17:09:39.0651297Z 
strix	Run Strix (quick)	2026-08-23T17:09:39.1372935Z Strix run failed for model 'openai-direct/gpt-5.6-luna' after 4s (exit code 1).
strix	Run Strix (quick)	2026-08-23T17:09:39.1690933Z No Strix vulnerability report artifact was produced; log-only severity markers are incomplete evidence, so the scan is failing closed.
strix	Run Strix (quick)	2026-08-23T17:09:39.1796373Z INFO: Unable to compute PR merge base; falling back to direct base/head diff for changed file enumeration.
strix	Run Strix (quick)	2026-08-23T17:09:39.6328992Z Strix fallback model 'openai-direct/gpt-5.6-luna' emitted provider infrastructure or failure-signal output; trying next configured fallback if available.
strix	Run Strix (quick)	2026-08-23T17:09:39.6345530Z Strix reported zero vulnerabilities before provider infrastructure failure; failing closed because provider infrastructure failures are not clean scan evidence.
strix	Run Strix (quick)	2026-08-23T17:09:39.6526439Z ##[error]Strix could not complete authoritative vulnerability analysis because its provider/backend was unavailable (rate limit, token cap, connection, warm-up, or model-behavior failure). See the strix-reports artifact and run log.
strix	Run Strix (quick)	2026-08-23T17:09:39.6534665Z ##[error]Process completed with exit code 1.

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["Changed file (3 files)"]
  S2 --> I2["repository behavior"]
  I2 --> R2["Review risk: Changed file (3 files)"]
  R2 --> V2["required checks"]
  Evidence --> S3["Docs (2 files)"]
  S3 --> I3["operator or user guidance"]
  I3 --> R3["Review risk: Docs (2 files)"]
  R3 --> V3["docs review"]
  Evidence --> S4["CI script: python_native_extension_peer_gate.py"]
  S4 --> I4["review and security gate shell path"]
  I4 --> R4["Review risk: CI script: python_native_extension_peer_gate.py"]
  R4 --> V4["bash -n plus Strix self-test"]
  Evidence --> S5["Test (8 files)"]
  S5 --> I5["regression suite"]
  I5 --> R5["Review risk: Test (8 files)"]
  R5 --> V5["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 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 861478bb11ba89f71b97dbbdd874b3d872372125.
  • 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:

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["Changed file (3 files)"]
  S2 --> I2["repository behavior"]
  I2 --> R2["Review risk: Changed file (3 files)"]
  R2 --> V2["required checks"]
  Evidence --> S3["Docs (2 files)"]
  S3 --> I3["operator or user guidance"]
  I3 --> R3["Review risk: Docs (2 files)"]
  R3 --> V3["docs review"]
  Evidence --> S4["CI script: python_native_extension_peer_gate.py"]
  S4 --> I4["review and security gate shell path"]
  I4 --> R4["Review risk: CI script: python_native_extension_peer_gate.py"]
  R4 --> V4["bash -n plus Strix self-test"]
  Evidence --> S5["Test (8 files)"]
  S5 --> I5["regression suite"]
  I5 --> R5["Review risk: Test (8 files)"]
  R5 --> V5["targeted test run"]
Loading

Publish the native-extension deferral marker inside the compact coverage decision so exact-head CI::python, CI::rust, and CI::package evidence remains mandatory. Rebind the reviewed workflow blob and merge protected main without rewriting history.

Copy link
Copy Markdown
Contributor Author

Exact-head repair evidence for 31c8d207a5d5cbdde3e0ea98dcd7f50c383b6e4b (tree bf5db48a98770545c0816817f69602007deb301e; protected-main parent 0c6b9a6459c9dbdf5e23fb01df7a32a8a14964b3):

  • RED: the compact coverage decision omitted the native-extension deferral marker because it retained only content from ## Coverage Decision; the new contract failed on the predecessor.
  • Fix: serialize the peer-evidence marker inside the compact decision whenever python_native_peer_check_required=1. The trusted approval phase can therefore require exact-head CI::python, CI::rust, and CI::package again.
  • Integrity: updated REVIEW_DISPATCH_BLOB_SHA to the exact new workflow blob 4e3cf74f756dbb19c5c815556b65a24a1bd377a7; the two independent blob-pin tests remain fail closed.
  • GREEN: focused 140 tests; full 1,513 tests, 1 skipped, 16 subtests; git diff --check clean.
  • Informational threads were revalidated: --no-renames remains required for both rename sides; page-level headRefOid binds the normalized check page; the 1 MB evidence cap is a deliberate fail-closed availability bound.

Hosted exact-head workflows are queued and remain non-passing until terminal. Requesting a fresh independent formal review only after this current head.

@devin-ai-integration devin-ai-integration 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.

Devin Review found 2 new potential issues.

Open in Devin Review

Comment thread .github/workflows/opencode-review-dispatch.yml
Comment thread .github/workflows/opencode-review-dispatch.yml
@seonghobae

Copy link
Copy Markdown
Contributor Author

Exact-head review request for 31c8d207a5d5cbdde3e0ea98dcd7f50c383b6e4b over base 0c6b9a6459c9dbdf5e23fb01df7a32a8a14964b3.

Local exact-head evidence: focused PyO3/workflow regression 182 passed; full pytest 1513 passed, 1 skipped, 16 subtests; branch+statement coverage 8618/3336 at 100%; interrogate -f 100 scripts/ci 100%; changed-file Ruff, compileall, diff-check, gitleaks directory scan, and Trivy misconfig/secret scan passed. Full-repository Ruff still reports two pre-existing unused imports in files outside this PR; actionlint on the central dispatcher exceeded the local bounded wait without output and was not treated as success. Hosted exact-head required/security Checks and an independent substantive approval are still required. Please review only this exact head; do not merge or bypass protection.

@opencode-agent

Copy link
Copy Markdown
Contributor

Scheduled review-feedback autofix for this PR head.

  • Head SHA: 31c8d207a5d5cbdde3e0ea98dcd7f50c383b6e4b

@opencode-agent

Copy link
Copy Markdown
Contributor

Scheduled review-feedback autofix for this PR head.

  • Head SHA: 31c8d207a5d5cbdde3e0ea98dcd7f50c383b6e4b

@opencode-agent

Copy link
Copy Markdown
Contributor

Scheduled review-feedback autofix for this PR head.

  • Head SHA: 31c8d207a5d5cbdde3e0ea98dcd7f50c383b6e4b

@opencode-agent

Copy link
Copy Markdown
Contributor

Scheduled review-feedback autofix for this PR head.

  • Head SHA: 31c8d207a5d5cbdde3e0ea98dcd7f50c383b6e4b

@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 mergeability evidence and changed-file flow before approval, then found merge conflicts on the affected path.

Findings

1. HIGH Merge Conflict Guidance - Resolve the PR branch against the latest base branch

  • Problem: GitHub reports mergeStateStatus DIRTY for this pull request.
  • Root cause: Branch fix/pyo3-native-peer-gate cannot be merged cleanly into main; the changed-file flow below shows which review/runtime path is blocked by the conflict.
  • Fix: Merge or rebase the latest main into fix/pyo3-native-peer-gate, resolve conflict markers in the PR branch, rerun the focused checks, and push the same branch.
  • Repair commands:
gh pr checkout 789 --repo ContextualWisdomLab/.github
git fetch origin main
git merge --no-ff origin/main  # or: git rebase origin/main
git status --short
# resolve files, then git add <resolved-files>
# merge path: git commit
# rebase path: git rebase --continue
git push origin HEAD:fix/pyo3-native-peer-gate
# rebase path only: git push --force-with-lease origin HEAD:fix/pyo3-native-peer-gate
  • Regression test: Keep OpenCode approval gated on mergeability so model-output failures cannot approve a conflicted PR.

Merge Conflict Evidence Map

flowchart LR
  PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
  Evidence --> S1["Workflow (2 files)"]
  S1 --> I1["GitHub Actions review job"]
  I1 --> Conflict["Merge conflict blocks this path"]
  Conflict --> V1["actionlint plus required checks"]
  Evidence --> S2["Changed file (3 files)"]
  S2 --> I2["repository behavior"]
  I2 --> Conflict["Merge conflict blocks this path"]
  Conflict --> V2["required checks"]
  Evidence --> S3["Docs (2 files)"]
  S3 --> I3["operator or user guidance"]
  I3 --> Conflict["Merge conflict blocks this path"]
  Conflict --> V3["docs review"]
  Evidence --> S4["CI script: python_native_extension_peer_gate.py"]
  S4 --> I4["review and security gate shell path"]
  I4 --> Conflict["Merge conflict blocks this path"]
  Conflict --> V4["bash -n plus Strix self-test"]
  Evidence --> S5["Test (8 files)"]
  S5 --> I5["regression suite"]
  I5 --> Conflict["Merge conflict blocks this path"]
  Conflict --> V5["targeted test run"]
Loading
  • Result: REQUEST_CHANGES
  • Reason: mergeStateStatus is DIRTY; mergeable is CONFLICTING.
  • Head SHA: 31c8d207a5d5cbdde3e0ea98dcd7f50c383b6e4b
  • Workflow run: 32746726352
  • Workflow attempt: 1

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 --> Conflict["Merge conflict blocks this path"]
  Conflict --> V1["actionlint plus required checks"]
  Evidence --> S2["Changed file (3 files)"]
  S2 --> I2["repository behavior"]
  I2 --> Conflict["Merge conflict blocks this path"]
  Conflict --> V2["required checks"]
  Evidence --> S3["Docs (2 files)"]
  S3 --> I3["operator or user guidance"]
  I3 --> Conflict["Merge conflict blocks this path"]
  Conflict --> V3["docs review"]
  Evidence --> S4["CI script: python_native_extension_peer_gate.py"]
  S4 --> I4["review and security gate shell path"]
  I4 --> Conflict["Merge conflict blocks this path"]
  Conflict --> V4["bash -n plus Strix self-test"]
  Evidence --> S5["Test (8 files)"]
  S5 --> I5["regression suite"]
  I5 --> Conflict["Merge conflict blocks this path"]
  Conflict --> V5["targeted test run"]
Loading

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: ci-cd CI, GitHub Actions, checks, release, or supply chain priority: medium Normal-priority or P2 work status: draft Draft pull request type: feature New or expanded product capability

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant