fix(review): re-evaluate fallback change requests - #2126
seonghobae wants to merge 13 commits into
Conversation
Reject fallback change requests as reusable substantive receipts and prevent falling through to an older approval. Keep actual product findings and approval restrictions intact. Commit-Message-Assisted-by: Codex (OpenAI Codex) Signed-off-by: Seongho Bae <me@seonghobae.me>
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueThanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
@coderabbitai review Independent validation: focused suites passed 77 tests; with GITHUB_ACTIONS=true and the existing approval gate included, 108 tests passed. Please review fallback rejection and newest-review ordering without weakening approval eligibility. |
|
|
seonghobae
left a comment
There was a problem hiding this comment.
Exact-head review of da2c955b09b77c4729a31a30d29fef210e1a1677 (COMMENT, not approval).
The three-file delta correctly applies the existing fallback-marker exclusion to both APPROVED and CHANGES_REQUESTED receipts. Reverse-chronological evaluation now stops at a newer fallback instead of reusing an older same-head approval, while a later substantive change request remains reusable. Approval eligibility, actor/head binding, Draft approval rejection, and malformed/status-only filtering are unchanged. I found no new substantive source defect in this delta.
Fresh isolated validation with warnings as errors: receipt/live-Draft/required-verdict suites 77 passed; production/test compile and git diff --check passed. The local environment injects an unrelated pytest-asyncio deprecation before collection, so the focused run disabled that non-project plugin; the repository tests themselves emit no warning.
Hosted CodeQL 34705252034 is not a source-analysis failure: first-pass Python job 103584917913 recorded verdict=pending; exact-head dispatch statuses for both languages are now success. The remaining required-run settlement belongs to #2106/#2056. Current OpenCode status is also fail-closed and there is no independent current-head approval, so this review does not authorize merge or bypass.
Only re-evaluate the canonical peer-check-only envelope. Preserve mixed and unknown finding headings and keep approval eligibility unchanged. Commit-Message-Assisted-by: Codex (OpenAI Codex) Signed-off-by: Seongho Bae <me@seonghobae.me>
Preserve both histories and the original mixed finding regression; retain canonical producer binding and unknown-heading blockers. Validation: GITHUB_ACTIONS=true focused suite 117 passed. Signed-off-by: Seongho Bae <me@seonghobae.me> Commit-Message-Assisted-by: Codex (OpenAI Codex)
Commit-Message-Assisted-by: Codex (OpenAI Codex) Signed-off-by: Seongho Bae <me@seonghobae.me>
|
@coderabbitai review Please review current head |
|
|
|
Full local regression completed on
Exit 0: 3057 passed, 1 skipped, 36 subtests passed in 234.70s. Local log: |
|
Exact-head gate update for Security Scan 34706242915, Python Security 34706242834, and SAST Semgrep 34706242829 are terminal GREEN. CodeQL PR 34706242951 is terminal FAIL: Python job 103586831978 and Actions job 103586832008 each show This head has no independent |
Commit-Message-Assisted-by: Codex (OpenAI Codex) Signed-off-by: Seongho Bae <me@seonghobae.me>
…uation' into codex/opencode-peer-check-reevaluation
|
The concrete unstructured-prose finding is repaired at Restoring Ready for independent review of the repaired code. Ready does not assert approval or merge readiness; required checks and independent formal approval remain enforced. This resumes the normal review event rather than bypassing checks or manually retrying a live run. |
|
Second exact canary for #2125/#2126, preserving canonical ownership: #2114 is unchanged at A fresh #2126's own current Noema RED was separately RCA'd: exact-head job |
There was a problem hiding this comment.
Pull request overview
OpenCode could not approve from deterministic current-head evidence because GitHub Checks have failed.
Findings
1. HIGH Current-head GitHub Checks - Fix failed required checks before approval
- Problem: Failed same-head checks remain for
51299f1a4398ce8481d14bbb0515dd5367aefaee. - Root cause: The model-unavailable evidence fallback is allowed only when peer GitHub Checks are complete and clean.
- Fix: Read and fix the failed check logs below, then rerun the current-head checks.
- Regression test: Keep the model-unavailable fallback gated on an empty failed-check rollup.
Failed checks:
- Required Noema Review/noema-review: FAILURE (https://github.com/ContextualWisdomLab/.github/actions/runs/34707140933/job/103621703488)
- noema-review check run: failure (https://github.com/ContextualWisdomLab/.github/actions/runs/34707140933/job/103621703488)
Changed-File Evidence Map
flowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Docs: opencode-peer-check-reevaluation.md"]
S1 --> I1["operator or user guidance"]
I1 --> R1["Review risk: Docs: opencode-peer-check-reevaluation.md"]
R1 --> V1["docs review"]
Evidence --> S2["CI script: opencode_review_receipt_gate.py"]
S2 --> I2["review and security gate shell path"]
I2 --> R2["Review risk: CI script: opencode_review_receipt_gate.py"]
R2 --> V2["bash -n plus Strix self-test"]
Evidence --> S3["Test: test_opencode_review_receipt_gate.py"]
S3 --> I3["regression suite"]
I3 --> R3["Review risk: Test: test_opencode_review_receipt_gate.py"]
R3 --> V3["targeted test run"]
OpenCode Review Overview
|
|
Fresh downstream acceptance case for this receipt contract: Use unchanged #2114 as the post-integration acceptance consumer: after this contract lands normally and its Noema/Strix peers recover, a fresh formal review must be requested rather than treating the old peer-only CHANGES_REQUESTED as substantive forever. Conversely, mixed or unknown prose must remain blocking exactly as this branch's current tests require. This does not authorize #2126 or #2114 merge; #2126 itself still needs exact-head peer-check/review convergence and protected integration. |
|
Exact-head Noema acceptance update — Required Noema run
This is a second unchanged-head serving/model-verdict-stage failure after attempt 2. Attempt 2's provider/probe details remain historical evidence already attached to |
|
Attempt 3 gives a stronger RCA and changes the next action: do not rerun this unchanged head again against the current central sidecar pin. Exact head remains The artifact shows the central sidecar reached So this Noema RED is review-infrastructure/runtime evidence, not a new #2126 source finding. The current OpenCode |
|
2026-09-20 exact-head admission correction for This PR is not currently merge-ready: the branch is 277 commits behind protected main@e6334e2..., has CHANGES_REQUESTED with no qualifying current-head approval, and its GREEN receipts predate the current protected-base relation. Ready state would keep non-admissible work in the saturated runner/review queue and can make stale receipts appear current. Moving the PR to Draft / Proposed preserves every commit, review, thread, and valid delta. It is not closure or abandonment. Reconcile protected |
seonghobae
left a comment
There was a problem hiding this comment.
Exact-head integration review for 1a85dbeebdbfb5399f151545bc727ce6e9f88ce0. The branch is now an ordinary two-parent/non-force descendant of the previous #2126 head and protected main@e6334e229581a918e2f22de18733b76fa65d7e71; fresh compare is behind_by=0 and the effective delta remains exactly the intended three receipt-contract files. Current producer wording on protected main is consumed dynamically by the regression, so the convergence did not freeze a stale producer fixture. Fresh hosted SAST/Python Security/Security/CodeQL are queued and therefore this comment is not GREEN evidence or an approval. Keep Draft until current-head hosted acceptance and independent formal review settle.
Problem and change
A peer-check-only OpenCode
CHANGES_REQUESTEDfallback can remain a substantive receipt after peer GitHub checks recover, causing the caller to suppress a fresh substantive review. Heading-only classification is also unsafe because it can discard a real product finding written as ordinary prose.This repair recognizes only the complete canonical producer envelope: fixed producer prose, the exact current head SHA, one or more failed-check rows, and the optional generated Mermaid evidence map. Extra prose, mixed findings, unknown formats, or an additional finding remain formal blockers. A newer peer-check-only fallback cannot resurrect an older approval. Approval eligibility, branch protection, model routing, and downstream gates are unchanged.
Status: Draft / Proposed. Owner issue: #2125.
Current authority
Protected base:
main@e6334e229581a918e2f22de18733b76fa65d7e71.Current head:
1a85dbeebdbfb5399f151545bc727ce6e9f88ce0.The branch was converged non-destructively onto the current protected base with an ordinary two-parent commit. Fresh compare is
behind_by=0; the effective delta remains exactly three files:docs/doctoring/opencode-peer-check-reevaluation.mdscripts/ci/opencode_review_receipt_gate.pytests/test_opencode_review_receipt_gate.pyNo open PR currently descends from this branch.
Validation and acceptance
The regression uses the actual current producer payload in
.github/workflows/opencode-review-dispatch.yml, not a shortened synthetic copy. The focused receipt tests previously demonstrated the intended RED→GREEN behavior and 100% statement/branch coverage for the receipt module on the predecessor source; those results are historical evidence only after the convergence commit.The new exact head requires fresh hosted checks and an independent current-head formal review before merge. It does not itself approve any consumer PR, establish model availability, repair CodeQL terminal publication/reconciliation, or relax any required status. After protected integration, affected consumers still require a fresh receiver/formal-review cycle before a peer-check-only fallback can be treated as non-substantive.
Fixes #2125.