fix: keep PR review blockers evidence-based#91
Conversation
Co-Authored-By: Codex <noreply@openai.com>
🤖 Codex PR Review🚫 Merge blocked: 3 serious issue(s) found in high-risk files ⚖️ Codex Review Arbitration🚫 block: At least three current blockers remain valid against the shown PR diff. In 🚫 Blocking IssuesThese issues must be fixed before this PR can be merged: 1. 🔴 [CRITICAL] Security in
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 404908ef74
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| return ( | ||
| 0, |
There was a problem hiding this comment.
Re-check stale review events before passing the gate
In the pull_request_review path, main() skips run_static_guard() and returns this advisory decision directly; when a CHANGES_REQUESTED connector review for an older commit is delivered after a new push, this now creates a successful Codex Review Gate run without running the blocking static secret/path checks for the current head. In repositories that require this workflow check, that race can satisfy the required check for a head that has not passed the static guard, so the REACT branch should either verify review.commit_id == head_sha before returning success or run the static guard first.
Useful? React with 👍 / 👎.
| if type(evidence) is str and evidence.strip(): | ||
| identity["evidence"] = re.sub(r"\s+", " ", evidence).strip().lower() |
There was a problem hiding this comment.
Keep arbitration fingerprints stable across evidence wording
Because previous_matching_findings() and the repeated-streak logic use this fingerprint, including the free-form evidence text means the same file/category/severity blocker stops matching its trusted history whenever the reviewer cites a different caller path or simply rewrites the evidence. In that scenario the prior finding is not passed into contract arbitration, so opposing remediation suggestions for the same contract can avoid the intended contract_arbitration freeze; keep the identity stable and store evidence separately or canonicalize it before keying.
Useful? React with 👍 / 👎.
Co-Authored-By: Codex <noreply@openai.com>
|
Permanent freeze after the single concentrated closure. Current-head review found reachable Critical/High issues: required static-gate check context can be overwritten by advisory review events; evidence validation is syntactic rather than semantic; exact source evidence may be echoed into public comments. Closure is exhausted. Preserving branch, commits, checks, and review evidence; no second closure, rerun, bypass, merge, deploy, or successor. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 47579e3c62
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| "severity": _sanitize_history_text(finding.get("severity"), 20).lower(), | ||
| "category": _sanitize_history_text(finding.get("category"), 80).lower(), | ||
| "file": _sanitize_history_path(finding.get("file")), | ||
| "evidence": _sanitize_history_text(finding.get("evidence")), |
There was a problem hiding this comment.
Preserve machine evidence in review history
For short machine-checkable evidence strings with no spaces and a line number, such as repository_call|x.py|1|foo, the generic credential redactor rewrites the newly stored evidence field to [REDACTED]. On the next run the current finding fingerprints with the real evidence while history fingerprints with [REDACTED], so previous_matching_findings() returns no match and repeated/contract arbitration is skipped even for the same blocker; store a normalized evidence key separately or avoid applying the broad secret-token heuristic to this structured field.
Useful? React with 👍 / 👎.
Summary
Codex PR Reviewas the only AI blocking authorityScope
Validation
python3 -m pytest -q tests/test_run_codex_pr_review.py tests/test_gate_codex_app_review.py— 65 passedpython3 -m pytest -q— 654 passed, 1 skipped, 50 subtestspython3 -m compileall -q scripts testsactionlint .github/workflows/codex_review_gate.ymlgit diff --checkRisk
The official connector can no longer block merge by itself. The static security guard remains blocking, and the repository-owned
Codex PR Reviewremains the authoritative AI review gate.