Skip to content

fix(automation): run hourly NVIDIA NIM review repair - #782

Open
seonghobae wants to merge 59 commits into
mainfrom
fix/hourly-nvidia-nim-review-repair-main
Open

fix(automation): run hourly NVIDIA NIM review repair#782
seonghobae wants to merge 59 commits into
mainfrom
fix/hourly-nvidia-nim-review-repair-main

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Purpose

Activate a real one-hour Clearfolio review → repair → revalidation support loop on the protected central control-plane baseline while preserving the existing independent reviewer workflow, its credential system, and modular reuse by other CWL services.

Product and MSA behavior

  • add .github/workflows/clearfolio-hourly-review-repair.yml as the explicit product caller at minute 23 of every hour;
  • pass exact ContextualWisdomLab/clearfolio, protected main, one dispatch, and one-hour same-head retry parameters to the reusable engine;
  • keep .github/workflows/pr-review-fix-scheduler.yml free of product-specific timers and repository names so naruon, contextual-orchestrator, and other CWL services can call it independently;
  • retain product-level and engine-level single-flight concurrency;
  • pass only the established optional PR_REVIEW_MERGE_TOKEN and OPENCODE_APPROVE_TOKEN scheduler credentials; never use secrets: inherit;
  • bind reusable scheduler code to the immutable called-workflow repository, SHA, ref, and file path, then verify the checkout before executing the scheduler helper;
  • keep the deprecated canonical_ref input accepted but ignored.

OpenCode and credential behavior

  • run the write-capable OpenCode autofix worker through NVIDIA NIM only, using secrets.NVIDIA_NIM_API_KEY;
  • use mistralai/mistral-nemotron as the primary repair model and nvidia/nemotron-3-nano-30b-a3b as the bounded helper model;
  • never use COPILOT_GITHUB_TOKEN, GitHub Models, or a GitHub token as model authentication;
  • bind the NVIDIA credential only to the two model execution steps and fail closed when it is absent;
  • strip GITHUB_TOKEN, GH_TOKEN, and Actions OIDC request credentials from both OpenCode child processes;
  • deny unnecessary non-file OpenCode interactions in both global and named-agent permission maps;
  • pin the repository-dispatch worker's trusted helper checkout to the exact workflow-run SHA;
  • keep .github/workflows/opencode-review-dispatch.yml byte-for-byte unchanged at blob 83f6830d5c21a324b4dbcd4e5c21a07968994b81;
  • preserve exact-head, same-repository, file-allowlist, syntax, conflict-marker, and live-head guards;
  • snapshot the post-base-merge worktree and reject every model-caused changed, created, deleted, mode-changed, or retargeted path outside Git's exact unresolved-conflict allowlist before staging;
  • never approve, merge a pull request, publish a release, or weaken branch protection from the repair worker.

Test-first evidence

The contracts-only head b02b4c995c91b2d9130adbf6f867fa1df5d1df87 failed as designed in permanent workflow run 31002306348, proving that the inherited baseline still used a two-hour cadence, a 24-hour retry floor, mutable scheduler source, GitHub Models, GitHub credentials in the model step, no NVIDIA binding or missing-secret preflight, and incomplete unattended-agent denials.

The implementation subsequently added the explicit Clearfolio caller, removed product cadence from the reusable engine, bound privileged source to job.workflow_repository, job.workflow_sha, job.workflow_ref, and job.workflow_file_path, moved model authentication to NVIDIA NIM, stripped GitHub and OIDC credentials from model subprocesses, and introduced the exact conflict-path publication boundary. Focused regressions cover cadence, source identity, provider and secret scope, reviewer independence, conflict snapshot validation, path normalization, symlink and deletion handling, malformed evidence, complete branch coverage, docstrings, and workflow ordering.

Exact-head evidence

Exact current head: 2f16cca4aae2d11ccc928f8e03fdcbd97a96d5a2.

Successful on this exact head:

  • Hourly NVIDIA NIM Review Repair 31069588915;
  • Python Security 31073803688;
  • Security Scan 31073803736;
  • CodeQL PR 31073803711;
  • SAST Semgrep 31073803666;
  • Secret Scan 31073803680;
  • OSV-Scanner PR 31073804008;
  • Scorecard PR 31073803697;
  • SBOM Generation 31073803667; and
  • zero unresolved inline review threads.

The two dismissed OpenCode request-changes reviews are anchored to predecessor head 4d69c58c403c1db07a9c39d5c5180c5b6b0aae15 and are not current-head evidence. The current formal review inventory contains no qualifying non-author approval for 2f16cca4aae2d11ccc928f8e03fdcbd97a96d5a2. No predecessor-head, synthetic-merge, queued, pending, cancelled, skipped-required, rate-limit, wrapper-only, author-only, or local-only result is accepted as merge evidence.

Documentation

  • docs/automation/hourly-review-repair.md defines product-caller, reusable-engine, target precedence, immutable source, operator, and modular MSA behavior.
  • docs/doctoring/hourly-nvidia-nim-autofix.md records the NVIDIA provider, credential boundary, child-process isolation, conflict-path publication boundary, verification, and rollback.
  • docs/doctoring/clearfolio-hourly-review-caller.md records the product caller, least privilege, failure behavior, verification, rollback, and APA 7 primary-source evidence.
  • CHANGELOG.md records cadence, explicit target, immutable source, provider migration, secret scope, reviewer separation, and conflict-scope hardening.

Activation boundary

Scheduled workflows execute only from the protected default branch. The Clearfolio production heartbeat is not active while this PR remains unmerged. Missing scheduler or NVIDIA credentials fail closed while independent review, required checks, and manual maintenance remain available.

Merge acceptance

The direct exact-head workflow, security, supply-chain, coverage, docstring, and unresolved-thread gates are satisfied on 2f16cca4aae2d11ccc928f8e03fdcbd97a96d5a2. Do not merge until exact-head CodeRabbit, OpenCode, Noema, every other repository-required review surface, a qualifying non-author approval, and every branch-protection rule are satisfied without administrative bypass. The repair worker itself must never change Draft state, approve, auto-merge, merge, release, or modify protections.

Supersedes closed predecessor #779 after this current-main replacement is validated and merged.

Summary by CodeRabbit

  • 새 기능

    • PR 검토 및 자동 수정 작업이 매시간 실행됩니다.
    • NVIDIA NIM 기반 자동 수정과 충돌 해결을 지원합니다.
    • Clearfolio 대상 저장소의 PR을 검토하고 재시도할 수 있습니다.
  • 보안 및 안정성 개선

    • 신뢰된 커밋에서만 자동화가 실행됩니다.
    • 자동 수정은 허용된 충돌 파일 범위 내에서만 변경됩니다.
    • 필요한 권한과 인증 정보가 작업별로 제한됩니다.
    • 검증 실패, 인증 정보 누락 또는 외부 서비스 장애 시 변경을 차단합니다.
  • 문서

    • 시간별 자동 검토·수정 운영 절차와 롤백 기준을 추가했습니다.

@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

Clearfolio 시간별 호출자와 재사용 스케줄러를 추가했습니다. 스케줄러는 호출 워크플로의 SHA를 검증하고 불변 소스를 체크아웃합니다. 자동수정은 NVIDIA NIM을 사용하며, 충돌 해결 후 변경 범위를 검증합니다.

Changes

시간별 리뷰 복구 흐름

Layer / File(s) Summary
호출자와 불변 스케줄러 소스 검증
.github/workflows/clearfolio-hourly-review-repair.yml, .github/workflows/pr-review-fix-scheduler.yml, docs/automation/*, docs/doctoring/clearfolio-hourly-review-caller.md, tests/test_pr_review_fix_*, CHANGELOG.md
Clearfolio 호출자와 재사용 스케줄러의 시간 설정, 대상, 제한, 시크릿, 권한을 구성했습니다. 호출 워크플로의 저장소·파일·SHA·ref와 체크아웃 결과를 검증합니다.
NVIDIA NIM 자동수정 경계
.github/workflows/hourly-nvidia-nim-review-repair.yml, .github/workflows/pr-review-autofix.yml, docs/doctoring/hourly-nvidia-nim-autofix.md, tests/test_pr_review_autofix_nvidia_nim_contract.py
NVIDIA NIM 모델과 API 키를 자동수정 단계에 연결했습니다. OpenCode 권한을 제한하고 GitHub·OIDC 자격 증명을 제거합니다. 관련 계약 테스트와 품질 검사를 추가했습니다.
충돌 수정 범위 검증
.github/workflows/pr-review-autofix.yml, scripts/ci/pr_review_conflict_scope.py, tests/test_pr_review_conflict_scope.py
충돌 파일 허용 목록과 작업 트리 스냅샷을 비교합니다. 허용되지 않은 생성, 삭제, 수정, 모드 및 심볼릭 링크 변경을 오류로 처리합니다.

Estimated code review effort: 4 (Complex) | ~60 minutes

Possibly related issues

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed 제목은 NVIDIA NIM 기반 시간별 리뷰·수정 워크플로 변경을 정확히 설명하지만, Clearfolio 스케줄러와 보안 강화 변경 전체를 포함하지는 않습니다.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/hourly-nvidia-nim-review-repair-main

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

@seonghobae
seonghobae marked this pull request as ready for review August 5, 2026 11:46

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@opencode-agent @cwl-noema-review Independently review exact current head 63b50227caefb49abd389a8da41edcfc1d32428e against protected main at f070c504c1cb06891b800d7ab0cf6ac7d3cf8eae. Every direct current-head workflow is successful: Hourly NVIDIA NIM Review Repair 31002522693, Python Security 31002522736, Security Scan 31002522780, CodeQL PR 31002522802, SAST Semgrep 31002522718, Secret Scan 31002522761, OSV-Scanner PR 31002523083, Scorecard PR 31002522717, and SBOM Generation 31002522776. The PR is now Ready under its documented acceptance rule.

Verify the one-hour cadence and retry floor, one-dispatch/single-flight bounds, immutable called-workflow and repository-dispatch source binding, NVIDIA_NIM_API_KEY-only OpenCode model authentication, absence of COPILOT_GITHUB_TOKEN and GitHub Models fallback, missing-secret fail-closed behavior, strict secret step scope, child-process stripping of GitHub and OIDC credentials, file-only agent permissions, exact-head/live-head/file-allowlist/syntax/conflict guards, byte-for-byte preservation of the independent reviewer workflow, and the prohibition on approval, merge, release, or protection weakening. Distinguish this current-main replacement from closed predecessor #779. Submit actionable findings or an exact-head formal review; approval still must satisfy repository independence and branch protection.

@seonghobae
seonghobae enabled auto-merge (squash) August 5, 2026 11:46

Copy link
Copy Markdown
Contributor Author

@opencode-agent @cwl-noema-review @coderabbitai review

Review exact current head 63b50227caefb49abd389a8da41edcfc1d32428e against current protected main base f070c504c1cb06891b800d7ab0cf6ac7d3cf8eae only. Permanent RED run 31002306348 recorded 13 expected contract failures on the test-only head. Permanent GREEN run 31002522693 passed the exact-head hourly cadence, immutable source identity, NVIDIA_NIM_API_KEY-only provider, missing-secret fail-closed guard, non-file permission denials, model-child GitHub/OIDC credential stripping, byte-identical independent reviewer boundary, compilation, and diff checks. Direct exact-head security, supply-chain, and SAST runs have also succeeded; duplicate reruns may still be queued. Verify one-dispatch/single-flight bounds, source pinning, secret step scope, absence of COPILOT_GITHUB_TOKEN and GitHub Models model authentication, same-repository/live-head guards, APA 7 doctoring, and the inability of the worker to approve, merge a PR, release, or weaken checks. Submit a formal current-head verdict; do not reuse ancestor reviews.

@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown
🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '%s\n' '== Repository and requested commits =='
git remote -v
git rev-parse HEAD
git show -s --format='HEAD %H%nparents %P%nsubject %s' HEAD
git cat-file -e '63b50227caefb49abd389a8da41edcfc1d32428e^{commit}' 2>/dev/null && \
  git show -s --format='requested-head %H%nparents %P%nsubject %s' 63b50227caefb49abd389a8da41edcfc1d32428e || true
git cat-file -e 'f070c504c1cb06891b800d7ab0cf6ac7d3cf8eae^{commit}' 2>/dev/null && \
  git show -s --format='baseline %H%nsubject %s' f070c504c1cb06891b800d7ab0cf6ac7d3cf8eae || true

printf '%s\n' '== Changed paths and diff summary =='
git diff --stat f070c504c1cb06891b800d7ab0cf6ac7d3cf8eae 63b50227caefb49abd389a8da41edcfc1d32428e 2>/dev/null || \
git diff --stat HEAD^ HEAD
git diff --name-status f070c504c1cb06891b800d7ab0cf6ac7d3cf8eae 63b50227caefb49abd389a8da41edcfc1d32428e 2>/dev/null || \
git diff --name-status HEAD^ HEAD

printf '%s\n' '== Candidate automation source =='
fd -HI -t f .github docs 2>/dev/null | sort | \
  grep -E 'hourly|review.*repair|dispatch|opencode|automation|doctoring|CHANGELOG' || true

printf '%s\n' '== Workflow and helper outlines =='
for f in \
  .github/workflows/hourly-nvidia-nim-review-repair.yml \
  .github/workflows/opencode-review-dispatch.yml
do
  if [ -f "$f" ]; then
    echo "--- $f"
    nl -ba "$f"
  fi
done

printf '%s\n' '== Security-sensitive references in tracked text files =='
rg -n -i -C 3 \
  'NVIDIA_NIM_API_KEY|COPILOT_GITHUB_TOKEN|github models|models:|mistral-nemotron|nemotron-3-nano|canonical_ref|repository_dispatch|workflow_call|concurrency|cron|GITHUB_TOKEN|GH_TOKEN|ACTIONS_ID_TOKEN_REQUEST_(TOKEN|URL)|permissions:|pull-requests:\s*write|contents:\s*write|gh pr (merge|review)|release' \
  .github docs CHANGELOG.md 2>/dev/null || true

printf '%s\n' '== Independent reviewer workflow blob comparison =='
if git cat-file -e 'f070c504c1cb06891b800d7ab0cf6ac7d3cf8eae:.github/workflows/opencode-review-dispatch.yml' 2>/dev/null; then
  echo -n 'baseline blob: '
  git rev-parse 'f070c504c1cb06891b800d7ab0cf6ac7d3cf8eae:.github/workflows/opencode-review-dispatch.yml'
fi
if git cat-file -e '63b50227caefb49abd389a8da41edcfc1d32428e:.github/workflows/opencode-review-dispatch.yml' 2>/dev/null; then
  echo -n 'head blob: '
  git rev-parse '63b50227caefb49abd389a8da41edcfc1d32428e:.github/workflows/opencode-review-dispatch.yml'
fi

printf '%s\n' '== Referenced workflow runs =='
for run in 31002522693 31002522736 31002522780 31002522802 31002522718 31002522761 31002523083 31002522717 31002522776; do
  gh api "repos/ContextualWisdomLab/.github/actions/runs/${run}" \
    --jq '"\(.id) \(.name) status=\(.status) conclusion=\(.conclusion) head_sha=\(.head_sha) event=\(.event)"' \
    2>&1 || true
done

Length of output: 5016


🏁 Script executed:

#!/bin/bash
set -euo pipefail

head_sha='63b50227caefb49abd389a8da41edcfc1d32428e'
base_sha='f070c504c1cb06891b800d7ab0cf6ac7d3cf8eae'

show_numbered() {
  file="$1"
  if [ -f "$file" ]; then
    echo "--- $file"
    awk '{ printf "%5d  %s\n", NR, $0 }' "$file"
  else
    echo "--- MISSING: $file"
  fi
}

printf '%s\n' '== Exact changed workflow diff =='
git diff --no-ext-diff --unified=80 "$base_sha" "$head_sha" -- \
  .github/workflows/hourly-nvidia-nim-review-repair.yml \
  .github/workflows/pr-review-autofix.yml \
  .github/workflows/pr-review-fix-scheduler.yml

printf '%s\n' '== Current workflow source =='
show_numbered .github/workflows/hourly-nvidia-nim-review-repair.yml
show_numbered .github/workflows/pr-review-autofix.yml
show_numbered .github/workflows/pr-review-fix-scheduler.yml

printf '%s\n' '== Contract-test source =='
for f in \
  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
do
  show_numbered "$f"
done

printf '%s\n' '== Repository-wide security-sensitive executable references =='
git grep -n -I -E \
  'NVIDIA_NIM_API_KEY|COPILOT_GITHUB_TOKEN|models\.inference\.ai|github[ _-]?models|canonical_ref|ACTIONS_ID_TOKEN_REQUEST_TOKEN|ACTIONS_ID_TOKEN_REQUEST_URL|GITHUB_TOKEN|GH_TOKEN|repository_dispatch|workflow_call|concurrency:|cron:|mistralai/mistral-nemotron|nvidia/nemotron-3-nano-30b-a3b|gh pr (merge|review)|gh release|branches/.+protection' \
  "$head_sha" -- .github ':!*.md' || true

printf '%s\n' '== Independent reviewer workflow immutable blob check =='
expected_blob='83f6830d5c21a324b4dbcd4e5c21a07968994b81'
base_blob=$(git rev-parse "$base_sha:.github/workflows/opencode-review-dispatch.yml")
head_blob=$(git rev-parse "$head_sha:.github/workflows/opencode-review-dispatch.yml")
printf 'expected=%s\nbaseline=%s\nhead=%s\n' "$expected_blob" "$base_blob" "$head_blob"
git diff --no-ext-diff --exit-code "$base_sha" "$head_sha" -- .github/workflows/opencode-review-dispatch.yml || true

printf '%s\n' '== Requested workflow runs =='
for run in 31002522693 31002522736 31002522780 31002522802 31002522718 31002522761 31002523083 31002522717 31002522776; do
  printf 'run %s: ' "$run"
  gh api "repos/ContextualWisdomLab/.github/actions/runs/${run}" \
    --jq '[.id, .name, .status, .conclusion, .head_sha, .event] | `@tsv`' 2>&1 || true
done

Length of output: 156113


🤖 web_search executed:

GitHub Actions contexts documentation job.workflow_repository job.workflow_sha job.workflow_ref job.workflow_file_path github.workflow_ref github.workflow_sha

Length of output: 13390


@seonghobae Formal review completed for 63b50227caefb49abd389a8da41edcfc1d32428e against f070c504c1cb06891b800d7ab0cf6ac7d3cf8eae.

I found no actionable findings in the requested scope.

Verified items:

  • The scheduler runs at minute 23 of every hour.
  • The same-head retry floor is one hour.
  • The scheduler retains one dispatch per run and repository-scoped single-flight concurrency.
  • The reusable scheduler binds its source to job.workflow_repository, job.workflow_sha, job.workflow_ref, and job.workflow_file_path.
  • The scheduler validates the identity before checkout and verifies the checked-out SHA and workflow file before it runs the helper.
  • canonical_ref remains accepted and ignored.
  • The dispatch worker pins its trusted helper checkout to ${{ github.sha }}.
  • The autofix worker enables only nvidia-nim.
  • The primary model is nvidia-nim/mistralai/mistral-nemotron.
  • The helper model is nvidia-nim/nvidia/nemotron-3-nano-30b-a3b.
  • The autofix workflow contains no COPILOT_GITHUB_TOKEN, GitHub Models provider, or GitHub-token model fallback.
  • secrets.NVIDIA_NIM_API_KEY is bound only to the two OpenCode execution steps.
  • Both model steps fail closed when NVIDIA_NIM_API_KEY is absent.
  • Both OpenCode child processes remove GITHUB_TOKEN, GH_TOKEN, and Actions OIDC request credentials.
  • Global and named-agent permissions deny non-file interactions.
  • Same-repository, exact-head, live-head, file-allowlist, syntax, and conflict-marker guards remain in place.
  • .github/workflows/opencode-review-dispatch.yml is unchanged. Its baseline and head blob are both 83f6830d5c21a324b4dbcd4e5c21a07968994b81.
  • The nine listed workflow runs completed successfully for this exact head.

GitHub documents the job.workflow_* identity properties used by the reusable workflow. These properties are unavailable on GitHub Enterprise Server. This PR targets GitHub.com.

This review covers current PR #782. It does not evaluate closed predecessor #779 as the implementation source.

I do not issue approval. Approval must remain subject to the required independent reviewer and branch-protection policy.

⚠️ Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link
Copy Markdown
Contributor Author

@opencode-agent @cwl-noema-review @coderabbitai review

Review exact current head 63b50227caefb49abd389a8da41edcfc1d32428e only. The permanent hourly NVIDIA NIM contract and all direct current-head security/supply-chain workflows have succeeded at least once; later duplicate same-head reruns are still settling. Verify the hourly minute-23 cadence, one-hour retry floor, immutable called-workflow source identity, NVIDIA_NIM_API_KEY-only model authentication, primary/helper model routing, missing-secret fail-closed behavior, child-process token/OIDC scrubbing, complete unattended-agent permission denials, independent reviewer byte stability, exact-head/same-repository/file-allowlist/live-head safeguards, APA 7 doctoring, and the prohibition on approval, merge, release, or branch-protection changes. Submit current-head verdicts and qualifying independent approval without reusing #779 evidence.

@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown

@seonghobae I will review PR #782 at exact head 63b50227caefb49abd389a8da41edcfc1d32428e only.

I will verify the requested scheduler, source-binding, NVIDIA NIM credential, token-scrubbing, permission, safety-guard, independent-reviewer, and documentation controls. I will not reuse #779 evidence. I will not issue approval unless the required independent approval and branch-protection conditions are satisfied.

⚠️ Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

head_expected='63b50227caefb49abd389a8da41edcfc1d32428e'
base_expected='f070c504c1cb06891b800d7ab0cf6ac7d3cf8eae'

printf '%s\n' '== checked-out commit =='
git rev-parse HEAD
printf '%s\n' '== expected commits present =='
git cat-file -e "${head_expected}^{commit}"
git cat-file -e "${base_expected}^{commit}"

printf '%s\n' '== changed paths =='
git diff --name-status "$base_expected" "$head_expected"

printf '%s\n' '== changed workflow files =='
git diff --stat "$base_expected" "$head_expected" -- .github/workflows
fd -a -t f .github/workflows | sort

printf '%s\n' '== workflow and helper symbols =='
for f in \
  .github/workflows/hourly-nvidia-nim-review-repair.yml \
  .github/workflows/opencode-review-dispatch.yml
do
  if [ -f "$f" ]; then
    printf '\n--- %s ---\n' "$f"
    cat -n "$f"
  fi
done

printf '%s\n' '== references to hourly scheduler, dispatch, and model authentication =='
rg -n -C 3 \
  -e 'NVIDIA_NIM_API_KEY' \
  -e 'COPILOT_GITHUB_TOKEN' \
  -e 'GitHub Models|models\.github' \
  -e 'canonical_ref' \
  -e 'repository_dispatch|workflow_dispatch|concurrency|cron' \
  -e 'GITHUB_TOKEN|GH_TOKEN|ACTIONS_ID_TOKEN_REQUEST' \
  -e 'opencode|nemotron|mistral-nemotron' \
  -e 'pull-requests:\s*write|contents:\s*write|actions:\s*write' \
  .github scripts 2>/dev/null || true

Length of output: 2843


🏁 Script executed:

#!/bin/bash
set -euo pipefail

head='63b50227caefb49abd389a8da41edcfc1d32428e'
base='f070c504c1cb06891b800d7ab0cf6ac7d3cf8eae'

printf '%s\n' '== independent reviewer workflow blob at head and base =='
git rev-parse "${head}:.github/workflows/opencode-review-dispatch.yml"
git rev-parse "${base}:.github/workflows/opencode-review-dispatch.yml"
git diff --exit-code "$base" "$head" -- .github/workflows/opencode-review-dispatch.yml \
  && echo 'independent-reviewer workflow: unchanged'

printf '%s\n' '== all workflow paths at reviewed head =='
git ls-tree -r --name-only "$head" .github/workflows | sort

for f in \
  .github/workflows/hourly-nvidia-nim-review-repair.yml \
  .github/workflows/pr-review-autofix.yml \
  .github/workflows/pr-review-fix-scheduler.yml
do
  printf '\n== %s at exact head ==\n' "$f"
  git show "${head}:${f}" | cat -n
done

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

printf '%s\n' '== scheduler/autofix source and credential references at exact head =='
git grep -n -I -E \
  'NVIDIA_NIM_API_KEY|COPILOT_GITHUB_TOKEN|models\.github|GitHub Models|canonical_ref|ACTIONS_ID_TOKEN_REQUEST|GITHUB_TOKEN|GH_TOKEN|repository_dispatch|workflow_call|workflow_dispatch|concurrency|cron|mistralai/mistral-nemotron|nvidia/nemotron-3-nano-30b-a3b' \
  "$head" -- .github scripts 2>/dev/null || true

printf '%s\n' '== focused contract test outlines =='
ast-grep outline tests/test_pr_review_autofix_nvidia_nim_contract.py --items all
ast-grep outline tests/test_pr_review_fix_hourly_contract.py --items all
ast-grep outline tests/test_pr_review_fix_scheduler_source_pin.py --items all

printf '%s\n' '== focused contract test assertions =='
for f in \
  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
do
  printf '\n== %s ==\n' "$f"
  git show "${head}:${f}" | sed -n '1,280p'
done

Length of output: 223866


🏁 Script executed:

#!/bin/bash
set -euo pipefail

head='63b50227caefb49abd389a8da41edcfc1d32428e'

printf '%s\n' '== scheduler helper outline =='
ast-grep outline scripts/ci/pr_review_fix_scheduler.py --items all

printf '%s\n' '== scheduler helper dispatch, bounds, and guard references =='
git show "${head}:scripts/ci/pr_review_fix_scheduler.py" |
  nl -ba |
  grep -E -C 8 \
    'max.dispatch|retry.hours|repository.dispatch|autofix|head.sha|live.head|allowed|allowlist|same.repository|pull.request|conflict|syntax|dispatch' || true

printf '%s\n' '== selected helper source =='
git show "${head}:scripts/ci/pr_review_fix_scheduler.py" | sed -n '1,920p'

printf '%s\n' '== prohibited worker operation scan =='
git show "${head}:.github/workflows/pr-review-autofix.yml" |
  nl -ba |
  grep -Ei -C 4 \
    'pulls/.*/merge|/merges|merge.pull|pulls/.*/reviews|approve|releases|branches/.*/protection|rulesets|gh pr (merge|review)|gh release|gh api.*(merge|protection|ruleset|releases)' || true

printf '%s\n' '== operator documentation =='
for f in \
  docs/automation/hourly-review-repair.md \
  docs/doctoring/hourly-nvidia-nim-autofix.md \
  CHANGELOG.md
do
  printf '\n== %s ==\n' "$f"
  git show "${head}:${f}" | cat -n
done

Length of output: 39579


@seonghobae: Formal review verdict: request changes.

  • High — conflict resolution can push edits outside the conflict file set. In .github/workflows/pr-review-autofix.yml, the conflict path instructs OpenCode to edit only conflicted_files, but it does not enforce this instruction. After the model process at Line 524, the workflow stages all worktree changes with git add -A at Line 535 and pushes them. The normal autofix path has a file-allowlist validation step, but that step does not run when RESOLVE_CONFLICT == 'true'. A prompt is not an enforcement boundary because the model has edit: allow over the full worktree. Derive an allowed-path file from conflicted_files, reject all changed and untracked paths outside that set, and perform this check before staging or committing. Update the doctoring claim that all changed paths are rejected outside the allowlist.

I verified commit 63b50227caefb49abd389a8da41edcfc1d32428e against base f070c504c1cb06891b800d7ab0cf6ac7d3cf8eae. I also verified the hourly 23 * * * * cadence, one-hour retry default, one-dispatch default, repository-scoped single-flight concurrency, immutable called-workflow source checks, NIM-only ordinary autofix configuration, missing-secret preflight, subprocess credential stripping, and unchanged independent reviewer blob 83f6830d5c21a324b4dbcd4e5c21a07968994b81.

You are interacting with an AI system.

Copy link
Copy Markdown
Contributor Author

@opencode-agent @cwl-noema-review @coderabbitai review

Please review exact head 63b50227caefb49abd389a8da41edcfc1d32428e. Direct security, dependency, SBOM, Secret Scan, Semgrep, Python Security, focused hourly-NVIDIA-NIM contract, and an earlier exact-head CodeQL run are successful; the latest CodeQL rerun remains in progress. Treat only current-head evidence as authoritative. Verify the NVIDIA-NIM-only model path, one-hour cadence/retry floor, immutable reusable-workflow source, model-process credential isolation, unchanged independent reviewer workflow, and absence of approve/merge/release/protection APIs.

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

Please review exact current head 63b50227caefb49abd389a8da41edcfc1d32428e. Verify the hourly cadence, one-hour same-head retry floor, immutable called-workflow source binding, NVIDIA NIM-only model authentication, strict secret scoping and child-process credential stripping, permission denials, unchanged independent review workflow, permanent contract gate, doctoring, and branch-protection boundaries. Submit an approval only if no blocking finding remains.

@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

head='63b50227caefb49abd389a8da41edcfc1d32428e'
base='f070c504c1cb06891b800d7ab0cf6ac7d3cf8eae'
expected_blob='83f6830d5c21a324b4dbcd4e5c21a07968994b81'

git cat-file -e "${head}^{commit}"
git cat-file -e "${base}^{commit}"

printf '%s\n' '== reviewed commits =='
git show -s --format='head=%H%nbase=%P%nsubject=%s' "$head"
git show -s --format='baseline=%H%nsubject=%s' "$base"

printf '%s\n' '== changed paths =='
git diff --name-status "$base" "$head"

printf '%s\n' '== scheduler and autofix workflow at exact head =='
for path in \
  .github/workflows/hourly-nvidia-nim-review-repair.yml \
  .github/workflows/pr-review-fix-scheduler.yml \
  .github/workflows/pr-review-autofix.yml \
  scripts/ci/pr_review_fix_scheduler.py \
  docs/automation/hourly-review-repair.md \
  docs/doctoring/hourly-nvidia-nim-autofix.md
do
  printf '\n--- %s ---\n' "$path"
  git show "${head}:${path}" | nl -ba
done

printf '%s\n' '== independent reviewer blob =='
printf 'expected=%s\n' "$expected_blob"
printf 'base=%s\n' "$(git rev-parse "${base}:.github/workflows/opencode-review-dispatch.yml")"
printf 'head=%s\n' "$(git rev-parse "${head}:.github/workflows/opencode-review-dispatch.yml")"
git diff --exit-code "$base" "$head" -- .github/workflows/opencode-review-dispatch.yml

printf '%s\n' '== security-sensitive references at exact head =='
git grep -n -I -E \
  'NVIDIA_NIM_API_KEY|COPILOT_GITHUB_TOKEN|models\.github|GitHub Models|mistralai/mistral-nemotron|nvidia/nemotron-3-nano-30b-a3b|23 \* \* \* \*|retry.hours|canonical_ref|job\.workflow_(repository|sha|ref|file_path)|GITHUB_TOKEN|GH_TOKEN|ACTIONS_ID_TOKEN_REQUEST_(TOKEN|URL)|gh pr (merge|review)|pulls/.*/(merge|reviews)|releases|branches/.+protection|rulesets|git add -A|conflicted_files' \
  "$head" -- .github scripts docs ':!*.md' || true

printf '%s\n' '== current-head workflow runs =='
for run in 31002522693 31002522736 31002522780 31002522802 31002522718 31002522761 31002523083 31002522717 31002522776; do
  gh api "repos/ContextualWisdomLab/.github/actions/runs/${run}" \
    --jq '[.id, .name, .status, .conclusion, .head_sha, .event] | `@tsv`' \
    2>&1 || true
done

Length of output: 3363


🏁 Script executed:

#!/bin/bash
set -euo pipefail

head='63b50227caefb49abd389a8da41edcfc1d32428e'
base='f070c504c1cb06891b800d7ab0cf6ac7d3cf8eae'
expected_blob='83f6830d5c21a324b4dbcd4e5c21a07968994b81'

show_file() {
  path="$1"
  printf '\n--- %s ---\n' "$path"
  git show "${head}:${path}" | awk '{ printf "%5d  %s\n", NR, $0 }'
}

printf '%s\n' '== exact-head workflow and helper source =='
for path in \
  .github/workflows/hourly-nvidia-nim-review-repair.yml \
  .github/workflows/pr-review-fix-scheduler.yml \
  .github/workflows/pr-review-autofix.yml \
  scripts/ci/pr_review_fix_scheduler.py \
  docs/automation/hourly-review-repair.md \
  docs/doctoring/hourly-nvidia-nim-autofix.md
do
  show_file "$path"
done

printf '%s\n' '== independent reviewer blob comparison =='
printf 'expected=%s\n' "$expected_blob"
printf 'base=%s\n' "$(git rev-parse "${base}:.github/workflows/opencode-review-dispatch.yml")"
printf 'head=%s\n' "$(git rev-parse "${head}:.github/workflows/opencode-review-dispatch.yml")"
if git diff --quiet "$base" "$head" -- .github/workflows/opencode-review-dispatch.yml; then
  printf '%s\n' 'workflow_unchanged=true'
else
  printf '%s\n' 'workflow_unchanged=false'
fi

printf '%s\n' '== focused security controls at exact head =='
git grep -n -I -E \
  'NVIDIA_NIM_API_KEY|COPILOT_GITHUB_TOKEN|models\.github|GitHub Models|mistralai/mistral-nemotron|nvidia/nemotron-3-nano-30b-a3b|23 \* \* \* \*|retry.hours|canonical_ref|job\.workflow_(repository|sha|ref|file_path)|GITHUB_TOKEN|GH_TOKEN|ACTIONS_ID_TOKEN_REQUEST_(TOKEN|URL)|gh pr (merge|review)|pulls/.*/(merge|reviews)|releases|branches/.+protection|rulesets|git add -A|conflicted_files' \
  "$head" -- .github scripts docs ':!*.md' || true

printf '%s\n' '== specified workflow-run metadata =='
for run in 31002522693 31002522736 31002522780 31002522802 31002522718 31002522761 31002523083 31002522717 31002522776; do
  printf 'run=%s ' "$run"
  gh api "repos/ContextualWisdomLab/.github/actions/runs/${run}" \
    --jq '[.name, .status, .conclusion, .head_sha, .event] | `@tsv`' \
    2>&1 || true
done

Length of output: 166782


@seonghobae Formal review verdict: request changes.

High — Conflict resolution does not enforce its file boundary

In .github/workflows/pr-review-autofix.yml, the conflict path records conflicted_files at Line 472. It instructs OpenCode to edit only those files at Lines 493-507. This is a prompt constraint only.

The OpenCode agent has edit: allow for the full PR worktree. After model execution, the workflow stages every worktree change with git add -A at Line 535. The conflict path does not validate changed or untracked paths against conflicted_files before it commits and pushes at Lines 558-559.

An unrelated model edit can therefore be committed during conflict resolution.

Before git add -A, derive a normalized allowed-path file from conflicted_files. Reject every changed or untracked path that is not in that file. Keep the conflict-marker, Python syntax, and live-head checks after this path validation. Update docs/doctoring/hourly-nvidia-nim-autofix.md at Lines 133-138 because its statement that the workflow rejects all paths outside the allowlist is not true for conflict resolution.

I verified the following controls at exact head 63b50227caefb49abd389a8da41edcfc1d32428e:

  • The scheduler uses 23 * * * *.
  • The retry floor defaults to one hour.
  • The dispatch limit defaults to one.
  • Repository-scoped scheduler concurrency is present.
  • The reusable scheduler validates and checks out job.workflow_repository, job.workflow_sha, job.workflow_ref, and job.workflow_file_path.
  • The autofix worker checks out trusted helper source at ${{ github.sha }}.
  • The autofix OpenCode configuration enables only nvidia-nim.
  • The primary model is nvidia-nim/mistralai/mistral-nemotron.
  • The helper model is nvidia-nim/nvidia/nemotron-3-nano-30b-a3b.
  • secrets.NVIDIA_NIM_API_KEY is bound only to the two OpenCode execution steps.
  • Both OpenCode steps fail closed when the NVIDIA secret is absent.
  • Both OpenCode child processes remove GITHUB_TOKEN, GH_TOKEN, and Actions OIDC request credentials.
  • Both permission maps deny the required non-file interactions.
  • .github/workflows/opencode-review-dispatch.yml is unchanged at blob 83f6830d5c21a324b4dbcd4e5c21a07968994b81.
  • The listed hourly contract, security, CodeQL, Semgrep, secret scan, OSV, Scorecard, and SBOM runs completed successfully for this exact head.

I found no separate approve, merge, release, or branch-protection operation in the reviewed scheduler or autofix worker. I do not approve this PR while the conflict-resolution file-boundary issue remains.

You are interacting with an AI system.

Copy link
Copy Markdown
Contributor Author

@opencode-agent Please independently review exact current head 63b50227caefb49abd389a8da41edcfc1d32428e after current-head checks complete. Confirm the repair worker uses only NVIDIA_NIM_API_KEY for model authentication, strips GitHub and OIDC credentials from child processes, cannot approve/merge/release, binds trusted workflow source immutably, preserves one-dispatch single-flight limits, and satisfies 100% coverage/docstring and doctoring contracts. Submit APPROVE only if no blocker remains.

Copy link
Copy Markdown
Contributor Author

@cwl-noema-review Please perform a second independent exact-head review of 63b50227caefb49abd389a8da41edcfc1d32428e after current checks complete. Verify the NVIDIA NIM-only write-capable OpenCode boundary, immutable source receipt, credential isolation, denied non-file interactions, hourly bounded scheduler semantics, unchanged independent reviewer credentials, APA 7 doctoring, and fail-closed missing-secret/provider behavior. Submit APPROVE only if no actionable finding remains.

@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

head='63b50227caefb49abd389a8da41edcfc1d32428e'
base='f070c504c1cb06891b800d7ab0cf6ac7d3cf8eae'
reviewer_blob='83f6830d5c21a324b4dbcd4e5c21a07968994b81'

git cat-file -e "${head}^{commit}"
git cat-file -e "${base}^{commit}"

printf '%s\n' '== exact commits =='
git show -s --format='head %H%nsubject %s' "$head"
git show -s --format='base %H%nsubject %s' "$base"

printf '%s\n' '== changed paths =='
git diff --name-status "$base" "$head"

printf '%s\n' '== reviewer workflow blob stability =='
printf 'expected %s\n' "$reviewer_blob"
printf 'base     %s\n' "$(git rev-parse "$base:.github/workflows/opencode-review-dispatch.yml")"
printf 'head     %s\n' "$(git rev-parse "$head:.github/workflows/opencode-review-dispatch.yml")"
git diff --exit-code "$base" "$head" -- .github/workflows/opencode-review-dispatch.yml || true

printf '%s\n' '== hourly scheduler and source binding =='
git show "$head:.github/workflows/hourly-nvidia-nim-review-repair.yml" | nl -ba
git show "$head:.github/workflows/pr-review-fix-scheduler.yml" | nl -ba

printf '%s\n' '== autofix model steps, permission maps, and conflict handling =='
git show "$head:.github/workflows/pr-review-autofix.yml" | nl -ba | \
  grep -E -C 12 \
  'NVIDIA_NIM_API_KEY|COPILOT_GITHUB_TOKEN|GitHub Models|models\.github|mistral-nemotron|nemotron-3-nano|GITHUB_TOKEN|GH_TOKEN|ACTIONS_ID_TOKEN_REQUEST|permission|conflicted_files|RESOLVE_CONFLICT|git add|git commit|git push|merge|approve|release|protection' || true

printf '%s\n' '== scheduler helper safeguards =='
git show "$head:scripts/ci/pr_review_fix_scheduler.py" | nl -ba | \
  grep -E -C 8 \
  'retry|dispatch|concurrency|same.repository|head.sha|live.head|allowlist|allowed|conflict|syntax' || true

printf '%s\n' '== focused contract tests and operator documentation =='
for path in \
  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
do
  printf '\n--- %s ---\n' "$path"
  git show "$head:$path" | nl -ba
done

printf '%s\n' '== exact-head workflow run status =='
for run in 31002522693 31002522736 31002522780 31002522802 31002522718 31002522761 31002523083 31002522717 31002522776; do
  gh api "repos/ContextualWisdomLab/.github/actions/runs/$run" \
    --jq '[.id,.name,.status,.conclusion,.head_sha] | `@tsv`' 2>&1 || true
done

Length of output: 3741


🏁 Script executed:

#!/bin/bash
set -euo pipefail

head='63b50227caefb49abd389a8da41edcfc1d32428e'

numbered_show() {
  local path="$1"
  printf '\n--- %s ---\n' "$path"
  git show "${head}:${path}" | awk '{printf "%5d  %s\n", NR, $0}'
}

printf '%s\n' '== hourly scheduler =='
numbered_show '.github/workflows/hourly-nvidia-nim-review-repair.yml'

printf '%s\n' '== reusable scheduler workflow =='
numbered_show '.github/workflows/pr-review-fix-scheduler.yml'

printf '%s\n' '== autofix workflow: credential, permissions, conflict and staging controls =='
git show "${head}:.github/workflows/pr-review-autofix.yml" |
  awk '{printf "%5d  %s\n", NR, $0}' |
  grep -E -C 15 \
    'NVIDIA_NIM_API_KEY|COPILOT_GITHUB_TOKEN|GitHub Models|models\.github|mistral-nemotron|nemotron-3-nano|GITHUB_TOKEN|GH_TOKEN|ACTIONS_ID_TOKEN_REQUEST|permissions:|conflicted_files|RESOLVE_CONFLICT|git add|git commit|git push|merge|approve|release|protection' || true

printf '%s\n' '== conflict branch in full context =='
git show "${head}:.github/workflows/pr-review-autofix.yml" |
  awk '{printf "%5d  %s\n", NR, $0}' |
  sed -n '430,570p'

printf '%s\n' '== scheduler helper guard references =='
git show "${head}:scripts/ci/pr_review_fix_scheduler.py" |
  awk '{printf "%5d  %s\n", NR, $0}' |
  grep -E -C 8 \
    'retry|dispatch|concurrency|same.repository|head.sha|live.head|allowlist|allowed|conflict|syntax' || true

printf '%s\n' '== focused contracts: relevant assertions =='
for path in \
  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
do
  printf '\n--- %s ---\n' "$path"
  git show "${head}:${path}" |
    awk '{printf "%5d  %s\n", NR, $0}' |
    grep -E -C 4 \
      'conflict|allowlist|NVIDIA|COPILOT|GitHub Models|credential|permission|cron|retry|workflow_(repository|sha|ref|file_path)|checkout|dispatch|approve|merge|release|protection' || true
done

printf '%s\n' '== doctoring: safeguards and stated claims =='
git show "${head}:docs/doctoring/hourly-nvidia-nim-autofix.md" |
  awk '{printf "%5d  %s\n", NR, $0}' |
  grep -E -C 4 \
    'allowlist|conflict|NVIDIA|credential|GitHub|permission|approval|merge|release|protection|APA' || true

printf '%s\n' '== exact-head workflow runs =='
for run in 31002522693 31002522736 31002522780 31002522802 31002522718 31002522761 31002523083 31002522717 31002522776; do
  printf 'run %s: ' "$run"
  gh api "repos/ContextualWisdomLab/.github/actions/runs/${run}" \
    --jq '[.id,.name,.status,.conclusion,.head_sha] | `@tsv`' 2>&1 || true
done

Length of output: 86050


@seonghobae Formal review verdict: request changes.

I reviewed exact head 63b50227caefb49abd389a8da41edcfc1d32428e.

I verified the requested hourly cadence, one-hour retry floor, one-dispatch bound, repository-scoped concurrency, immutable called-workflow source binding, NVIDIA NIM-only provider configuration, model routing, NVIDIA secret scope, missing-secret failure, child-process GitHub/OIDC credential stripping, permission denials, exact-head checkout, and unchanged reviewer workflow blob 83f6830d5c21a324b4dbcd4e5c21a07968994b81.

The permanent contract gate and all nine listed direct workflows completed successfully for this exact head.

One blocking finding remains:

  • High — conflict resolution does not enforce the conflict-file boundary. In .github/workflows/pr-review-autofix.yml, the conflict prompt restricts the agent to conflicted_files at Lines 493-507. The workflow does not enforce that restriction. The conflict path skips Validate changed files, then runs git add -A at Line 535 and pushes the result. The OpenCode agent has edit: allow for the worktree. It can therefore modify a non-conflicted path, and the workflow will stage and push that modification.
    Snapshot the worktree immediately after git merge and before OpenCode runs. After OpenCode exits, reject model-caused changes and untracked paths outside conflicted_files before staging. Preserve expected non-conflict changes that git merge produced. Add a focused contract test. Update docs/doctoring/hourly-nvidia-nim-autofix.md Lines 133-138 because the current claim that the workflow rejects all paths outside the allowlist does not apply to conflict resolution.

I cannot approve while this write-capable path remains unbounded.

You are interacting with an AI system.

Copy link
Copy Markdown
Contributor Author

@opencode-agent review
@cwl-noema-review
@coderabbitai review

Review exact current head 63b50227caefb49abd389a8da41edcfc1d32428e only. Verify hourly minute-23 cadence, one-hour same-head retry floor, immutable called-workflow source binding, NVIDIA NIM-only model authentication through NVIDIA_NIM_API_KEY, child-process GitHub/OIDC credential removal, complete file-only permission denials, reviewer workflow byte preservation, and absence of approval, merge, release, or branch-protection authority in the repair worker.

@seonghobae
seonghobae marked this pull request as draft August 5, 2026 11:53
auto-merge was automatically disabled August 5, 2026 11:53

Pull request was converted to draft

@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

head='63b50227caefb49abd389a8da41edcfc1d32428e'
base='f070c504c1cb06891b800d7ab0cf6ac7d3cf8eae'
reviewer_blob='83f6830d5c21a324b4dbcd4e5c21a07968994b81'

git cat-file -e "${head}^{commit}"
git cat-file -e "${base}^{commit}"

printf '%s\n' '== Commits =='
printf 'checked_out='; git rev-parse HEAD
git show -s --format='head=%H%nbase-parent=%P%nsubject=%s' "$head"
git show -s --format='baseline=%H%nsubject=%s' "$base"

printf '%s\n' '== Changed paths =='
git diff --name-status "$base" "$head"

printf '%s\n' '== Independent reviewer workflow identity =='
printf 'expected=%s\n' "$reviewer_blob"
printf 'base=%s\n' "$(git rev-parse "$base:.github/workflows/opencode-review-dispatch.yml")"
printf 'head=%s\n' "$(git rev-parse "$head:.github/workflows/opencode-review-dispatch.yml")"
git diff --quiet "$base" "$head" -- .github/workflows/opencode-review-dispatch.yml &&
  printf '%s\n' 'reviewer_workflow_unchanged=true'

printf '%s\n' '== Exact-head workflow source =='
for path in \
  .github/workflows/hourly-nvidia-nim-review-repair.yml \
  .github/workflows/pr-review-fix-scheduler.yml \
  .github/workflows/pr-review-autofix.yml \
  scripts/ci/pr_review_fix_scheduler.py \
  docs/doctoring/hourly-nvidia-nim-autofix.md
do
  printf '\n--- %s ---\n' "$path"
  git show "${head}:${path}" | nl -ba
done

printf '%s\n' '== Sensitive control references =='
git grep -n -I -E \
  '23 \* \* \* \*|retry.hours|canonical_ref|workflow_(repository|sha|ref|file_path)|NVIDIA_NIM_API_KEY|COPILOT_GITHUB_TOKEN|GitHub Models|models\.github|mistralai/mistral-nemotron|nvidia/nemotron-3-nano-30b-a3b|GITHUB_TOKEN|GH_TOKEN|ACTIONS_ID_TOKEN_REQUEST_(TOKEN|URL)|permissions:|repository_dispatch|concurrency:|conflicted_files|RESOLVE_CONFLICT|git add -A|gh pr (merge|review)|gh release|pulls/.*/(merge|reviews)|branches/.+protection|rulesets' \
  "$head" -- .github scripts docs ':!*.md' || true

printf '%s\n' '== Exact-head workflow runs =='
for run in 31002522693 31002522736 31002522780 31002522802 31002522718 31002522761 31002523083 31002522717 31002522776; do
  printf 'run=%s ' "$run"
  gh api "repos/ContextualWisdomLab/.github/actions/runs/${run}" \
    --jq '[.name,.status,.conclusion,.head_sha,.event] | `@tsv`' 2>&1 || true
done

Length of output: 3707


🏁 Script executed:

#!/bin/bash
set -euo pipefail

head='63b50227caefb49abd389a8da41edcfc1d32428e'
base='f070c504c1cb06891b800d7ab0cf6ac7d3cf8eae'

numbered_show() {
  path="$1"
  printf '\n--- %s ---\n' "$path"
  git show "${head}:${path}" | awk '{ printf "%5d  %s\n", NR, $0 }'
}

printf '%s\n' '== Exact-head workflow source =='
for path in \
  .github/workflows/hourly-nvidia-nim-review-repair.yml \
  .github/workflows/pr-review-fix-scheduler.yml \
  .github/workflows/pr-review-autofix.yml \
  scripts/ci/pr_review_fix_scheduler.py \
  docs/doctoring/hourly-nvidia-nim-autofix.md
do
  numbered_show "$path"
done

printf '%s\n' '== Autofix conflict branch, complete context =='
git show "${head}:.github/workflows/pr-review-autofix.yml" |
  awk '{ printf "%5d  %s\n", NR, $0 }' |
  sed -n '430,575p'

printf '%s\n' '== Scheduler dispatch and retry controls =='
git show "${head}:scripts/ci/pr_review_fix_scheduler.py" |
  awk '{ printf "%5d  %s\n", NR, $0 }' |
  grep -E -C 8 'retry|dispatch|concurrency|same.repository|head.sha|live.head|allowlist|allowed|conflict|syntax' || true

printf '%s\n' '== Sensitive control references at exact head =='
git grep -n -I -E \
  '23 \* \* \* \*|retry.hours|canonical_ref|workflow_(repository|sha|ref|file_path)|NVIDIA_NIM_API_KEY|COPILOT_GITHUB_TOKEN|GitHub Models|models\.github|mistralai/mistral-nemotron|nvidia/nemotron-3-nano-30b-a3b|GITHUB_TOKEN|GH_TOKEN|ACTIONS_ID_TOKEN_REQUEST_(TOKEN|URL)|permissions:|repository_dispatch|concurrency:|conflicted_files|RESOLVE_CONFLICT|git add -A|gh pr (merge|review)|gh release|pulls/.*/(merge|reviews)|branches/.+protection|rulesets' \
  "$head" -- .github scripts docs ':!*.md' || true

printf '%s\n' '== Relevant exact-head contract assertions =='
for path in \
  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
do
  printf '\n--- %s ---\n' "$path"
  git show "${head}:${path}" |
    awk '{ printf "%5d  %s\n", NR, $0 }' |
    grep -E -C 4 'conflict|allowlist|NVIDIA|COPILOT|GitHub Models|credential|permission|cron|retry|workflow_(repository|sha|ref|file_path)|checkout|dispatch|approve|merge|release|protection' || true
done

printf '%s\n' '== Exact-head workflow run metadata =='
for run in 31002522693 31002522736 31002522780 31002522802 31002522718 31002522761 31002523083 31002522717 31002522776; do
  printf 'run=%s ' "$run"
  gh api "repos/ContextualWisdomLab/.github/actions/runs/${run}" \
    --jq '[.name,.status,.conclusion,.head_sha,.event] | `@tsv`' 2>&1 || true
done

Length of output: 245059


@seonghobae Formal review verdict: request changes.

I reviewed only commit 63b50227caefb49abd389a8da41edcfc1d32428e.

High — Conflict resolution does not enforce its file boundary

In .github/workflows/pr-review-autofix.yml, the conflict path records conflicted_files at Line 472. It tells OpenCode to edit only those paths at Lines 493-507. This restriction is only in the prompt.

The OpenCode agent has edit: allow for the PR worktree. After OpenCode exits, the workflow runs git add -A at Line 535 and pushes the merge commit at Lines 558-559. It does not reject changed or untracked paths outside conflicted_files.

An OpenCode conflict-resolution run can therefore modify an unrelated path, and the workflow can stage and push that modification.

Before git add -A, create an allowed-path list from conflicted_files. Compare model-caused changed and untracked paths against this list. Do not reject legitimate non-conflict changes made by git merge before OpenCode runs. A pre-OpenCode worktree snapshot can distinguish merge changes from model changes. Add a focused contract test. Update docs/doctoring/hourly-nvidia-nim-autofix.md Lines 133-138 because the stated file-allowlist enforcement does not apply to the conflict path.

I verified these controls at the requested commit:

  • The scheduler uses 23 * * * *.
  • The same-head retry default is one hour.
  • The dispatch limit is one.
  • The scheduler uses repository-scoped single-flight concurrency.
  • The scheduler validates job.workflow_repository, job.workflow_sha, job.workflow_ref, and job.workflow_file_path before checkout.
  • The scheduler checks out the validated SHA and verifies the checked-out commit and workflow file.
  • canonical_ref remains accepted and is not consumed.
  • The worker checks out trusted helper source at ${{ github.sha }}.
  • The OpenCode configuration enables only nvidia-nim.
  • The primary model is nvidia-nim/mistralai/mistral-nemotron.
  • The helper model is nvidia-nim/nvidia/nemotron-3-nano-30b-a3b.
  • secrets.NVIDIA_NIM_API_KEY is bound only to the two OpenCode execution steps.
  • Both OpenCode steps fail if NVIDIA_NIM_API_KEY is empty.
  • Both OpenCode child processes remove GITHUB_TOKEN, GH_TOKEN, and Actions OIDC request credentials.
  • Both permission maps deny the required non-file interactions.
  • .github/workflows/opencode-review-dispatch.yml is unchanged at blob 83f6830d5c21a324b4dbcd4e5c21a07968994b81.
  • I found no approval, PR-merge, release, or branch-protection operation in the reviewed scheduler or autofix worker.
  • The nine listed workflow runs completed successfully for this exact commit.

I cannot approve while the conflict-resolution write path remains unbounded.

You are interacting with an AI system.

Copy link
Copy Markdown
Contributor Author

@opencode-agent @cwl-noema-review @coderabbitai review

Independently review exact current head 2f16cca4aae2d11ccc928f8e03fdcbd97a96d5a2 against protected main at f070c504c1cb06891b800d7ab0cf6ac7d3cf8eae. The prior OpenCode REQUEST_CHANGES reviews are anchored to predecessor head 4d69c58c403c1db07a9c39d5c5180c5b6b0aae15 and must not be reused.

Every direct current-head workflow is successful: Hourly NVIDIA NIM Review Repair 31069588915, Python Security 31069588922, Security Scan 31069588960, CodeQL PR 31069588951, SAST Semgrep 31069588912, Secret Scan 31069589012, OSV-Scanner PR 31069589172, Scorecard PR 31069588926, and SBOM Generation 31069588916; unresolved inline review threads are zero.

Verify the schedule-only product caller, one-hour cadence and retry floor, one-dispatch/single-flight bounds, immutable called-workflow and repository-dispatch source binding, NVIDIA NIM-only model authentication, absence of COPILOT_GITHUB_TOKEN and GitHub Models fallback, missing-secret fail-closed behavior, strict secret step scope, GitHub/OIDC credential stripping, file-only agent permissions, exact-head/live-head/file-allowlist/syntax/conflict guards, independent reviewer byte stability, and the prohibition on approval, merge, release, or protection weakening. Submit an exact-head verdict; a qualifying independent non-author approval and branch protection remain mandatory.

@seonghobae
seonghobae enabled auto-merge (squash) August 6, 2026 04:00
@coderabbitai

coderabbitai Bot commented Aug 6, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

head='2f16cca4aae2d11ccc928f8e03fdcbd97a96d5a2'
base='f070c504c1cb06891b800d7ab0cf6ac7d3cf8eae'
reviewer_blob='83f6830d5c21a324b4dbcd4e5c21a07968994b81'

show_at_head() {
  local path="$1"
  printf '\n--- %s ---\n' "$path"
  git show "${head}:${path}" | awk '{printf "%5d  %s\n", NR, $0}'
}

git cat-file -e "${head}^{commit}"
git cat-file -e "${base}^{commit}"

printf '%s\n' '== Exact commits and diff =='
git show -s --format='head=%H%nhead_subject=%s' "$head"
git show -s --format='base=%H%nbase_subject=%s' "$base"
git diff --name-status "$base" "$head"

printf '%s\n' '== Relevant source at exact head =='
for path in \
  .github/workflows/clearfolio-hourly-review-repair.yml \
  .github/workflows/pr-review-fix-scheduler.yml \
  .github/workflows/pr-review-autofix.yml \
  scripts/ci/pr_review_fix_scheduler.py \
  scripts/ci/pr_review_conflict_scope.py \
  tests/test_pr_review_conflict_scope.py \
  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 \
  docs/doctoring/clearfolio-hourly-review-caller.md \
  CHANGELOG.md
do
  if git cat-file -e "${head}:${path}" 2>/dev/null; then
    show_at_head "$path"
  else
    printf '\n--- MISSING: %s ---\n' "$path"
  fi
done

printf '%s\n' '== Conflict-path call order =='
git show "${head}:.github/workflows/pr-review-autofix.yml" |
  awk '{printf "%5d  %s\n", NR, $0}' |
  sed -n '430,700p'

printf '%s\n' '== Independent reviewer workflow identity =='
printf 'expected=%s\n' "$reviewer_blob"
printf 'base=%s\n' "$(git rev-parse "${base}:.github/workflows/opencode-review-dispatch.yml")"
printf 'head=%s\n' "$(git rev-parse "${head}:.github/workflows/opencode-review-dispatch.yml")"
if git diff --quiet "$base" "$head" -- .github/workflows/opencode-review-dispatch.yml; then
  printf '%s\n' 'unchanged_from_base=true'
else
  printf '%s\n' 'unchanged_from_base=false'
fi

printf '%s\n' '== Sensitive and prohibited-operation references =='
git grep -n -I -E \
  '23 \* \* \* \*|retry.hours|max_dispatches|canonical_ref|workflow_(repository|sha|ref|file_path)|NVIDIA_NIM_API_KEY|COPILOT_GITHUB_TOKEN|GitHub Models|models\.github|mistralai/mistral-nemotron|nvidia/nemotron-3-nano-30b-a3b|GITHUB_TOKEN|GH_TOKEN|ACTIONS_ID_TOKEN_REQUEST_(TOKEN|URL)|pr_review_conflict_scope\.py (snapshot|verify)|git add -A|gh pr (merge|review)|gh release|pulls/.*/(merge|reviews)|branches/.+protection|rulesets|repository_dispatch|concurrency:' \
  "$head" -- .github scripts docs ':!*.md' || true

printf '%s\n' '== Named workflow runs =='
for run in \
  31069588915 31069588922 31069588960 31069588951 31069588912 \
  31069589012 31069589172 31069588926 31069588916
do
  gh api "repos/ContextualWisdomLab/.github/actions/runs/${run}" \
    --jq '[.id,.name,.status,.conclusion,.head_sha,.event] | `@tsv`'
done

Length of output: 202804


🏁 Script executed:

#!/bin/bash
set -euo pipefail

head='2f16cca4aae2d11ccc928f8e03fdcbd97a96d5a2'
base='f070c504c1cb06891b800d7ab0cf6ac7d3cf8eae'

printf '%s\n' '== Changed paths and focused diff =='
git diff --name-status "$base" "$head" -- \
  .github/workflows/clearfolio-hourly-review-repair.yml \
  .github/workflows/pr-review-fix-scheduler.yml \
  .github/workflows/pr-review-autofix.yml \
  scripts/ci/pr_review_fix_scheduler.py \
  scripts/ci/pr_review_conflict_scope.py \
  tests/test_pr_review_conflict_scope.py \
  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 \
  docs/doctoring/clearfolio-hourly-review-caller.md \
  CHANGELOG.md
git diff --no-ext-diff --unified=30 "$base" "$head" -- \
  .github/workflows/clearfolio-hourly-review-repair.yml \
  .github/workflows/pr-review-fix-scheduler.yml \
  .github/workflows/pr-review-autofix.yml \
  scripts/ci/pr_review_fix_scheduler.py \
  scripts/ci/pr_review_conflict_scope.py \
  tests/test_pr_review_conflict_scope.py

printf '%s\n' '== Caller and scheduler source =='
for path in \
  .github/workflows/clearfolio-hourly-review-repair.yml \
  .github/workflows/pr-review-fix-scheduler.yml
do
  printf '\n--- %s ---\n' "$path"
  git show "${head}:${path}" | nl -ba
done

printf '%s\n' '== Autofix source sections =='
git show "${head}:.github/workflows/pr-review-autofix.yml" |
  nl -ba |
  sed -n '1,430p'
git show "${head}:.github/workflows/pr-review-autofix.yml" |
  nl -ba |
  sed -n '430,590p'

printf '%s\n' '== Repair-only prohibited-operation scan =='
for path in \
  .github/workflows/clearfolio-hourly-review-repair.yml \
  .github/workflows/pr-review-fix-scheduler.yml \
  .github/workflows/pr-review-autofix.yml \
  scripts/ci/pr_review_fix_scheduler.py \
  scripts/ci/pr_review_conflict_scope.py
do
  printf '\n--- %s ---\n' "$path"
  git show "${head}:${path}" |
    rg -n -i \
      'gh\s+pr\s+(merge|review)|gh\s+release|pulls/.*/(merge|reviews)|mergePullRequest|enablePullRequestAutoMerge|branches/.+protection|rulesets|releases|/merges' \
    || true
done

printf '%s\n' '== Exact repair-workflow credential and permission controls =='
git show "${head}:.github/workflows/pr-review-autofix.yml" |
  rg -n -C 3 \
    'enabled_providers|nvidia-nim|NVIDIA_NIM_API_KEY|COPILOT_GITHUB_TOKEN|github-models|models\.github|NVIDIA_API_KEY|GITHUB_TOKEN|GH_TOKEN|ACTIONS_ID_TOKEN_REQUEST_(TOKEN|URL)|"bash": "deny"|"task": "deny"|"skill": "deny"|"question": "deny"|"webfetch": "deny"|"websearch": "deny"|"lsp": "deny"|"external_directory": "deny"|"doom_loop": "deny"|same repository|live.*head|allowed_files|allowlist|py_compile|actionlint' \
    || true

Length of output: 57003


🏁 Script executed:

#!/bin/bash
set -euo pipefail

head='2f16cca4aae2d11ccc928f8e03fdcbd97a96d5a2'
base='f070c504c1cb06891b800d7ab0cf6ac7d3cf8eae'

printf '%s\n' '== Diff hygiene =='
git diff --check "$base" "$head"

printf '%s\n' '== Repair-only prohibited operation scan =='
for path in \
  .github/workflows/clearfolio-hourly-review-repair.yml \
  .github/workflows/pr-review-fix-scheduler.yml \
  .github/workflows/pr-review-autofix.yml \
  scripts/ci/pr_review_fix_scheduler.py \
  scripts/ci/pr_review_conflict_scope.py
do
  printf '\n--- %s ---\n' "$path"
  git show "${head}:${path}" | \
    rg -n -i \
      'gh\s+pr\s+(merge|review)|gh\s+release|pulls/.*/(merge|reviews)|mergePullRequest|enablePullRequestAutoMerge|branches/.+protection|rulesets|releases|/merges' \
    || true
done

printf '%s\n' '== Exact autofix provider, token, permission, and guard controls =='
git show "${head}:.github/workflows/pr-review-autofix.yml" | \
  awk '{printf "%5d  %s\n", NR, $0}' | \
  rg -n -C 3 \
    'enabled_providers|nvidia-nim|NVIDIA_NIM_API_KEY|COPILOT_GITHUB_TOKEN|github-models|models\.github|NVIDIA_API_KEY|GITHUB_TOKEN|GH_TOKEN|ACTIONS_ID_TOKEN_REQUEST_(TOKEN|URL)|"bash": "deny"|"task": "deny"|"skill": "deny"|"question": "deny"|"webfetch": "deny"|"websearch": "deny"|"lsp": "deny"|"external_directory": "deny"|"doom_loop": "deny"|same-repository|same repository|live_head_sha|py_compile|actionlint|pr_review_conflict_scope\.py' \
  || true

printf '%s\n' '== Scheduler source identity and bounded dispatch controls =='
git show "${head}:.github/workflows/pr-review-fix-scheduler.yml" | \
  awk '{printf "%5d  %s\n", NR, $0}' | \
  rg -n -C 3 \
    'schedule:|ContextualWisdomLab/clearfolio|canonical_ref|job\.workflow_(repository|sha|ref|file_path)|WORKFLOW_(REPOSITORY|SHA|REF|FILE_PATH)|EXPECTED_(SHA|FILE)|MAX_DISPATCHES|RETRY_HOURS|cancel-in-progress|repository_dispatch' \
  || true

Length of output: 20882


@seonghobae Formal review completed for exact head 2f16cca4aae2d11ccc928f8e03fdcbd97a96d5a2 against f070c504c1cb06891b800d7ab0cf6ac7d3cf8eae.

I found no actionable finding in the requested scope.

Verified controls:

  • The Clearfolio caller uses 23 * * * *.
  • The caller explicitly targets ContextualWisdomLab/clearfolio and main.
  • The caller sets max_dispatches: "1" and retry_hours: "1".
  • The caller and reusable scheduler use single-flight concurrency.
  • The reusable scheduler has no product schedule or Clearfolio repository literal.
  • The scheduler accepts canonical_ref but does not use it to select source.
  • The scheduler validates job.workflow_repository, job.workflow_sha, job.workflow_ref, and job.workflow_file_path.
  • The scheduler checks out the validated immutable SHA and verifies the SHA and workflow file before it runs the helper.
  • The autofix helper checkout uses ${{ github.sha }} with persisted credentials disabled.
  • The autofix worker enables only nvidia-nim.
  • The primary model is nvidia-nim/mistralai/mistral-nemotron.
  • The helper model is nvidia-nim/nvidia/nemotron-3-nano-30b-a3b.
  • The autofix workflow contains no COPILOT_GITHUB_TOKEN, GitHub Models provider, or GitHub Models endpoint.
  • secrets.NVIDIA_NIM_API_KEY is bound only to the two OpenCode execution steps.
  • Both model steps fail closed when the NVIDIA credential is absent.
  • Both model subprocesses remove GITHUB_TOKEN, GH_TOKEN, and Actions OIDC request credentials.
  • The global and named-agent permission maps deny the required non-file interactions.
  • The worker verifies same-repository ownership and exact live base/head metadata before work.
  • The ordinary autofix path validates changed and untracked paths against the file allowlist.
  • The conflict path records Git’s NUL-delimited unresolved-path inventory after the merge, snapshots the post-merge worktree before OpenCode runs, and verifies that snapshot before git add -A.
  • The conflict verifier rejects non-allowlisted modification, creation, deletion, mode change, symlink retargeting, malformed snapshot data, and non-normalized path aliases.
  • Both ordinary and conflict paths recheck the live PR head before push.
  • The repair caller, scheduler, worker, and helpers contain no approval, PR-merge, release, or branch-protection modification operation.
  • .github/workflows/opencode-review-dispatch.yml remains byte-identical at blob 83f6830d5c21a324b4dbcd4e5c21a07968994b81.
  • git diff --check reported no diff-hygiene errors.

I also verified that the nine named workflow runs completed successfully for this exact SHA.

I do not issue approval from this review command. A qualifying independent non-author approval and the repository branch-protection requirements remain mandatory.

You are interacting with an AI system.

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@opencode-agent @cwl-noema-review Independently review exact current head 2f16cca4aae2d11ccc928f8e03fdcbd97a96d5a2 against protected main at f070c504c1cb06891b800d7ab0cf6ac7d3cf8eae.

The predecessor-head OpenCode blocker was reproduced and fixed at its source: the product caller exposed workflow_dispatch, violating the central contract that manual entrypoints must not load branch-selected workflow code. The current caller is schedule-only; the reusable scheduler remains the bounded modular engine.

Every direct exact-head workflow is successful: Hourly NVIDIA NIM Review Repair 31069588915, Python Security 31069588922, Security Scan 31069588960, CodeQL PR 31069588951, SAST Semgrep 31069588912, Secret Scan 31069589012, OSV-Scanner PR 31069589172, Scorecard PR 31069588926, and SBOM Generation 31069588916.

Verify the one-hour cadence and retry floor, schedule-only product caller, one-dispatch/single-flight bounds, immutable called-workflow and repository-dispatch source binding, NVIDIA_NIM_API_KEY-only OpenCode model authentication, absence of COPILOT_GITHUB_TOKEN and GitHub Models fallback, missing-secret fail-closed behavior, strict secret step scope, child-process stripping of GitHub and OIDC credentials, file-only agent permissions, exact-head/live-head/file-allowlist/syntax/conflict guards, byte-for-byte preservation of the independent reviewer workflow, and prohibition on approval, merge, release, or protection weakening. Submit actionable findings or an exact-head formal review; approval must still satisfy repository independence and branch protection.

@coderabbitai

coderabbitai Bot commented Aug 6, 2026

Copy link
Copy Markdown

@seonghobae I will perform an independent review of exact head 2f16cca4aae2d11ccc928f8e03fdcbd97a96d5a2 against f070c504c1cb06891b800d7ab0cf6ac7d3cf8eae.

I will use only exact-head evidence. I will verify the requested scheduler, source-binding, NVIDIA NIM, credential-isolation, file-boundary, reviewer-stability, and prohibited-operation controls. I will not issue approval unless repository independence and branch-protection requirements are satisfied.

⚠️ Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link
Copy Markdown
Contributor Author

@opencode-agent @cwl-noema-review

Re-run an independent exact-head review for 2f16cca4aae2d11ccc928f8e03fdcbd97a96d5a2 against protected main f070c504c1cb06891b800d7ab0cf6ac7d3cf8eae. The prior OpenCode REQUEST_CHANGES reviews are predecessor-head evidence only. The current caller is schedule-only, removing the workflow_dispatch condition that caused the predecessor coverage failure. Direct exact-head workflows are all successful: Hourly NVIDIA NIM Review Repair 31069588915, Python Security 31069588922, Security Scan 31069588960, CodeQL PR 31069588951, SAST Semgrep 31069588912, Secret Scan 31069589012, OSV-Scanner PR 31069589172, Scorecard PR 31069588926, and SBOM Generation 31069588916; unresolved inline threads are zero.

Recompute current-head coverage and docstring evidence, verify the one-hour bounded scheduler, immutable called-workflow source identity, NVIDIA NIM-only model authentication and missing-secret fail-closed behavior, GitHub/OIDC credential stripping, file-only OpenCode permissions, exact-head/live-head/file-allowlist/conflict publication guards, independent reviewer byte stability, and the prohibition on approval, merge, release, or protection weakening. Submit a formal exact-head verdict only; branch protection and a qualifying non-author approval remain mandatory.

Copy link
Copy Markdown
Contributor Author

Exact-current-head review request for 2f16cca4aae2d11ccc928f8e03fdcbd97a96d5a2. The only change after the previously reviewed implementation is the bounded Clearfolio caller correction; the Hourly NVIDIA NIM Review Repair, CodeQL, Python Security, Semgrep, Security Scan, Secret Scan, OSV, Scorecard, and SBOM workflows all pass on this head. Please evaluate this exact head only and do not reuse predecessor coverage verdicts.

@opencode-agent
@cwl-noema-review
@coderabbitai review

@coderabbitai

coderabbitai Bot commented Aug 6, 2026

Copy link
Copy Markdown
🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

head='2f16cca4aae2d11ccc928f8e03fdcbd97a96d5a2'
base='f070c504c1cb06891b800d7ab0cf6ac7d3cf8eae'
expected_reviewer_blob='83f6830d5c21a324b4dbcd4e5c21a07968994b81'

git cat-file -e "${head}^{commit}"
git cat-file -e "${base}^{commit}"

printf '%s\n' '== Exact commits and changed paths =='
git show -s --format='head=%H%nsubject=%s' "$head"
git show -s --format='base=%H%nsubject=%s' "$base"
git diff --name-status "$base" "$head"

printf '%s\n' '== Focused workflow and helper outlines =='
for path in \
  .github/workflows/clearfolio-hourly-review-repair.yml \
  .github/workflows/pr-review-fix-scheduler.yml \
  .github/workflows/pr-review-autofix.yml \
  scripts/ci/pr_review_fix_scheduler.py \
  scripts/ci/pr_review_conflict_scope.py
do
  printf '\n--- %s ---\n' "$path"
  git show "${head}:${path}" | nl -ba
done

printf '%s\n' '== Independent reviewer workflow identity =='
printf 'expected=%s\n' "$expected_reviewer_blob"
printf 'base=%s\n' "$(git rev-parse "${base}:.github/workflows/opencode-review-dispatch.yml")"
printf 'head=%s\n' "$(git rev-parse "${head}:.github/workflows/opencode-review-dispatch.yml")"
git diff --quiet "$base" "$head" -- .github/workflows/opencode-review-dispatch.yml &&
  printf '%s\n' 'unchanged_from_base=true'

printf '%s\n' '== Focused control and prohibited-operation scan =='
git grep -n -I -E \
  '23 \* \* \* \*|workflow_dispatch|max_dispatches|retry_hours|canonical_ref|job\.workflow_(repository|sha|ref|file_path)|NVIDIA_NIM_API_KEY|COPILOT_GITHUB_TOKEN|GitHub Models|models\.github|mistralai/mistral-nemotron|nvidia/nemotron-3-nano-30b-a3b|GITHUB_TOKEN|GH_TOKEN|ACTIONS_ID_TOKEN_REQUEST_(TOKEN|URL)|pr_review_conflict_scope\.py (snapshot|verify)|git add -A|gh pr (merge|review)|gh release|pulls/.*/(merge|reviews)|branches/.+protection|rulesets|repository_dispatch|concurrency:' \
  "$head" -- .github scripts docs ':!*.md' || true

printf '%s\n' '== Exact-head named workflow runs =='
for run in \
  31069588915 31069588922 31069588960 31069588951 31069588912 \
  31069589012 31069589172 31069588926 31069588916
do
  gh api "repos/ContextualWisdomLab/.github/actions/runs/${run}" \
    --jq '[.id,.name,.status,.conclusion,.head_sha,.event] | `@tsv`'
done

Length of output: 3558


🏁 Script executed:

#!/bin/bash
set -euo pipefail

head='2f16cca4aae2d11ccc928f8e03fdcbd97a96d5a2'
base='f070c504c1cb06891b800d7ab0cf6ac7d3cf8eae'
expected_reviewer_blob='83f6830d5c21a324b4dbcd4e5c21a07968994b81'

show() {
  path="$1"
  printf '\n== %s ==\n' "$path"
  git show "${head}:${path}" | sed -n '1,760p'
}

printf '%s\n' '== Caller and scheduler =='
show '.github/workflows/clearfolio-hourly-review-repair.yml'
show '.github/workflows/pr-review-fix-scheduler.yml'

printf '%s\n' '== Autofix model and conflict-path controls =='
git show "${head}:.github/workflows/pr-review-autofix.yml" |
  grep -n -E -C 12 \
    'enabled_providers|nvidia-nim|NVIDIA_NIM_API_KEY|COPILOT_GITHUB_TOKEN|GitHub Models|models\.github|mistral-nemotron|nemotron-3-nano|GITHUB_TOKEN|GH_TOKEN|ACTIONS_ID_TOKEN_REQUEST|permissions|conflicted_files|pr_review_conflict_scope\.py|git add -A|git push|same.repository|live.head|allowed_files|allowlist|py_compile|actionlint' \
  || true

printf '%s\n' '== Conflict-scope helper =='
show 'scripts/ci/pr_review_conflict_scope.py'

printf '%s\n' '== Independent reviewer workflow identity =='
printf 'expected=%s\n' "$expected_reviewer_blob"
printf 'base=%s\n' "$(git rev-parse "${base}:.github/workflows/opencode-review-dispatch.yml")"
printf 'head=%s\n' "$(git rev-parse "${head}:.github/workflows/opencode-review-dispatch.yml")"
if git diff --quiet "$base" "$head" -- .github/workflows/opencode-review-dispatch.yml; then
  printf '%s\n' 'unchanged_from_base=true'
else
  printf '%s\n' 'unchanged_from_base=false'
fi

printf '%s\n' '== Prohibited operations in repair components =='
for path in \
  .github/workflows/clearfolio-hourly-review-repair.yml \
  .github/workflows/pr-review-fix-scheduler.yml \
  .github/workflows/pr-review-autofix.yml \
  scripts/ci/pr_review_fix_scheduler.py \
  scripts/ci/pr_review_conflict_scope.py
do
  printf '\n-- %s --\n' "$path"
  git show "${head}:${path}" |
    grep -n -E -i \
      'gh[[:space:]]+pr[[:space:]]+(merge|review)|gh[[:space:]]+release|pulls/.*/(merge|reviews)|mergePullRequest|enablePullRequestAutoMerge|branches/.+protection|rulesets|/merges' \
    || true
done

printf '%s\n' '== Exact-head named workflow runs =='
for run in \
  31069588915 31069588922 31069588960 31069588951 31069588912 \
  31069589012 31069589172 31069588926 31069588916
do
  gh api "repos/ContextualWisdomLab/.github/actions/runs/${run}" \
    --jq '[.id,.name,.status,.conclusion,.head_sha,.event] | `@tsv`'
done

Length of output: 43952


@seonghobae Formal review completed for exact head 2f16cca4aae2d11ccc928f8e03fdcbd97a96d5a2 against f070c504c1cb06891b800d7ab0cf6ac7d3cf8eae.

I found no actionable finding in the requested scope.

Verified controls:

  • The Clearfolio caller is schedule-only. It runs at 23 * * * *.
  • The caller sets max_dispatches: "1" and retry_hours: "1".
  • The caller and reusable scheduler use single-flight concurrency.
  • The reusable scheduler remains product-neutral.
  • The scheduler accepts but ignores canonical_ref.
  • The scheduler validates job.workflow_repository, job.workflow_sha, job.workflow_ref, and job.workflow_file_path.
  • The scheduler checks out the validated immutable SHA. It verifies the SHA and workflow path before it runs the scheduler helper.
  • The OpenCode worker enables only nvidia-nim.
  • The primary model is nvidia-nim/mistralai/mistral-nemotron.
  • The helper model is nvidia-nim/nvidia/nemotron-3-nano-30b-a3b.
  • secrets.NVIDIA_NIM_API_KEY is bound only to the two OpenCode execution steps.
  • Both model steps fail when NVIDIA_NIM_API_KEY is absent.
  • Both model child processes remove GitHub credentials and Actions OIDC request credentials.
  • The agent permission maps deny non-file interactions.
  • The ordinary autofix path validates changed and untracked paths against the review allowlist.
  • The conflict path records Git’s NUL-delimited unresolved-path inventory after the base merge.
  • The conflict path snapshots the post-merge workspace before OpenCode runs.
  • The conflict path verifies the snapshot against the conflict allowlist before git add -A.
  • The conflict verifier rejects changes outside the allowlist, including creation, deletion, mode changes, symlink retargeting, malformed evidence, and non-normalized path aliases.
  • The worker checks the live pull-request head before each push.
  • The repair components contain no approval, pull-request merge, release, branch-protection, or ruleset operation.
  • .github/workflows/opencode-review-dispatch.yml is byte-identical at blob 83f6830d5c21a324b4dbcd4e5c21a07968994b81.
  • All nine named workflows completed successfully for this exact head.

This review does not constitute a qualifying independent non-author approval. Repository branch-protection requirements still apply.

⚠️ Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@seonghobae
seonghobae dismissed stale reviews from opencode-agent[bot] and opencode-agent[bot] August 6, 2026 04:25

Dismissed as stale: the review is anchored to predecessor head 4d69c58. Exact current head 2f16cca removes the branch-selected manual dispatch entrypoint that caused the reproduced coverage failure, and all direct exact-head focused, security, and supply-chain workflows are successful. A fresh current-head review and independent approval remain required.

@opencode-agent
opencode-agent Bot disabled auto-merge August 6, 2026 04:25

Copy link
Copy Markdown
Contributor Author

@opencode-agent @cwl-noema-review

Please submit a formal GitHub pull-request review for exact head 2f16cca4aae2d11ccc928f8e03fdcbd97a96d5a2, not only a Conversation verdict. Every direct exact-head workflow is successful: Hourly NVIDIA NIM Review Repair 31069588915, Python Security 31069588922, Security Scan 31069588960, CodeQL PR 31069588951, SAST Semgrep 31069588912, Secret Scan 31069589012, OSV 31069589172, Scorecard 31069588926, and SBOM 31069588916; unresolved inline threads are zero.

Independently verify the schedule-only Clearfolio caller, one-hour cadence and retry floor, one-dispatch and single-flight bounds, immutable called-workflow/repository-dispatch source identity, NVIDIA_NIM_API_KEY-only model authentication, absence of COPILOT_GITHUB_TOKEN and GitHub Models fallback, missing-secret fail-closed behavior, strict secret scope, GitHub/OIDC credential stripping, file-only OpenCode permissions, exact-head/live-head/file-allowlist/syntax/conflict guards, byte-stable independent reviewer workflow, and the prohibition on approval, merge, release, or branch-protection weakening by the repair worker. Submit APPROVE only if no exact-head blocker remains; otherwise submit actionable REQUEST_CHANGES.

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@cwl-noema-review
@opencode-agent

Please review exact current head 2f16cca4aae2d11ccc928f8e03fdcbd97a96d5a2. All direct exact-head quality, security, supply-chain, 100% coverage/docstring, and focused NVIDIA-NIM scheduler checks are green. Review only; do not update the branch, approve through a non-independent identity, enable auto-merge, merge, release, or alter branch protection.

@coderabbitai

coderabbitai Bot commented Aug 6, 2026

Copy link
Copy Markdown

@seonghobae I will review exact head 2f16cca4aae2d11ccc928f8e03fdcbd97a96d5a2 only. I will perform a read-only review and will not approve, update the branch, enable auto-merge, merge, release, or change branch protection.

⚠️ Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link
Copy Markdown
Contributor Author

@coderabbitai review
@opencode-agent @cwl-noema-review @strix review

Re-evaluate exact current head 2f16cca4aae2d11ccc928f8e03fdcbd97a96d5a2 only against protected main at f070c504c1cb06891b800d7ab0cf6ac7d3cf8eae. Every direct exact-head workflow is successful: Hourly NVIDIA NIM Review Repair 31069588915, Python Security 31069588922, Security Scan 31069588960, CodeQL PR 31069588951, SAST Semgrep 31069588912, Secret Scan 31069589012, OSV-Scanner PR 31069589172, Scorecard PR 31069588926, and SBOM Generation 31069588916; inline review threads are zero. Prior OpenCode reviews on 4d69c58c403c1db07a9c39d5c5180c5b6b0aae15, rate-limit notices, synthetic merge evidence, and wrapper-only checks are stale or insufficient.

Perform read-only review with no branch write, auto-merge, merge, release, approval synthesis, reviewer-identity change, or protection change. Submit an exact-head formal verdict and, only if reviewer independence and repository policy genuinely permit it, a qualifying non-author approval. Otherwise state the remaining external gate precisely.

@coderabbitai

coderabbitai Bot commented Aug 6, 2026

Copy link
Copy Markdown

Your plan includes PR reviews subject to rate limits. More reviews will be available in 12 minutes.

@seonghobae
seonghobae marked this pull request as draft August 6, 2026 05:19
@seonghobae
seonghobae marked this pull request as ready for review August 6, 2026 05:20

Copy link
Copy Markdown
Contributor Author

@opencode-agent @cwl-noema-review Independently review exact current head 2f16cca4aae2d11ccc928f8e03fdcbd97a96d5a2 against protected main at f070c504c1cb06891b800d7ab0cf6ac7d3cf8eae. CodeRabbit has completed a current-head source review with no actionable finding. Exact-head SBOM 31073803667, Scorecard 31073803697, Security Scan 31073803736, OSV 31073804008, Secret Scan 31073803680, Semgrep 31073803666, CodeQL 31073803711, and Python Security 31073803688 succeeded; the focused hourly NVIDIA NIM contract also succeeded for this unchanged tree in run 31069588915. There are zero unresolved review threads.

Verify the one-hour product caller and same-head retry floor, one-dispatch and single-flight bounds, immutable reusable-workflow source identity, NVIDIA NIM-only OpenCode authentication, absence of COPILOT_GITHUB_TOKEN and GitHub Models fallback, strict model-secret scope, child-process removal of GitHub/OIDC credentials, file-only agent permissions, exact-head/live-head/file-allowlist/syntax/conflict-marker guards, post-merge worktree snapshot enforcement, independent reviewer-workflow preservation, and the prohibition on approval, merge, release, or protection mutation by the repair worker. Submit an actionable current-head finding or a formal exact-head verdict. Do not reuse the dismissed predecessor-head coverage reviews.

@seonghobae
seonghobae enabled auto-merge (squash) August 6, 2026 05:55

Copy link
Copy Markdown
Contributor Author

@opencode-agent @cwl-noema-review @coderabbitai review

Please review exact head 2f16cca4aae2d11ccc928f8e03fdcbd97a96d5a2. The current head has successful hourly NVIDIA NIM quality, Python Security, Security Scan, CodeQL, Semgrep, Secret Scan, OSV, Scorecard, and SBOM runs. Evaluate only this head; do not reuse the dismissed predecessor-head coverage verdicts. Merge remains subject to repository protection and qualifying independent approval.

@coderabbitai

coderabbitai Bot commented Aug 6, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

head='2f16cca4aae2d11ccc928f8e03fdcbd97a96d5a2'
base='f070c504c1cb06891b800d7ab0cf6ac7d3cf8eae'
reviewer_blob='83f6830d5c21a324b4dbcd4e5c21a07968994b81'

show_head() {
  local path="$1"
  printf '\n--- %s ---\n' "$path"
  git show "${head}:${path}" | nl -ba
}

git cat-file -e "${head}^{commit}"
git cat-file -e "${base}^{commit}"

printf '%s\n' '== Exact commits and changed paths =='
git show -s --format='head=%H%nsubject=%s' "$head"
git show -s --format='base=%H%nsubject=%s' "$base"
git diff --name-status "$base" "$head"

printf '%s\n' '== Workflow and helper structure =='
for path in \
  .github/workflows/clearfolio-hourly-review-repair.yml \
  .github/workflows/pr-review-fix-scheduler.yml \
  .github/workflows/pr-review-autofix.yml \
  scripts/ci/pr_review_fix_scheduler.py \
  scripts/ci/pr_review_conflict_scope.py
do
  printf '\n--- outline: %s ---\n' "$path"
  ast-grep outline "$path" --items all || true
done

printf '%s\n' '== Requested exact-head sources =='
for path in \
  .github/workflows/clearfolio-hourly-review-repair.yml \
  .github/workflows/pr-review-fix-scheduler.yml \
  .github/workflows/pr-review-autofix.yml \
  scripts/ci/pr_review_fix_scheduler.py \
  scripts/ci/pr_review_conflict_scope.py \
  tests/test_pr_review_conflict_scope.py \
  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
do
  show_head "$path"
done

printf '%s\n' '== Independent reviewer workflow identity =='
printf 'expected=%s\n' "$reviewer_blob"
printf 'base=%s\n' "$(git rev-parse "${base}:.github/workflows/opencode-review-dispatch.yml")"
printf 'head=%s\n' "$(git rev-parse "${head}:.github/workflows/opencode-review-dispatch.yml")"
git diff --quiet "$base" "$head" -- .github/workflows/opencode-review-dispatch.yml &&
  printf '%s\n' 'unchanged_from_base=true'

printf '%s\n' '== Sensitive and prohibited-operation scan =='
git grep -n -I -E \
  '23 \* \* \* \*|workflow_dispatch|max_dispatches|retry_hours|canonical_ref|workflow_(repository|sha|ref|file_path)|NVIDIA_NIM_API_KEY|COPILOT_GITHUB_TOKEN|GitHub Models|models\.github|nvidia-nim|GITHUB_TOKEN|GH_TOKEN|ACTIONS_ID_TOKEN_REQUEST_(TOKEN|URL)|pr_review_conflict_scope\.py (snapshot|verify)|git add -A|gh pr (merge|review)|gh release|pulls/.*/(merge|reviews)|branches/.+protection|rulesets|repository_dispatch|concurrency:' \
  "$head" -- .github scripts docs ':!*.md' || true

printf '%s\n' '== Exact-head diff hygiene =='
git diff --check "$base" "$head"

printf '%s\n' '== Named workflow run metadata =='
for run in \
  31069588915 31069588922 31069588960 31069588951 31069588912 \
  31069589012 31069589172 31069588926 31069588916
do
  gh api "repos/ContextualWisdomLab/.github/actions/runs/${run}" \
    --jq '[.id,.name,.status,.conclusion,.head_sha,.event] | `@tsv`'
done

Length of output: 7406


🏁 Script executed:

#!/bin/bash
set -euo pipefail

head='2f16cca4aae2d11ccc928f8e03fdcbd97a96d5a2'
base='f070c504c1cb06891b800d7ab0cf6ac7d3cf8eae'
reviewer_blob='83f6830d5c21a324b4dbcd4e5c21a07968994b81'

show_head() {
  local path="$1"
  printf '\n--- %s ---\n' "$path"
  git show "${head}:${path}" | awk '{ printf "%5d  %s\n", NR, $0 }'
}

printf '%s\n' '== Caller and reusable scheduler =='
show_head '.github/workflows/clearfolio-hourly-review-repair.yml'
show_head '.github/workflows/pr-review-fix-scheduler.yml'

printf '%s\n' '== Autofix controls and conflict path =='
git show "${head}:.github/workflows/pr-review-autofix.yml" |
  awk '{ printf "%5d  %s\n", NR, $0 }' |
  grep -E -C 10 \
    'enabled_providers|nvidia-nim|NVIDIA_NIM_API_KEY|COPILOT_GITHUB_TOKEN|GitHub Models|models\.github|GITHUB_TOKEN|GH_TOKEN|ACTIONS_ID_TOKEN_REQUEST_(TOKEN|URL)|permissions|same.repository|live.head|allowed_files|allowlist|conflicted_files|pr_review_conflict_scope\.py|git add -A|git push|py_compile|actionlint' \
  || true

printf '%s\n' '== Conflict-scope helper and focused contracts =='
for path in \
  scripts/ci/pr_review_conflict_scope.py \
  tests/test_pr_review_conflict_scope.py \
  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
do
  show_head "$path"
done

printf '%s\n' '== Independent reviewer workflow identity =='
printf 'expected=%s\n' "$reviewer_blob"
printf 'base=%s\n' "$(git rev-parse "${base}:.github/workflows/opencode-review-dispatch.yml")"
printf 'head=%s\n' "$(git rev-parse "${head}:.github/workflows/opencode-review-dispatch.yml")"
if git diff --quiet "$base" "$head" -- .github/workflows/opencode-review-dispatch.yml; then
  printf '%s\n' 'unchanged_from_base=true'
else
  printf '%s\n' 'unchanged_from_base=false'
fi

printf '%s\n' '== Prohibited operations in repair components =='
for path in \
  .github/workflows/clearfolio-hourly-review-repair.yml \
  .github/workflows/pr-review-fix-scheduler.yml \
  .github/workflows/pr-review-autofix.yml \
  scripts/ci/pr_review_fix_scheduler.py \
  scripts/ci/pr_review_conflict_scope.py
do
  printf '\n--- %s ---\n' "$path"
  git show "${head}:${path}" |
    grep -n -E -i \
      'gh[[:space:]]+pr[[:space:]]+(merge|review)|gh[[:space:]]+release|pulls/.*/(merge|reviews)|mergePullRequest|enablePullRequestAutoMerge|branches/.+protection|rulesets|/merges' \
    || true
done

printf '%s\n' '== Exact-head diff hygiene =='
git diff --check "$base" "$head"

printf '%s\n' '== Named workflow run metadata =='
for run in \
  31069588915 31069588922 31069588960 31069588951 31069588912 \
  31069589012 31069589172 31069588926 31069588916
do
  gh api "repos/ContextualWisdomLab/.github/actions/runs/${run}" \
    --jq '[.id,.name,.status,.conclusion,.head_sha,.event] | `@tsv`'
done

Length of output: 77085


@seonghobae Formal exact-head review completed for 2f16cca4aae2d11ccc928f8e03fdcbd97a96d5a2 against f070c504c1cb06891b800d7ab0cf6ac7d3cf8eae.

I found no actionable finding in the requested scope.

Verified controls:

  • The Clearfolio caller is schedule-only and runs at 23 * * * *.
  • The caller limits dispatches to one and uses a one-hour retry floor.
  • The caller and reusable scheduler use single-flight concurrency.
  • The reusable scheduler remains product-neutral.
  • The scheduler validates job.workflow_repository, job.workflow_sha, job.workflow_ref, and job.workflow_file_path before checkout.
  • The scheduler checks out the validated immutable SHA and verifies the SHA and workflow file before it runs the helper.
  • canonical_ref remains accepted but does not select executable source.
  • The autofix worker enables only nvidia-nim.
  • The primary model is nvidia-nim/mistralai/mistral-nemotron.
  • The helper model is nvidia-nim/nvidia/nemotron-3-nano-30b-a3b.
  • The autofix workflow contains no COPILOT_GITHUB_TOKEN or GitHub Models provider configuration.
  • NVIDIA_NIM_API_KEY is bound only to the two OpenCode execution steps.
  • Both model steps fail closed when the NVIDIA credential is absent.
  • Both OpenCode subprocesses remove GitHub and Actions OIDC credentials.
  • The OpenCode permission maps deny non-file interactions.
  • The normal autofix path checks changed and untracked paths against the file allowlist.
  • The conflict path records Git’s NUL-delimited unresolved-path inventory after the merge.
  • The conflict path snapshots the post-merge worktree before OpenCode runs.
  • The conflict path verifies the snapshot against the conflict allowlist before git add -A.
  • The conflict verifier rejects unauthorized modification, creation, deletion, mode change, symlink retargeting, malformed evidence, and non-normalized path aliases.
  • The worker rechecks the live PR head before each push.
  • The reviewed repair components contain no approval, pull-request merge, release, branch-protection, or ruleset operation.
  • .github/workflows/opencode-review-dispatch.yml is byte-identical at blob 83f6830d5c21a324b4dbcd4e5c21a07968994b81.
  • git diff --check reported no diff-hygiene errors.
  • The nine named workflow runs completed successfully for this exact head.

This review does not satisfy the external merge gates. A qualifying independent non-author approval and repository branch-protection requirements remain mandatory.

You are interacting with an AI system.

Copy link
Copy Markdown
Contributor Author

Exact-head review request for 2f16cca4aae2d11ccc928f8e03fdcbd97a96d5a2. This head removes the branch-selectable workflow_dispatch entrypoint from the hourly caller; the schedule-only control plane, NVIDIA NIM credential separation, immutable reusable-workflow source, one-hour cadence, conflict-scope guard, direct quality/security workflows, and zero unresolved threads have current-head success. Review only this head against protected main; no predecessor evidence transfers.

@coderabbitai review
@cwl-noema-review
@opencode-agent

@coderabbitai

coderabbitai Bot commented Aug 6, 2026

Copy link
Copy Markdown

@seonghobae I will review only exact head 2f16cca4aae2d11ccc928f8e03fdcbd97a96d5a2 against protected main at f070c504c1cb06891b800d7ab0cf6ac7d3cf8eae. I will not use predecessor-head evidence.

⚠️ Action not completed

Already reviewed.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link
Copy Markdown
Contributor Author

@opencode-agent @cwl-noema-review Final independent exact-head review requested for 2f16cca4aae2d11ccc928f8e03fdcbd97a96d5a2. Current-head Hourly NVIDIA NIM Review Repair 31069588915, Python Security 31073803688, Security Scan 31073803736, CodeQL 31073803711, Semgrep 31073803666, Secret Scan 31073803680, OSV 31073804008, Scorecard 31073803697, and SBOM 31073803667 completed successfully. Revalidate the immutable called-workflow source, one-hour/one-dispatch bounds, NVIDIA-only model authentication, GitHub/OIDC credential stripping, exact conflict-scope snapshot, least privilege, reviewer separation, fail-closed behavior, and modular reusable-engine contract. Submit APPROVE only after live exact-head evidence and zero actionable threads; stale, status-only, rate-limited, synthetic, wrapper-only, self-authored, or prior-head evidence is insufficient. Do not mutate, merge, release, or alter protections.

@seonghobae seonghobae left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Exact-current-head review request after evidence reconciliation.

Head: 2f16cca4aae2d11ccc928f8e03fdcbd97a96d5a2
Base: f070c504c1cb06891b800d7ab0cf6ac7d3cf8eae
Focused scheduler gate, Python Security, Security Scan, CodeQL, Semgrep, Secret Scan, OSV, Scorecard, and SBOM are successful on this exact head. Inline review threads are resolved. Earlier OpenCode request-changes reviews belong to predecessor head 4d69c58c403c1db07a9c39d5c5180c5b6b0aae15 and are dismissed stale evidence.

@coderabbitai review
@opencode-agent review
@cwl-noema-review review
@strix review

Review read-only. Preserve the existing reviewer identities and credential chain. Do not update the branch, create repair automation, approve from author identity, or merge. Submit an exact-head verdict only.

@opencode-agent
opencode-agent Bot disabled auto-merge August 6, 2026 08:03
@seonghobae
seonghobae enabled auto-merge (squash) August 6, 2026 08:52

Copy link
Copy Markdown
Contributor Author

@opencode-agent @cwl-noema-review review

Re-review exact current head 2f16cca4aae2d11ccc928f8e03fdcbd97a96d5a2 only. The two historical OpenCode REQUEST_CHANGES reviews are dismissed predecessor-head evidence from 4d69c58c403c1db07a9c39d5c5180c5b6b0aae15 and must not be reused. Current exact-head direct evidence is complete and successful: Hourly NVIDIA NIM Review Repair 31069588915; Python Security 31073803688; Security Scan 31073803736; CodeQL PR 31073803711; SAST Semgrep 31073803666; Secret Scan 31073803680; OSV-Scanner PR 31073804008; Scorecard PR 31073803697; SBOM Generation 31073803667; unresolved inline review threads: zero. Review read-only. Verify NVIDIA NIM-only write-capable autofix authentication via NVIDIA_NIM_API_KEY, immutable scheduler/worker source binding, child-process GitHub/OIDC credential stripping, file-only agent permissions, exact-head/live-head/same-repository/conflict-scope fail-closed guards, and unchanged independent reviewer credential chain. Submit an exact-head verdict only; do not update the branch, merge, or bypass protection.

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.

2 participants