fix: keep cross-repo OpenCode evidence healthy - #939
seonghobae wants to merge 35 commits into
Conversation
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Team Run ID: Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthroughOpenCode는 정확한 PR HEAD의 공식 리뷰가 있을 때만 교차 저장소 상태 공개 생략을 허용합니다. Strix는 provider 장애를 실패로 처리합니다. 필수 큐 실행은 취소하지 않습니다. 내부 PR 지침 전달과 Base requirement lock 탐색 계약을 추가했습니다. Changes보안 증거와 CI 실행 계약
Estimated code review effort: 4 (Complex) | ~45 minutes Merge Risk: 🟡 Moderate · up to The PR changes cross-repository review evidence and workflow enforcement, but the current head still permits ambiguous reviewer-author acceptance and does not reliably verify the scheduler’s cancellation setting; together with the unresolved requirements-lock discovery concern, these concrete gate and dependency-discovery risks should be fixed or explicitly accepted before merge. Possibly related PRs
Sequence Diagram(s)sequenceDiagram
participant Workflow as opencode-review-dispatch.yml
participant ReviewsAPI as GitHub Reviews API
participant StatusAPI as GitHub Status API
Workflow->>ReviewsAPI: PR_HEAD_SHA의 리뷰 조회
ReviewsAPI-->>Workflow: 공식 OpenCode 리뷰 상태 반환
Workflow->>StatusAPI: 검증된 리뷰가 있을 때 상태 공개 생략
Workflow-->>Workflow: 조회 실패 또는 불일치 시 exit 1
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
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. Comment |
|
@opencode-agent review Perform a fresh read-only semantic review of exact current head Focus on the static fixed-URL/fixed-User-Agent uv request boundary, no-proxy/no-redirect behavior, bounded download/checksum/version enforcement, and the cross-repository OpenCode App status-publication guard. Verify that optional status publication cannot substitute for exact-head formal review or weaken branch protection. Review only; do not mutate, self-approve, enable auto-merge, or merge. |
|
@coderabbitai review Please perform a fresh read-only semantic review of exact current head Focus on the new fail-closed cross-repository status guard: unavailable |
🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -euo pipefail
head_sha='f97b9a44201633d2a94bf73c6bb7fde900135553'
base_sha='6eb06cdd08c79a06f7b390069d4ffa49e2eb7dba'
repo='ContextualWisdomLab/.github'
pr_number='939'
echo '== Commit identity and ancestry =='
git cat-file -e "${head_sha}^{commit}"
git cat-file -e "${base_sha}^{commit}"
printf 'HEAD parent/base relationship: '
git merge-base --is-ancestor "$base_sha" "$head_sha" && echo yes || echo no
printf 'merge-base: '
git merge-base "$base_sha" "$head_sha"
printf 'checked-out HEAD: '
git rev-parse HEAD
echo '== Changed files and exact diff =='
git diff --name-status "$base_sha" "$head_sha"
git diff --unified=80 "$base_sha" "$head_sha" -- \
.github/workflows/opencode-review-dispatch.yml \
tests/test_opencode_agent_contract.py
echo '== Workflow outline and relevant control-flow context =='
ast-grep outline .github/workflows/opencode-review-dispatch.yml --items all || true
rg -n -C 12 --glob 'opencode-review-dispatch.yml' \
'github\.token|opencode-app|commit.status|statuses|reviews|pulls|PR_HEAD_SHA|APPROVED|CHANGES_REQUESTED|exit 1|exit 0|repository_dispatch' \
.github/workflows/opencode-review-dispatch.yml
echo '== Contract-test context =='
ast-grep outline tests/test_opencode_agent_contract.py --items all || true
rg -n -C 10 \
'github\.token|opencode-app|commit.status|statuses|reviews|PR_HEAD_SHA|APPROVED|CHANGES_REQUESTED|exit.?1|exit.?0' \
tests/test_opencode_agent_contract.py
echo '== Live PR identity, reviews, and check rollup =='
gh pr view "$pr_number" --repo "$repo" \
--json number,state,isDraft,mergeable,headRefOid,baseRefOid,reviews,statusCheckRollup \
--jq '{number,state,isDraft,mergeable,headRefOid,baseRefOid,reviews:[.reviews[]|{author:.author.login,state,commit:.commit.oid}],checks:[.statusCheckRollup[]|{name,conclusion,status,workflowName}]}'Length of output: 161212 🏁 Script executed: #!/bin/bash
set -euo pipefail
head_sha='f97b9a44201633d2a94bf73c6bb7fde900135553'
base_sha='6eb06cdd08c79a06f7b390069d4ffa49e2eb7dba'
repo='ContextualWisdomLab/.github'
pr_number='939'
echo '== Commit ancestry =='
printf 'base ancestor of head: '
git merge-base --is-ancestor "$base_sha" "$head_sha" && echo yes || echo no
printf 'merge-base: '; git merge-base "$base_sha" "$head_sha"
printf 'current checkout: '; git rev-parse HEAD
echo '== Exact changed hunks: status-publication guard =='
git diff --unified=30 "$base_sha" "$head_sha" -- .github/workflows/opencode-review-dispatch.yml |
sed -n '/Publish repository_dispatch OpenCode status/,+130p'
echo '== Exact changed hunks: regression contract =='
git diff --unified=30 "$base_sha" "$head_sha" -- tests/test_opencode_agent_contract.py |
sed -n '1,260p'
echo '== Guard source with line numbers =='
nl -ba .github/workflows/opencode-review-dispatch.yml |
sed -n '7828,7895p'
echo '== Exact-head Strix workflow runs =='
gh run list --repo "$repo" --workflow strix.yml --commit "$head_sha" --limit 20 \
--json databaseId,event,status,conclusion,headSha,url,workflowName \
--jq '.[] | {databaseId,event,status,conclusion,headSha,url,workflowName}'
echo '== Current branch-protection requirements =='
gh api "repos/${repo}/branches/main/protection" \
--jq '{required_status_checks,required_pull_request_reviews,required_linear_history,allow_force_pushes,allow_deletions}' \
|| trueLength of output: 13167 🏁 Script executed: #!/bin/bash
set -euo pipefail
repo='ContextualWisdomLab/.github'
head_sha='f97b9a44201633d2a94bf73c6bb7fde900135553'
echo '== Current exact-head Strix runs =='
gh run list --repo "$repo" --workflow strix.yml --commit "$head_sha" --limit 20 \
--json databaseId,event,status,conclusion,headSha,url,workflowName \
--jq '.[] | {databaseId,event,status,conclusion,headSha,url,workflowName}'
echo '== Branch protection: required checks and reviews =='
gh api "repos/${repo}/branches/main/protection" |
jq '{
required_status_check_contexts: (.required_status_checks.contexts // []),
strict_required_status_checks: (.required_status_checks.strict // null),
required_approving_review_count: (.required_pull_request_reviews.required_approving_review_count // 0),
dismiss_stale_reviews: (.required_pull_request_reviews.dismiss_stale_reviews // false),
require_code_owner_reviews: (.required_pull_request_reviews.require_code_owner_reviews // false),
require_last_push_approval: (.required_pull_request_reviews.require_last_push_approval // false),
enforce_admins: (.enforce_admins.enabled // false)
}'
echo '== Current live PR review and check state =='
gh pr view 939 --repo "$repo" --json headRefOid,reviews,statusCheckRollup \
--jq '{
head: .headRefOid,
reviews: [.reviews[] | {author:.author.login,state,commit:.commit.oid}],
active_or_non_success_checks: [
.statusCheckRollup[]
| select(.status != "COMPLETED" or ((.conclusion // "") | ascii_upcase | IN("SUCCESS","SKIPPED","NEUTRAL") | not))
| {name,status,conclusion,workflowName}
]
}'Length of output: 2589
I found no source-level defect in the new cross-repository status-publication guard.
The regression contract checks the required guard structure and failure path. It is static coverage. It does not execute mocked API failure or review-payload cases. Live verification is incomplete:
Therefore, the statement that all exact-head checks are terminal-success is not supported by the live data. I did not approve, merge, enable auto-merge, or modify repository state. I applied the existing exact-current-head evidence rule during this review. 🧠 Learnings used
|
|
@opencode-agent review Perform a fresh read-only semantic review of exact current head Review the fail-closed exact-head formal-review guard and the subsequent Strix outage-gate changes as one current tree. Keep source-review evidence distinct from workflow/provider evidence. Do not mutate, self-approve, enable auto-merge, dismiss reviews, weaken gates, or merge. |
|
@coderabbitai review Review exact current head |
|
Tip For best results, initiate chat on the files or code changes. 🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -euo pipefail
repo='ContextualWisdomLab/.github'
pr='939'
head='ac5665148bb113f92e97d2fc49a729bca2f050b5'
base='6eb06cdd08c79a06f7b390069d4ffa49e2eb7dba'
echo '== Exact commit identity =='
git cat-file -e "${head}^{commit}"
git cat-file -e "${base}^{commit}"
printf 'checked-out head: '; git rev-parse HEAD
printf 'base is ancestor: '; git merge-base --is-ancestor "$base" "$head" && echo yes || echo no
printf 'merge base: '; git merge-base "$base" "$head"
echo '== Changed files =='
git diff --name-status "$base" "$head"
echo '== Focused exact diff =='
git diff --unified=45 "$base" "$head" -- \
scripts/ci/materialize_base_python_requirements.py \
tests/test_trusted_uv_download_contract.py \
.github/workflows/opencode-review-dispatch.yml \
tests/test_opencode_agent_contract.py
echo '== Python module outline =='
ast-grep outline scripts/ci/materialize_base_python_requirements.py --items all || true
echo '== Trusted uv request and enforcement context =='
rg -n -C 14 --glob 'materialize_base_python_requirements.py' \
'TRUSTED_UV_DOWNLOAD|Request\(|urlopen\(|ProxyHandler|HTTPRedirectHandler|timeout|read\(|sha256|checksum|version|extract' \
scripts/ci/materialize_base_python_requirements.py
echo '== Trusted uv contract context =='
ast-grep outline tests/test_trusted_uv_download_contract.py --items all || true
rg -n -C 10 \
'Request|urlopen|User-Agent|TRUSTED_UV_DOWNLOAD|ProxyHandler|HTTPRedirectHandler|timeout|sha256|version' \
tests/test_trusted_uv_download_contract.py
echo '== Status-publication guard context =='
rg -n -C 16 --glob 'opencode-review-dispatch.yml' \
'Publish repository_dispatch OpenCode status|github\.token|opencode-app|reviews|PR_HEAD_SHA|opencode-agent|APPROVED|CHANGES_REQUESTED|exit 1|exit 0|statuses|commit.status' \
.github/workflows/opencode-review-dispatch.yml
echo '== Status-guard contract context =='
rg -n -C 10 \
'github\.token|opencode-app|reviews|PR_HEAD_SHA|opencode-agent|APPROVED|CHANGES_REQUESTED|exit.?1|exit.?0|status' \
tests/test_opencode_agent_contract.py
echo '== Live PR exact-head state =='
gh pr view "$pr" --repo "$repo" \
--json number,state,isDraft,mergeable,headRefOid,baseRefOid,reviews,statusCheckRollup \
--jq '{
number,state,isDraft,mergeable,headRefOid,baseRefOid,
reviews:[.reviews[]|{author:.author.login,state,commit:.commit.oid}],
checks:[.statusCheckRollup[]|{name,status,conclusion,workflowName,headSha}]
}'
echo '== Branch protection, if readable =='
gh api "repos/${repo}/branches/main/protection" \
--jq '{
required_status_checks: (.required_status_checks // null),
required_pull_request_reviews: (.required_pull_request_reviews // null),
enforce_admins: (.enforce_admins.enabled // null)
}' || echo 'Branch-protection query was unavailable.'Length of output: 156484 🏁 Script executed: #!/bin/bash
set -euo pipefail
head='ac5665148bb113f92e97d2fc49a729bca2f050b5'
base='6eb06cdd08c79a06f7b390069d4ffa49e2eb7dba'
echo '== Checkout and ancestry =='
printf 'checkout='; git rev-parse HEAD
printf 'merge_base='; git merge-base "$base" "$head"
printf 'base_ancestor='; git merge-base --is-ancestor "$base" "$head" && echo yes || echo no
echo '== Changed paths at exact revisions =='
git diff --name-status "$base" "$head"
echo '== Exact trusted uv diff =='
git diff --unified=25 "$base" "$head" -- \
scripts/ci/materialize_base_python_requirements.py \
tests/test_trusted_uv_download_contract.py
echo '== Exact trusted uv implementation =='
git show "${head}:scripts/ci/materialize_base_python_requirements.py" |
nl -ba |
sed -n '/TRUSTED_UV_DOWNLOAD/,/^[[:space:]]*def /p'
echo '== Exact trusted uv contract functions =='
git show "${head}:tests/test_trusted_uv_download_contract.py" |
nl -ba |
sed -n '/test_urlopen_receives_one_static_release_request/,/^[[:space:]]*def /p'
echo '== Exact status guard diff =='
git diff --unified=28 "$base" "$head" -- \
.github/workflows/opencode-review-dispatch.yml \
tests/test_opencode_agent_contract.py |
sed -n '/Publish repository_dispatch OpenCode status/,+180p'
echo '== Exact status guard implementation =='
git show "${head}:.github/workflows/opencode-review-dispatch.yml" |
nl -ba |
sed -n '7828,7918p'
echo '== Exact status guard contract =='
git show "${head}:tests/test_opencode_agent_contract.py" |
nl -ba |
sed -n '1997,2053p'Length of output: 12650 🏁 Script executed: #!/bin/bash
set -euo pipefail
head='ac5665148bb113f92e97d2fc49a729bca2f050b5'
base='6eb06cdd08c79a06f7b390069d4ffa49e2eb7dba'
numbered_range() {
start="$1"
end="$2"
awk -v start="$start" -v end="$end" 'NR >= start && NR <= end { printf "%6d %s\n", NR, $0 }'
}
echo '== Trusted uv downloader and enforcement =='
git show "${head}:scripts/ci/materialize_base_python_requirements.py" |
numbered_range 55 285
echo '== Trusted uv request contract =='
git show "${head}:tests/test_trusted_uv_download_contract.py" |
numbered_range 1 180
echo '== Exact cross-repository status guard =='
git show "${head}:.github/workflows/opencode-review-dispatch.yml" |
numbered_range 7828 7918
echo '== Exact cross-repository status contract =='
git show "${head}:tests/test_opencode_agent_contract.py" |
numbered_range 1997 2053
echo '== Strix exact diff and contracts =='
git diff --unified=30 "$base" "$head" -- \
.github/workflows/strix.yml \
tests/test_required_workflow_queue_contract.py \
tests/test_strix_nvidia_nim_not_found_fallback.pyLength of output: 48876
I found no blocking source-level defect.
Trusted
Cross-repository commit-status limitation
Strix outage gate
Live evidence
I applied the existing exact-current-head evidence rule during this review. I did not modify repository state, approve, merge, release, dismiss reviews, or change protections. 🧠 Learnings usedYou are interacting with an AI system. |
seonghobae
left a comment
There was a problem hiding this comment.
Exact-current-head read-only review request for ac5665148bb113f92e97d2fc49a729bca2f050b5 against protected main@6eb06cdd08c79a06f7b390069d4ffa49e2eb7dba.
This is now the canonical repair after closing superseded #943. Review the combined causal boundaries: fixed-origin static User-Agent for trusted uv bootstrap; proof of an exact-head formal OpenCode review before tolerating unavailable cross-repository status publication; and fail-closed Strix behavior when provider evidence is incomplete. Nine directly observed exact-head hosted workflows, including Trusted uv Materializer Quality CI, are terminal-success and no inline thread exists.
Do not transfer #943 evidence, update this branch, synthesize author approval, neutralize missing security evidence, or bypass protection.
|
Canonical exact-current-head review dispatch for Review the combined root-cause repair only: fixed-origin static Keep this request read-only. Do not update the branch, synthesize author approval, merge, release, neutralize missing security evidence, or weaken protection. @coderabbitai review |
Rate Limit Exceeded
|
|
@opencode-agent review Review exact current head |
Rate Limit Exceeded
|
|
Reviewed. CHANGELOG + APA 7th doctoring for User-Agent pin, exact-head review proof before skipping cross-repo status, and fail-closed Strix outage. Local suite 976 passed x2. Auto-merge armed. |
There was a problem hiding this comment.
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
56dbb09ec79e2d4bb2df3ef6e84edb57ecf5783e. - 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:
- Bandit (Python SAST) check run: cancelled (https://github.com/ContextualWisdomLab/.github/actions/runs/31717281512/job/94505440204)
- Close Empty PR/close-empty: CANCELLED (https://github.com/ContextualWisdomLab/.github/actions/runs/31717281675/job/94505075547)
- CodeQL PR/Detect CodeQL languages: CANCELLED (https://github.com/ContextualWisdomLab/.github/actions/runs/31717281490/job/94505075022)
- Detect CodeQL languages check run: cancelled (https://github.com/ContextualWisdomLab/.github/actions/runs/31717281490/job/94505075022)
- Detect Python check run: cancelled (https://github.com/ContextualWisdomLab/.github/actions/runs/31717281512/job/94505075009)
- OSV-Scanner PR/osv-scan / osv-scan: CANCELLED (https://github.com/ContextualWisdomLab/.github/actions/runs/31717282211/job/94505077927)
- Python 3.10 compatibility contract check run: cancelled (https://github.com/ContextualWisdomLab/.github/actions/runs/31717281517/job/94505075231)
- Python 3.14 full quality gate check run: cancelled (https://github.com/ContextualWisdomLab/.github/actions/runs/31717281517/job/94505075229)
- Python Security/Bandit (Python SAST): CANCELLED (https://github.com/ContextualWisdomLab/.github/actions/runs/31717281512/job/94505440204)
- Python Security/Detect Python: CANCELLED (https://github.com/ContextualWisdomLab/.github/actions/runs/31717281512/job/94505075009)
- Python Security/pip-audit (Python dependency audit): CANCELLED (https://github.com/ContextualWisdomLab/.github/actions/runs/31717281512/job/94505439669)
- SAST Semgrep/Semgrep (multi-language SAST): CANCELLED (https://github.com/ContextualWisdomLab/.github/actions/runs/31717281567/job/94505075405)
- SBOM Generation/generate-sbom: CANCELLED (https://github.com/ContextualWisdomLab/.github/actions/runs/31717281497/job/94505075128)
- Scorecard PR/Scorecard: CANCELLED (https://github.com/ContextualWisdomLab/.github/actions/runs/31717281508/job/94505075267)
- Scorecard check run: cancelled (https://github.com/ContextualWisdomLab/.github/actions/runs/31717281508/job/94505075267)
- Secret Scan/gitleaks (secret scan): CANCELLED (https://github.com/ContextualWisdomLab/.github/actions/runs/31717281502/job/94505074959)
- Security Scan/dependency-review: CANCELLED (https://github.com/ContextualWisdomLab/.github/actions/runs/31717281509/job/94505075237)
- Security Scan/osv-scan: CANCELLED (https://github.com/ContextualWisdomLab/.github/actions/runs/31717281509/job/94505075270)
- Security Scan/scorecard: CANCELLED (https://github.com/ContextualWisdomLab/.github/actions/runs/31717281509/job/94505075245)
- Security Scan/trivy-fs: CANCELLED (https://github.com/ContextualWisdomLab/.github/actions/runs/31717281509/job/94505075186)
- Semgrep (multi-language SAST) check run: cancelled (https://github.com/ContextualWisdomLab/.github/actions/runs/31717281567/job/94505075405)
- Strix Changed Path Quality CI/exact-head-path-policy: CANCELLED (https://github.com/ContextualWisdomLab/.github/actions/runs/31717281548/job/94505075437)
- Strix Security Scan/strix: FAILURE (https://github.com/ContextualWisdomLab/.github/actions/runs/31717281619/job/94614148699)
- Strix Security Scan/strix: failure (https://github.com/ContextualWisdomLab/.github/actions/runs/31717281619/job/94614148699)
- Trusted uv Materializer Quality CI/Python 3.10 compatibility contract: CANCELLED (https://github.com/ContextualWisdomLab/.github/actions/runs/31717281517/job/94505075231)
- Trusted uv Materializer Quality CI/Python 3.14 full quality gate: CANCELLED (https://github.com/ContextualWisdomLab/.github/actions/runs/31717281517/job/94505075229)
- close-empty check run: cancelled (https://github.com/ContextualWisdomLab/.github/actions/runs/31717281675/job/94505075547)
- coverage-source-tree check run: cancelled (https://github.com/ContextualWisdomLab/.github/actions/runs/31717281589/job/94505457265)
- dependency-review check run: cancelled (https://github.com/ContextualWisdomLab/.github/actions/runs/31717281509/job/94505075237)
- exact-head-path-policy check run: cancelled (https://github.com/ContextualWisdomLab/.github/actions/runs/31717281548/job/94505075437)
- generate-sbom check run: cancelled (https://github.com/ContextualWisdomLab/.github/actions/runs/31717281497/job/94505075128)
- gitleaks (secret scan) check run: cancelled (https://github.com/ContextualWisdomLab/.github/actions/runs/31717281502/job/94505074959)
- osv-scan / osv-scan check run: cancelled (https://github.com/ContextualWisdomLab/.github/actions/runs/31717282211/job/94505077927)
- osv-scan check run: cancelled (https://github.com/ContextualWisdomLab/.github/actions/runs/31717281509/job/94505075270)
- pip-audit (Python dependency audit) check run: cancelled (https://github.com/ContextualWisdomLab/.github/actions/runs/31717281512/job/94505439669)
- required-workflow-bootstrap check run: cancelled (https://github.com/ContextualWisdomLab/.github/actions/runs/31717281589/job/94505075947)
- scorecard check run: cancelled (https://github.com/ContextualWisdomLab/.github/actions/runs/31717281509/job/94505075245)
- trivy-fs check run: cancelled (https://github.com/ContextualWisdomLab/.github/actions/runs/31717281509/job/94505075186)
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 (2 files)"]
S2 --> I2["repository behavior"]
I2 --> R2["Review risk: Changed file (2 files)"]
R2 --> V2["required checks"]
Evidence --> S3["Docs: cross-repo-opencode-evidence.md"]
S3 --> I3["operator or user guidance"]
I3 --> R3["Review risk: Docs: cross-repo-opencode-evidence.md"]
R3 --> V3["docs review"]
Evidence --> S4["CI script: materialize_base_python_requirements.py"]
S4 --> I4["review and security gate shell path"]
I4 --> R4["Review risk: CI script: materialize_base_python_requirements.py"]
R4 --> V4["bash -n plus Strix self-test"]
Evidence --> S5["Test (5 files)"]
S5 --> I5["regression suite"]
I5 --> R5["Review risk: Test (5 files)"]
R5 --> V5["targeted test run"]
OpenCode Review Overview
|
|
@coderabbitai review current head a0b48d2, including the trusted uv bootstrap, exact-head formal-review authority, and bounded Strix sandbox-scope guidance. |
|
Fresh downstream coverage-evidence owner-path evidence from
Owner acceptance for the central lane: reproduce with an R package whose declared package imports are not present in the source-only review sandbox; classify missing unchanged dependency/runtime closure separately from a source test failure; materialize only a bounded authenticated dependency environment or emit a typed non-passing/deferred evidence state that cannot be mistaken for product test failure. Keep exact-head binding and fail closed—do not synthesize PASS from repository CI, install mutable sibling source, broaden network access, or weaken the approval prerequisite. After protected integration, rerun unchanged |
|
Fleet read-only evidence for the central workflow owner; no Fresh cross-repository observation shows a broad required-check queue, so this is now a work-conservation/runner-admission acceptance item rather than a lane-local wait:
The xtrm specimen also exposes a concrete duplicate-trigger candidate rather than just aggregate queue pressure: protected This does not by itself prove that the organization-wide 60-job ceiling is the cause. Please diagnose central admission/runner/concurrency telemetry before changing workflow semantics. Exact owner acceptance:
Current #939 head observed by fleet is |
|
Fresh downstream exact-head evidence to feed the central review/re-dispatch owner path:
Current Owner acceptance:
I left |
|
Fleet read-only owner-path evidence — do not treat this as a leaf-source failure. Downstream target: After a real source/test/docs descendant, every newly materialized exact-head hosted gate remained non-terminal on a fresh reread: tests Owner RED: an authenticated, mergeable consumer exact head can materialize all required runs yet obtain no terminal exact-head build/security evidence, so repository-local source correctness cannot advance to protected merge/release evidence. Owner GREEN acceptance: on the unchanged target SHA above, central scheduling/materialization must progress through runner assignment and exact checkout to terminal results (or a typed fail-closed infrastructure conclusion identifying the causal control-plane limitation). Preserve required checks and exact-head provenance; do not solve this with leaf no-op commits, blind reruns, gate weakening, synthetic PASS, or provider/model fallback. If the current central branch has intervened, adopt it and prove the repair with the same immutable downstream SHA before claiming the queue class fixed. |
Blocked on a policy contradiction, not a merge mechanic — not resolving it unilaterallyThis PR is The contradiction
Both sides carry contract tests asserting their version — Both failure modes are real, and today's measurements confirm bothThis is what stopped me, because the day's evidence supports each side:
Why I am not just picking oneResolving toward The likely correct answer is neither as written: cancel to protect the queue and stop a cancelled required conclusion from persisting as a false red. That is a change to the gate's semantics, not a conflict resolution. What would unblock thisA direction on one question: was the cancelled-conclusion cost accepted when the conditional landed on The other four conflicts here are mechanical and I will take them with whichever direction is chosen — including a One methodology noteI picked this PR because it measured as small: 5 conflicts, 76 conflicted lines, zero unresolved review threads. Line count turned out to be a poor proxy for difficulty — the smallest hunk in the set was the one carrying a policy decision, while a 2,900-line conflict elsewhere was mostly mechanical. Worth remembering when triaging conflicts by size. Generated by Claude Code |
Five conflicts. Main's side taken throughout, because this branch's central change — `cancel-in-progress: false` on the merge scheduler — is against a file main has since rewritten and a design main deliberately replaced: merge-base 07d9ec2 (2026-09-04) main's delta to .github/workflows/pr-review-merge-scheduler.yml: +36 / -785 the conditional came from 26cfc33, "ci(scheduler): stop required-check completion fanout" (#1840) This branch's rationale — a CANCELLED required `scan-pr-queue` stays red in the rollup after a later same-head success — is real, but #1840 is main's answer to that class and it is the newer one. The matching pins in `scripts/ci/test_strix_quick_gate.sh` and `tests/test_opencode_agent_contract.py` follow the same choice. `tests/test_required_workflow_queue_contract.py` also went to main's side: this branch's `test_close_empty_pr_metadata_lookup_retries_and_fails_open` reads `.github/workflows/close-empty-pr.yml`, which main deleted after moving that cleanup into the scheduler's existing metadata-only job — the exact change main's replacement test records. REVIEW_DISPATCH_BLOB_SHA recomputed against the merged dispatch workflow: c03c5ae… Two repairs the conflict markers did not surface: - `tests/test_opencode_agent_contract.py` — four assertions referencing `concurrency_match` auto-merged in from this branch while the block that defined that name went to main's side, leaving undefined names (caught by `ruff --select F821`). Main's version of that test ends before them, so they were removed with it. - `tests/test_required_workflow_queue_contract.py` — the automatic merge built a chimera of `test_merge_scheduler_uses_native_auto_merge_after_required_checks`: main's `def` line with this branch's body asserting `cancel-in-progress: false`. The branch does not contain that test at all (it renamed it), so no conflict was raised. Restored main's function verbatim. Verified against this branch's unmerged head, comparing failure names rather than counts — which mattered here, since a first pass showed 1 failed on both sides while having swapped which test failed: unmerged head 1 failed, 2780 passed after merge 0 failed, 2897 passed introduced: 0 fixed: 1 (test_opencode_bootstrap_required_checks_do_not_serialize_runner_waits) coverage 100%, interrogate 100%, `ruff check --select F821` clean, zero conflict markers. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
There was a problem hiding this comment.
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
0db992904dd4be91e1faae01bab3a6ff8ba01e3d. - 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:
- CodeQL PR/CodeQL compatibility analysis (actions): FAILURE (https://github.com/ContextualWisdomLab/.github/actions/runs/33999853078/job/101403887252)
- CodeQL PR/CodeQL compatibility analysis (python): FAILURE (https://github.com/ContextualWisdomLab/.github/actions/runs/33999853078/job/101403887259)
- CodeQL compatibility analysis (actions) check run: failure (https://github.com/ContextualWisdomLab/.github/actions/runs/33999853078/job/101403887252)
- CodeQL compatibility analysis (python) check run: failure (https://github.com/ContextualWisdomLab/.github/actions/runs/33999853078/job/101403887259)
- Required Noema Review/noema-review: FAILURE (https://github.com/ContextualWisdomLab/.github/actions/runs/33999851963/job/101403962593)
- Strix Security Scan/strix: FAILURE (https://github.com/ContextualWisdomLab/.github/actions/runs/33999851983/job/101403703229)
- Strix Security Scan/strix: failure (https://github.com/ContextualWisdomLab/.github/actions/runs/33999851983/job/101403703229)
- noema-review check run: failure (https://github.com/ContextualWisdomLab/.github/actions/runs/33999851963/job/101403962593)
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["Workflow: strix.yml"]
S2 --> I2["GitHub Actions review job"]
I2 --> R2["Review risk: Workflow: strix.yml"]
R2 --> V2["actionlint plus required checks"]
Evidence --> S3["Repository file: CHANGELOG.md"]
S3 --> I3["repository behavior"]
I3 --> R3["Review risk: Repository file: CHANGELOG.md"]
R3 --> V3["required checks"]
Evidence --> S4["Docs: base-requirements-lock-discovery.md (3 files)"]
S4 --> I4["operator or user guidance"]
I4 --> R4["Review risk: Docs: base-requirements-lock-discovery.md (3 files)"]
R4 --> V4["docs review"]
Evidence --> S5["CI script: strix_quick_gate.sh"]
S5 --> I5["review and security gate shell path"]
I5 --> R5["Review risk: CI script: strix_quick_gate.sh"]
R5 --> V5["bash -n plus Strix self-test"]
Evidence --> S6["CI script: test_strix_quick_gate.sh"]
S6 --> I6["review and security gate shell path"]
I6 --> R6["Review risk: CI script: test_strix_quick_gate.sh"]
R6 --> V6["bash -n plus Strix self-test"]
Evidence --> S7["Test: test_materialize_base_python_requirement_paths.py (4 files)"]
S7 --> I7["regression suite"]
I7 --> R7["Review risk: Test: test_materialize_base_python_requirement_paths.py (4 files)"]
R7 --> V7["targeted test run"]
|
Fresh production canary from Required Strix run Source inspection explains the attribution failure: Acceptance for this lane:
This is consistent with #939's existing immutable changed-file/source-material boundary and its prior rule that omitted/bounded context must not be converted into fabricated source vulnerability claims. No new PR is needed. Current #939 head is |
Production RED: Strix PR-source attribution must not reuse scan-context diffFresh protected Production canary remains Acceptance for this owner:
Keep this PR Draft until current protected-main reconciliation is done; do not duplicate the contract into #1563 or the BandScope leaf. |
|
@OpenCode repair this existing canonical PR only if Then implement the production RED from Required fix:
Run the focused RED→GREEN tests, |
|
@opencode-agent repair Repair this existing canonical PR only if First read and adopt intervening protected Production RED remains Implement one authenticated changed-file authority for merge blocking:
After reconciliation/fix, run focused Strix contracts plus the repository full Python suite with deprecations as errors, |
|
@opencode-agent repair The exact branch guard still holds at The production RED remains present on the current protected tip: Implement test-first on the reconciled current tree:
Run the focused regressions, |
|
Intervening protected-main delta arrived after the repair instruction: live |
|
@opencode-agent fix Work only on canonical PR #939, and only if First ordinary/non-force reconcile protected main into the existing branch. Preserve still-valid #939 regressions/docs; when an old overlapping code delta is already superseded by protected main, keep the newer protected implementation rather than resurrecting stale code. Do not rebase, force-push, squash-reconstruct, close, weaken gates, or self-approve. Then repair the verified Strix attribution defect test-first on the reconciled tree. Acceptance:
Run focused tests, full |
|
Control-plane correction for the preceding request: current protected |
Summary
This PR repairs central cross-repository review evidence without weakening a gate.
requirements*.txtlocks and direct.txtchildren of repository-relativerequirements/directories from the authenticated exact base commit while keeping lock validation separate from path eligibility.Existing test-first evidence
31784776654established the bounded-scope contract and passed the focused/complete central harness after repair.31787913977established the missing requirements-lock paths before repair and then passed focused validation.Downstream contradiction 1 — Inkspan #197: omitted repository-local dependency became a synthetic HIGH
Exact downstream evidence:
ContextualWisdomLab/inkspan#197exact target headb13209ff9832c6ac0c8239b29e12720a9895eab4;31906069281, attempt 2, job95151082222;office/src/inkspan_office/cli.py;Missing Safe Renderer Component Leading to Potential Office Document Rendering Vulnerabilities;ModuleNotFoundError: No module named 'inkspan_office.safe_renderer'because the bounded workspace did not contain that unchanged dependency;office/src/inkspan_office/safe_renderer.py; repository CI31906069634, Security Scan31906069670, and SAST Semgrep31906069692all succeeded.This is a central evidence contradiction: a deliberately omitted unchanged dependency was converted into a source vulnerability. Repair acceptance is a bounded trusted repository-local dependency closure from authenticated source identity, or an explicit context-insufficiency/abstention classification when scope omission prevents source-backed judgment. Do not broaden to an unbounded checkout, execute target code to discover imports, synthesize a clean result, or weaken the required gate. Add a regression shaped like
cli.py -> .safe_rendererand preserve exact-head/source provenance.Downstream contradiction 2 — Inkspan #246: scanner invented host authorization authority
Exact downstream evidence:
ContextualWisdomLab/inkspan#246predecessor target head9eebccbd95008d1ac25fec7bd730d92654d3cf07;31843901859, job94906388922;office/src/inkspan_office/safe_renderer.py;Path Traversal in write_office_document Function;base_directoryparameter.That proposed invariant conflicts with Inkspan's accepted authority boundary:
write_office_document()publishes to a caller-selected path while the embedding host owns directory authorization, tenant path isolation, quotas, retention, encryption, and distribution. Central acceptance is to provide bounded authenticated authority/context when available or abstain/classify context insufficiency when exploitability depends on an authorization boundary absent from the scanned component. Preserve detection of genuine symlink/race/extension/publication failures; do not fabricate a host policy, mutate product code to satisfy scanner-authored authority, synthesize a clean result, or weaken Strix.Downstream contradiction 3 — Inkspan #141: delegated DOCX hyperlink validation was omitted and reported as missing
Exact downstream evidence:
ContextualWisdomLab/inkspan#141exact target headd1148b4980c689e1a1a0fb6e7dc092f17ac60225;31872469049, Strix job94983150711;9244047394, digestsha256:d8252393e302cccf568d57b27bdffd7e6c86cfc55c3f10c3b3f34c0ef0d5bfbf;Missing DOCX Input Validation in Inkspan Office Renderer Leading to Potential SSRF and Data Exfiltration;safe_renderer.pylacked DOCX-specific rich-runhrefvalidation and proposed duplicating a DOCX validator in that facade;safe_renderer.pydelegates deterministic rendering torenderer.render_office_document()after facade-level cross-format safety checks;renderer.pyalready implements_validate_docx_hyperlink_target()with a 4096-character ceiling, printable-ASCII/backslash rejection, strict absolute HTTP(S) scheme/host checks, credential rejection, and invokes it from_add_docx_rich_paragraph()before creating the external relationship;31872470055, Security Scan31872470056, and SAST Semgrep31872470050all succeeded on that exact head.This is the same dependency-closure failure class as #197, but with a delegated security invariant rather than a missing import. The bounded workspace omitted the unchanged module that actually owns the validation, then the model interpreted omitted dependency context as missing product validation.
Central acceptance for this class:
safe_renderer.render_office_document -> renderer._render_docx -> _add_docx_rich_paragraph -> _validate_docx_hyperlink_target;Until this exact central contradiction is repaired and proven by downstream reruns, the affected historical Strix failures remain non-passing evidence but are not source-backed Inkspan vulnerabilities.
Current exact-head evidence
Current exact head remains
6213f1e9c64186c08cffb6df8cad1b3c6f47c2a6. Previous prose naming predecessor38cb3b9c4dd9febc475ecdc2f71c0c354032be5cas current is superseded.Fresh exact-head observations previously established Security Scan, OSV-Scanner PR, Hourly NVIDIA NIM Review Repair, Strix Changed Path Quality CI, Scorecard PR, SAST Semgrep, Secret Scan, Trusted uv Materializer Quality CI, and SBOM Generation success. Python Security and CodeQL PR were still queued at that observation and therefore non-passing. Formal review state included one current APPROVED review from
cursor; older predecessor review evidence is not transferred.Merge boundary
Live repository rules require two approving reviews, stale-review dismissal after push, latest-push approval by someone other than the pusher, and review-thread resolution. Merge only after the unchanged current head has every applicable exact-head workflow terminal-success, two qualifying independent approvals satisfying the latest-push condition, and no unresolved review thread. Do not push merely to retrigger approval, transfer predecessor evidence, weaken policy, or use administrator bypass.
Summary by CodeRabbit
버그 수정
개선
문서