fix(review): preserve long sessions in .github/workflows/opencode-review.yml#564
fix(review): preserve long sessions in .github/workflows/opencode-review.yml#564seonghobae wants to merge 9 commits into
Conversation
There was a problem hiding this comment.
Pull request overview
OpenCode cannot approve yet because required coverage evidence did not pass.
Review outcome
1. HIGH .github/workflows/opencode-review.yml:1 - Coverage evidence did not prove required test/docstring evidence
-
Problem: The required coverage-evidence job result was
failure, so OpenCode cannot establish approval sufficiency for this head. -
Root cause: Automated approval is only valid when the same-head coverage-evidence job proves supported repository test suites passed and configured docstring gates passed or were advisory, or reports not applicable because no supported source files or package manifests exist. Missing, failed, skipped, unavailable, or unsupported-tooling test evidence is a blocker.
-
Fix: Install or configure the repository test/docstring evidence tooling when source files or package manifests exist, rerun the current-head coverage-evidence job, and approve only after it reports
successwith required evidence or explicit no-source not-applicable evidence. -
Regression test: Keep the approval branch checking
needs.coverage-evidence.result == successbefore posting APPROVE, and publish REQUEST_CHANGES when coverage-evidence blocker states such as cancelled, skipped, failed, unsupported-tooling, or below-100 evidence are present. -
Result: REQUEST_CHANGES
-
Reason: coverage-evidence result was
failure, so required test/docstring evidence was not proven for current head49b9e2eef6657459c0833f74e3cb6c724fe9b294. -
Head SHA:
49b9e2eef6657459c0833f74e3cb6c724fe9b294 -
Workflow run: 29383429156
-
Workflow attempt: 1
Coverage evidence
Coverage Decision
- Result: FAIL
- Test evidence: not proven passing
- Docstring evidence: not proven passing when configured
- Failure count: 1
Changed-File Evidence Map
flowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Workflow: opencode-review.yml"]
S1 --> I1["GitHub Actions review job"]
I1 --> R1["Review risk: Workflow: opencode-review.yml"]
R1 --> V1["actionlint plus required checks"]
Evidence --> S2["CI script (2 files)"]
S2 --> I2["review and security gate shell path"]
I2 --> R2["Review risk: CI script (2 files)"]
R2 --> V2["bash -n plus Strix self-test"]
Evidence --> S3["Test (3 files)"]
S3 --> I3["regression suite"]
I3 --> R3["Review risk: Test (3 files)"]
R3 --> V3["targeted test run"]
OpenCode Review Overview
Pull request overviewOpenCode cannot approve yet because required coverage evidence did not pass. Review outcome1. HIGH .github/workflows/opencode-review.yml:1 - Coverage evidence did not prove required test/docstring evidence
Coverage evidenceCoverage Decision
Changed-File Evidence Mapflowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Workflow: opencode-review.yml"]
S1 --> I1["GitHub Actions review job"]
I1 --> R1["Review risk: Workflow: opencode-review.yml"]
R1 --> V1["actionlint plus required checks"]
Evidence --> S2["CI script (2 files)"]
S2 --> I2["review and security gate shell path"]
I2 --> R2["Review risk: CI script (2 files)"]
R2 --> V2["bash -n plus Strix self-test"]
Evidence --> S3["Test (3 files)"]
S3 --> I3["regression suite"]
I3 --> R3["Review risk: Test (3 files)"]
R3 --> V3["targeted test run"]
|
배경
Required OpenCode Review가 유효한 current-run control을 만들고도 probe evidence의 직렬화 계약을 충족하지 못해 거절되는 부트스트랩 문제를 수정합니다. Noema와 merge scheduler는 재시도 폭주를 막고 독립 리뷰 순서를 지키기 위해 이 선행 변경이 승인되기 전까지 비활성 상태를 유지합니다.
변경
adversarial_validation.probes[].evidence에 선언한 동일path:positive-line을 문자 그대로 요구합니다.Current-head reviewer retry contract
Run
29394937297에서 유일하게 정상 응답한 GPT-4.1은 31초 만에 control을 생성했지만, probe 1의evidence문자열 안에 선언한 경로와 양수 line을path:line형태로 반복하지 않아 거절됐습니다. 재시도 시에는 각 probe에 대해 다음 네 조건을 모두 충족해야 합니다.evidence문자열 안에 해당 probe의path와line을 정확히${path}:${line}형태로 문자 그대로 반복합니다. 별도path/line필드는 이를 대신하지 않습니다.source-line-sha256=<64 lowercase hex>하나만 씁니다.신뢰된 회귀 테스트가 현재 HEAD의 두 source trace receipt를 실제 소스 바이트와 대조해 봉인합니다.
scripts/ci/run_opencode_review_model_pool.sh:95의 정확한 digest는8e8933a12547802d7bc9ff7cd99915808de9d4f27559d83783a6506d3ff94118,scripts/ci/run_opencode_review_model_pool.sh:287의 정확한 digest는4f6509bb2883da6b849c2eb5949e4844ec209e5eaa7ab6b60396b4c2fd065e31입니다. 각 probe는 실제 확인한 한 anchor를path,line,evidence에서 동일하게 사용하며 테스트에 봉인된 receipt를 정확히 인용합니다. 리뷰 결론은 코드와 증거에 따라 자유롭게 내리며, 구체적 blocking finding이 있을 때만REQUEST_CHANGES를 사용합니다.검증
bd6598d29036a4a099f782e36fb88911e743cb44의 coverage-evidence, CodeQL, dependency-review, OSV, Trivy, Semgrep, Bandit, pip-audit, gitleaks, Scorecard, Strix: 통과uv run pytest -q: 618 passed; 현재 HEAD는 receipt-only 테스트 변경uv run ruff check: passedbash -n: passed후속
이 PR이 1차 OpenCode와 독립 Noema 승인으로 병합되면, 정확한 digest가 이미 있는 evidence에서 누락된
path:line만 보수적으로 복구하는 후속 변경을 분리 적용합니다. 이어서 PR #563을 최신main에 재기반하고 AppGuardrail 집계 PR #560을 갱신해 실제 issue 생성까지 검증합니다.Machine-copyable sealed probe evidence
Use each line below as one complete probe
evidencevalue without changing its path, positive line, or digest:Source trace at scripts/ci/run_opencode_review_model_pool.sh:95 confirmed the current-head timeout cap contract; source-line-sha256=8e8933a12547802d7bc9ff7cd99915808de9d4f27559d83783a6506d3ff94118Source trace at scripts/ci/run_opencode_review_model_pool.sh:287 confirmed structured HTTP 5xx is classified as service-unavailable; source-line-sha256=4f6509bb2883da6b849c2eb5949e4844ec209e5eaa7ab6b60396b4c2fd065e31Machine-copyable changed-file evidence
Changed-file review at
.github/workflows/opencode-review.ymlconfirmed the current-head workflow timeout and session-recovery contract. BeforeAPPROVE, the JSONsummaryorreasonmust cite the exact changed path.github/workflows/opencode-review.ymlas changed-file evidence. The complete current-head changed-file manifest is:.github/workflows/opencode-review.ymlci-review-prompt.mdscripts/ci/run_opencode_review_model_pool.shscripts/ci/test_strix_quick_gate.shtests/test_opencode_agent_contract.pytests/test_opencode_model_pool_runner.py