Skip to content

fix(opencode): retain adversarial fallback scope - #1273

Open
seonghobae wants to merge 14 commits into
mainfrom
codex/pr904-current-main-replacement-20260824
Open

fix(opencode): retain adversarial fallback scope#1273
seonghobae wants to merge 14 commits into
mainfrom
codex/pr904-current-main-replacement-20260824

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 23, 2026

Copy link
Copy Markdown
Contributor

Outcome

Keeps the extracted adversarial-evidence gate and its test inside the exact central OpenCode fallback allowlist. This is a clean current-main replacement for #904 and omits its unrelated pip-lock and materializer history.

Closes #626.
Supersedes #904.

Verification

  • TDD contract failed before the allowlist change and passed after it
  • 1,393 passed, 1 skipped
  • 8,346 statements / 3,214 branches at 100% coverage
  • docstring coverage 100%
  • actionlint workflow validation passed
  • workflow shell-syntax contract passed in the full suite
  • git diff --check passed

Standards

The doctoring record cites NIST SP 800-53 Rev. 5 SA-11 and the stable OWASP Web Security Testing Guide v4.2 in APA 7th form.


Open in Devin Review

Summary by CodeRabbit

  • 버그 수정

    • 워크플로 재실행 시 현재 실행에서 생성된 커버리지 증거만 사용하도록 개선했습니다.
    • 증거가 누락되거나 만료된 경우 잘못된 결과를 사용하지 않고 전체 재실행을 안내합니다.
    • LLM SDK의 추가 타임아웃 로그 형식도 정상적인 타임아웃으로 처리합니다.
  • 문서

    • 커버리지 아티팩트 재실행 및 안전한 대체 검토 절차를 문서화했습니다.
  • 테스트

    • 아티팩트 식별, 실행 일치 여부, 누락 시 실패 처리를 검증하는 테스트를 보강했습니다.

@coderabbitai

coderabbitai Bot commented Aug 23, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

Next included review available in 38 minutes.

Check out review usage here.

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: Team

Run ID: 84f3475a-ced9-497f-abe0-79ac67205c32

📥 Commits

Reviewing files that changed from the base of the PR and between 1c312f2 and b32b74a.

📒 Files selected for processing (3)
  • .github/workflows/opencode-review-dispatch.yml
  • tests/test_opencode_agent_contract.py
  • tests/test_pr_review_autofix_nvidia_nim_contract.py

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Team

Run ID: 2610b3ac-2eb6-4075-82e8-d17ba6dfd036

📥 Commits

Reviewing files that changed from the base of the PR and between f250638 and 1c312f2.

📒 Files selected for processing (9)
  • .github/workflows/opencode-review-dispatch.yml
  • CHANGELOG.md
  • docs/doctoring/opencode-adversarial-fallback-scope.md
  • docs/doctoring/opencode-coverage-artifact-reruns.md
  • scripts/ci/strix_quick_gate.sh
  • scripts/ci/test_strix_quick_gate.sh
  • tests/test_opencode_agent_contract.py
  • tests/test_opencode_coverage_artifact_rerun_contract.py
  • tests/test_pr_review_autofix_nvidia_nim_contract.py

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

OpenCode 커버리지 소스를 현재 워크플로 시도와 아티팩트 ID에 연결합니다. 소비자는 시도 일치와 아티팩트 존재를 검증한 뒤 다운로드합니다. 관련 계약 테스트, fallback 허용 목록, Strix 검증과 문서를 갱신합니다.

Changes

OpenCode 커버리지 아티팩트 재실행

Layer / File(s) Summary
현재 시도 아티팩트 전달 및 검증
.github/workflows/opencode-review-dispatch.yml, tests/test_opencode_coverage_artifact_rerun_contract.py, docs/doctoring/opencode-coverage-artifact-reruns.md
생산자가 run_attemptartifact-id를 출력하고 시도별 이름으로 업로드합니다. 소비자는 생산자 시도와 현재 시도를 비교한 뒤 artifact-ids로 다운로드합니다. 누락, 만료, 손상 또는 이전 시도 아티팩트는 실패-폐쇄 처리합니다.
중앙 fallback 범위 계약
.github/workflows/opencode-review-dispatch.yml, docs/doctoring/opencode-adversarial-fallback-scope.md, tests/test_opencode_agent_contract.py
적대적 증거 게이트와 커버리지 아티팩트 계약 테스트를 중앙 OpenCode fallback 허용 목록과 신뢰 소스 검증에 추가합니다.
품질 게이트 정렬
scripts/ci/strix_quick_gate.sh, scripts/ci/test_strix_quick_gate.sh, CHANGELOG.md, tests/test_pr_review_autofix_nvidia_nim_contract.py
litellm.Timeout을 timeout으로 판별합니다. 현재 시도 커버리지 다운로드 단계의 계약 검증을 갱신합니다. 변경 사항과 리뷰 워크플로 기준 blob SHA를 기록합니다.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Merge Risk: ⚪ Minimal · up to 1c312

This change scopes coverage evidence to the current workflow attempt and expands the fallback allowlist for the extracted adversarial-evidence paths. The supplied contract coverage indicates stale artifacts are rejected and missing evidence fails closed, with no remaining merge-blocking risk.

Sequence Diagram(s)

sequenceDiagram
  participant coverage-source-tree
  participant upload-artifact
  participant coverage-evidence
  participant download-artifact
  coverage-source-tree->>upload-artifact: 현재 시도 이름으로 커버리지 소스 업로드
  upload-artifact-->>coverage-source-tree: artifact-id 반환
  coverage-source-tree-->>coverage-evidence: artifact-id와 run_attempt 전달
  coverage-evidence->>coverage-evidence: 현재 시도 신원 검증
  coverage-evidence->>download-artifact: artifact-ids로 다운로드
  download-artifact-->>coverage-evidence: 커버리지 소스 전달
Loading

Possibly related PRs

Suggested reviewers: claude

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Out of Scope Changes check ⚠️ Warning [ #626 ]의 allowlist 수정 외에 커버리지 아티팩트 재실행 안전성, LiteLLM timeout 분류, Strix 계약 변경, 문서 및 CHANGELOG 수정, NVIDIA NIM 리뷰 워크플로의 blob SHA 변경이 포함되었습니다. 이 변경은 제공된 직접 연결 이슈의 요구사항과 관련이 없습니다. [#626]에 필요한 allowlist 및 관련 계약 테스트 변경만 유지하세요. 커버리지 아티팩트 재실행, timeout 분류, Strix 변경, 문서와 CHANGELOG 수정, NVIDIA NIM blob SHA 갱신은 별도 PR로 분리하세요.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed 제목은 OpenCode의 adversarial fallback scope 유지라는 주요 변경을 명확하게 설명합니다.
Linked Issues check ✅ Passed PR은 [#626]의 요구사항을 충족합니다. 중앙 review-process fallback allowlist에 scripts/ci/adversarial_evidence.py와 tests/test_adversarial_evidence.py를 포함하고, 관련 계약 테스트도 갱신했습니다. fallback_changed_file_counts_as_core()를 …
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 11 functions across 4 files. (5 skipped: 4…
✨ 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 codex/pr904-current-main-replacement-20260824

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.

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 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 7bbbed45a4eeaeec6d392dab5a8fad2f82674498.
  • 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: opencode-review-dispatch.yml"]
  S1 --> I1["GitHub Actions review job"]
  I1 --> R1["Review risk: Workflow: opencode-review-dispatch.yml"]
  R1 --> V1["actionlint plus required checks"]
  Evidence --> S2["Changed file: CHANGELOG.md"]
  S2 --> I2["repository behavior"]
  I2 --> R2["Review risk: Changed file: CHANGELOG.md"]
  R2 --> V2["required checks"]
  Evidence --> S3["Docs: opencode-adversarial-fallback-scope.md"]
  S3 --> I3["operator or user guidance"]
  I3 --> R3["Review risk: Docs: opencode-adversarial-fallback-scope.md"]
  R3 --> V3["docs review"]
  Evidence --> S4["Test (2 files)"]
  S4 --> I4["regression suite"]
  I4 --> R4["Review risk: Test (2 files)"]
  R4 --> V4["targeted test run"]
Loading

@opencode-agent

opencode-agent Bot commented Aug 23, 2026

Copy link
Copy Markdown
Contributor

OpenCode Review Overview

  • Head SHA: 3ab55c3da0e9b05c6cc9e80fc3d5fe89a6f53b84
  • Workflow run: 32746545143
  • Workflow attempt: 1
  • Gate result: REQUEST_CHANGES (approval step)

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 3ab55c3da0e9b05c6cc9e80fc3d5fe89a6f53b84.
  • 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: opencode-review-dispatch.yml"]
  S1 --> I1["GitHub Actions review job"]
  I1 --> R1["Review risk: Workflow: opencode-review-dispatch.yml"]
  R1 --> V1["actionlint plus required checks"]
  Evidence --> S2["Changed file: CHANGELOG.md"]
  S2 --> I2["repository behavior"]
  I2 --> R2["Review risk: Changed file: CHANGELOG.md"]
  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 (2 files)"]
  S4 --> I4["review and security gate shell path"]
  I4 --> R4["Review risk: CI script (2 files)"]
  R4 --> V4["bash -n plus Strix self-test"]
  Evidence --> S5["Test (3 files)"]
  S5 --> I5["regression suite"]
  I5 --> R5["Review risk: Test (3 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 7bbbed45a4eeaeec6d392dab5a8fad2f82674498.
  • 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: opencode-review-dispatch.yml"]
  S1 --> I1["GitHub Actions review job"]
  I1 --> R1["Review risk: Workflow: opencode-review-dispatch.yml"]
  R1 --> V1["actionlint plus required checks"]
  Evidence --> S2["Changed file: CHANGELOG.md"]
  S2 --> I2["repository behavior"]
  I2 --> R2["Review risk: Changed file: CHANGELOG.md"]
  R2 --> V2["required checks"]
  Evidence --> S3["Docs: opencode-adversarial-fallback-scope.md"]
  S3 --> I3["operator or user guidance"]
  I3 --> R3["Review risk: Docs: opencode-adversarial-fallback-scope.md"]
  R3 --> V3["docs review"]
  Evidence --> S4["Test (2 files)"]
  S4 --> I4["regression suite"]
  I4 --> R4["Review risk: Test (2 files)"]
  R4 --> V4["targeted test run"]
Loading

@seonghobae
seonghobae enabled auto-merge (squash) August 24, 2026 03:13
devin-ai-integration[bot]

This comment was marked as resolved.

@opencode-agent
opencode-agent Bot disabled auto-merge August 24, 2026 03:24
@seonghobae
seonghobae enabled auto-merge (squash) August 24, 2026 03:43
devin-ai-integration[bot]

This comment was marked as resolved.

@seonghobae

Copy link
Copy Markdown
Contributor Author

Disposition: informational and accepted. The added classifier intentionally matches the exact bare timeout emitted by the existing self-test fixture, while the existing qualified path remains covered. No further source change is required.

@seonghobae

Copy link
Copy Markdown
Contributor Author

Disposition: informational and accepted. The added litellm.Timeout classifier intentionally matches the exact bare timeout emitted by the existing self test fixture, while the existing qualified litellm.exceptions.Timeout path remains covered. No further source change is required.

@opencode-agent
opencode-agent Bot disabled auto-merge August 24, 2026 04:26
@seonghobae
seonghobae enabled auto-merge (squash) August 24, 2026 04:45
@seonghobae

Copy link
Copy Markdown
Contributor Author

Exact-head RCA: Strix run 32688204055 checked out 9fd37e2 and completed the source scan, but NVIDIA NIM emitted provider infrastructure/failure-signal output; the fallback then used the protected-base openai-direct alias and LiteLLM rejected it before authoritative evidence. No source finding was produced. The separate scan-pr-queue run was cancelled before steps. This PR remains non-mergeable until its base/control-plane provider repair is available and fresh exact-head checks plus formal review are produced.

@seonghobae

Copy link
Copy Markdown
Contributor Author

Current-head re-review request\n\nCurrent exact head: 212d070\n\nThe previous REQUEST_CHANGES review is tied to an older Strix/provider-failure head. Current-head evidence must be re-established from this SHA; predecessor failures and approvals are not being reused. Please inspect the complete current diff and publish a substantive review after the current required Checks finish. No merge is requested until exact-head checks and independent approval are current.

@seonghobae

Copy link
Copy Markdown
Contributor Author

Exact-head formal review request for 212d070. Please inspect the complete changed-file diff, with emphasis on adversarial fallback scope and provider-failure handling. Publish a substantive Reviews API verdict tied only to this exact SHA, including security/control-plane impact, test gaps, and residual uncertainty. Do not reuse predecessor-head evidence or failed provider checks as source findings. @opencode-agent

@opencode-agent
opencode-agent Bot disabled auto-merge August 24, 2026 09:18
@seonghobae

Copy link
Copy Markdown
Contributor Author

Current-head conflict repair and verification:

  • Exact head after normal main synchronization: 3ab55c3da0e9b05c6cc9e80fc3d5fe89a6f53b84
  • Exact base: 613a33e0cb1c6db9790fae99f6253445712ac37a
  • The branch was advanced with a normal merge commit; no force-push or history rewrite was used.
  • The only merge conflict was the reviewed-workflow blob pin in tests/test_pr_review_autofix_nvidia_nim_contract.py; it now pins the actual merged workflow blob 6c4c50b11c06afba4f997ef5f9354ab4824b317b.
  • Full local test suite: 1411 passed, 1 skipped, 16 subtests passed.
  • Exact coverage: 8346 statements, 3214 branches, 100% statement/branch coverage.
  • Production docstrings: interrogate 100%.
  • Targeted contract suite: 78 passed; workflow shell syntax and git diff --check passed.
  • actionlint -shellcheck= -pyflakes= passed. The integrated local actionlint invocation with external ShellCheck exceeded the bounded 60-second diagnostic timeout, so it is not represented as a green result.

Current hosted required Checks and independent review are still pending, with no valid unresolved review threads. This PR remains WAIT_AND_REMEDIATE; no merge or bypass merge is being performed until exact-head hosted gates and substantive approval are current.

@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 3ab55c3da0e9b05c6cc9e80fc3d5fe89a6f53b84.
  • 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: opencode-review-dispatch.yml"]
  S1 --> I1["GitHub Actions review job"]
  I1 --> R1["Review risk: Workflow: opencode-review-dispatch.yml"]
  R1 --> V1["actionlint plus required checks"]
  Evidence --> S2["Changed file: CHANGELOG.md"]
  S2 --> I2["repository behavior"]
  I2 --> R2["Review risk: Changed file: CHANGELOG.md"]
  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 (2 files)"]
  S4 --> I4["review and security gate shell path"]
  I4 --> R4["Review risk: CI script (2 files)"]
  R4 --> V4["bash -n plus Strix self-test"]
  Evidence --> S5["Test (3 files)"]
  S5 --> I5["regression suite"]
  I5 --> R5["Review risk: Test (3 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 3ab55c3da0e9b05c6cc9e80fc3d5fe89a6f53b84.
  • 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: opencode-review-dispatch.yml"]
  S1 --> I1["GitHub Actions review job"]
  I1 --> R1["Review risk: Workflow: opencode-review-dispatch.yml"]
  R1 --> V1["actionlint plus required checks"]
  Evidence --> S2["Changed file: CHANGELOG.md"]
  S2 --> I2["repository behavior"]
  I2 --> R2["Review risk: Changed file: CHANGELOG.md"]
  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 (2 files)"]
  S4 --> I4["review and security gate shell path"]
  I4 --> R4["Review risk: CI script (2 files)"]
  R4 --> V4["bash -n plus Strix self-test"]
  Evidence --> S5["Test (3 files)"]
  S5 --> I5["regression suite"]
  I5 --> R5["Review risk: Test (3 files)"]
  R5 --> V5["targeted test run"]
Loading

…ain-replacement-20260824

# Conflicts:
#	CHANGELOG.md
#	tests/test_pr_review_autofix_nvidia_nim_contract.py

Copy link
Copy Markdown
Contributor Author

Resolved the stale merge conflict against main

Merged origin/main (1d8e8724) into this PR's head via a merge commit (75969016), pushed to the existing branch. This PR had already been synced to main once before (see the earlier "Current-head conflict repair" comment at 3ab55c3d), but main advanced again in the interim and reintroduced a conflict. Two files conflicted this time:

  • CHANGELOG.md — purely additive; kept both this PR's ### Fixed entries and main's newer ones.
  • tests/test_pr_review_autofix_nvidia_nim_contract.py — a self-verifying blob-hash pin (REVIEW_DISPATCH_BLOB_SHA) on .github/workflows/opencode-review-dispatch.yml, which git merge auto-merged cleanly (no textual conflict in the workflow file itself). Recomputed the pin against the actual merged blob: git hash-object .github/workflows/opencode-review-dispatch.ymld1f2b38c9ec903adcda7b2a2a9bb8e55ba34fd40, replacing both the PR's stale value and main's stale value.

Checked whether main already covers this PR's intent

  • scripts/ci/adversarial_evidence.py and tests/test_adversarial_evidence.py exist on main, but main's fallback_changed_file_allowed() in opencode-review-dispatch.yml still does not list either path — this PR's core fix (closing Central review-process fallback allowlist drift: adversarial_evidence.py missing since #555 extraction #626) is still needed and unique.
  • main's is_timeout_error() in scripts/ci/strix_quick_gate.sh only classifies litellm.exceptions.Timeout; the bare litellm.Timeout classifier this PR adds is still unique (not superseded).
  • main's coverage-source-tree/coverage-evidence jobs in opencode-review-dispatch.yml are unchanged in shape since this PR branched (same step names, same static opencode-coverage-source artifact name) — the attempt-scoped/immutable-artifact-ID rerun-safety fix this PR adds is still needed and applied cleanly.

So nothing here was superseded; the merge is a straight combination of both sides' independent additions.

Test evidence (Python 3.12 venv — this repo's actual CI target)

  • PYTHONPATH=. python -m pytest tests -q1902 passed, 1 skipped, 21 subtests passed
  • Targeted contract suite (test_opencode_coverage_artifact_rerun_contract.py, test_opencode_agent_contract.py, test_pr_review_autofix_nvidia_nim_contract.py, test_adversarial_evidence.py, test_opencode_workflow_shell_syntax.py) → 95 passed
  • coverage run -m pytest tests -q && coverage report100% total across scripts/ci/** (9,966 stmts / 3,926 branches)
  • interrogate -c pyproject.toml .PASSED (100.0%)
  • bash -n scripts/ci/strix_quick_gate.sh scripts/ci/test_strix_quick_gate.sh → clean
  • python -m py_compile on touched Python files and git diff --check → clean

(actionlint was not available in this sandbox to re-verify the workflow YAML directly; the workflow file itself merged with no textual conflict, so its content is exactly the union of both sides' edits.)


Generated by Claude Code

# Conflicts:
#	CHANGELOG.md
#	tests/test_pr_review_autofix_nvidia_nim_contract.py

Copy link
Copy Markdown
Contributor Author

Stale base resolved — merged current main

Branch was dirty against current main (base recorded here was 1d8e872). git fetch origin main && git merge --no-edit produced two conflicts:

  • CHANGELOG.md: purely additive, same "### Fixed" section location as several sibling PRs' conflicts this session — kept both sides' bullets, dropped nothing.
  • tests/test_pr_review_autofix_nvidia_nim_contract.py: the byte-for-byte REVIEW_DISPATCH_BLOB_SHA pin on .github/workflows/opencode-review-dispatch.yml (this PR touches that file too). Same situation as #1391's merge earlier this session: the workflow file itself auto-merged cleanly, so neither side's old pinned hash matched the merged content. Used the fresh git hash-object value on the merged file (254df8e0...), matching exactly what test_independent_review_agent_workflow_matches_reviewed_blob checks live.

Net diff versus current main after the merge: 9 files, 366 insertions / 6 deletions — matches this PR's own stated scope exactly.

Verified before pushing (head confirmed unchanged at 75969016 immediately prior):

  • .github/workflows/opencode-review-dispatch.yml re-parses as valid YAML; scripts/ci/strix_quick_gate.sh and scripts/ci/test_strix_quick_gate.sh pass bash -n
  • Full suite: coverage run -m pytest tests -q2766 passed, 1 skipped, 21 subtests (excluding the 2 pre-existing Python-3.11-vs-3.12+ sandbox-incompatible files, unrelated to this diff)
  • coverage report --include="scripts/ci/*"100% (12339 statements / 4992 branches)
  • interrogate --fail-under=100 scripts/ci100%
  • git diff --check — clean

Pushed non-force as 29e358ab (two-parent merge commit, 75969016..29e358ab). Fresh exact-head checks and review are now required per this repo's governance model.


Generated by Claude Code

The only conflict is REVIEW_DISPATCH_BLOB_SHA, which pins
`.github/workflows/opencode-review-dispatch.yml` byte-for-byte via
`git hash-object`. Both sides' values are correct for their own tree and wrong
for the merge:

  branch  254df8e…  == hash of the branch's copy
  main    ade10b3…  == hash of main's copy
  merged  ccc0d34…  == hash of the merged file, neither side's value

Taking either side verbatim would fail the pin, so the constant is recomputed
against the actual merged file. The accompanying semantic assertion still
holds: the merged dispatch workflow contains no `pr-review-autofix` reference.

Verified after resolution: 2895 passed, 1 skipped, coverage 100%,
interrogate 100%; zero conflict markers; `ruff check --select F821` clean.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
#1932 changed `.github/workflows/opencode-review-dispatch.yml`, which
REVIEW_DISPATCH_BLOB_SHA pins by whole-file `git hash-object`. The workflow
itself auto-merged cleanly; only the pin line conflicted, and again neither
side's value is right for the merge:

  this branch  ccc0d34…  (its own tree)
  main         26e8555…  (after #1932)
  merged       449cee2…  (recomputed)

449cee2 matches the value predicted by simulating this merge before #1932
landed, so the pin behaves exactly as expected under a base change.

Verified: 2896 passed, 1 skipped, coverage 100%, interrogate 100%; zero
conflict markers; `ruff check --select F821` clean.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Central review-process fallback allowlist drift: adversarial_evidence.py missing since #555 extraction

2 participants