Skip to content
Closed
Show file tree
Hide file tree
Changes from 5 commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
6406cfd
fix(review): repair verified adversarial line bindings
seonghobae Jul 14, 2026
1fda560
fix(review): derive trusted probe receipts
seonghobae Jul 15, 2026
9d7774c
refactor(review): isolate trusted receipt repair
seonghobae Jul 15, 2026
c86c4b4
test(review): restore normalizer coverage gate
seonghobae Jul 15, 2026
196c5a4
fix(review): bind only verified probe locations
seonghobae Jul 15, 2026
534e578
fix(review): add Saju CalDAV offline Python dependencies
seonghobae Jul 19, 2026
3b2255b
fix(review): ignore cancelled scheduler REST checks
seonghobae Jul 20, 2026
55219f0
fix(review): bind probes to verified evidence lines
seonghobae Jul 20, 2026
90f4c51
test: cover receipt binding rejection edges
seonghobae Jul 20, 2026
631cdc8
fix(review): try GPT-4.1 first
seonghobae Jul 20, 2026
f802182
docs(review): align candidate-order guidance
seonghobae Jul 20, 2026
871db61
fix(review): exclude GPT-4.1 approval candidate
seonghobae Jul 20, 2026
447e062
fix(review): restore evidence-backed GPT-4.1 lead
seonghobae Jul 20, 2026
54538d1
fix(review): close trusted log and symlink boundaries
seonghobae Jul 21, 2026
826a628
fix(review): strip git history from coverage artifacts
seonghobae Jul 21, 2026
039c3c1
fix(review): keep Git history out of coverage artifacts
seonghobae Jul 21, 2026
6b129f8
fix(review): fail closed on artifact validation
seonghobae Jul 21, 2026
2fbfdf6
fix(review): preserve replay guard history
seonghobae Jul 21, 2026
71528f6
fix(review): close cross-job source and log boundaries
seonghobae Jul 21, 2026
9672e01
synthetic PR 604 + PR 563 verification
seonghobae Jul 21, 2026
df7be37
fix(review): bound DeepSeek fallback runtime
seonghobae Jul 21, 2026
28c71a9
test(review): clarify missing dependency locks
seonghobae Jul 21, 2026
533accd
test(review): scope dependency hash assertions
seonghobae Jul 21, 2026
6daf661
synthetic current central sequence verification
seonghobae Jul 22, 2026
8cc232e
fix(security): patch Strix pyasn1 DoS
seonghobae Jul 22, 2026
4d8a00d
test(review): harden dependency lock contract
seonghobae Jul 22, 2026
a63ac72
test(review): normalize dependency lock parsing
seonghobae Jul 22, 2026
5b9a8b1
Merge remote-tracking branch 'origin/main' into agent/prep-central-se…
seonghobae Jul 26, 2026
358db7f
fix(review): reject contradictory probe citations
seonghobae Jul 26, 2026
039f409
fix(review): fail closed on trust-boundary scans
seonghobae Jul 26, 2026
4f8981a
fix(review): preserve primary model review budget
seonghobae Jul 26, 2026
0e15a23
fix(review): stop when no models are runnable
seonghobae Jul 26, 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
30 changes: 25 additions & 5 deletions .github/workflows/opencode-review.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1626,7 +1626,13 @@ jobs:
printf 'Published compact coverage decision output after sanitization (%s bytes); full command logs remain in the job log and step summary.\n' \
"$(wc -c <"$summary_output_file" | tr -d ' ')"

coverage_log_stop_token="$(python3 -I -c 'import os; print("coverage-log-" + os.urandom(24).hex())')"
while grep -Fq "$coverage_log_stop_token" "$summary_file"; do
coverage_log_stop_token="$(python3 -I -c 'import os; print("coverage-log-" + os.urandom(24).hex())')"
done
printf '::stop-commands::%s\n' "$coverage_log_stop_token"
cat "$summary_file"
printf '\n::%s::\n' "$coverage_log_stop_token"
Comment thread
seonghobae marked this conversation as resolved.
Outdated
# No process running pull-request code may survive into the trusted
# publication phase. The result is copied from a root-only tmpfs only
# after every low-privilege process has been terminated.
Expand Down Expand Up @@ -1857,6 +1863,20 @@ jobs:
git cat-file -e "${PR_HEAD_SHA}^{commit}"
rm -rf "$OPENCODE_SOURCE_WORKDIR"
git worktree add --detach "$OPENCODE_SOURCE_WORKDIR" "$PR_HEAD_SHA"
while IFS= read -r -d '' indexed_entry; do
indexed_mode="${indexed_entry%% *}"
case "$indexed_mode" in
100644 | 100755) ;;
*)
printf '::error::PR worktree contains non-regular tracked entry mode %s; refusing trusted review processing.\n' "$indexed_mode"
exit 1
;;
esac
done < <(git -C "$OPENCODE_SOURCE_WORKDIR" ls-files -s -z)
if find -P "$OPENCODE_SOURCE_WORKDIR" -mindepth 1 -type l -print -quit | grep -q .; then
echo "::error::PR worktree contains a symbolic link; refusing trusted review processing."
exit 1
fi
Comment thread
seonghobae marked this conversation as resolved.
Outdated
git -C "$OPENCODE_SOURCE_WORKDIR" status --short

- name: Configure git identity for OpenCode action
Expand Down Expand Up @@ -2090,6 +2110,7 @@ jobs:
CODEGRAPH_BIN="${CODEGRAPH_TRUSTED_ROOT}/node_modules/.bin/codegraph"
test -x "$CODEGRAPH_BIN"
printf 'Using trusted CodeGraph CLI version %s.\n' "$("$CODEGRAPH_BIN" --version)"
rm -rf -- "$OPENCODE_SOURCE_WORKDIR/.codegraph"
cd "$OPENCODE_SOURCE_WORKDIR"
"$CODEGRAPH_BIN" init -i
codegraph_status="$(mktemp)"
Expand Down Expand Up @@ -3516,15 +3537,14 @@ jobs:
SHARE: "false"
NPM_CONFIG_IGNORE_SCRIPTS: "true"
NO_COLOR: "1"
# High-sensitivity review candidates only. DeepSeek V3 has been the
# most reliable first-pass reviewer in the org queue, then the pool
# falls through to the direct GPT-5.6 Luna slot, then the full-size
# GPT-4.1 long-context endpoint and provider-specific GPT/o3 fallbacks.
# High-sensitivity review candidates only. GPT-4.1 is the first-pass
# long-context endpoint, then the pool falls through to DeepSeek V3,
# the direct GPT-5.6 Luna slot, and provider-specific GPT/o3 fallbacks.
# The direct-OpenAI slot runs GPT-5.6 Luna: the newest family's
# cost-efficient tier, cheaper than the legacy gpt-5 it replaced
# ($1/$6 vs $1.25/$10 per 1M tokens) so the org OpenAI budget
# stretches further between top-ups.
OPENCODE_MODEL_CANDIDATES: "github-models/deepseek/deepseek-v3-0324 openai/gpt-5.6-luna github-models/openai/gpt-4.1 github-models/openai/gpt-5 github-models/openai/gpt-5-chat github-models/openai/o3 github-models/deepseek/deepseek-r1-0528 github-models/deepseek/deepseek-r1"
OPENCODE_MODEL_CANDIDATES: "github-models/openai/gpt-4.1 github-models/deepseek/deepseek-v3-0324 openai/gpt-5.6-luna github-models/openai/gpt-5 github-models/openai/gpt-5-chat github-models/openai/o3 github-models/deepseek/deepseek-r1-0528 github-models/deepseek/deepseek-r1"
# One attempt per model, then fall through to the next model. Retrying
# the SAME model 5x let a rate-limited/hung leader consume the whole
# step, so the pool never reached a healthy fallback model.
Expand Down
6 changes: 3 additions & 3 deletions scripts/ci/test_strix_quick_gate.sh
Original file line number Diff line number Diff line change
Expand Up @@ -691,7 +691,7 @@ assert_opencode_review_uses_codegraph_and_gpt5_fallback() {
assert_file_contains "$workflow_file" 'OPENCODE_MODEL_ATTEMPTS: "1"' "opencode fallback tries the catalog promptly instead of spending the entire review on one model"
assert_file_contains "$workflow_file" "Run OpenCode PR Review model pool" "opencode review includes a broad catalog fallback pool"
assert_file_not_contains "$workflow_file" "steps.opencode_review_model_pool.outcome == 'success'" "opencode approval gate still runs after model pool failure to publish a reason"
assert_file_contains "$workflow_file" "github-models/deepseek/deepseek-v3-0324 openai/gpt-5.6-luna github-models/openai/gpt-4.1 github-models/openai/gpt-5" "opencode review starts with DeepSeek V3 before full-size GPT fallbacks"
assert_file_contains "$workflow_file" "github-models/openai/gpt-4.1 github-models/deepseek/deepseek-v3-0324 openai/gpt-5.6-luna github-models/openai/gpt-5" "opencode review starts with GPT-4.1 before provider fallbacks"
assert_file_contains "$workflow_file" "The publish gate re-runs source-backed validation against PR-head data" "opencode review publish gate validates model output against the PR-head worktree"
assert_file_contains "$workflow_file" '"openai/o3"' "opencode config declares OpenAI o3 fallback"
assert_file_contains "$workflow_file" '"openai/o4-mini"' "opencode config declares OpenAI o4-mini fallback"
Expand Down Expand Up @@ -838,7 +838,7 @@ assert_opencode_review_uses_codegraph_and_gpt5_fallback() {
assert_file_contains "$workflow_file" 'OPENCODE_RUN_TIMEOUT_SECONDS: "5400"' "opencode catalog fallback preserves legitimate full-hour provider sessions"
assert_file_contains "$REPO_ROOT/scripts/ci/run_opencode_review_model_pool.sh" "OpenCode %s attempt %s/%s failed" "opencode catalog fallback records per-model retry failures"
assert_file_contains "$REPO_ROOT/scripts/ci/run_opencode_review_model_pool.sh" "exponential backoff" "opencode model retry paths use exponential backoff instead of fixed sleeps"
assert_file_contains "$workflow_file" "github-models/deepseek/deepseek-v3-0324 openai/gpt-5.6-luna github-models/openai/gpt-4.1 github-models/openai/gpt-5" "opencode review tries DeepSeek V3 before OpenAI fallbacks"
assert_file_contains "$workflow_file" "github-models/openai/gpt-4.1 github-models/deepseek/deepseek-v3-0324 openai/gpt-5.6-luna github-models/openai/gpt-5" "opencode review tries GPT-4.1 before provider fallbacks"
assert_file_contains "$workflow_file" "github-models/deepseek/deepseek-r1-0528 github-models/deepseek/deepseek-r1" "opencode review keeps DeepSeek reasoning fallback coverage after OpenAI candidates"
assert_file_contains "$workflow_file" "coverage-source-tree:" "opencode workflow materializes coverage source before running PR-head tests"
assert_file_contains "$workflow_file" "coverage-evidence:" "opencode workflow measures coverage before review"
Expand Down Expand Up @@ -1155,7 +1155,7 @@ assert_opencode_review_uses_codegraph_and_gpt5_fallback() {
assert_file_contains "$workflow_file" 'GH_TOKEN: ${{ secrets.OPENCODE_APPROVE_TOKEN || steps.review_read_app_token.outputs.token || github.token }}' "opencode manual dispatch uses the cross-repo approval token for target PR evidence lookups with app-token fallback"
assert_file_contains "$workflow_file" 'repos/${GH_REPOSITORY}' "opencode review workflow uses env-backed repository context in shell commands"
assert_file_contains "$workflow_file" "Run OpenCode PR Review model pool" "opencode review starts the central model pool"
assert_file_contains "$workflow_file" "github-models/deepseek/deepseek-v3-0324 openai/gpt-5.6-luna github-models/openai/gpt-4.1 github-models/openai/gpt-5" "opencode review starts with DeepSeek V3 before full-size GPT fallbacks"
assert_file_contains "$workflow_file" "github-models/openai/gpt-4.1 github-models/deepseek/deepseek-v3-0324 openai/gpt-5.6-luna github-models/openai/gpt-5" "opencode review starts with GPT-4.1 before provider fallbacks"
assert_file_contains "$workflow_file" "github-models/deepseek/deepseek-r1-0528" "opencode review keeps a reachable DeepSeek R1 reasoning fallback model"
assert_file_contains "$workflow_file" "github-models/deepseek/deepseek-v3-0324" "opencode review has a reachable DeepSeek V3 fallback model"
assert_file_contains "$workflow_file" "github-models/openai/gpt-5" "opencode review still has a bounded GPT-5 fallback model"
Expand Down
Loading
Loading