Problem
The central_review_process_fallback_scope allowlist in .github/workflows/opencode-review.yml (fallback_changed_file_allowed(), lines ~1914–1950) does not include:
scripts/ci/adversarial_evidence.py
tests/test_adversarial_evidence.py
adversarial_evidence.py is central review-process core: it is imported by the allowlisted scripts/ci/opencode_review_normalize_output.py and by scripts/ci/opencode_existing_approval_gate.py, and implements the adversarial-evidence rejection gate used by the approval path.
Root cause (timeline)
Observed impact
PR #618 (changes 6 files: pr-review-merge-scheduler.yml, pr_review_merge_scheduler.py, adversarial_evidence.py + 3 test files) runs with CENTRAL_REVIEW_PROCESS_FALLBACK_ELIGIBLE=false solely because of the two unlisted files — every sibling file in the diff is allowlisted. Evidence: run 30153577309 attempt 11, step "Detect central review-process scope" emits disallowed changed file: scripts/ci/adversarial_evidence.py (and the test twin), so eligible=false.
Scope of impact (verified against the workflow):
Fix direction (minimal)
Add the two entries to fallback_changed_file_allowed() next to the existing opencode_review_normalize_output.py entry:
ContextualWisdomLab/.github:scripts/ci/adversarial_evidence.py | \
ContextualWisdomLab/.github:tests/test_adversarial_evidence.py | \
fallback_changed_file_counts_as_core already treats any allowlisted .github:* path (except .jules/bolt.md) as core, so no second change is needed. Check whether tests/test_opencode_agent_contract.py pins the allowlist contents and update the contract test in the same PR.
Note: any PR carrying this fix is itself merge-blocked until #624 is mitigated.
Problem
The
central_review_process_fallback_scopeallowlist in.github/workflows/opencode-review.yml(fallback_changed_file_allowed(), lines ~1914–1950) does not include:scripts/ci/adversarial_evidence.pytests/test_adversarial_evidence.pyadversarial_evidence.pyis central review-process core: it is imported by the allowlistedscripts/ci/opencode_review_normalize_output.pyand byscripts/ci/opencode_existing_approval_gate.py, and implements the adversarial-evidence rejection gate used by the approval path.Root cause (timeline)
2dd767c, 2026-07-13).scripts/ci/adversarial_evidence.pywas created one day later in fix(governance): OpenCode 승인 후 병합 복구 #555 (1cf9e17, 2026-07-14) by extracting logic out of the already-allowlistedopencode_review_normalize_output.py.Observed impact
PR #618 (changes 6 files:
pr-review-merge-scheduler.yml,pr_review_merge_scheduler.py,adversarial_evidence.py+ 3 test files) runs withCENTRAL_REVIEW_PROCESS_FALLBACK_ELIGIBLE=falsesolely because of the two unlisted files — every sibling file in the diff is allowlisted. Evidence: run 30153577309 attempt 11, step "Detect central review-process scope" emitsdisallowed changed file: scripts/ci/adversarial_evidence.py(and the test twin), soeligible=false.Scope of impact (verified against the workflow):
OPENCODE_CENTRAL_REVIEW_PROCESS_FALLBACK_*, max 1 cycle) and the "Publish central OpenCode fast approval" path (line ~4011) when a model does succeed → slower reviews for review-process PRs touching these files.publish_blockers_after_model_unavailablecan only succeed viasame_head_opencode_approval_existsregardless of eligibility (lines ~6896–6914). The current merge blocker is the provider outage tracked in Migrate OpenCode review model pool off GitHub Models before 2026-07-30 retirement #624.Fix direction (minimal)
Add the two entries to
fallback_changed_file_allowed()next to the existingopencode_review_normalize_output.pyentry:fallback_changed_file_counts_as_corealready treats any allowlisted.github:*path (except.jules/bolt.md) as core, so no second change is needed. Check whethertests/test_opencode_agent_contract.pypins the allowlist contents and update the contract test in the same PR.Note: any PR carrying this fix is itself merge-blocked until #624 is mitigated.