werkrevisor 0.41.5: the Codex gate holds a severe defect #106

Merged
ai-reviewer merged 5 commits from claude-code/codex-gate-severe-test into main 2026-10-14 10:22:14 +02:00
Collaborator

See the PR document under docs/prs/.

🤖 Generated with Claude Code

See the PR document under docs/prs/. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
claude-code added 1 commit 2026-10-14 10:06:10 +02:00
claude-code added 1 commit 2026-10-14 10:06:13 +02:00
werkrevisor 0.41.5: the Werkbaum names the severe gate test
werkator build succeeded after 00:13
werkator/werkrevisor-statistics build succeeded after 00:46
1523a5d57b
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
claude-code added 1 commit 2026-10-14 10:06:40 +02:00
Gate test: a severe defect on purpose, removed by the next commit
ai-review/codex 1 open Codex finding(s); resolve each line comment
werkator build succeeded after 00:09
werkator/werkrevisor-statistics build succeeded after 00:32
ai-review/assessment AI findings; a developer approval after checking them unlocks the merge; review requested from mi; merge scheduled for when the checks succeed
ai-review/gate build succeeded after 04:07
5fc3457614
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
claude-code marked the pull request as ready for review 2026-10-14 10:08:24 +02:00
Collaborator
🟠 werkrevisor ORANGE for 5fc3457, superseded by the result for 71bfec0

🟠 werkrevisor: ORANGE / FINDINGS

Change kind: mixed.

Reasons

  • ORANGE 1 finding(s) that Jev rates as probably real and severe: docs/prs/2026-10-14-PR#106-codex-gate-severe-test.md:11-37
  • hint 2 changed file(s) that neither weaken the checks nor touch security 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.01)
  • hint 5 section(s) of the PR document agree with the change summary of openrouter/minimax/minimax-m3 according to Jev

Findings

  1. Undocumented code change at docs/prs/2026-10-14-PR#106-codex-gate-severe-test.md:11-37, severity unknown, counted as medium, ORANGE, as a line comment

Classifier

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

Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 10772, calls 1, tokens in 10410 / out 10462 (reasoning included in out), duration 244.9 s, cost 0.0156 USD (reported), classifier `jev-1.13.0` calls 5, tokens in 3353, cost 0.0001 USD, finding judge `jev-1.13.0` calls 1, tokens in 1053, cost 0.0000 USD, change summary `openrouter/minimax/minimax-m3` via Minimax calls 1, tokens in 739 / out 393, cost 0.0007 USD (reported), PR document check `jev-1.13.0` calls 5, tokens in 4708, cost 0.0002 USD, build file judge `jev-1.13.0` calls 3, tokens in 1584, cost 0.0001 USD, phases: path_judge 0.2 s, classifier 0.4 s, change_summary 4.3 s, doc_check 0.4 s, context 0.2 s, model_review 238.7 s, finding_judge 0.2 s, config: defaults + host + repository (.werkrevisor.toml at main 0d5ddd5).
Reviewed head `5fc3457614ec44ac20ba4d06f4aa8505d597c0ee` against base `0d5ddd5971449094e53b5e4fa1de3431669b2082`, werkrevisor 0.41.4.
<!-- werkrevisor:5fc3457614ec44ac20ba4d06f4aa8505d597c0ee --> <!-- werkrevisor-verdict:ORANGE --> <!-- werkrevisor-blocks:721df7665e8e999cb983923cd4cc84a5,73c0ce2ec7bb79e84810d145e53f715f,7cd6dffc817988ac8fff68078ba5df3f,fdd55d343bb82041d71eb13ee100766a,c2a8e877ee1a5bc1c369b48e5e725f56 --> <!-- werkrevisor-folded --> <details><summary>🟠 werkrevisor ORANGE for <code>5fc3457</code>, superseded by <a href="http://git.javagil.de/mi/werkrevisor/pulls/106#issuecomment-5273">the result for <code>71bfec0</code></a></summary> ## 🟠 werkrevisor: ORANGE / FINDINGS Change kind: `mixed`. ### Reasons - **ORANGE** 1 finding(s) that Jev rates as probably real and severe: docs/prs/2026-10-14-PR#106-codex-gate-severe-test.md:11-37 - **hint** 2 changed file(s) that neither weaken the checks nor touch security 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.01) - **hint** 5 section(s) of the PR document agree with the change summary of openrouter/minimax/minimax-m3 according to Jev ### Findings 1. **Undocumented code change** at `docs/prs/2026-10-14-PR#106-codex-gate-severe-test.md:11-37`, severity unknown, counted as medium, ORANGE, as a line comment ### Classifier 5 of 5 units passed all questions (1 PR document(s)). 1 answer ignored because of a confidence below [classifier] min_confidence. <sub> Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 10772, calls 1, tokens in 10410 / out 10462 (reasoning included in out), duration 244.9 s, cost 0.0156 USD (reported), classifier `jev-1.13.0` calls 5, tokens in 3353, cost 0.0001 USD, finding judge `jev-1.13.0` calls 1, tokens in 1053, cost 0.0000 USD, change summary `openrouter/minimax/minimax-m3` via Minimax calls 1, tokens in 739 / out 393, cost 0.0007 USD (reported), PR document check `jev-1.13.0` calls 5, tokens in 4708, cost 0.0002 USD, build file judge `jev-1.13.0` calls 3, tokens in 1584, cost 0.0001 USD, phases: path_judge 0.2 s, classifier 0.4 s, change_summary 4.3 s, doc_check 0.4 s, context 0.2 s, model_review 238.7 s, finding_judge 0.2 s, config: defaults + host + repository (.werkrevisor.toml at main 0d5ddd5).<br> Reviewed head `5fc3457614ec44ac20ba4d06f4aa8505d597c0ee` against base `0d5ddd5971449094e53b5e4fa1de3431669b2082`, werkrevisor 0.41.4. </sub> </details>
ai-reviewer left a comment
Collaborator

werkrevisor: ORANGE / FINDINGS for 5fc3457614ec44ac20ba4d06f4aa8505d597c0ee.
The result comment of werkrevisor holds the details.

werkrevisor: ORANGE / FINDINGS for `5fc3457614ec44ac20ba4d06f4aa8505d597c0ee`. The result comment of werkrevisor holds the details. <!-- werkrevisor-review:5fc3457614ec44ac20ba4d06f4aa8505d597c0ee -->
@@ -0,0 +8,4 @@
- [PR#105](2026-10-14-PR#105-codex-gate-test.md): the first PR through the gate, with a defect of low severity.
## Problem
Collaborator

Undocumented code change, severity unknown, counted as medium (werkrevisor)

ORANGE; Jev: real 0.78, severity 2.7 of 3

The PR modifies codexrunner.py to append the bot's own login to the human_reviewers tuple (server.human_reviewers + (login,)). This is a production code change in the gate's approval path, yet the Solution section only describes the test scenario, the werkbaum node and the version bump; the codexrunner.py change is neither mentioned nor justified.

**Undocumented code change**, severity unknown, counted as medium (werkrevisor) ORANGE; Jev: real 0.78, severity 2.7 of 3 The PR modifies codexrunner.py to append the bot's own login to the human_reviewers tuple (server.human_reviewers + (login,)). This is a production code change in the gate's approval path, yet the Solution section only describes the test scenario, the werkbaum node and the version bump; the codexrunner.py change is neither mentioned nor justified.
Author
Collaborator

Fixed in a0e9ca7: the change of codexrunner.py is removed again, so the squash merge does not change the runner; the PR document now describes the defect, its effect and the new test.

Fixed in `a0e9ca7`: the change of `codexrunner.py` is removed again, so the squash merge does not change the runner; the PR document now describes the defect, its effect and the new test.
claude-code marked this conversation as resolved
ai-reviewer scheduled this pull request to auto merge when all checks succeed 2026-10-14 10:12:32 +02:00
ai-reviewer requested review from mi 2026-10-14 10:12:32 +02:00
ai-reviewer left a comment
Collaborator

Codex review of 5fc3457614ec44ac20ba4d06f4aa8505d597c0ee

Codex review of `5fc3457614ec44ac20ba4d06f4aa8505d597c0ee` <!-- werkrevisor-codex -->
@@ -222,3 +222,3 @@
return
if mode == "gate":
approved = human_approval(gitea.list_reviews(number), head, server.human_reviewers,
approved = human_approval(gitea.list_reviews(number), head, server.human_reviewers + (login,),
Collaborator

[high] Bot approval bypasses the mandatory human review (Codex review)

Adding (login,) to server.human_reviewers makes the runner’s bot account an authorized human approver. If that bot approves the current head after the Codex result, a critical PR with no open line comments receives ai-review/codex = success without any human approval. The same bypass applies to unattached findings and failed Codex reviews. An in-memory reproduction confirmed that a bot-only approval changes a critical PR’s status from pending at the merge base to success at this head.

Fix it, or reply why it does not hold, and resolve this comment.

**[high] Bot approval bypasses the mandatory human review** (Codex review) Adding `(login,)` to `server.human_reviewers` makes the runner’s bot account an authorized human approver. If that bot approves the current head after the Codex result, a critical PR with no open line comments receives `ai-review/codex = success` without any human approval. The same bypass applies to unattached findings and failed Codex reviews. An in-memory reproduction confirmed that a bot-only approval changes a critical PR’s status from pending at the merge base to success at this head. Fix it, or reply why it does not hold, and resolve this comment. <!-- werkrevisor-codex -->
Author
Collaborator

Fixed in a0e9ca7: the defect was on purpose, to test the Codex gate; only server.human_reviewers counts again. The new test test_the_approval_of_werkrevisor_is_no_human_approval fails with the defect.

Fixed in `a0e9ca7`: the defect was on purpose, to test the Codex gate; only `server.human_reviewers` counts again. The new test `test_the_approval_of_werkrevisor_is_no_human_approval` fails with the defect.
claude-code marked this conversation as resolved
Collaborator
⚠️ werkrevisor ERROR for ?, superseded by the result for 71bfec0

Codex review: critical

The change weakens the merge gate’s authorization check by allowing the bot’s approval to satisfy a requirement for human approval.

Findings

  1. [high] Bot approval bypasses the mandatory human review at werkrevisor/codexrunner.py:224, as a line comment

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 186428 (cached 147200) / out 1362, 46.7 s, 7 commands; reviewed head `5fc3457614ec44ac20ba4d06f4aa8505d597c0ee`.
<!-- werkrevisor-codex:5fc3457614ec44ac20ba4d06f4aa8505d597c0ee --> <!-- werkrevisor-codex-critical:true --> <!-- werkrevisor-codex-unattached:0 --> <!-- werkrevisor-codex --> <!-- werkrevisor-folded --> <details><summary>⚠️ werkrevisor ERROR for <code>?</code>, superseded by <a href="http://git.javagil.de/mi/werkrevisor/pulls/106#issuecomment-5273">the result for <code>71bfec0</code></a></summary> ## Codex review: critical The change weakens the merge gate’s authorization check by allowing the bot’s approval to satisfy a requirement for human approval. ### Findings 1. **[high] Bot approval bypasses the mandatory human review** at `werkrevisor/codexrunner.py:224`, as a line comment 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 186428 (cached 147200) / out 1362, 46.7 s, 7 commands; reviewed head `5fc3457614ec44ac20ba4d06f4aa8505d597c0ee`. </sub> </details>
claude-code added 1 commit 2026-10-14 10:17:11 +02:00
Remove the severe defect; a test checks that a bot approval is no human approval
werkator build succeeded after 00:10
werkator/werkrevisor-statistics build succeeded after 00:32
ai-review/gate build failed after 01:03
a0e9ca79df
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
claude-code added 1 commit 2026-10-14 10:17:33 +02:00
PR document: what werkrevisor saw of the severe defect
ai-review/codex Codex review passed
werkator build succeeded after 00:11
werkator/werkrevisor-statistics build succeeded after 00:33
ai-review/assessment AI review passed; approved by werkrevisor; merge already scheduled; review request of mi withdrawn
ai-review/gate build succeeded after 01:19
71bfec096a
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Collaborator

🟢 werkrevisor: GREEN / PASS

Change kind: mixed.

Reasons

  • hint 2 changed file(s) that neither weaken the checks nor touch security 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.01)
  • hint 6 section(s) of the PR document agree with the change summary of openrouter/minimax/minimax-m3 according to Jev

Classifier

6 of 6 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 10306, calls 1, tokens in 9964 / out 7992 (reasoning included in out), duration 76.1 s, cost 0.0115 USD (reported), classifier `jev-1.13.0` calls 6, tokens in 4126, cost 0.0002 USD, change summary `openrouter/minimax/minimax-m3` via Minimax calls 1, tokens in 773 / out 822, cost 0.0010 USD (reported), PR document check `jev-1.13.0` calls 6, tokens in 6340, cost 0.0003 USD, build file judge `jev-1.13.0` calls 3, tokens in 1563, cost 0.0001 USD, phases: path_judge 0.3 s, classifier 0.5 s, change_summary 11.9 s, doc_check 0.4 s, context 0.2 s, model_review 62.5 s, config: defaults + host + repository (.werkrevisor.toml at main 0d5ddd5).
Reviewed head `71bfec096ab1b3d15a7778a19a29ef6c9fde7b05` against base `0d5ddd5971449094e53b5e4fa1de3431669b2082`, werkrevisor 0.41.4.
<!-- werkrevisor:71bfec096ab1b3d15a7778a19a29ef6c9fde7b05 --> <!-- werkrevisor-verdict:GREEN --> <!-- werkrevisor-blocks:83a4c4798f61f920ade087860f835a57,73c0ce2ec7bb79e84810d145e53f715f,7cd6dffc817988ac8fff68078ba5df3f,c522350dc58609bcccae87a72cf43fcc,fdd55d343bb82041d71eb13ee100766a --> ## 🟢 werkrevisor: GREEN / PASS Change kind: `mixed`. ### Reasons - **hint** 2 changed file(s) that neither weaken the checks nor touch security 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.01) - **hint** 6 section(s) of the PR document agree with the change summary of openrouter/minimax/minimax-m3 according to Jev ### Classifier 6 of 6 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 10306, calls 1, tokens in 9964 / out 7992 (reasoning included in out), duration 76.1 s, cost 0.0115 USD (reported), classifier `jev-1.13.0` calls 6, tokens in 4126, cost 0.0002 USD, change summary `openrouter/minimax/minimax-m3` via Minimax calls 1, tokens in 773 / out 822, cost 0.0010 USD (reported), PR document check `jev-1.13.0` calls 6, tokens in 6340, cost 0.0003 USD, build file judge `jev-1.13.0` calls 3, tokens in 1563, cost 0.0001 USD, phases: path_judge 0.3 s, classifier 0.5 s, change_summary 11.9 s, doc_check 0.4 s, context 0.2 s, model_review 62.5 s, config: defaults + host + repository (.werkrevisor.toml at main 0d5ddd5).<br> Reviewed head `71bfec096ab1b3d15a7778a19a29ef6c9fde7b05` against base `0d5ddd5971449094e53b5e4fa1de3431669b2082`, werkrevisor 0.41.4. </sub>
ai-reviewer left a comment
Collaborator

werkrevisor: GREEN / PASS for 71bfec096ab1b3d15a7778a19a29ef6c9fde7b05.
The result comment of werkrevisor holds the details.

werkrevisor: GREEN / PASS for `71bfec096ab1b3d15a7778a19a29ef6c9fde7b05`. The result comment of werkrevisor holds the details. <!-- werkrevisor-review:71bfec096ab1b3d15a7778a19a29ef6c9fde7b05 -->
ai-reviewer removed review request for mi 2026-10-14 10:19:42 +02:00
Collaborator

Codex review: not critical

The final diff only adds a regression test rejecting bot approval, documentation, and version bumps. It does not change authorization or gate logic, or weaken existing checks; the deliberately introduced defect is absent from this diff.

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 121390 (cached 90496) / out 484, 57.2 s, 4 commands; reviewed head `71bfec096ab1b3d15a7778a19a29ef6c9fde7b05`.
<!-- werkrevisor-codex:71bfec096ab1b3d15a7778a19a29ef6c9fde7b05 --> <!-- werkrevisor-codex-critical:false --> <!-- werkrevisor-codex-unattached:0 --> <!-- werkrevisor-codex --> ## Codex review: not critical The final diff only adds a regression test rejecting bot approval, documentation, and version bumps. It does not change authorization or gate logic, or weaken existing checks; the deliberately introduced defect is absent from this diff. 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 121390 (cached 90496) / out 484, 57.2 s, 4 commands; reviewed head `71bfec096ab1b3d15a7778a19a29ef6c9fde7b05`. </sub>
ai-reviewer merged commit 643c04c9f8 into main 2026-10-14 10:22:14 +02:00
ai-reviewer deleted branch claude-code/codex-gate-severe-test 2026-10-14 10:22:14 +02:00
Sign in to join this conversation.
No Reviewers
No labels
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: mi/werkrevisor#106