Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
6a3b2f0
test(ci): require hourly NVIDIA NIM review autofix
seonghobae Aug 4, 2026
0cbbed0
test(ci): cover both NVIDIA NIM autofix executions
seonghobae Aug 4, 2026
3b94c9b
chore(ci): add deterministic NVIDIA NIM autofix patcher
seonghobae Aug 4, 2026
a34e28c
ci: validate and apply NVIDIA NIM autofix migration
seonghobae Aug 4, 2026
42967a4
docs(doctoring): define NVIDIA NIM autofix boundary
seonghobae Aug 4, 2026
c9bf3fd
ci: verify and apply NVIDIA NIM autofix migration
seonghobae Aug 4, 2026
cfefa24
ci: retrigger validated NVIDIA NIM migration
seonghobae Aug 4, 2026
af5ae0a
fix(ci): keep secret expressions literal in one-shot patch
seonghobae Aug 4, 2026
81ad9f7
fix(ci): route scheduled autofix through NVIDIA NIM
seonghobae Aug 4, 2026
30a5356
chore(ci): remove failed one-shot migration helper
seonghobae Aug 4, 2026
5deb106
chore(ci): remove superseded PR 752 patch script
seonghobae Aug 4, 2026
6b2b21d
chore(ci): remove superseded PR 752 patch workflow
seonghobae Aug 4, 2026
1917ebc
test(ci): require fail-closed NVIDIA NIM secret handling
seonghobae Aug 4, 2026
8285def
test(ci): harden NVIDIA NIM autofix trust boundary
seonghobae Aug 4, 2026
fbc16ca
chore(ci): apply reviewed NVIDIA autofix hardening
seonghobae Aug 4, 2026
9f3c2a1
chore(ci): remove unused NVIDIA autofix patch workflow
seonghobae Aug 4, 2026
6c52b46
fix(ci): harden NVIDIA NIM autofix trust boundary
seonghobae Aug 4, 2026
0103f2b
docs(ci): record NVIDIA autofix trust-boundary hardening
seonghobae Aug 4, 2026
5fe0037
test(ci): isolate GitHub credentials from OpenCode subprocesses
seonghobae Aug 4, 2026
b9f4d24
ci: apply reviewed NVIDIA NIM credential isolation
seonghobae Aug 4, 2026
14a3938
ci: repair deterministic credential-isolation patch
seonghobae Aug 4, 2026
17197d0
test(ci): pin independent reviewer workflow unchanged
seonghobae Aug 4, 2026
f9993b2
ci: rerun credential isolation after reviewer pin fix
seonghobae Aug 4, 2026
575f482
ci: publish credential isolation with workflow-capable token
seonghobae Aug 4, 2026
d6049bd
ci: publish credential isolation with OpenCode App token
seonghobae Aug 4, 2026
4b7867f
fix(ci): isolate OpenCode from GitHub credentials
opencode-agent[bot] Aug 4, 2026
a25324a
ci: remove credential-isolation patch workflow
opencode-agent[bot] Aug 4, 2026
ffb317a
docs(doctoring): record OpenCode credential isolation boundary
seonghobae Aug 4, 2026
f98dfc1
ci: dispatch exact-head review for central baseline
seonghobae Aug 4, 2026
b203202
ci: remove exact-head review dispatcher
opencode-agent[bot] Aug 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
74 changes: 40 additions & 34 deletions .github/workflows/pr-review-autofix.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ jobs:
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
repository: ContextualWisdomLab/.github
ref: ${{ github.sha }}
fetch-depth: 1
persist-credentials: false
path: trusted-autofix-source
Expand Down Expand Up @@ -231,9 +232,9 @@ jobs:
EOF
jq -n --arg workspace "$TARGET_WORKSPACE" '{
"$schema": "https://opencode.ai/config.json",
"model": "github-models/openai/gpt-5",
"small_model": "github-models/deepseek/deepseek-v3-0324",
"enabled_providers": ["github-models"],
"model": "nvidia-nim/mistralai/mistral-nemotron",
"small_model": "nvidia-nim/nvidia/nemotron-3-nano-30b-a3b",
"enabled_providers": ["nvidia-nim"],
"permission": {
"edit": "allow",
"bash": "deny",
Expand All @@ -242,10 +243,13 @@ jobs:
"glob": "allow",
"list": "allow",
"task": "deny",
"skill": "deny",
"question": "deny",
"webfetch": "deny",
"websearch": "deny",
"lsp": "deny",
"external_directory": "deny"
"external_directory": "deny",
"doom_loop": "deny"
},
"agent": {
"ci-autofix": {
Expand All @@ -261,45 +265,40 @@ jobs:
"glob": "allow",
"list": "allow",
"task": "deny",
"skill": "deny",
"question": "deny",
"webfetch": "deny",
"websearch": "deny",
"lsp": "deny",
"external_directory": "deny"
"external_directory": "deny",
"doom_loop": "deny"
}
}
},
"provider": {
"github-models": {
"nvidia-nim": {
"npm": "@ai-sdk/openai-compatible",
"name": "GitHub Models",
"name": "NVIDIA NIM",
"options": {
"baseURL": "https://models.github.ai/inference",
"apiKey": "{env:STRIX_GITHUB_MODELS_TOKEN}"
"baseURL": "https://integrate.api.nvidia.com/v1",
"apiKey": "{env:NVIDIA_API_KEY}"
},
"models": {
"openai/gpt-5": {
"name": "OpenAI GPT-5",
"mistralai/mistral-nemotron": {
"name": "Mistral Nemotron",
"tool_call": true,
"reasoning": true,
"options": {
"reasoningEffort": "high"
},
"variants": {
"high": {
"reasoningEffort": "high"
}
},
"limit": {
"context": 200000,
"output": 100000
"context": 128000,
"output": 4096
}
},
"deepseek/deepseek-v3-0324": {
"name": "DeepSeek V3 0324",
"nvidia/nemotron-3-nano-30b-a3b": {
"name": "Nemotron 3 Nano 30B A3B",
"tool_call": true,
"reasoning": true,
"limit": {
"context": 128000,
"output": 4096
"output": 32768
}
}
}
Expand All @@ -310,16 +309,18 @@ jobs:
- name: Run OpenCode review autofix
if: env.RESOLVE_CONFLICT != 'true'
env:
STRIX_GITHUB_MODELS_TOKEN: ${{ secrets.STRIX_GITHUB_MODELS_TOKEN || github.token }}
GITHUB_TOKEN: ${{ secrets.PR_REVIEW_MERGE_TOKEN || secrets.OPENCODE_APPROVE_TOKEN || steps.target_app_token.outputs.token || github.token }}
MODEL: github-models/openai/gpt-5
USE_GITHUB_TOKEN: "true"
NVIDIA_API_KEY: ${{ secrets.NVIDIA_NIM_API_KEY }}
MODEL: nvidia-nim/mistralai/mistral-nemotron
SHARE: "false"
NPM_CONFIG_IGNORE_SCRIPTS: "true"
NO_COLOR: "1"
OPENCODE_AUTOFIX_WORKDIR: ${{ runner.temp }}/opencode-autofix-project
run: |
set -euo pipefail
if [ -z "${NVIDIA_API_KEY:-}" ]; then
echo "::error::NVIDIA_NIM_API_KEY is required for scheduled OpenCode autofix."
exit 1
fi
prompt_file="${RUNNER_TEMP}/opencode-autofix-prompt.md"
allowed_paths_context="$(
awk '
Expand Down Expand Up @@ -374,7 +375,8 @@ jobs:
}
trap restore_workspace_config EXIT
cd "$TARGET_WORKSPACE"
timeout 18000 opencode run "$(cat "$prompt_file")" \
env -u GITHUB_TOKEN -u GH_TOKEN -u ACTIONS_ID_TOKEN_REQUEST_TOKEN -u ACTIONS_ID_TOKEN_REQUEST_URL \
timeout 18000 opencode run "$(cat "$prompt_file")" \
--pure \
--agent ci-autofix \
--model "$MODEL" \
Expand Down Expand Up @@ -446,17 +448,20 @@ jobs:
- name: Merge base branch and resolve conflicts with OpenCode
if: env.RESOLVE_CONFLICT == 'true'
env:
STRIX_GITHUB_MODELS_TOKEN: ${{ secrets.STRIX_GITHUB_MODELS_TOKEN || github.token }}
NVIDIA_API_KEY: ${{ secrets.NVIDIA_NIM_API_KEY }}
GITHUB_TOKEN: ${{ secrets.PR_REVIEW_MERGE_TOKEN || secrets.OPENCODE_APPROVE_TOKEN || steps.target_app_token.outputs.token || github.token }}
GH_TOKEN: ${{ secrets.PR_REVIEW_MERGE_TOKEN || secrets.OPENCODE_APPROVE_TOKEN || steps.target_app_token.outputs.token || github.token }}
MODEL: github-models/openai/gpt-5
USE_GITHUB_TOKEN: "true"
MODEL: nvidia-nim/mistralai/mistral-nemotron
SHARE: "false"
NPM_CONFIG_IGNORE_SCRIPTS: "true"
NO_COLOR: "1"
OPENCODE_AUTOFIX_WORKDIR: ${{ runner.temp }}/opencode-autofix-project
run: |
set -euo pipefail
if [ -z "${NVIDIA_API_KEY:-}" ]; then
echo "::error::NVIDIA_NIM_API_KEY is required for scheduled OpenCode autofix."
exit 1
fi
cd "$TARGET_WORKSPACE"

# Merge the base branch into the detached head. A clean merge stays
Expand Down Expand Up @@ -516,7 +521,8 @@ jobs:
fi
}
trap restore_workspace_config EXIT
timeout 18000 opencode run "$(cat "$prompt_file")" \
env -u GITHUB_TOKEN -u GH_TOKEN -u ACTIONS_ID_TOKEN_REQUEST_TOKEN -u ACTIONS_ID_TOKEN_REQUEST_URL \
timeout 18000 opencode run "$(cat "$prompt_file")" \
--pure \
--agent ci-autofix \
--model "$MODEL" \
Expand Down
Loading
Loading