fix(strix): gate dependency manifest updates - #935
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (2)
📝 WalkthroughWalkthroughStrix CI 워크플로의 변경 감시 대상에 의존성 해시 매니페스트를 추가했습니다. 매니페스트 변경 시 워크플로 재실행 경로와 파일 존재를 검증하는 테스트도 추가했습니다. ChangesStrix CI 의존성 해시
Estimated code review effort: 1 (Trivial) | ~5 minutes Possibly related PRs
Suggested reviewers: 🚥 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 Review exact current head Validate that adding |
|
@coderabbitai review Please perform a fresh read-only semantic review of exact current head Validate that the one-line trigger addition and its regression test close the executable Strix dependency-lock bypass without altering providers, credentials, permissions, immutable-source/hash enforcement, timeouts, finding semantics, or merge authority. Keep the PR Draft. This automated review is semantic evidence only and is not qualifying independent human approval or merge authority. |
🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -euo pipefail
head='401a5308932e65b0c9cf02a611b96c38a7ab5269'
base='6eb06cdd08c79a06f7b390069d4ffa49e2eb7dba'
printf '%s\n' '== Commit identity and ancestry =='
git rev-parse "$head^{commit}" "$base^{commit}"
git merge-base --is-ancestor "$base" "$head"
git rev-list --left-right --count "$base...$head"
printf '%s\n' '== Changed files and summary =='
git diff --name-status "$base" "$head"
git diff --stat "$base" "$head"
printf '%s\n' '== Complete exact diff =='
git diff --no-ext-diff --unified=80 "$base" "$head" --
printf '%s\n' '== Workflow outline and relevant content =='
ast-grep outline .github/workflows/strix.yml --items all || true
nl -ba .github/workflows/strix.yml | sed -n '1,280p'
printf '%s\n' '== Strix manifest references in workflow =='
rg -n -C 5 -F 'requirements-strix-ci-hashes.txt' .github/workflows/strix.yml
printf '%s\n' '== Changed test outline and content =='
changed_tests=$(git diff --name-only "$base" "$head" | grep -E '(^|/)(test|tests)[^/]*.*\.(py|yml|yaml)$' || true)
if [ -n "$changed_tests" ]; then
while IFS= read -r test_file; do
ast-grep outline "$test_file" --items all || true
nl -ba "$test_file" | sed -n '1,420p'
done <<< "$changed_tests"
fi
printf '%s\n' '== Existing Strix workflow test coverage =='
rg -n -C 4 'strix\.yml|requirements-strix-ci-hashes\.txt|Strix Changed Path Quality CI' \
-g '*.py' -g '*.yml' -g '*.yaml' .Length of output: 9392 🏁 Script executed: #!/bin/bash
set -euo pipefail
head='401a5308932e65b0c9cf02a611b96c38a7ab5269'
base='6eb06cdd08c79a06f7b390069d4ffa49e2eb7dba'
quality='.github/workflows/strix-changed-path-quality-ci.yml'
production='.github/workflows/strix.yml'
test_file='tests/test_strix_workflow_dependency_hashes.py'
manifest='requirements-strix-ci-hashes.txt'
printf '%s\n' '== Exact blob identities at head =='
git rev-parse "$head:$quality" "$head:$test_file" "$head:$production" "$head:$manifest"
printf '%s\n' '== Manifest consumers at head =='
git grep -n -C 4 -F "$manifest" "$head" -- . ':!tests/test_strix_workflow_dependency_hashes.py' || true
printf '%s\n' '== Production Strix workflow: trigger, permissions, checkout, installation, and execution context =='
git show "$head:$production" |
grep -n -E -C 5 \
'^(name:|on:|permissions:|concurrency:|jobs:|[[:space:]]*(uses: actions/checkout|persist-credentials:|ref:|run:|shell:|timeout-minutes:))|requirements-strix-ci-hashes\.txt|pip install|require-hashes|hash|credential|token|provider|model|STRIX_'
printf '%s\n' '== Changed quality workflow, full head content =='
git show "$head:$quality" | sed -n '1,180p'
printf '%s\n' '== Security-sensitive production Strix workflow diff =='
git diff --no-ext-diff --unified=5 "$base" "$head" -- "$production" "$manifest"
printf '%s\n' '== Quality workflow diff with zero context check =='
git diff --no-ext-diff --unified=0 "$base" "$head" -- "$quality"
printf '%s\n' '== Regression test, full head content =='
git show "$head:$test_file" | sed -n '1,220p'
printf '%s\n' '== All references to the quality workflow and manifest at head =='
git grep -n -E 'strix-changed-path-quality-ci\.yml|requirements-strix-ci-hashes\.txt' "$head" -- \
'.github' 'tests' 'scripts' 2>/dev/null || trueLength of output: 86158
I reviewed exact head The range changes only these files:
The workflow blob is The workflow change adds only the repository-root path
The new regression test verifies that the manifest exists and that the exact trigger path remains present. It protects the manifest-to-quality-gate binding. This is read-only semantic evidence only. It is not an independent human approval, merge authorization, or branch-protection result. The PR remains Draft. ✅ Action performedReview finished.
|
|
@coderabbitai review Review exact current head |
🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -euo pipefail
head='401a5308932e65b0c9cf02a611b96c38a7ab5269'
base='6eb06cdd08c79a06f7b390069d4ffa49e2eb7dba'
quality='.github/workflows/strix-changed-path-quality-ci.yml'
production='.github/workflows/strix.yml'
test_file='tests/test_strix_workflow_dependency_hashes.py'
manifest='requirements-strix-ci-hashes.txt'
printf '%s\n' '== Commit identity and ancestry =='
git rev-parse "$head^{commit}" "$base^{commit}"
git merge-base --is-ancestor "$base" "$head"
git rev-list --left-right --count "$base...$head"
printf '%s\n' '== Changed paths and complete diff =='
git diff --name-status "$base" "$head"
git diff --no-ext-diff --unified=40 "$base" "$head" --
printf '%s\n' '== Quality workflow trigger at requested head =='
git show "$head:$quality" | nl -ba | sed -n '1,180p'
printf '%s\n' '== Production workflow change check =='
git diff --no-ext-diff --exit-code "$base" "$head" -- "$production" "$manifest" || true
printf 'production_and_manifest_diff_exit=%s\n' "$?"
printf '%s\n' '== Production workflow control references at requested head =='
git show "$head:$production" |
rg -n -C 3 \
'permissions:|persist-credentials:|requirements-strix-ci-hashes\.txt|--require-hashes|timeout-minutes:|provider|credential|token|STRIX_|findings|status' || true
printf '%s\n' '== Regression test at requested head =='
git show "$head:$test_file" | nl -ba | sed -n '1,260p'
printf '%s\n' '== Relevant blob identities =='
git rev-parse "$head:$quality" "$head:$production" "$head:$test_file" "$head:$manifest"
printf '%s\n' '== GitHub check runs attached to requested head =='
gh api \
-H 'Accept: application/vnd.github+json' \
"/repos/ContextualWisdomLab/.github/commits/$head/check-runs?per_page=100" \
--jq '.check_runs[] | [.name, .status, .conclusion, .details_url] | `@tsv`' || trueLength of output: 8304 🏁 Script executed: #!/bin/bash
set -euo pipefail
head='401a5308932e65b0c9cf02a611b96c38a7ab5269'
base='6eb06cdd08c79a06f7b390069d4ffa49e2eb7dba'
quality='.github/workflows/strix-changed-path-quality-ci.yml'
production='.github/workflows/strix.yml'
test_file='tests/test_strix_workflow_dependency_hashes.py'
manifest='requirements-strix-ci-hashes.txt'
printf '%s\n' '== Full quality workflow at requested head =='
git show "$head:$quality" | sed -n '1,240p'
printf '%s\n' '== No production workflow or manifest changes in requested range =='
if git diff --quiet "$base" "$head" -- "$production" "$manifest"; then
printf '%s\n' 'confirmed: no diff'
else
printf '%s\n' 'unexpected diff:'
git diff --no-ext-diff --unified=20 "$base" "$head" -- "$production" "$manifest"
fi
printf '%s\n' '== Production workflow security and execution controls at requested head =='
git show "$head:$production" | \
grep -n -E -C 4 \
'^(name:|on:|permissions:|concurrency:|jobs:)|requirements-strix-ci-hashes\.txt|--require-hashes|persist-credentials:|timeout-minutes:|STRIX_|token|credential|provider|findings|status' \
|| true
printf '%s\n' '== Full changed regression test at requested head =='
git show "$head:$test_file" | sed -n '1,260p'
printf '%s\n' '== Exact blob identities =='
git rev-parse \
"$head:$quality" \
"$head:$production" \
"$head:$test_file" \
"$head:$manifest"
printf '%s\n' '== Workflow and manifest references at requested head =='
git grep -n -E \
'strix-changed-path-quality-ci\.yml|requirements-strix-ci-hashes\.txt' \
"$head" -- .github tests scripts 2>/dev/null || true
printf '%s\n' '== Exact-head check data, if curl is available =='
if command -v curl >/dev/null 2>&1; then
curl --fail --silent --show-error \
-H 'Accept: application/vnd.github+json' \
"https://api.github.com/repos/ContextualWisdomLab/.github/commits/$head/check-runs?per_page=100" \
| sed -n '1,260p' || true
else
printf '%s\n' 'curl is unavailable'
fiLength of output: 69917
I reviewed exact head The base is an ancestor of the head. The head is one commit ahead. The range changes only:
The quality workflow now includes: - "requirements-strix-ci-hashes.txt"in The regression test checks both conditions:
The production workflow This change does not modify Strix model or provider selection, credentials, permissions, immutable materialization, hash enforcement, production timeouts, finding semantics, status publication, or merge authority. I used the repository guidance that only successful checks on the exact current head qualify as merge evidence. The returned check data is truncated, so this review does not independently validate the complete hosted-workflow set. It is read-only semantic evidence only. It is not an independent human approval, merge authorization, or protection bypass. 🧠 Learnings used
|
|
@opencode-agent review Review exact current head |
seonghobae
left a comment
There was a problem hiding this comment.
Exact-current-head read-only review request for 401a5308932e65b0c9cf02a611b96c38a7ab5269 against protected main@6eb06cdd08c79a06f7b390069d4ffa49e2eb7dba.
The complete diff is the minimal causal repair: add requirements-strix-ci-hashes.txt to the permanent Strix quality workflow trigger and bind that path with a regression test. Directly observed exact-head quality, security, and supply-chain workflows are successful and no review thread exists. This prerequisite is required before manifest-only Dependabot updates such as #914 can produce complete Strix evidence.
Review this exact head without updating the branch, synthesizing author approval, weakening the path contract, or bypassing protection.
|
Tip For best results, initiate chat on the files or code changes. 🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -euo pipefail
repo='ContextualWisdomLab/.github'
head='401a5308932e65b0c9cf02a611b96c38a7ab5269'
base='6eb06cdd08c79a06f7b390069d4ffa49e2eb7dba'
quality='.github/workflows/strix-changed-path-quality-ci.yml'
production='.github/workflows/strix.yml'
test_file='tests/test_strix_workflow_dependency_hashes.py'
manifest='requirements-strix-ci-hashes.txt'
printf '%s\n' '== Commit identity, ancestry, and range =='
git rev-parse "$head^{commit}" "$base^{commit}"
git merge-base --is-ancestor "$base" "$head" && echo 'base_is_ancestor=true'
git rev-list --left-right --count "$base...$head"
git diff --name-status "$base" "$head"
git diff --no-ext-diff --unified=60 "$base" "$head" --
printf '%s\n' '== Quality workflow at requested head =='
git show "$head:$quality" | nl -ba | sed -n '1,220p'
printf '%s\n' '== Production workflow changes in requested range =='
if git diff --quiet "$base" "$head" -- "$production" "$manifest"; then
echo 'production_workflow_and_manifest_unchanged=true'
else
git diff --no-ext-diff --unified=60 "$base" "$head" -- "$production" "$manifest"
fi
printf '%s\n' '== Production workflow manifest consumption and controls at requested head =='
git show "$head:$production" |
rg -n -C 5 \
'requirements-strix-ci-hashes\.txt|--require-hashes|permissions:|persist-credentials:|timeout-minutes:|provider|model|credential|token|STRIX_|findings|status|checkout' \
|| true
printf '%s\n' '== Regression test at requested head =='
ast-grep outline "$test_file" --items all || true
git show "$head:$test_file" | nl -ba | sed -n '1,280p'
printf '%s\n' '== Exact relevant blobs =='
git rev-parse "$head:$quality" "$head:$production" "$head:$test_file" "$head:$manifest"
printf '%s\n' '== Exact-head GitHub check runs =='
gh api \
-H 'Accept: application/vnd.github+json' \
"/repos/$repo/commits/$head/check-runs?per_page=100" \
--paginate \
--jq '.check_runs[] | [.name, .head_sha, .status, .conclusion] | `@tsv`'Length of output: 9682 🏁 Script executed: #!/bin/bash
set -euo pipefail
repo='ContextualWisdomLab/.github'
head='401a5308932e65b0c9cf02a611b96c38a7ab5269'
base='6eb06cdd08c79a06f7b390069d4ffa49e2eb7dba'
quality='.github/workflows/strix-changed-path-quality-ci.yml'
production='.github/workflows/strix.yml'
test_file='tests/test_strix_workflow_dependency_hashes.py'
manifest='requirements-strix-ci-hashes.txt'
printf '%s\n' '== Full quality workflow at exact head =='
git show "$head:$quality" | sed -n '1,220p'
printf '%s\n' '== Production workflow and manifest diff check =='
if git diff --quiet "$base" "$head" -- "$production" "$manifest"; then
printf '%s\n' 'production_workflow_and_manifest_unchanged=true'
else
git diff --no-ext-diff --unified=60 "$base" "$head" -- "$production" "$manifest"
fi
printf '%s\n' '== Production workflow manifest execution and requested controls =='
git show "$head:$production" | grep -n -E -C 6 \
'requirements-strix-ci-hashes\.txt|--require-hashes|permissions:|persist-credentials:|timeout-minutes:|provider|model|credential|token|STRIX_|finding|status|actions/checkout|github\.event\.pull_request\.head\.sha' \
|| true
printf '%s\n' '== Regression test at exact head =='
git show "$head:$test_file" | sed -n '1,260p'
printf '%s\n' '== Relevant exact-head blob IDs =='
git rev-parse "$head:$quality" "$head:$production" "$head:$test_file" "$head:$manifest"
printf '%s\n' '== GitHub check runs on exact head =='
gh api \
-H 'Accept: application/vnd.github+json' \
"/repos/$repo/commits/$head/check-runs?per_page=100" \
--paginate \
--jq '.check_runs[] | [.name, .head_sha, .status, .conclusion] | `@tsv`' \
|| printf '%s\n' 'check_run_query_failed=true'
printf '%s\n' '== Pull request state and unresolved review-thread count, if available =='
gh api graphql \
-F owner='ContextualWisdomLab' \
-F name='.github' \
-F number=935 \
-f query='
query($owner: String!, $name: String!, $number: Int!) {
repository(owner: $owner, name: $name) {
pullRequest(number: $number) {
isDraft
mergeable
headRefOid
reviewThreads(first: 100) { nodes { isResolved } }
}
}
}' \
--jq '[.data.repository.pullRequest.isDraft, .data.repository.pullRequest.mergeable, .data.repository.pullRequest.headRefOid, ([.data.repository.pullRequest.reviewThreads.nodes[] | select(.isResolved == false)] | length)] | `@tsv`' \
|| printf '%s\n' 'pull_request_query_failed=true'Length of output: 69082
I reviewed exact head The base is an ancestor of the head. The head is one commit ahead and zero commits behind. The range changes only:
The quality workflow includes the exact repository-root path: - "requirements-strix-ci-hashes.txt"This is a literal The regression test binds the same exact path. It verifies that The production workflow Therefore, this change does not alter Strix model or provider selection, credentials, permissions, immutable materialization, hash enforcement, production timeouts, result semantics, status publication, or merge authority. The exact-head This is read-only semantic evidence. It is not independent human approval, merge authorization, or a protection bypass. 🧠 Learnings usedYou are interacting with an AI system. |
|
Exact-current-head automated review dispatch for The two-file change adds the executable Keep the exact head unchanged. Do not update the branch, synthesize author approval, weaken the trigger contract, merge, release, or bypass protection. @coderabbitai review |
Rate Limit Exceeded
|
Keep requirements-strix-ci-hashes.txt and its APA 7th decision record on the exact-head quality trigger so lock-only updates cannot skip the install contract.
|
Reviewed. Added CHANGELOG, NIST 800-161 / SLSA doctoring, and bound that doctoring path to the quality trigger. Local suite 978 passed x2. Auto-merge armed. |
Materialize a base Python lock only when every package line is an exact SHA-256 pin or a two-token relative -r/--requirement include of a candidate lock path. A lone --require-hashes directive, ./dotted paths, and -r other-hashes.txt no longer enter the trusted build context.
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
7c943f49a0f6bb93645a8c3a7402fadedcb57a94. - 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/31717709705/job/94506619431)
- Close Empty PR/close-empty: CANCELLED (https://github.com/ContextualWisdomLab/.github/actions/runs/31717709013/job/94506527810)
- CodeQL PR/Detect CodeQL languages: CANCELLED (https://github.com/ContextualWisdomLab/.github/actions/runs/31717709652/job/94506529768)
- Detect CodeQL languages check run: cancelled (https://github.com/ContextualWisdomLab/.github/actions/runs/31717709652/job/94506529768)
- Detect Python check run: cancelled (https://github.com/ContextualWisdomLab/.github/actions/runs/31717709705/job/94506529853)
- OSV-Scanner PR/osv-scan / osv-scan: CANCELLED (https://github.com/ContextualWisdomLab/.github/actions/runs/31717710258/job/94506532363)
- Python 3.10 compatibility contract check run: cancelled (https://github.com/ContextualWisdomLab/.github/actions/runs/31717709631/job/94506529929)
- Python 3.14 full quality gate check run: cancelled (https://github.com/ContextualWisdomLab/.github/actions/runs/31717709631/job/94506529893)
- Python Security/Bandit (Python SAST): CANCELLED (https://github.com/ContextualWisdomLab/.github/actions/runs/31717709705/job/94506619431)
- Python Security/Detect Python: CANCELLED (https://github.com/ContextualWisdomLab/.github/actions/runs/31717709705/job/94506529853)
- Python Security/pip-audit (Python dependency audit): CANCELLED (https://github.com/ContextualWisdomLab/.github/actions/runs/31717709705/job/94506619265)
- SAST Semgrep/Semgrep (multi-language SAST): CANCELLED (https://github.com/ContextualWisdomLab/.github/actions/runs/31717709714/job/94506530021)
- SBOM Generation/generate-sbom: CANCELLED (https://github.com/ContextualWisdomLab/.github/actions/runs/31717709667/job/94506529549)
- Scorecard PR/Scorecard: CANCELLED (https://github.com/ContextualWisdomLab/.github/actions/runs/31717709659/job/94506529851)
- Scorecard check run: cancelled (https://github.com/ContextualWisdomLab/.github/actions/runs/31717709659/job/94506529851)
- Secret Scan/gitleaks (secret scan): CANCELLED (https://github.com/ContextualWisdomLab/.github/actions/runs/31717709765/job/94506530687)
- Security Scan/dependency-review: CANCELLED (https://github.com/ContextualWisdomLab/.github/actions/runs/31717709706/job/94506530479)
- Security Scan/osv-scan: CANCELLED (https://github.com/ContextualWisdomLab/.github/actions/runs/31717709706/job/94506530453)
- Security Scan/scorecard: CANCELLED (https://github.com/ContextualWisdomLab/.github/actions/runs/31717709706/job/94506530534)
- Security Scan/trivy-fs: CANCELLED (https://github.com/ContextualWisdomLab/.github/actions/runs/31717709706/job/94506530551)
- Semgrep (multi-language SAST) check run: cancelled (https://github.com/ContextualWisdomLab/.github/actions/runs/31717709714/job/94506530021)
- Strix Changed Path Quality CI/exact-head-path-policy: CANCELLED (https://github.com/ContextualWisdomLab/.github/actions/runs/31717709585/job/94506529271)
- Trusted uv Materializer Quality CI/Python 3.10 compatibility contract: CANCELLED (https://github.com/ContextualWisdomLab/.github/actions/runs/31717709631/job/94506529929)
- Trusted uv Materializer Quality CI/Python 3.14 full quality gate: CANCELLED (https://github.com/ContextualWisdomLab/.github/actions/runs/31717709631/job/94506529893)
- close-empty check run: cancelled (https://github.com/ContextualWisdomLab/.github/actions/runs/31717709013/job/94506527810)
- coverage-source-tree check run: cancelled (https://github.com/ContextualWisdomLab/.github/actions/runs/31717709052/job/94506610554)
- dependency-review check run: cancelled (https://github.com/ContextualWisdomLab/.github/actions/runs/31717709706/job/94506530479)
- exact-head-path-policy check run: cancelled (https://github.com/ContextualWisdomLab/.github/actions/runs/31717709585/job/94506529271)
- generate-sbom check run: cancelled (https://github.com/ContextualWisdomLab/.github/actions/runs/31717709667/job/94506529549)
- gitleaks (secret scan) check run: cancelled (https://github.com/ContextualWisdomLab/.github/actions/runs/31717709765/job/94506530687)
- osv-scan / osv-scan check run: cancelled (https://github.com/ContextualWisdomLab/.github/actions/runs/31717710258/job/94506532363)
- osv-scan check run: cancelled (https://github.com/ContextualWisdomLab/.github/actions/runs/31717709706/job/94506530453)
- pip-audit (Python dependency audit) check run: cancelled (https://github.com/ContextualWisdomLab/.github/actions/runs/31717709705/job/94506619265)
- required-workflow-bootstrap check run: cancelled (https://github.com/ContextualWisdomLab/.github/actions/runs/31717709052/job/94506528525)
- scorecard check run: cancelled (https://github.com/ContextualWisdomLab/.github/actions/runs/31717709706/job/94506530534)
- trivy-fs check run: cancelled (https://github.com/ContextualWisdomLab/.github/actions/runs/31717709706/job/94506530551)
Changed-File Evidence Map
flowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Workflow: strix-changed-path-quality-ci.yml"]
S1 --> I1["GitHub Actions review job"]
I1 --> R1["Review risk: Workflow: strix-changed-path-quality-ci.yml"]
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: strix-dependency-manifest-trigger.md"]
S3 --> I3["operator or user guidance"]
I3 --> R3["Review risk: Docs: strix-dependency-manifest-trigger.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 (2 files)"]
S5 --> I5["regression suite"]
I5 --> R5["Review risk: Test (2 files)"]
R5 --> V5["targeted test run"]
OpenCode Review Overview
Pull request overviewOpenCode could not approve from deterministic current-head evidence because GitHub Checks have failed. Findings1. HIGH Current-head GitHub Checks - Fix failed required checks before approval
Failed checks:
Changed-File Evidence Mapflowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Workflow: strix-changed-path-quality-ci.yml"]
S1 --> I1["GitHub Actions review job"]
I1 --> R1["Review risk: Workflow: strix-changed-path-quality-ci.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: strix-dependency-manifest-trigger.md"]
S3 --> I3["operator or user guidance"]
I3 --> R3["Review risk: Docs: strix-dependency-manifest-trigger.md"]
R3 --> V3["docs review"]
Evidence --> S4["Test: test_strix_workflow_dependency_hashes.py"]
S4 --> I4["regression suite"]
I4 --> R4["Review risk: Test: test_strix_workflow_dependency_hashes.py"]
R4 --> V4["targeted test run"]
|
|
Returned to Draft because the exact current tree mixes the one-path Strix dependency-manifest trigger repair with an unrelated trusted-uv materializer branch. The causal change is deliberately tiny: add Rebuild from protected |
|
@coderabbitai review Review only 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'
head='76e0b30cded444dd4b14f03eda2df23d7b17164d'
base='6eb06cdd08c79a06f7b390069d4ffa49e2eb7dba'
quality='.github/workflows/strix-changed-path-quality-ci.yml'
production='.github/workflows/strix.yml'
manifest='requirements-strix-ci-hashes.txt'
printf '%s\n' '== Commit identity, ancestry, and range =='
git rev-parse "$head^{commit}" "$base^{commit}"
git merge-base --is-ancestor "$base" "$head" && echo 'base_is_ancestor=true'
git rev-list --left-right --count "$base...$head"
git diff --name-status "$base" "$head"
git diff --stat "$base" "$head"
git diff --no-ext-diff --unified=80 "$base" "$head" --
printf '%s\n' '== Quality and production workflow contents at exact head =='
git show "$head:$quality" | nl -ba | sed -n '1,260p'
git show "$head:$production" | nl -ba | sed -n '1,360p'
printf '%s\n' '== Production workflow and manifest range diff =='
if git diff --quiet "$base" "$head" -- "$production" "$manifest"; then
echo 'production_workflow_and_manifest_unchanged=true'
else
git diff --no-ext-diff --unified=80 "$base" "$head" -- "$production" "$manifest"
fi
printf '%s\n' '== Exact-head manifest consumers and trigger references =='
git grep -n -C 5 -F "$manifest" "$head" -- . ':!tests' || true
git grep -n -C 4 -E 'strix-changed-path-quality-ci\.yml|requirements-strix-ci-hashes\.txt' \
"$head" -- .github tests scripts 2>/dev/null || true
printf '%s\n' '== Changed Python and Markdown/YAML file maps =='
git diff --name-only "$base" "$head" | while IFS= read -r path; do
printf '\n-- %s --\n' "$path"
case "$path" in
*.py) ast-grep outline "$path" --items all || true ;;
esac
git show "$head:$path" | nl -ba | sed -n '1,420p'
done
printf '%s\n' '== Exact-head relevant blob identities =='
git rev-parse "$head:$quality" "$head:$production" "$head:$manifest"
git diff --name-only "$base" "$head" | while IFS= read -r path; do
git rev-parse "$head:$path"
done
printf '%s\n' '== Exact-head GitHub check runs =='
gh api \
-H 'Accept: application/vnd.github+json' \
"/repos/$repo/commits/$head/check-runs?per_page=100" \
--paginate \
--jq '.check_runs[] | [.name, .head_sha, .status, (.conclusion // "null")] | `@tsv`' \
|| echo 'check_run_query_failed=true'
printf '%s\n' '== Pull request state and unresolved thread count =='
gh api graphql \
-F owner='ContextualWisdomLab' \
-F name='.github' \
-F number=935 \
-f query='
query($owner: String!, $name: String!, $number: Int!) {
repository(owner: $owner, name: $name) {
pullRequest(number: $number) {
isDraft
mergeable
headRefOid
reviewThreads(first: 100) { nodes { isResolved } }
}
}
}' \
--jq '[.data.repository.pullRequest.isDraft, .data.repository.pullRequest.mergeable, .data.repository.pullRequest.headRefOid, ([.data.repository.pullRequest.reviewThreads.nodes[] | select(.isResolved == false)] | length)] | `@tsv`' \
|| echo 'pull_request_query_failed=true'Length of output: 28184 🏁 Script executed: #!/bin/bash
set -euo pipefail
repo='ContextualWisdomLab/.github'
head='76e0b30cded444dd4b14f03eda2df23d7b17164d'
base='6eb06cdd08c79a06f7b390069d4ffa49e2eb7dba'
quality='.github/workflows/strix-changed-path-quality-ci.yml'
production='.github/workflows/strix.yml'
manifest='requirements-strix-ci-hashes.txt'
materializer_test='tests/test_materialize_base_python_requirements.py'
strix_test='tests/test_strix_workflow_dependency_hashes.py'
printf '%s\n' '== Full quality workflow at exact head =='
git show "$head:$quality" | sed -n '1,260p'
printf '%s\n' '== Production workflow controls at exact head =='
git show "$head:$production" | grep -n -E -C 6 \
'requirements-strix-ci-hashes\.txt|--require-hashes|permissions:|persist-credentials:|timeout-minutes:|provider|model|credential|token|STRIX_|finding|status|actions/checkout|github\.event\.pull_request\.head\.sha' \
|| true
printf '%s\n' '== Production workflow and manifest range diff =='
if git diff --quiet "$base" "$head" -- "$production" "$manifest"; then
printf '%s\n' 'production_workflow_and_manifest_unchanged=true'
else
git diff --no-ext-diff --unified=80 "$base" "$head" -- "$production" "$manifest"
fi
printf '%s\n' '== Full diff for the trusted-uv test change =='
git diff --no-ext-diff --unified=50 "$base" "$head" -- "$materializer_test"
printf '%s\n' '== Related production symbols and their test call sites =='
rg -n -C 5 \
'_force_linux_x86_64_installer|def _install_trusted_uv|_install_trusted_uv\(' \
scripts tests
printf '%s\n' '== Full manifest-trigger regression test at exact head =='
git show "$head:$strix_test" | sed -n '1,220p'
printf '%s\n' '== Exact-head references to doctoring path and manifest =='
git grep -n -C 4 -E \
'strix-dependency-manifest-trigger\.md|requirements-strix-ci-hashes\.txt' \
"$head" -- .github docs tests scripts 2>/dev/null || true
printf '%s\n' '== Exact-head GitHub check runs =='
gh api \
-H 'Accept: application/vnd.github+json' \
"/repos/$repo/commits/$head/check-runs?per_page=100" \
--paginate \
--jq '.check_runs[] | [.name, .head_sha, .status, (.conclusion // "null")] | `@tsv`' \
|| printf '%s\n' 'check_run_query_failed=true'
printf '%s\n' '== Pull request state and unresolved thread count =='
gh api graphql \
-F owner='ContextualWisdomLab' \
-F name='.github' \
-F number=935 \
-f query='
query($owner: String!, $name: String!, $number: Int!) {
repository(owner: $owner, name: $name) {
pullRequest(number: $number) {
isDraft
mergeable
headRefOid
reviewThreads(first: 100) { nodes { isResolved } }
}
}
}' \
--jq '[.data.repository.pullRequest.isDraft, .data.repository.pullRequest.mergeable, .data.repository.pullRequest.headRefOid, ([.data.repository.pullRequest.reviewThreads.nodes[] | select(.isResolved == false)] | length)] | `@tsv`' \
|| printf '%s\n' 'pull_request_query_failed=true'Length of output: 110219
This test delta does not bind Please remove this trusted-uv test delta from this PR. Keep it in the authoritative trusted-uv materializer PR. This restores the stated narrow scope. The remaining Strix change is correct from source evidence:
The exact-head check evidence is not yet acceptable. This was a read-only semantic review. It is not approval, merge authorization, or a protection bypass. You are interacting with an AI system. |
|
Exact-current-head read-only review request for The bounded four-file change ensures the executable Strix hash manifest and its doctoring record cannot bypass permanent exact-head quality CI. Recheck exact path triggering, regression enforcement, unchanged model/provider/credential/permission/hash/timeout/result/file-cap/merge semantics, and removal of unrelated installer-test drift. Treat all predecessor checks/reviews as historical. Do not mutate or merge the branch. @opencode-agent review |
Rate Limit Exceeded
|
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
128e09c280f15c3b4c9be4de1a278b4b29285a05. - 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:
- Strix Security Scan/strix: FAILURE (https://github.com/ContextualWisdomLab/.github/actions/runs/31886368706/job/95016143790)
- Strix Security Scan/strix: failure (https://github.com/ContextualWisdomLab/.github/actions/runs/31886368706/job/95016143790)
Changed-File Evidence Map
flowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Workflow: strix-changed-path-quality-ci.yml"]
S1 --> I1["GitHub Actions review job"]
I1 --> R1["Review risk: Workflow: strix-changed-path-quality-ci.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: strix-dependency-manifest-trigger.md"]
S3 --> I3["operator or user guidance"]
I3 --> R3["Review risk: Docs: strix-dependency-manifest-trigger.md"]
R3 --> V3["docs review"]
Evidence --> S4["Test: test_strix_workflow_dependency_hashes.py"]
S4 --> I4["regression suite"]
I4 --> R4["Review risk: Test: test_strix_workflow_dependency_hashes.py"]
R4 --> V4["targeted test run"]
Problem and root cause
The central Strix dependency lock
requirements-strix-ci-hashes.txtis executable supply-chain input for.github/workflows/strix.yml, but the permanentStrix Changed Path Quality CIpull-request path filter did not include it. Manifest-only dependency PRs could therefore receive generic security checks without running the Strix policy, installation, shell-regression, and full-suite contract.The immediate cause was an incomplete trigger list. The systemic cause was that the existing dependency-hash regression guarded inline quality dependencies but did not bind the production Strix manifest and its doctoring record to the quality workflow.
Exact identity and bounded scope
main@6eb06cdd08c79a06f7b390069d4ffa49e2eb7dba;401a5308932e65b0c9cf02a611b96c38a7ab5269;128e09c280f15c3b4c9be4de1a278b4b29285a05;A later update introduced an unrelated trusted-lock installer-test change. A non-destructive forward cleanup restores that test to protected-main content while retaining the legitimate manifest/doctoring trigger contract. No force-push, rebase, history rewrite, predecessor evidence transfer, or gate weakening was used.
Every check, review, approval, or generated merge result bound to an earlier head is historical only. Current-head evidence must regenerate.
Test-first repair
The RED contract
test_strix_workflow_reruns_when_dependency_manifest_changesfailed on the unchanged workflow because the root manifest trigger was absent. The production repair adds the exact root manifest path and its APA 7 doctoring record to the existing quality trigger; the contract prevents either from drifting out of scope.The bounded change does not alter the Strix model, provider, credentials, permissions, immutable-source materialization, hash enforcement, production timeouts, result semantics, file cap, or merge authority.
Verification posture
The predecessor bounded tree completed focused contracts, the complete repository suite, exact 100% owned production statement/branch coverage, the Strix quick gate, compilation, shell syntax, and diff checks. Those results are lineage only.
The current head must regenerate every applicable exact-head quality, security, supply-chain, and semantic-review result. Pending, queued, skipped, cancelled, absent, stale, predecessor-head, local-only, author-only, status-only, synthetic, or model-only evidence is not acceptance.
Rollback and merge gate
Rollback is the inverse trigger removal only if the manifest ceases to be executable Strix input and the regression/doctoring contract is updated in the same reviewed change.
Merge or auto-merge only after the unchanged current head has terminal-success required gates, zero valid unresolved findings, a qualifying current-head semantic verdict, two qualifying independent non-author approvals including last-push approval, compatible live-base evidence, and ordinary expected-head branch-protection authorization. No self-approval, administrative bypass, synthetic approval, or protection weakening is requested.