werkrevisor 0.71.0: a security fix that only hardens needs no human review by Codex #143

Merged
ai-reviewer merged 6 commits from claude-code/codex-hardening into main 2026-10-24 22:33:41 +02:00
Collaborator

The Codex review rates a PR as not critical when it only hardens the security, fails closed and has a test of the closed case.
See docs/prs/ for the details.

🤖 Generated with Claude Code

The Codex review rates a PR as not critical when it only hardens the security, fails closed and has a test of the closed case. See `docs/prs/` for the details. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
claude-code changed title from WIP: werkrevisor 0.70.0: a security fix that only hardens needs no human review by Codex to WIP: werkrevisor 0.71.0: a security fix that only hardens needs no human review by Codex 2026-10-24 21:42:45 +02:00
claude-code added 5 commits 2026-10-24 21:42:46 +02:00
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Earlier-review tests: Codex answers with the security effect
werkator build succeeded after 00:13
werkator/werkrevisor-statistics build succeeded after 00:52
ai-review/assessment AI review passed; approved by werkrevisor; merge waits for 3 open hint(s): reply to each line comment and resolve it, then restart the review or push a commit
ai-review/gate build succeeded after 07:33
ai-review/codex human 👤: approve the head to unlock the merge
2aaac100ad
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
claude-code force-pushed claude-code/codex-hardening from 930a63470e to 2aaac100ad 2026-10-24 21:42:46 +02:00 Compare
claude-code marked the pull request as ready for review 2026-10-24 22:03:17 +02:00
Collaborator
🟢 werkrevisor GREEN for 2aaac10, superseded by the result for 225368d

🟢 werkrevisor: GREEN / PASS

Gate: approved by werkrevisor; merge waits for 3 open hint(s): reply to each line comment and resolve it, then restart the review or push a commit.

Change kind: mixed.

Reasons

  • hint writing rules violated in the changed docs: README.md:1045: paragraph with 6 sentences, more than 5
  • hint 10 changed file(s) that neither weaken the checks, touch security nor show a risk category of the repository config according to Jev
  • hint 1 build change(s) of low risk according to Jev: statistics/build.gradle.kts (weakens checks 0.02, risk 0.00, security 0.02)
  • hint 13 changed file(s) agree with the PR document according to Jev
  • hint 2 finding(s) of low severity or rated minor by Jev: tests/test_codex.py:50-57, docs/prs/2026-10-24-PR#143-codex-hardening.md:73
  • hint model recommends changes before merge
  • hint model rates the risk as high (advisory: Jev judged every changed file)

Findings

  1. [high] Weakened coverage at tests/test_codex.py:50-57, hint, as a line comment

  2. [low] Misleading rating at docs/prs/2026-10-24-PR#143-codex-hardening.md:73, hint, as a line comment

Classifier

7 of 7 units passed all questions (1 PR document(s)).
3 answers ignored because of a confidence below [classifier] min_confidence.

Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 62346, calls 1, tokens in 59895 / out 50708 (reasoning included in out), duration 451.0 s, cost 0.0788 USD (reported), classifier `jev-1.14.0` calls 7, tokens in 5850, cost 0.0002 USD, finding judge `jev-1.14.0` calls 1, tokens in 2073, cost 0.0001 USD, PR document check `jev-1.14.0` calls 13, tokens in 33514, cost 0.0014 USD, build file judge `jev-1.14.0` calls 11, tokens in 9711, cost 0.0004 USD, phases: path_judge 0.6 s, classifier 0.3 s, doc_check 0.6 s, context 0.4 s, model_review 448.5 s, finding_judge 0.2 s, config: defaults + host + repository (.werkrevisor.toml at main 113f634).
Reviewed head `2aaac100ad70a2546266a52d05c4eb5c80997bd5` against base `113f6342e6bb78d936f864a6f49e3dc33eaf9971`, werkrevisor 0.69.0.
<!-- werkrevisor:2aaac100ad70a2546266a52d05c4eb5c80997bd5 --> <!-- werkrevisor-verdict:GREEN --> <!-- werkrevisor-blocks:8fd6cf588710a908df7a6d9e47b87a0b,57b4b5b360ee23c81b6e44ce093b4673,7add4928dffce700ae42e47f8351d52f,5c0db5affb85cf7d28e01d00414bfbf2,b03254833f81e70be5e132f3ce11fa50,e835dc06d3315fb534daabb8888eb6d6,4f82b44f5c2d13e51abbd56f13e01e91,1b7ae5d11a80162b21194a4b8602f283,726cf11b4ad2241f07a839d8678a11c7,0bd6d67bc029f4df019c0cc72058e62f,4f215c43c3b9146fd2f09f500875ee49,8b8da9d55cdcfe6c74ec42fd0cd8fedc,1892ebf2c547c648b6f06009c368e481,d0109a28c9af7091ce8d693943e3da46,d4b228d09db1b7fbb2c23ade227c31b7,e479ffe2a9534894df67cfe130ec575b,ea943ce89c91db972b096a1670fdea88,dbaa46d6e4f74d87e72a1ba511838866,cb25c8f654ed323823fa897c75d30001,3e6717d6ba1542f61b5facdb353a9193,1c2802beb21e3d97db053e04e832e1bf,c7eecbe9e507ed99ae107f3e8ad516c0,14c77a842164952fb844df3daeeb1244,47d28062df590beb7704b408a7e0fcd9,d73a428fe05198b5710b404788d97cd7,3cfe78b699835fcdf04a4acdf3407a37,d07a7966b140478998ed5c9670301f39,1051bc872992107d3c49a4cab629a92b,c393ef65f01f919ecb166a14ffa55d2b,b3a62902a9a16546db2666886cd9f8af,36ed3c38aa9930343665bd54d5007418,0112a844d5dea335b0629dade2ffcc5c,c4cdbace758989a39adb7b74802d209d,456644224f1cc7581a4566959b3589c4,978d50f66428c2bd4a2924d9726c4f95 --> <!-- werkrevisor-held-by-line-comments --> <!-- werkrevisor-folded --> <details><summary>🟢 werkrevisor GREEN for <code>2aaac10</code>, superseded by <a href="http://git.javagil.de/mi/werkrevisor/pulls/143#issuecomment-7924">the result for <code>225368d</code></a></summary> ## 🟢 werkrevisor: GREEN / PASS Gate: approved by werkrevisor; merge waits for 3 open hint(s): reply to each line comment and resolve it, then restart the review or push a commit. Change kind: `mixed`. ### Reasons - **hint** writing rules violated in the changed docs: README.md:1045: paragraph with 6 sentences, more than 5 - **hint** 10 changed file(s) that neither weaken the checks, touch security nor show a risk category of the repository config according to Jev - **hint** 1 build change(s) of low risk according to Jev: statistics/build.gradle.kts (weakens checks 0.02, risk 0.00, security 0.02) - **hint** 13 changed file(s) agree with the PR document according to Jev - **hint** 2 finding(s) of low severity or rated minor by Jev: tests/test_codex.py:50-57, docs/prs/2026-10-24-PR#143-codex-hardening.md:73 - **hint** model recommends changes before merge - **hint** model rates the risk as high (advisory: Jev judged every changed file) ### Findings 1. **[high] Weakened coverage** at `tests/test_codex.py:50-57`, hint, as a line comment 2. **[low] Misleading rating** at `docs/prs/2026-10-24-PR#143-codex-hardening.md:73`, hint, as a line comment ### Classifier 7 of 7 units passed all questions (1 PR document(s)). 3 answers ignored because of a confidence below [classifier] min_confidence. <sub> Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 62346, calls 1, tokens in 59895 / out 50708 (reasoning included in out), duration 451.0 s, cost 0.0788 USD (reported), classifier `jev-1.14.0` calls 7, tokens in 5850, cost 0.0002 USD, finding judge `jev-1.14.0` calls 1, tokens in 2073, cost 0.0001 USD, PR document check `jev-1.14.0` calls 13, tokens in 33514, cost 0.0014 USD, build file judge `jev-1.14.0` calls 11, tokens in 9711, cost 0.0004 USD, phases: path_judge 0.6 s, classifier 0.3 s, doc_check 0.6 s, context 0.4 s, model_review 448.5 s, finding_judge 0.2 s, config: defaults + host + repository (.werkrevisor.toml at main 113f634).<br> Reviewed head `2aaac100ad70a2546266a52d05c4eb5c80997bd5` against base `113f6342e6bb78d936f864a6f49e3dc33eaf9971`, werkrevisor 0.69.0. </sub> </details>
ai-reviewer approved these changes 2026-10-24 22:10:53 +02:00
Dismissed
ai-reviewer left a comment
Collaborator

werkrevisor: GREEN / PASS for 2aaac100ad70a2546266a52d05c4eb5c80997bd5.
The result comment of werkrevisor holds the details.

werkrevisor: GREEN / PASS for `2aaac100ad70a2546266a52d05c4eb5c80997bd5`. The result comment of werkrevisor holds the details. <!-- werkrevisor-review:2aaac100ad70a2546266a52d05c4eb5c80997bd5 -->
@@ -1041,5 +1041,5 @@
`statistics/` holds a Kotlin Spring Boot service that collects the usage records of all runs
and shows them in a dashboard: costs for 24 hours, 7 and 30 days, per day, week and month,
reviews, pull requests and costs per pull request.
Per day, week and month, a trend chart shows the cost, the number of pull requests and the cost per pull request,
Collaborator

Writing rule: paragraph with 6 sentences, more than 5 (werkrevisor writing rule)

Fix the line, or reply why it stays, and resolve this comment.

**Writing rule: paragraph with 6 sentences, more than 5** (werkrevisor writing rule) Fix the line, or reply why it stays, and resolve this comment.
Author
Collaborator

Fixed in 225368d: the paragraph is split before the security effect.

Fixed in `225368d`: the paragraph is split before the security effect.
claude-code marked this conversation as resolved
@@ -0,0 +70,4 @@
- `werkrevisor/codexrunner.py`: the result comment rates the PR by `codex.rating`
and names the three answers in a line of its own.
The marker `werkrevisor-codex-critical` holds `needs_human`, so the result comments of before keep their meaning.
- `werkrevisor/reviewreport.py` and `tools/codex-eval`: the same rating and the security effect.
Collaborator

[low] Misleading rating (werkrevisor)

hint

The Solution says tools/codex-eval uses the same rating as the gate, but the tool prints the raw critical field. A critical tested hardening is therefore shown as critical True, while codex.rating() and the gate call it not critical: a tested hardening that fails closed. An operator evaluating the tool could reach the opposite conclusion. Print the derived rating and exemption flags, or state that the tool intentionally reports raw criticality.

**[low] Misleading rating** (werkrevisor) hint The Solution says `tools/codex-eval` uses the same rating as the gate, but the tool prints the raw `critical` field. A critical tested hardening is therefore shown as `critical True`, while `codex.rating()` and the gate call it `not critical: a tested hardening that fails closed`. An operator evaluating the tool could reach the opposite conclusion. Print the derived rating and exemption flags, or state that the tool intentionally reports raw criticality.
Author
Collaborator

Fixed in 225368d: tools/codex-eval prints the raw critical, the security effect and the rating of the gate.

Fixed in `225368d`: `tools/codex-eval` prints the raw `critical`, the security effect and the rating of the gate.
claude-code marked this conversation as resolved
@@ -48,3 +48,3 @@
def test_only_a_complete_answer_counts_as_a_review(self):
finding = {"severity": "high", "file": "a.py", "line": 3, "title": "t", "explanation": "e"}
self.assertTrue(codex_eval.valid_answer({"critical": False, "critical_reason": "", "findings": [finding]}))
self.assertTrue(codex_eval.valid_answer({"critical": False, "critical_reason": "", "security_effect": "none", "fails_closed": False, "hardening_tested": False, "findings": [finding]}))
Collaborator

[high] Weakened coverage (werkrevisor)

hint; Jev: real 0.79, severity 2.1 of 3

The new required fields are supplied only for the malformed line, title, and explanation fixtures. The other legacy malformed fixtures still omit them, so valid_answer rejects them for the missing fields before the old checks are exercised. Removing validation for critical, critical_reason, findings, or severity would therefore leave this test green, although the runner relies on this manual validator. Keep each legacy fixture complete except for the field under test.

**[high] Weakened coverage** (werkrevisor) hint; Jev: real 0.79, severity 2.1 of 3 The new required fields are supplied only for the malformed `line`, `title`, and `explanation` fixtures. The other legacy malformed fixtures still omit them, so `valid_answer` rejects them for the missing fields before the old checks are exercised. Removing validation for `critical`, `critical_reason`, `findings`, or `severity` would therefore leave this test green, although the runner relies on this manual validator. Keep each legacy fixture complete except for the field under test.
Author
Collaborator

Fixed in 225368d: each broken answer is the complete answer with only the field under test changed or removed; it now also covers a missing critical, critical_reason and findings. Without the critical_reason check the test fails.

Fixed in `225368d`: each broken answer is the complete answer with only the field under test changed or removed; it now also covers a missing `critical`, `critical_reason` and `findings`. Without the `critical_reason` check the test fails.
claude-code marked this conversation as resolved
Collaborator

Codex review: critical

This change weakens the CI merge gate by allowing security-sensitive PRs to bypass human approval based on the model’s hardening assessment. Tests verify the decision logic but cannot establish that the model will classify real security changes correctly.

No findings.

The merge waits for the status ai-review/codex: every line comment resolved, and the approval of a human for a critical PR or for a finding that is only here.

Model `gpt-6-astra`, effort high, tokens in 326320 (cached 281600) / out 2081, 47.4 s, 9 commands; reviewed head `2aaac100ad70a2546266a52d05c4eb5c80997bd5`.
<!-- werkrevisor-codex:2aaac100ad70a2546266a52d05c4eb5c80997bd5 --> <!-- werkrevisor-codex-critical:true --> <!-- werkrevisor-codex-unattached:0 --> <!-- werkrevisor-codex --> ## Codex review: critical This change weakens the CI merge gate by allowing security-sensitive PRs to bypass human approval based on the model’s hardening assessment. Tests verify the decision logic but cannot establish that the model will classify real security changes correctly. No findings. The merge waits for the status `ai-review/codex`: every line comment resolved, and the approval of a human for a critical PR or for a finding that is only here. <sub> Model `gpt-6-astra`, effort high, tokens in 326320 (cached 281600) / out 2081, 47.4 s, 9 commands; reviewed head `2aaac100ad70a2546266a52d05c4eb5c80997bd5`. </sub>
claude-code added 1 commit 2026-10-24 22:14:16 +02:00
Review round 1: complete broken answers, the gate rating in codex-eval, a paragraph split
werkator build succeeded after 00:13
werkator/werkrevisor-statistics build succeeded after 00:33
ai-review/assessment AI review passed; approved by werkrevisor; merge scheduled for when the checks succeed
ai-review/gate build succeeded after 06:14
ai-review/codex done ✅: Codex review passed
225368df8a
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
claude-code dismissed ai-reviewer's review 2026-10-24 22:14:16 +02:00
Reason:

New commits pushed, approval review dismissed automatically according to repository settings

Collaborator

🟢 werkrevisor: GREEN / PASS

Change kind: mixed.

Reasons

  • hint approval of werkrevisor for 2aaac10 not carried over: 6 approved block(s) are missing
  • hint 10 changed file(s) that neither weaken the checks, touch security nor show a risk category of the repository config according to Jev
  • hint 1 build change(s) of low risk according to Jev: statistics/build.gradle.kts (weakens checks 0.03, risk 0.00, security 0.02)
  • hint 13 changed file(s) agree with the PR document according to Jev
  • hint 1 finding(s) of low severity or rated minor by Jev: docs/prs/2026-10-24-PR#143-codex-hardening.md:82
  • hint model recommends changes before merge

Findings

  1. [medium] Missing Diagrams at docs/prs/2026-10-24-PR#143-codex-hardening.md:82

    hint; Jev: real 0.85, severity 2.3 of 3

    Adding the tested-hardening exemption changes a review decision, but this line states that no diagram update is needed. AGENTS.md requires the diagrams under docs/ to be updated whenever a PR changes the steps or decisions of a review. Update the affected review-flow diagram(s) to show when human approval is bypassed; otherwise the shipped diagrams do not document this security-gate branch and can mislead maintainers about when a human must review.

Classifier

7 of 7 units passed all questions (1 PR document(s)).
4 answers ignored because of a confidence below [classifier] min_confidence.

Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 62999, calls 1, tokens in 60520 / out 36389 (reasoning included in out), duration 370.5 s, cost 0.0618 USD (reported), classifier `jev-1.14.0` calls 7, tokens in 5899, cost 0.0002 USD, finding judge `jev-1.14.0` calls 1, tokens in 1458, cost 0.0001 USD, PR document check `jev-1.14.0` calls 13, tokens in 34446, cost 0.0014 USD, build file judge `jev-1.14.0` calls 11, tokens in 10005, cost 0.0004 USD, phases: path_judge 0.5 s, classifier 0.3 s, doc_check 0.6 s, context 0.5 s, model_review 367.7 s, finding_judge 0.2 s, config: defaults + host + repository (.werkrevisor.toml at main 113f634).
Reviewed head `225368df8afa330b943f56bf47b5640feab093f6` against base `113f6342e6bb78d936f864a6f49e3dc33eaf9971`, werkrevisor 0.69.0.
<!-- werkrevisor:225368df8afa330b943f56bf47b5640feab093f6 --> <!-- werkrevisor-verdict:GREEN --> <!-- werkrevisor-blocks:88531d8953a287fd46ef82ddd6bd29b6,5bd1cd0791d6e80f749ef701f88a3d30,7add4928dffce700ae42e47f8351d52f,5c0db5affb85cf7d28e01d00414bfbf2,163cc98db7f0864d7c01bd9770316694,1b7ae5d11a80162b21194a4b8602f283,726cf11b4ad2241f07a839d8678a11c7,065495304cd38d5e560e10d5452a68b9,0bd6d67bc029f4df019c0cc72058e62f,4f215c43c3b9146fd2f09f500875ee49,8b8da9d55cdcfe6c74ec42fd0cd8fedc,1892ebf2c547c648b6f06009c368e481,d0109a28c9af7091ce8d693943e3da46,d4b228d09db1b7fbb2c23ade227c31b7,e479ffe2a9534894df67cfe130ec575b,ea943ce89c91db972b096a1670fdea88,dbaa46d6e4f74d87e72a1ba511838866,cb25c8f654ed323823fa897c75d30001,3e6717d6ba1542f61b5facdb353a9193,de874d16b12c721193e9e892c3d2c69a,94420af4ef9ba5186b690d4221378985,c7eecbe9e507ed99ae107f3e8ad516c0,14c77a842164952fb844df3daeeb1244,47d28062df590beb7704b408a7e0fcd9,d73a428fe05198b5710b404788d97cd7,3cfe78b699835fcdf04a4acdf3407a37,d07a7966b140478998ed5c9670301f39,1051bc872992107d3c49a4cab629a92b,c393ef65f01f919ecb166a14ffa55d2b,b3a62902a9a16546db2666886cd9f8af,36ed3c38aa9930343665bd54d5007418,0112a844d5dea335b0629dade2ffcc5c,c4cdbace758989a39adb7b74802d209d,456644224f1cc7581a4566959b3589c4,978d50f66428c2bd4a2924d9726c4f95 --> ## 🟢 werkrevisor: GREEN / PASS Change kind: `mixed`. ### Reasons - **hint** approval of werkrevisor for `2aaac10` not carried over: 6 approved block(s) are missing - **hint** 10 changed file(s) that neither weaken the checks, touch security nor show a risk category of the repository config according to Jev - **hint** 1 build change(s) of low risk according to Jev: statistics/build.gradle.kts (weakens checks 0.03, risk 0.00, security 0.02) - **hint** 13 changed file(s) agree with the PR document according to Jev - **hint** 1 finding(s) of low severity or rated minor by Jev: docs/prs/2026-10-24-PR#143-codex-hardening.md:82 - **hint** model recommends changes before merge ### Findings 1. **[medium] Missing Diagrams** at `docs/prs/2026-10-24-PR#143-codex-hardening.md:82` hint; Jev: real 0.85, severity 2.3 of 3 Adding the tested-hardening exemption changes a review decision, but this line states that no diagram update is needed. `AGENTS.md` requires the diagrams under `docs/` to be updated whenever a PR changes the steps or decisions of a review. Update the affected review-flow diagram(s) to show when human approval is bypassed; otherwise the shipped diagrams do not document this security-gate branch and can mislead maintainers about when a human must review. ### Classifier 7 of 7 units passed all questions (1 PR document(s)). 4 answers ignored because of a confidence below [classifier] min_confidence. <sub> Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 62999, calls 1, tokens in 60520 / out 36389 (reasoning included in out), duration 370.5 s, cost 0.0618 USD (reported), classifier `jev-1.14.0` calls 7, tokens in 5899, cost 0.0002 USD, finding judge `jev-1.14.0` calls 1, tokens in 1458, cost 0.0001 USD, PR document check `jev-1.14.0` calls 13, tokens in 34446, cost 0.0014 USD, build file judge `jev-1.14.0` calls 11, tokens in 10005, cost 0.0004 USD, phases: path_judge 0.5 s, classifier 0.3 s, doc_check 0.6 s, context 0.5 s, model_review 367.7 s, finding_judge 0.2 s, config: defaults + host + repository (.werkrevisor.toml at main 113f634).<br> Reviewed head `225368df8afa330b943f56bf47b5640feab093f6` against base `113f6342e6bb78d936f864a6f49e3dc33eaf9971`, werkrevisor 0.69.0. </sub>
ai-reviewer left a comment
Collaborator

werkrevisor: GREEN / PASS for 225368df8afa330b943f56bf47b5640feab093f6.
The result comment of werkrevisor holds the details.

werkrevisor: GREEN / PASS for `225368df8afa330b943f56bf47b5640feab093f6`. The result comment of werkrevisor holds the details. <!-- werkrevisor-review:225368df8afa330b943f56bf47b5640feab093f6 -->
ai-reviewer scheduled this pull request to auto merge when all checks succeed 2026-10-24 22:29:28 +02:00
Collaborator

Codex review: critical

This change relaxes the merge gate by allowing some PRs classified as critical to merge without human approval. An incorrect model classification could bypass security review, and the tests verify gate logic rather than classification accuracy.

No findings.

The merge waits for the status ai-review/codex: every line comment resolved, and the approval of a human for a critical PR or for a finding that is only here.

Model `gpt-6-astra`, effort high, tokens in 242502 (cached 205184) / out 1622, 41.8 s, 13 commands; reviewed head `225368df8afa330b943f56bf47b5640feab093f6`.
<!-- werkrevisor-codex:225368df8afa330b943f56bf47b5640feab093f6 --> <!-- werkrevisor-codex-critical:true --> <!-- werkrevisor-codex-unattached:0 --> <!-- werkrevisor-codex --> ## Codex review: critical This change relaxes the merge gate by allowing some PRs classified as critical to merge without human approval. An incorrect model classification could bypass security review, and the tests verify gate logic rather than classification accuracy. No findings. The merge waits for the status `ai-review/codex`: every line comment resolved, and the approval of a human for a critical PR or for a finding that is only here. <sub> Model `gpt-6-astra`, effort high, tokens in 242502 (cached 205184) / out 1622, 41.8 s, 13 commands; reviewed head `225368df8afa330b943f56bf47b5640feab093f6`. </sub>
Author
Collaborator

Answer to the review of 225368d:

  • [medium] Missing Diagrams: does not hold, no change.
    The diagrams show no decision of the Codex review.
    docs/werkrevisor-pr-workflow.svg shows it as one box: "Codex review after werkrevisor, optional; per repository; in gate mode it holds the merge".
    review_decisions.py and review_inside.py draw only the review of werkrevisor; neither names Codex.
    When Codex needs a human stays inside that box, as before this PR.
  • Codex: critical. Correct: this PR changes when the Codex gate needs a human, so it waits for the approval of the human.
Answer to the review of `225368d`: - **[medium] Missing Diagrams:** does not hold, no change. The diagrams show no decision of the Codex review. `docs/werkrevisor-pr-workflow.svg` shows it as one box: "Codex review after werkrevisor, optional; per repository; in gate mode it holds the merge". `review_decisions.py` and `review_inside.py` draw only the review of werkrevisor; neither names Codex. When Codex needs a human stays inside that box, as before this PR. - **Codex: critical.** Correct: this PR changes when the Codex gate needs a human, so it waits for the approval of the human.
mi approved these changes 2026-10-24 22:33:35 +02:00
ai-reviewer merged commit f856ea9ff0 into main 2026-10-24 22:33:41 +02:00
ai-reviewer deleted branch claude-code/codex-hardening 2026-10-24 22:33:41 +02:00
Sign in to join this conversation.
No Reviewers
No labels
3 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: mi/werkrevisor#143