fix(automation): run hourly NVIDIA NIM review repair - #779
Conversation
* test(strix): align setup-python pin contract * fix(strix): isolate backend support-code scopes * fix(strix): update vulnerable Python dependencies * fix(strix): scan changed Rust security boundaries
Install and pin LLVM 19 coverage tools for Debian-packaged Rust, refresh the remediated Strix lock, and document the compatibility and fail-closed coverage contract.
Add failing contracts for the one-hour scheduler cadence, immutable called-workflow source, NVIDIA_NIM_API_KEY-only OpenCode repair transport, write-credential stripping, fail-closed secret handling, and unchanged independent reviewer workflow.
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Comment |
Add a permanent read-only exact-head workflow that runs the hourly cadence, immutable scheduler source, NVIDIA_NIM_API_KEY, credential-stripping, fail-closed, and independent-review separation contracts. The current baseline is expected to fail before implementation.
Set the central scheduler to an hourly one-dispatch loop with a one-hour retry floor, bind reusable and dispatch worker source to immutable workflow SHAs, move write-capable OpenCode repair to NVIDIA_NIM_API_KEY only, strip GitHub/OIDC credentials from model subprocesses, and retain the independent reviewer workflow unchanged.
|
@opencode-agent @cwl-noema-review @coderabbitai review Review exact current head |
🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -euo pipefail
base='4d076f636b6de5043e8501e93c06ed0a8c896eb3'
head='1d70f782f81612a69dfacff9a39aa192c16c6b2f'
git cat-file -e "${base}^{commit}"
git cat-file -e "${head}^{commit}"
printf '%s\n' '=== Commit range ==='
git diff --stat "${base}" "${head}"
printf '%s\n' '=== Changed files ==='
git diff --name-status "${base}" "${head}"
printf '%s\n' '=== Commit metadata ==='
git show -s --format='HEAD %H%nParents %P%nSubject %s' "${head}"
printf '%s\n' '=== Changed source outlines ==='
git diff --name-only "${base}" "${head}" |
while IFS= read -r file; do
case "$file" in
*.py|*.js|*.ts|*.sh)
printf '\n--- %s ---\n' "$file"
ast-grep outline "$file" --items all 2>/dev/null || true
;;
esac
doneLength of output: 4537 🏁 Script executed: #!/bin/bash
set -euo pipefail
base='4d076f636b6de5043e8501e93c06ed0a8c896eb3'
head='1d70f782f81612a69dfacff9a39aa192c16c6b2f'
printf '%s\n' '=== Exact workflow diffs ==='
git diff --unified=80 "${base}" "${head}" -- \
.github/workflows/hourly-nvidia-nim-review-repair.yml \
.github/workflows/pr-review-autofix.yml \
.github/workflows/pr-review-fix-scheduler.yml
for file in \
.github/workflows/hourly-nvidia-nim-review-repair.yml \
.github/workflows/pr-review-autofix.yml \
.github/workflows/pr-review-fix-scheduler.yml \
tests/test_pr_review_autofix_nvidia_nim_contract.py \
tests/test_pr_review_fix_hourly_contract.py \
tests/test_pr_review_fix_scheduler_source_pin.py \
docs/automation/hourly-review-repair.md \
docs/doctoring/hourly-nvidia-nim-autofix.md \
CHANGELOG.md
do
printf '\n=== %s at requested head ===\n' "$file"
git show "${head}:${file}"
done
printf '%s\n' '=== Independent reviewer boundary ==='
printf 'base blob: '
git rev-parse "${base}:.github/workflows/opencode-review-dispatch.yml"
printf 'head blob: '
git rev-parse "${head}:.github/workflows/opencode-review-dispatch.yml"
git diff --exit-code "${base}" "${head}" -- .github/workflows/opencode-review-dispatch.ymlLength of output: 102987 🏁 Script executed: #!/bin/bash
set -euo pipefail
head='1d70f782f81612a69dfacff9a39aa192c16c6b2f'
printf '%s\n' '=== Scheduler helper outline ==='
ast-grep outline scripts/ci/pr_review_fix_scheduler.py --items all 2>/dev/null || true
printf '%s\n' '=== Scheduler helper at requested head ==='
git show "${head}:scripts/ci/pr_review_fix_scheduler.py"
printf '%s\n' '=== Scheduler helper tests and references ==='
rg -n -C 4 --glob '*.py' \
'(pr_review_fix_scheduler|retry_hours|max_dispatches|repository_dispatch|pr-review-autofix)' \
scripts tests .github 2>/dev/null || true
printf '%s\n' '=== Privileged-operation and authentication references in affected control paths ==='
rg -n -i -C 3 \
'(approve|merge|release|branch.protection|protection|statuses|check-runs|repository_dispatch|COPILOT_GITHUB_TOKEN|github-models|STRIX_GITHUB_MODELS_TOKEN|NVIDIA_NIM_API_KEY|ACTIONS_ID_TOKEN_REQUEST)' \
.github/workflows/pr-review-fix-scheduler.yml \
.github/workflows/pr-review-autofix.yml \
scripts/ci/pr_review_fix_scheduler.py \
scripts/ci/pr_review_autofix_context.py 2>/dev/null || true
printf '%s\n' '=== Workflow-context documentation references in repository ==='
rg -n -C 2 \
'(job\.workflow_(repository|sha|ref|file_path)|workflow_sha|workflow_repository)' \
.github docs tests 2>/dev/null || trueLength of output: 125482 🤖 web_search executed:
Length of output: 8852
I found no actionable findings. Verified controls:
This was a static exact-range review. I did not independently rerun the permanent workflows in this environment.
|
7d01600 to
dcbd777
Compare
|
Superseded by current-main replacement #782. #782 preserves the same reviewed hourly NVIDIA NIM repair behavior but is built directly on protected |
|
Superseded by current-main replacement #782. #782 preserves the NVIDIA-NIM-only OpenCode worker and immutable reusable scheduler, adds the explicit Clearfolio product caller so the hourly timer cannot accidentally target the central |
Superseded by current-main replacement #782. #782 carries the same hourly NVIDIA NIM-only review-repair contract directly on protected main after #743, with fresh TDD evidence and exact-head security/supply-chain checks. This stacked predecessor is closed without merge; no predecessor-head check or approval is transferred.