werkrevisor 0.49.0: Jev checks each changed file against the PR document #117

Merged
mi merged 9 commits from claude-code/doccheck-variant-b into main 2026-10-17 17:10:29 +02:00
Collaborator

See docs/prs/2026-10-17-PR#117-doccheck-variant-b.md.

Replaces the economy-model summary of the doc check with one Jev call per changed file, and adds a data-outflow check.

🤖 Generated with Claude Code

See [docs/prs/2026-10-17-PR#117-doccheck-variant-b.md](docs/prs/2026-10-17-PR%23117-doccheck-variant-b.md). Replaces the economy-model summary of the doc check with one Jev call per changed file, and adds a data-outflow check. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
claude-code added 1 commit 2026-10-17 12:52:36 +02:00
werkrevisor 0.45.0: PR document check reads each file diff (PR doc)
werkator build succeeded after 00:09
werkator/werkrevisor-statistics build succeeded after 00:31
a34c1fdde9
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
claude-code added 1 commit 2026-10-17 13:03:09 +02:00
werkrevisor 0.45.0: doc check reads each file diff, adds data-outflow question
werkator build succeeded after 00:10
werkator/werkrevisor-statistics build succeeded after 00:36
74458a65eb
Jev checks each changed file's diff against the PR document in one call, with the
four contradiction questions, the unrelated question and a new data-outflow question.
The economy-model summary is gone. Enable [doc_check] for hsadmin-ng.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
claude-code added 1 commit 2026-10-17 13:06:00 +02:00
werkrevisor 0.45.0: README, inside diagram and plan for the per-file doc check
werkator build succeeded after 00:10
werkator/werkrevisor-statistics build succeeded after 00:33
d8a00556df
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
claude-code added 1 commit 2026-10-17 13:07:16 +02:00
werkrevisor 0.45.0: workflow diagram and ops doc drop the economy-model summary
ai-review/codex 2 open Codex finding(s); resolve each line comment
werkator build succeeded after 00:10
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:05
a654d8227c
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
claude-code marked the pull request as ready for review 2026-10-17 13:08:40 +02:00
Collaborator
🟠 werkrevisor ORANGE for a654d82, superseded by the result for 837bae4

🟠 werkrevisor: ORANGE / FINDINGS

Change kind: mixed.

Reasons

  • ORANGE changes that weaken the checks according to Jev: tests/test_provider_order.py (weakens checks 0.88)
  • YELLOW tests lost or disabled: tests/test_doccheck.py:85 removes 25 test(s) or assertion(s) without a replacement, tests/test_provider_order.py:51 removes 3 test(s) or assertion(s) without a replacement
  • YELLOW PR too large for an AI-only approval: 918 changed lines (docs and mechanical files not counted) exceed [size] max_changed_lines = 800; please review it yourself
  • YELLOW spec: docs/prs/2026-10-17-PR#117-doccheck-variant-b.md Scenario#117.04 implementation_details (0.64 > yellow_above = 0.6)
  • hint writing rules violated in the changed docs: README.md:655: paragraph with 6 sentences, more than 5; README.md:657: more than one sentence on a line
  • 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.01)
  • hint 14 section(s) of the PR document agree with the change summary of openrouter/minimax/minimax-m3, and its 19 change(s) belong to the PR document, according to Jev
  • hint 1 changed file was given to the AI as excerpt of the selected lines and 5 lines around each changed line, not in full (each larger than [review] max_full_file_chars = 80000): werkrevisor/cli.py
  • hint 1 changed file was given to the AI as excerpt of the selected lines and 5 lines around each changed line, not in full (all full files together would exceed [review] max_full_files_chars = 160000): werkrevisor/report.py
  • hint files the model cannot review: docs/werkrevisor-pr-workflow-dark.svg, docs/werkrevisor-pr-workflow.svg, docs/werkrevisor-review-inside-dark.svg and 1 more (advisory: Jev judged every changed file)
  • hint model recommends merge with caution

Classifier

Unit Question Problem Confidence Verdict
docs/prs/2026-10-17-PR#117-doccheck-variant-b.md Scenario#117.04 implementation_details 0.64 – YELLOW

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

Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 80577, calls 1, tokens in 77466 / out 21040 (reasoning included in out), duration 242.3 s, cost 0.0485 USD (reported), classifier `jev-1.13.0` calls 14, tokens in 12019, cost 0.0005 USD, excerpt selection `openrouter/openai/gpt-6-luna` calls 2, tokens in 29905 / out 720, cost 0.0041 USD (reported), change summary `openrouter/minimax/minimax-m3` via Minimax calls 1, tokens in 23004 / out 2788, cost 0.0102 USD (reported), PR document check `jev-1.13.0` calls 33, tokens in 93638, cost 0.0039 USD, build file judge `jev-1.13.0` calls 12, tokens in 23699, cost 0.0010 USD, phases: path_judge 0.8 s, classifier 0.9 s, change_summary 14.3 s, doc_check 2.0 s, context 9.7 s, model_review 214.2 s, config: defaults + host + repository (.werkrevisor.toml at main f34da27).
Reviewed head `a654d8227c3cebf7f104fd6c8f86e6769e3a9347` against base `f34da2710db793fdfe2139a98a39b88c09aa30ec`, werkrevisor 0.44.0.
<!-- werkrevisor:a654d8227c3cebf7f104fd6c8f86e6769e3a9347 --> <!-- werkrevisor-verdict:ORANGE --> <!-- werkrevisor-blocks:bbf8ca7e81a73a04e0fdd3c065d4c16c,26a00494d89f7fccefbce04f7cf74fcd,02b3660ea009977d8fe00010086d62b8,67627e86953ca263b49939e3872bc072,d23f2418497808d835f2a01c9bf0f7b5,8db6f38e434027f8b6009556838a25ef,6c805c51f62b4cb974f9ee9e372afc81,a023555482311e552509f1f24175028c,104bb55fbbb8569739fa4ef94bf73cde,ba93d487b8da1f7fbb9cebab675df4c9,28df7fa573ed3542b944138c1c156a39,5a8acb6711dfe085acf090d8cebfbbfb,81419fe03b74e0d4af7ff8289be57bde,89ccd6f45adf18f223006f7a6e99993b,2848c5a49f8347c327c457e15d84c51c,e3d9ce30b2f9e796855f837ffc0b8c54,fcd86354c45dfd077d2086287722b02a,52213f529f22e22e44d31bdb4053e4e1,0db258a85feb0c86d09da36129334ae6,74b05cbcfc0c0c431f099dd58a1c5580,27b54449bd2ee804b35f42e7bc52e96a,58ed9bf16300be6c03da1cca4f3fa80a,e79a6481fa5c49ea38104d5990e52ffc,6fcd8a98fcf57001e05de85b4c14d1d9,04e890b47d5f6d2908343e67e13bf0b2,327559c000cc02024a3d393fff290c3a,c2759bf5da0f902e34efafe05719108b,134dd16c31be4cf933adbdb1228e1350,e619d972a9f18edffddbe57c52b43adb,5c2902bac8965614a3f82ec002b523f5,f7105fe39b4456aefbf5bc986165e358,8882e0a878b30148292ec681263b620c,937507a48dd55e20b8d849516581b82f,38254c1fb68b36a070c09ac57e2e6c4b,b5ed1d7b428f476e37c12fa7eeca951d,4509df2cd5f1a886a5fb8be232a54856,5033a5a5d592a3c49005751316b66ddf,8d9d09465276a4b5f491f0465d0a5bf7,3c0a4ab0ae253a995348fbb2c16623e9,384bda4fd7cca6dfe1f101a7ee63ce57,92bee29da39f7fe5aa8b6088d707a292,b2a743285f5ecb0b3def84324e0fea2b,03dd97e7857829246667018cb291f63b,518a2827d1071bae74c8417704a32ea3,d03089398a8792e0324053c18604a01a,0d6808d97a40f6814dc7c1ef63cf854b,ce361c336705a2d9fcf8fa0360b5165d,464298a0d38a9f282499d858f3d801c4,a16ee8d3bbda97af20093ac1a68b71b2,3c24eb3e1c0794d14ebc96b74f0d5763,302e1c7293290258a0a9be1cf31d3cd9,eb0392f7f013239ceb0f2168b6792af6,b6e91c3ce31255dd7a07bfa4f09291d5,783160668023ed73d5f4c7937179e65d,56aed94ea075060da4c6b77ef1c56930,0209d1517a56683b7cffaa16d689edea,4fbe60039c0fdda0fb85aad244fd537b,542e3ad7adfcb132cb794eb47cc46bf1,aab430cd1a8f5e20ce02d562952313fd,2124a078b62f9d46fc8eca74d5795a47,cc80a2f63763e5b7b0c01351da35bd46,b0bb65c598e7ff2ca2e0c062e1123a18,b66bd6e66dc2ada80d9a658cf47b3de1,5e0016b5444cb9fc1f6f75db8ba200bf,bb00365669daeff4f8e7d3ee0c9d05b8,b16345dd528f622ce356d5dea5f24e93,1317bf2a79df492fe093389b46e29612,4c4007f00bf625207e2214981f30e3e9,a146385e787b7b7ff5a88242fad03bfb,439197cfdd99776c21dfced455527803,e57386fc22cd44ad3a66af18b8161d84,2a20d7d0636d12eb957d11dc48ef334b,e1a51d682b06de7e6a6a652163bcbd75,b6bdcade7d7eb13f440c1ec00627bf7c,01724d734c9fe695dc7e91b0f3a40eff,b565a41437a3e02d8fc498efabeffc36,41c34c5c51d451e81c0de134fd9cd79b,a62c27092501f52a49d6ec4034d5667a,40801e231161356192e7d234e90c7ec9,5f0f15611b9ddd66596b74e8216be5f4,39eb1ff40a006c24474513fe5efd501e,316ef2f400dda6889c76454ea08be26c,92afec3512bc8f10d28cec645e36caef,3c72f33065b45667278a3cd61a03571c,16c91ad9ccb769ce5af93ff020af03e7,95815f93f975c06e816f4204f7446544,cc1cc9c87b7d2f90b289a7f0e2095893,57583934ec9b7e78ca6f4579e9e64195,9c415235e285a773ab6fce7d7db0ab23,1ed4883d95bd28f73bc1add1fb4ecc25,7668dc00d8941b8913fb094101da1ea5,915c94cc4d9abc0c0e4219eebbc7aa58,1bb90c5672d456891f7f9a5bce9be158,abd4561cfacec6615c1c3fbf3dcd71d6,4f01f77d59453a3db4ffef964fc3eee4,238c4156d89306c9e5d4cd8a120acd2a,76b106f683cabc9957bfdde7a8c6f494,a52accd1b5f99725cc7068d5f460caa1,fe6ccb288bf54779965b54d47d4f8e46,31de8e011cb8b76ada118ba564e5c139,bf7581726968d29bc0655b80cd5749ed,6c3ddf72c9fa4f33176b5d2d8c7cc7cd,4ad072ef00574cd82c3fe73b2fc67971,7389f323d8d868f68c9b305e1e03de3b,5de21bc0ed0744c4997a851c4c34acb2,681d2ea7f433380bed3d6982f29a7346,eadcddbf4197ae59059ce10471ca33b1,aa0ae64032d3fa7212c2e4f3d0151f7c,efc25f6c6a12016e419122ec3591b7c8,edecb772948e55304bc01ba45b02d128,773e065170cd351a8fda602d605719d5,42e237e02316e22603d3fee3725b8f38,bcf714764fd7b651ecb7e9940a0e00f8,7333f2f28e56cbbf234fb9e9cb5743ef,a46c67fefade2b666876a4e4bb6d24fb,6c6ce13a9b7ffd06f5bbdd3163912631,53f8cc0f65c94e2222fffa3fb7e9244f,90d830e3c1ad6967a2f0c10cb957bcad,4448d87619ea5c142675cb1f430cf2d5,e6929e8bedb879c85445dc951bcbfe7b,537b863b59f8544a25acd6c9dcb273e0,66f04e6d584035e202fb1299d9ee8085,d41e1feb48e8a51300659f12337bf687,2e7d32d46a9d19312970f21787bc3a5d,da055cabc5b8bae586cbc801ad76dd79 --> <!-- werkrevisor-folded --> <details><summary>🟠 werkrevisor ORANGE for <code>a654d82</code>, superseded by <a href="http://git.javagil.de/mi/werkrevisor/pulls/117#issuecomment-6174">the result for <code>837bae4</code></a></summary> ## 🟠 werkrevisor: ORANGE / FINDINGS Change kind: `mixed`. ### Reasons - **ORANGE** changes that weaken the checks according to Jev: tests/test_provider_order.py (weakens checks 0.88) - **YELLOW** tests lost or disabled: tests/test_doccheck.py:85 removes 25 test(s) or assertion(s) without a replacement, tests/test_provider_order.py:51 removes 3 test(s) or assertion(s) without a replacement - **YELLOW** PR too large for an AI-only approval: 918 changed lines (docs and mechanical files not counted) exceed [size] max_changed_lines = 800; please review it yourself - **YELLOW** spec: docs/prs/2026-10-17-PR#117-doccheck-variant-b.md Scenario#117.04 implementation_details (0.64 > yellow_above = 0.6) - **hint** writing rules violated in the changed docs: README.md:655: paragraph with 6 sentences, more than 5; README.md:657: more than one sentence on a line - **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.01) - **hint** 14 section(s) of the PR document agree with the change summary of openrouter/minimax/minimax-m3, and its 19 change(s) belong to the PR document, according to Jev - **hint** 1 changed file was given to the AI as excerpt of the selected lines and 5 lines around each changed line, not in full (each larger than [review] max_full_file_chars = 80000): werkrevisor/cli.py - **hint** 1 changed file was given to the AI as excerpt of the selected lines and 5 lines around each changed line, not in full (all full files together would exceed [review] max_full_files_chars = 160000): werkrevisor/report.py - **hint** files the model cannot review: docs/werkrevisor-pr-workflow-dark.svg, docs/werkrevisor-pr-workflow.svg, docs/werkrevisor-review-inside-dark.svg and 1 more (advisory: Jev judged every changed file) - **hint** model recommends merge with caution ### Classifier | Unit | Question | Problem | Confidence | Verdict | |---|---|---|---|---| | docs/prs/2026-10-17-PR#117-doccheck-variant-b.md Scenario#117.04 | implementation_details | 0.64 | – | YELLOW | 13 of 14 units passed all questions (1 PR document(s)). 6 answers ignored because of a confidence below [classifier] min_confidence. <sub> Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 80577, calls 1, tokens in 77466 / out 21040 (reasoning included in out), duration 242.3 s, cost 0.0485 USD (reported), classifier `jev-1.13.0` calls 14, tokens in 12019, cost 0.0005 USD, excerpt selection `openrouter/openai/gpt-6-luna` calls 2, tokens in 29905 / out 720, cost 0.0041 USD (reported), change summary `openrouter/minimax/minimax-m3` via Minimax calls 1, tokens in 23004 / out 2788, cost 0.0102 USD (reported), PR document check `jev-1.13.0` calls 33, tokens in 93638, cost 0.0039 USD, build file judge `jev-1.13.0` calls 12, tokens in 23699, cost 0.0010 USD, phases: path_judge 0.8 s, classifier 0.9 s, change_summary 14.3 s, doc_check 2.0 s, context 9.7 s, model_review 214.2 s, config: defaults + host + repository (.werkrevisor.toml at main f34da27).<br> Reviewed head `a654d8227c3cebf7f104fd6c8f86e6769e3a9347` against base `f34da2710db793fdfe2139a98a39b88c09aa30ec`, werkrevisor 0.44.0. </sub> </details>
ai-reviewer left a comment
Collaborator

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

werkrevisor: ORANGE / FINDINGS for `a654d8227c3cebf7f104fd6c8f86e6769e3a9347`. The result comment of werkrevisor holds the details. <!-- werkrevisor-review:a654d8227c3cebf7f104fd6c8f86e6769e3a9347 -->
@@ -665,3 +655,1 @@
The usage record holds `doc_summary_*`, `doc_check_*`, the values per section as `doc_check_judgments`
and the values per change as `doc_coverage_judgments`;
the statistics service counts the summary as LLM cost and the comparison as Jev cost.
A flagged file gets one line comment at its first changed line.
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.
claude-code marked this conversation as resolved
README.md Outdated
@@ -667,1 +655,3 @@
the statistics service counts the summary as LLM cost and the comparison as Jev cost.
A flagged file gets one line comment at its first changed line.
A test claim that the file contradicts from `orange_min` on is ORANGE;
every other flag is a hint. Like every hint, it holds the merge until it is resolved.
Collaborator

Writing rule: more than one sentence on a line (werkrevisor writing rule)

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

**Writing rule: more than one sentence on a line** (werkrevisor writing rule) Fix the line, or reply why it stays, and resolve this comment.
claude-code marked this conversation as resolved
ai-reviewer scheduled this pull request to auto merge when all checks succeed 2026-10-17 13:12:47 +02:00
ai-reviewer requested review from mi 2026-10-17 13:12:47 +02:00
ai-reviewer left a comment
Collaborator

Codex review of a654d8227c3cebf7f104fd6c8f86e6769e3a9347

Codex review of `a654d8227c3cebf7f104fd6c8f86e6769e3a9347` <!-- werkrevisor-codex -->
@@ -138,0 +113,4 @@
"""The changed files Jev checks: not a PR document, not mechanical, not deleted, with a text diff."""
targets = []
for f in files:
if f.path in docs or f.path in mechanical or f.deleted:
Collaborator

[high] Deleted files silently bypass the document check (Codex review)

The f.deleted exclusion drops complete file deletions even when their text diffs are available. The previous summary included these diffs, so deleting an implementation or test that the PR document claims to preserve now escapes contradiction and unrelated-change checks entirely. If deletions are the only non-document changes, _check_doc returns without any check or skipped-check notice.

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

**[high] Deleted files silently bypass the document check** (Codex review) The f.deleted exclusion drops complete file deletions even when their text diffs are available. The previous summary included these diffs, so deleting an implementation or test that the PR document claims to preserve now escapes contradiction and unrelated-change checks entirely. If deletions are the only non-document changes, _check_doc returns without any check or skipped-check notice. Fix it, or reply why it does not hold, and resolve this comment. <!-- werkrevisor-codex -->
claude-code marked this conversation as resolved
@@ -177,0 +131,4 @@
if d.added:
return d.added[0][0]
if d.removed_at_new:
return d.removed_at_new[0]
Collaborator

[medium] Trailing deletions produce a comment beyond EOF (Codex review)

For a deletion at the end of a file, removed_at_new points one line beyond the new file’s end. Removing lines 3–4 from a four-line file therefore emits a finding at line 3 of a two-line file. The publisher uses this as new_position; Gitea rejects such positions, causing the entire batch of inline comments to fall back to the result comment.

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

**[medium] Trailing deletions produce a comment beyond EOF** (Codex review) For a deletion at the end of a file, removed_at_new points one line beyond the new file’s end. Removing lines 3–4 from a four-line file therefore emits a finding at line 3 of a two-line file. The publisher uses this as new_position; Gitea rejects such positions, causing the entire batch of inline comments to fall back to the result comment. Fix it, or reply why it does not hold, and resolve this comment. <!-- werkrevisor-codex -->
claude-code marked this conversation as resolved
Collaborator
⚠️ werkrevisor ERROR for ?, superseded by the result for 837bae4

Codex review: critical

This changes the merge gate’s checks for document contradictions and data outflow. Mistakes could let unsafe changes merge, and tests using fixed Jev answers cannot establish the effectiveness of the new judgments.

Findings

  1. [high] Deleted files silently bypass the document check at werkrevisor/doccheck.py:116, as a line comment
  2. [medium] Trailing deletions produce a comment beyond EOF at werkrevisor/doccheck.py:134, 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 436018 (cached 363136) / out 2447, 82.9 s, 11 commands; reviewed head `a654d8227c3cebf7f104fd6c8f86e6769e3a9347`.
<!-- werkrevisor-codex:a654d8227c3cebf7f104fd6c8f86e6769e3a9347 --> <!-- 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/117#issuecomment-6174">the result for <code>837bae4</code></a></summary> ## Codex review: critical This changes the merge gate’s checks for document contradictions and data outflow. Mistakes could let unsafe changes merge, and tests using fixed Jev answers cannot establish the effectiveness of the new judgments. ### Findings 1. **[high] Deleted files silently bypass the document check** at `werkrevisor/doccheck.py:116`, as a line comment 2. **[medium] Trailing deletions produce a comment beyond EOF** at `werkrevisor/doccheck.py:134`, 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 436018 (cached 363136) / out 2447, 82.9 s, 11 commands; reviewed head `a654d8227c3cebf7f104fd6c8f86e6769e3a9347`. </sub> </details>
claude-code added 1 commit 2026-10-17 13:26:12 +02:00
werkrevisor 0.45.0: doc check judges deletions, anchors them at the PR document
ai-review/codex 1 open Codex finding(s); resolve each line comment
werkator build succeeded after 00:10
werkator/werkrevisor-statistics build succeeded after 00:28
ai-review/assessment AI findings; a developer approval after checking them unlocks the merge; a human review request is pending; merge already scheduled
ai-review/gate build succeeded after 02:51
837bae436d
Codex review: a deleted or deletion-only file had no new-version line to anchor a
comment, so it was skipped (deletions bypassed the check) or anchored beyond EOF.
Such files are now judged too; their hints join one comment at the PR document.
Reword Scenario#117.04 to observable behavior; fix two README writing-rule hints.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Author
Collaborator

Review round for 837bae4.

Fixed:

  • Codex [high] deleted files bypass the check (werkrevisor/doccheck.py): a deleted or deletion-only file is now judged too.
    Its hint joins one comment at the PR document, since it has no line in the new version. Fixed in 837bae4.
  • Codex [medium] trailing deletions anchored beyond EOF (werkrevisor/doccheck.py): a file with no added line now anchors at the PR document, never at a removed-line position. Fixed in 837bae4.
  • YELLOW spec Scenario#117.04 implementation_details: reworded to observable behaviour. Fixed in 837bae4.
  • Writing hints README.md: the paragraph is split to five sentences, and the two-sentence line is split. Fixed in 837bae4.

With evidence, no change:

  • ORANGE weakens checks and YELLOW "removes 3 tests" in tests/test_provider_order.py: the removed cases covered the [doc_check] provider_order and the economy-model change summary, both removed in this PR.
    The shared _validate_provider_order stays covered by the [model] case, and the OpenRouter provider-order path by the two model-review tests; no real coverage is lost.
  • YELLOW "removes 25 tests" in tests/test_doccheck.py: the removed tests exercised the economy-model summary (summarize, parse_summary, FakeSummarizer), which this PR removes.
    The new per-file tests cover every surviving behaviour: contradictions (ORANGE and hint), unrelated, data outflow, one call per file, mechanical skip, deletions, the resolved-hint rule, the usage record and the config validation.

For the human (structural):

  • YELLOW PR too large (918 > 800 lines) and the config/hsadmin-ng.toml change both need your approval; neither is auto-fixable.

738 tests pass in the PR-Agent image.

Review round for `837bae4`. Fixed: - Codex [high] deleted files bypass the check (`werkrevisor/doccheck.py`): a deleted or deletion-only file is now judged too. Its hint joins one comment at the PR document, since it has no line in the new version. Fixed in `837bae4`. - Codex [medium] trailing deletions anchored beyond EOF (`werkrevisor/doccheck.py`): a file with no added line now anchors at the PR document, never at a removed-line position. Fixed in `837bae4`. - YELLOW spec `Scenario#117.04` implementation_details: reworded to observable behaviour. Fixed in `837bae4`. - Writing hints `README.md`: the paragraph is split to five sentences, and the two-sentence line is split. Fixed in `837bae4`. With evidence, no change: - ORANGE weakens checks and YELLOW "removes 3 tests" in `tests/test_provider_order.py`: the removed cases covered the `[doc_check]` provider_order and the economy-model change summary, both removed in this PR. The shared `_validate_provider_order` stays covered by the `[model]` case, and the OpenRouter provider-order path by the two model-review tests; no real coverage is lost. - YELLOW "removes 25 tests" in `tests/test_doccheck.py`: the removed tests exercised the economy-model summary (`summarize`, `parse_summary`, `FakeSummarizer`), which this PR removes. The new per-file tests cover every surviving behaviour: contradictions (ORANGE and hint), unrelated, data outflow, one call per file, mechanical skip, deletions, the resolved-hint rule, the usage record and the config validation. For the human (structural): - YELLOW PR too large (918 > 800 lines) and the `config/hsadmin-ng.toml` change both need your approval; neither is auto-fixable. 738 tests pass in the PR-Agent image.
Collaborator
🟠 werkrevisor ORANGE for 837bae4, superseded by the result for 6d8523f

🟠 werkrevisor: ORANGE / FINDINGS

Change kind: mixed.

Reasons

  • ORANGE changes that weaken the checks according to Jev: tests/test_provider_order.py (weakens checks 0.88)
  • YELLOW tests lost or disabled: tests/test_doccheck.py:85 removes 19 test(s) or assertion(s) without a replacement, tests/test_provider_order.py:51 removes 3 test(s) or assertion(s) without a replacement
  • YELLOW PR too large for an AI-only approval: 971 changed lines (docs and mechanical files not counted) exceed [size] max_changed_lines = 800; please review it yourself
  • 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.01)
  • hint 15 section(s) of the PR document agree with the change summary of openrouter/minimax/minimax-m3, and its 6 change(s) belong to the PR document, according to Jev
  • hint 1 changed file was given to the AI as excerpt of the selected lines and 5 lines around each changed line, not in full (each larger than [review] max_full_file_chars = 80000): werkrevisor/cli.py
  • hint 1 changed file was given to the AI as excerpt of the selected lines and 5 lines around each changed line, not in full (all full files together would exceed [review] max_full_files_chars = 160000): werkrevisor/report.py
  • hint files the model cannot review: docs/werkrevisor-pr-workflow-dark.svg, docs/werkrevisor-pr-workflow.svg, docs/werkrevisor-review-inside-dark.svg and 1 more (advisory: Jev judged every changed file)

Classifier

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

Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 82828, calls 1, tokens in 79604 / out 24119 (reasoning included in out), duration 169.8 s, cost 0.0528 USD (reported), classifier `jev-1.13.0` calls 15, tokens in 12972, cost 0.0005 USD, excerpt selection `openrouter/openai/gpt-6-luna` calls 2, tokens in 29905 / out 555, cost 0.0006 USD (reported), change summary `openrouter/minimax/minimax-m3` via Minimax calls 1, tokens in 23958 / out 3389, cost 0.0112 USD (reported), PR document check `jev-1.13.0` calls 21, tokens in 45560, cost 0.0019 USD, build file judge `jev-1.13.0` calls 12, tokens in 24660, cost 0.0010 USD, phases: path_judge 0.7 s, classifier 1.0 s, change_summary 16.0 s, doc_check 1.4 s, context 7.6 s, model_review 142.6 s, config: defaults + host + repository (.werkrevisor.toml at main f34da27).
Reviewed head `837bae436d32a3b8a28eb3a4746a70794ab1dc34` against base `f34da2710db793fdfe2139a98a39b88c09aa30ec`, werkrevisor 0.44.0.
<!-- werkrevisor:837bae436d32a3b8a28eb3a4746a70794ab1dc34 --> <!-- werkrevisor-verdict:ORANGE --> <!-- werkrevisor-blocks:bbf8ca7e81a73a04e0fdd3c065d4c16c,26a00494d89f7fccefbce04f7cf74fcd,02b3660ea009977d8fe00010086d62b8,67627e86953ca263b49939e3872bc072,d23f2418497808d835f2a01c9bf0f7b5,8db6f38e434027f8b6009556838a25ef,6c805c51f62b4cb974f9ee9e372afc81,a023555482311e552509f1f24175028c,37eca35f05cd36ffdb53a0e27a718c10,ba93d487b8da1f7fbb9cebab675df4c9,28df7fa573ed3542b944138c1c156a39,5a8acb6711dfe085acf090d8cebfbbfb,81419fe03b74e0d4af7ff8289be57bde,14ede39b8e6189f492bc44d8c9d04ecf,2848c5a49f8347c327c457e15d84c51c,e3d9ce30b2f9e796855f837ffc0b8c54,fcd86354c45dfd077d2086287722b02a,52213f529f22e22e44d31bdb4053e4e1,0db258a85feb0c86d09da36129334ae6,74b05cbcfc0c0c431f099dd58a1c5580,27b54449bd2ee804b35f42e7bc52e96a,58ed9bf16300be6c03da1cca4f3fa80a,e79a6481fa5c49ea38104d5990e52ffc,6fcd8a98fcf57001e05de85b4c14d1d9,04e890b47d5f6d2908343e67e13bf0b2,327559c000cc02024a3d393fff290c3a,c2759bf5da0f902e34efafe05719108b,134dd16c31be4cf933adbdb1228e1350,e619d972a9f18edffddbe57c52b43adb,5c2902bac8965614a3f82ec002b523f5,f7105fe39b4456aefbf5bc986165e358,8882e0a878b30148292ec681263b620c,937507a48dd55e20b8d849516581b82f,38254c1fb68b36a070c09ac57e2e6c4b,b5ed1d7b428f476e37c12fa7eeca951d,4509df2cd5f1a886a5fb8be232a54856,5033a5a5d592a3c49005751316b66ddf,8d9d09465276a4b5f491f0465d0a5bf7,3c0a4ab0ae253a995348fbb2c16623e9,384bda4fd7cca6dfe1f101a7ee63ce57,92bee29da39f7fe5aa8b6088d707a292,5e0d4a5642b6d31ac93422864948b86f,03dd97e7857829246667018cb291f63b,518a2827d1071bae74c8417704a32ea3,d03089398a8792e0324053c18604a01a,0d6808d97a40f6814dc7c1ef63cf854b,ce361c336705a2d9fcf8fa0360b5165d,464298a0d38a9f282499d858f3d801c4,a16ee8d3bbda97af20093ac1a68b71b2,3c24eb3e1c0794d14ebc96b74f0d5763,302e1c7293290258a0a9be1cf31d3cd9,eb0392f7f013239ceb0f2168b6792af6,b6e91c3ce31255dd7a07bfa4f09291d5,783160668023ed73d5f4c7937179e65d,56aed94ea075060da4c6b77ef1c56930,0209d1517a56683b7cffaa16d689edea,4fbe60039c0fdda0fb85aad244fd537b,542e3ad7adfcb132cb794eb47cc46bf1,aab430cd1a8f5e20ce02d562952313fd,2124a078b62f9d46fc8eca74d5795a47,cc80a2f63763e5b7b0c01351da35bd46,b0bb65c598e7ff2ca2e0c062e1123a18,b66bd6e66dc2ada80d9a658cf47b3de1,5e0016b5444cb9fc1f6f75db8ba200bf,bb00365669daeff4f8e7d3ee0c9d05b8,b16345dd528f622ce356d5dea5f24e93,1317bf2a79df492fe093389b46e29612,4c4007f00bf625207e2214981f30e3e9,a146385e787b7b7ff5a88242fad03bfb,439197cfdd99776c21dfced455527803,e57386fc22cd44ad3a66af18b8161d84,2a20d7d0636d12eb957d11dc48ef334b,e1a51d682b06de7e6a6a652163bcbd75,b6bdcade7d7eb13f440c1ec00627bf7c,01724d734c9fe695dc7e91b0f3a40eff,b565a41437a3e02d8fc498efabeffc36,41c34c5c51d451e81c0de134fd9cd79b,a62c27092501f52a49d6ec4034d5667a,40801e231161356192e7d234e90c7ec9,5f0f15611b9ddd66596b74e8216be5f4,39eb1ff40a006c24474513fe5efd501e,316ef2f400dda6889c76454ea08be26c,92afec3512bc8f10d28cec645e36caef,3c72f33065b45667278a3cd61a03571c,16c91ad9ccb769ce5af93ff020af03e7,5692ca31081024684c7dcf362b48aa17,cc1cc9c87b7d2f90b289a7f0e2095893,57583934ec9b7e78ca6f4579e9e64195,9c415235e285a773ab6fce7d7db0ab23,1ed4883d95bd28f73bc1add1fb4ecc25,7668dc00d8941b8913fb094101da1ea5,915c94cc4d9abc0c0e4219eebbc7aa58,1bb90c5672d456891f7f9a5bce9be158,abd4561cfacec6615c1c3fbf3dcd71d6,4f01f77d59453a3db4ffef964fc3eee4,e5d8bbcdf8f866ae10bd07e4af11dc19,76b106f683cabc9957bfdde7a8c6f494,a52accd1b5f99725cc7068d5f460caa1,fe6ccb288bf54779965b54d47d4f8e46,8501dcc56deed074fb09f466f348d84b,bf7581726968d29bc0655b80cd5749ed,7ff16e036f4921abb569529ddd06da75,4ad072ef00574cd82c3fe73b2fc67971,7389f323d8d868f68c9b305e1e03de3b,5de21bc0ed0744c4997a851c4c34acb2,681d2ea7f433380bed3d6982f29a7346,eadcddbf4197ae59059ce10471ca33b1,aa0ae64032d3fa7212c2e4f3d0151f7c,4c42d23a59d0185576ed6abea9adc0e7,90d811ecbc401ffcd2698cb444b61add,79ce41574725115a15a344e80fc9c197,f968ec9c61750d13e99d35d4526e36df,42e237e02316e22603d3fee3725b8f38,bcf714764fd7b651ecb7e9940a0e00f8,eba865e204363f825360434ad56b97a2,a46c67fefade2b666876a4e4bb6d24fb,dc8809af0846366f9aee4d0955b340e2,53f8cc0f65c94e2222fffa3fb7e9244f,90d830e3c1ad6967a2f0c10cb957bcad,4448d87619ea5c142675cb1f430cf2d5,e6929e8bedb879c85445dc951bcbfe7b,537b863b59f8544a25acd6c9dcb273e0,66f04e6d584035e202fb1299d9ee8085,d41e1feb48e8a51300659f12337bf687,031ca274e6c0e6e4ebe80e11f0eaae94,da055cabc5b8bae586cbc801ad76dd79 --> <!-- werkrevisor-folded --> <details><summary>🟠 werkrevisor ORANGE for <code>837bae4</code>, superseded by <a href="http://git.javagil.de/mi/werkrevisor/pulls/117#issuecomment-6183">the result for <code>6d8523f</code></a></summary> ## 🟠 werkrevisor: ORANGE / FINDINGS Change kind: `mixed`. ### Reasons - **ORANGE** changes that weaken the checks according to Jev: tests/test_provider_order.py (weakens checks 0.88) - **YELLOW** tests lost or disabled: tests/test_doccheck.py:85 removes 19 test(s) or assertion(s) without a replacement, tests/test_provider_order.py:51 removes 3 test(s) or assertion(s) without a replacement - **YELLOW** PR too large for an AI-only approval: 971 changed lines (docs and mechanical files not counted) exceed [size] max_changed_lines = 800; please review it yourself - **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.01) - **hint** 15 section(s) of the PR document agree with the change summary of openrouter/minimax/minimax-m3, and its 6 change(s) belong to the PR document, according to Jev - **hint** 1 changed file was given to the AI as excerpt of the selected lines and 5 lines around each changed line, not in full (each larger than [review] max_full_file_chars = 80000): werkrevisor/cli.py - **hint** 1 changed file was given to the AI as excerpt of the selected lines and 5 lines around each changed line, not in full (all full files together would exceed [review] max_full_files_chars = 160000): werkrevisor/report.py - **hint** files the model cannot review: docs/werkrevisor-pr-workflow-dark.svg, docs/werkrevisor-pr-workflow.svg, docs/werkrevisor-review-inside-dark.svg and 1 more (advisory: Jev judged every changed file) ### Classifier 15 of 15 units passed all questions (1 PR document(s)). 8 answers ignored because of a confidence below [classifier] min_confidence. <sub> Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 82828, calls 1, tokens in 79604 / out 24119 (reasoning included in out), duration 169.8 s, cost 0.0528 USD (reported), classifier `jev-1.13.0` calls 15, tokens in 12972, cost 0.0005 USD, excerpt selection `openrouter/openai/gpt-6-luna` calls 2, tokens in 29905 / out 555, cost 0.0006 USD (reported), change summary `openrouter/minimax/minimax-m3` via Minimax calls 1, tokens in 23958 / out 3389, cost 0.0112 USD (reported), PR document check `jev-1.13.0` calls 21, tokens in 45560, cost 0.0019 USD, build file judge `jev-1.13.0` calls 12, tokens in 24660, cost 0.0010 USD, phases: path_judge 0.7 s, classifier 1.0 s, change_summary 16.0 s, doc_check 1.4 s, context 7.6 s, model_review 142.6 s, config: defaults + host + repository (.werkrevisor.toml at main f34da27).<br> Reviewed head `837bae436d32a3b8a28eb3a4746a70794ab1dc34` against base `f34da2710db793fdfe2139a98a39b88c09aa30ec`, werkrevisor 0.44.0. </sub> </details>
ai-reviewer left a comment
Collaborator

Codex review of 837bae436d32a3b8a28eb3a4746a70794ab1dc34

Codex review of `837bae436d32a3b8a28eb3a4746a70794ab1dc34` <!-- werkrevisor-codex -->
@@ -273,1 +239,4 @@
lines = [f"Jev compared the diff of this file with the PR document: {_rated(tripped)}.",
"Fix the PR document or the code, or reply why the file belongs to the PR, and resolve this comment.",
fingerprint_note(row["fingerprint"])]
run.findings.append(Finding(file=row["file"], start_line=row["line"], end_line=row["line"],
Collaborator

[high] Document-check hints on documentation no longer hold the merge (Codex review)

Anchoring findings directly on files such as README.md subjects them to _plan_line_comments’ documentation exemption. With the default doc_hint_line_comments=false, these GREEN findings become free_hints: no line comment is posted and no resolution is required. Previously, document-check findings were anchored on the exempt PR document. Reproduced with doc_change_unrelated=0.9 for README.md: the review remains GREEN and schedules the merge despite the unresolved finding.

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

**[high] Document-check hints on documentation no longer hold the merge** (Codex review) Anchoring findings directly on files such as README.md subjects them to _plan_line_comments’ documentation exemption. With the default doc_hint_line_comments=false, these GREEN findings become free_hints: no line comment is posted and no resolution is required. Previously, document-check findings were anchored on the exempt PR document. Reproduced with doc_change_unrelated=0.9 for README.md: the review remains GREEN and schedules the merge despite the unresolved finding. Fix it, or reply why it does not hold, and resolve this comment. <!-- werkrevisor-codex -->
claude-code marked this conversation as resolved
Collaborator
⚠️ werkrevisor ERROR for ?, superseded by the result for 6d8523f

Codex review: critical

This changes the merge gate’s review decisions and detection of data outflow. Mistakes could allow harmful changes to merge, while mocked classifier tests cannot establish real detection reliability.

Findings

  1. [high] Document-check hints on documentation no longer hold the merge at werkrevisor/doccheck.py:242, 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 891326 (cached 816128) / out 4000, 128.7 s, 17 commands; reviewed head `837bae436d32a3b8a28eb3a4746a70794ab1dc34`.
<!-- werkrevisor-codex:837bae436d32a3b8a28eb3a4746a70794ab1dc34 --> <!-- 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/117#issuecomment-6183">the result for <code>6d8523f</code></a></summary> ## Codex review: critical This changes the merge gate’s review decisions and detection of data outflow. Mistakes could allow harmful changes to merge, while mocked classifier tests cannot establish real detection reliability. ### Findings 1. **[high] Document-check hints on documentation no longer hold the merge** at `werkrevisor/doccheck.py:242`, 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 891326 (cached 816128) / out 4000, 128.7 s, 17 commands; reviewed head `837bae436d32a3b8a28eb3a4746a70794ab1dc34`. </sub> </details>
claude-code added 1 commit 2026-10-17 13:36:00 +02:00
werkrevisor 0.45.0: doc-check hints hold the merge on documentation files
ai-review/codex Codex review: a human approval of the head unlocks the merge
werkator build succeeded after 00:11
werkator/werkrevisor-statistics build succeeded after 00:30
ai-review/assessment AI findings; a developer approval after checking them unlocks the merge; no human review requested; merge conflict with main: the author rebases the branch onto main and pushes
ai-review/gate build succeeded after 02:37
6d8523fc44
Codex review [high]: anchoring doc-check findings on the changed file let a hint on a
Markdown file fall under the documentation free-hint exception of _plan_line_comments,
so with doc_hint_line_comments off it no longer held the merge. A finding now carries
from_doc_check, which exempts it from that exception.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Author
Collaborator

Codex [high] "Document-check hints on documentation no longer hold the merge" (werkrevisor/doccheck.py): fixed in 6d8523f.

A PR document check finding now carries from_doc_check, and _plan_line_comments exempts such a finding from the documentation free-hint exception.
So a hint on a changed .md file (unrelated change or data outflow) stays a line comment and holds the merge, even with doc_hint_line_comments off.
Covered by test_a_hint_on_a_markdown_file_holds_the_merge. 739 tests pass in the PR-Agent image.

Codex [high] "Document-check hints on documentation no longer hold the merge" (`werkrevisor/doccheck.py`): fixed in `6d8523f`. A PR document check finding now carries `from_doc_check`, and `_plan_line_comments` exempts such a finding from the documentation free-hint exception. So a hint on a changed `.md` file (unrelated change or data outflow) stays a line comment and holds the merge, even with `doc_hint_line_comments` off. Covered by `test_a_hint_on_a_markdown_file_holds_the_merge`. 739 tests pass in the PR-Agent image.
Collaborator
🟠 werkrevisor ORANGE for 6d8523f, superseded by the result for 2069cc3

🟠 werkrevisor: ORANGE / FINDINGS

Gate: no human review requested; merge conflict with main: the author rebases the branch onto main and pushes.

Change kind: mixed.

Reasons

  • ORANGE changes that weaken the checks according to Jev: tests/test_provider_order.py (weakens checks 0.88)
  • YELLOW tests lost or disabled: tests/test_doccheck.py:85 removes 16 test(s) or assertion(s) without a replacement, tests/test_provider_order.py:51 removes 3 test(s) or assertion(s) without a replacement
  • YELLOW PR too large for an AI-only approval: 991 changed lines (docs and mechanical files not counted) exceed [size] max_changed_lines = 800; please review it yourself
  • hint 11 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.01)
  • hint 16 section(s) of the PR document agree with the change summary of openrouter/minimax/minimax-m3, and its 18 change(s) belong to the PR document, according to Jev
  • hint 1 changed file was given to the AI as excerpt of the selected lines and 5 lines around each changed line, not in full (each larger than [review] max_full_file_chars = 80000): werkrevisor/cli.py
  • hint 1 changed file was given to the AI as excerpt of the selected lines and 5 lines around each changed line, not in full (all full files together would exceed [review] max_full_files_chars = 160000): werkrevisor/report.py
  • hint 1 changed file was given to the AI only as diff, not in full, so it could not check it against the rest of its file (all full files together would exceed [review] max_full_files_chars = 160000, and no excerpt fits the limits either): werkrevisor/verdict.py (advisory: Jev judged every changed file)
  • hint files the model cannot review: docs/werkrevisor-pr-workflow-dark.svg, docs/werkrevisor-pr-workflow.svg, docs/werkrevisor-review-inside-dark.svg and 1 more (advisory: Jev judged every changed file)

Classifier

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

Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 86341, calls 1, tokens in 82982 / out 26894 (reasoning included in out), duration 149.4 s, cost 0.0571 USD (reported), classifier `jev-1.13.0` calls 16, tokens in 13976, cost 0.0006 USD, excerpt selection `openrouter/openai/gpt-6-luna` calls 3, tokens in 34486 / out 796, cost 0.0039 USD (reported), change summary `openrouter/minimax/minimax-m3` via Minimax calls 1, tokens in 24582 / out 3040, cost 0.0110 USD (reported), PR document check `jev-1.13.0` calls 34, tokens in 93593, cost 0.0039 USD, build file judge `jev-1.13.0` calls 13, tokens in 25757, cost 0.0011 USD, phases: path_judge 0.8 s, classifier 0.9 s, change_summary 15.0 s, doc_check 2.1 s, context 12.0 s, model_review 118.0 s, config: defaults + host + repository (.werkrevisor.toml at main f34da27).
Reviewed head `6d8523fc44c5ab25b4bf86410cd91e48ca507ee4` against base `f34da2710db793fdfe2139a98a39b88c09aa30ec`, werkrevisor 0.44.0.
<!-- werkrevisor:6d8523fc44c5ab25b4bf86410cd91e48ca507ee4 --> <!-- werkrevisor-verdict:ORANGE --> <!-- werkrevisor-blocks:bbf8ca7e81a73a04e0fdd3c065d4c16c,26a00494d89f7fccefbce04f7cf74fcd,02b3660ea009977d8fe00010086d62b8,67627e86953ca263b49939e3872bc072,d23f2418497808d835f2a01c9bf0f7b5,8db6f38e434027f8b6009556838a25ef,6c805c51f62b4cb974f9ee9e372afc81,a023555482311e552509f1f24175028c,37eca35f05cd36ffdb53a0e27a718c10,ba93d487b8da1f7fbb9cebab675df4c9,28df7fa573ed3542b944138c1c156a39,5a8acb6711dfe085acf090d8cebfbbfb,81419fe03b74e0d4af7ff8289be57bde,59cc3d2fe804c0fa9a40117c30fdef8b,2848c5a49f8347c327c457e15d84c51c,e3d9ce30b2f9e796855f837ffc0b8c54,fcd86354c45dfd077d2086287722b02a,52213f529f22e22e44d31bdb4053e4e1,0db258a85feb0c86d09da36129334ae6,74b05cbcfc0c0c431f099dd58a1c5580,27b54449bd2ee804b35f42e7bc52e96a,58ed9bf16300be6c03da1cca4f3fa80a,e79a6481fa5c49ea38104d5990e52ffc,6fcd8a98fcf57001e05de85b4c14d1d9,04e890b47d5f6d2908343e67e13bf0b2,327559c000cc02024a3d393fff290c3a,c2759bf5da0f902e34efafe05719108b,134dd16c31be4cf933adbdb1228e1350,e619d972a9f18edffddbe57c52b43adb,5c2902bac8965614a3f82ec002b523f5,f7105fe39b4456aefbf5bc986165e358,8882e0a878b30148292ec681263b620c,937507a48dd55e20b8d849516581b82f,38254c1fb68b36a070c09ac57e2e6c4b,b5ed1d7b428f476e37c12fa7eeca951d,4509df2cd5f1a886a5fb8be232a54856,5033a5a5d592a3c49005751316b66ddf,8d9d09465276a4b5f491f0465d0a5bf7,3c0a4ab0ae253a995348fbb2c16623e9,384bda4fd7cca6dfe1f101a7ee63ce57,92bee29da39f7fe5aa8b6088d707a292,2badd4babf2b97e834436b772aae3d74,03dd97e7857829246667018cb291f63b,518a2827d1071bae74c8417704a32ea3,d03089398a8792e0324053c18604a01a,0d6808d97a40f6814dc7c1ef63cf854b,ce361c336705a2d9fcf8fa0360b5165d,464298a0d38a9f282499d858f3d801c4,a16ee8d3bbda97af20093ac1a68b71b2,3c24eb3e1c0794d14ebc96b74f0d5763,302e1c7293290258a0a9be1cf31d3cd9,eb0392f7f013239ceb0f2168b6792af6,b6e91c3ce31255dd7a07bfa4f09291d5,783160668023ed73d5f4c7937179e65d,56aed94ea075060da4c6b77ef1c56930,0209d1517a56683b7cffaa16d689edea,4fbe60039c0fdda0fb85aad244fd537b,542e3ad7adfcb132cb794eb47cc46bf1,aab430cd1a8f5e20ce02d562952313fd,2124a078b62f9d46fc8eca74d5795a47,cc80a2f63763e5b7b0c01351da35bd46,b0bb65c598e7ff2ca2e0c062e1123a18,b66bd6e66dc2ada80d9a658cf47b3de1,5e0016b5444cb9fc1f6f75db8ba200bf,bb00365669daeff4f8e7d3ee0c9d05b8,b16345dd528f622ce356d5dea5f24e93,d0819fa6ededcb1f82e5c9f23a31cd8a,fda8d9455ebe9e31dc1443fba01a13c8,1317bf2a79df492fe093389b46e29612,4c4007f00bf625207e2214981f30e3e9,a146385e787b7b7ff5a88242fad03bfb,439197cfdd99776c21dfced455527803,e57386fc22cd44ad3a66af18b8161d84,2a20d7d0636d12eb957d11dc48ef334b,e1a51d682b06de7e6a6a652163bcbd75,b6bdcade7d7eb13f440c1ec00627bf7c,01724d734c9fe695dc7e91b0f3a40eff,b565a41437a3e02d8fc498efabeffc36,41c34c5c51d451e81c0de134fd9cd79b,a62c27092501f52a49d6ec4034d5667a,40801e231161356192e7d234e90c7ec9,5f0f15611b9ddd66596b74e8216be5f4,39eb1ff40a006c24474513fe5efd501e,316ef2f400dda6889c76454ea08be26c,92afec3512bc8f10d28cec645e36caef,3c72f33065b45667278a3cd61a03571c,16c91ad9ccb769ce5af93ff020af03e7,5692ca31081024684c7dcf362b48aa17,cc1cc9c87b7d2f90b289a7f0e2095893,57583934ec9b7e78ca6f4579e9e64195,9c415235e285a773ab6fce7d7db0ab23,1ed4883d95bd28f73bc1add1fb4ecc25,7668dc00d8941b8913fb094101da1ea5,915c94cc4d9abc0c0e4219eebbc7aa58,1bb90c5672d456891f7f9a5bce9be158,abd4561cfacec6615c1c3fbf3dcd71d6,4f01f77d59453a3db4ffef964fc3eee4,e5d8bbcdf8f866ae10bd07e4af11dc19,76b106f683cabc9957bfdde7a8c6f494,a52accd1b5f99725cc7068d5f460caa1,fe6ccb288bf54779965b54d47d4f8e46,8501dcc56deed074fb09f466f348d84b,bf7581726968d29bc0655b80cd5749ed,7ff16e036f4921abb569529ddd06da75,4ad072ef00574cd82c3fe73b2fc67971,7389f323d8d868f68c9b305e1e03de3b,5de21bc0ed0744c4997a851c4c34acb2,681d2ea7f433380bed3d6982f29a7346,eadcddbf4197ae59059ce10471ca33b1,aa0ae64032d3fa7212c2e4f3d0151f7c,4c42d23a59d0185576ed6abea9adc0e7,90d811ecbc401ffcd2698cb444b61add,79ce41574725115a15a344e80fc9c197,f968ec9c61750d13e99d35d4526e36df,42e237e02316e22603d3fee3725b8f38,bcf714764fd7b651ecb7e9940a0e00f8,eba865e204363f825360434ad56b97a2,03338089dafbec70684dbea2b8350cde,4bd33dd8935f97a673538f57d465dbe9,53f8cc0f65c94e2222fffa3fb7e9244f,90d830e3c1ad6967a2f0c10cb957bcad,4448d87619ea5c142675cb1f430cf2d5,e6929e8bedb879c85445dc951bcbfe7b,537b863b59f8544a25acd6c9dcb273e0,66f04e6d584035e202fb1299d9ee8085,d41e1feb48e8a51300659f12337bf687,031ca274e6c0e6e4ebe80e11f0eaae94,da055cabc5b8bae586cbc801ad76dd79,08d9c2e57ceacbf56624071a5681e8e4 --> <!-- werkrevisor-folded --> <details><summary>🟠 werkrevisor ORANGE for <code>6d8523f</code>, superseded by <a href="http://git.javagil.de/mi/werkrevisor/pulls/117#issuecomment-6204">the result for <code>2069cc3</code></a></summary> ## 🟠 werkrevisor: ORANGE / FINDINGS Gate: no human review requested; merge conflict with main: the author rebases the branch onto main and pushes. Change kind: `mixed`. ### Reasons - **ORANGE** changes that weaken the checks according to Jev: tests/test_provider_order.py (weakens checks 0.88) - **YELLOW** tests lost or disabled: tests/test_doccheck.py:85 removes 16 test(s) or assertion(s) without a replacement, tests/test_provider_order.py:51 removes 3 test(s) or assertion(s) without a replacement - **YELLOW** PR too large for an AI-only approval: 991 changed lines (docs and mechanical files not counted) exceed [size] max_changed_lines = 800; please review it yourself - **hint** 11 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.01) - **hint** 16 section(s) of the PR document agree with the change summary of openrouter/minimax/minimax-m3, and its 18 change(s) belong to the PR document, according to Jev - **hint** 1 changed file was given to the AI as excerpt of the selected lines and 5 lines around each changed line, not in full (each larger than [review] max_full_file_chars = 80000): werkrevisor/cli.py - **hint** 1 changed file was given to the AI as excerpt of the selected lines and 5 lines around each changed line, not in full (all full files together would exceed [review] max_full_files_chars = 160000): werkrevisor/report.py - **hint** 1 changed file was given to the AI only as diff, not in full, so it could not check it against the rest of its file (all full files together would exceed [review] max_full_files_chars = 160000, and no excerpt fits the limits either): werkrevisor/verdict.py (advisory: Jev judged every changed file) - **hint** files the model cannot review: docs/werkrevisor-pr-workflow-dark.svg, docs/werkrevisor-pr-workflow.svg, docs/werkrevisor-review-inside-dark.svg and 1 more (advisory: Jev judged every changed file) ### Classifier 16 of 16 units passed all questions (1 PR document(s)). 8 answers ignored because of a confidence below [classifier] min_confidence. <sub> Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 86341, calls 1, tokens in 82982 / out 26894 (reasoning included in out), duration 149.4 s, cost 0.0571 USD (reported), classifier `jev-1.13.0` calls 16, tokens in 13976, cost 0.0006 USD, excerpt selection `openrouter/openai/gpt-6-luna` calls 3, tokens in 34486 / out 796, cost 0.0039 USD (reported), change summary `openrouter/minimax/minimax-m3` via Minimax calls 1, tokens in 24582 / out 3040, cost 0.0110 USD (reported), PR document check `jev-1.13.0` calls 34, tokens in 93593, cost 0.0039 USD, build file judge `jev-1.13.0` calls 13, tokens in 25757, cost 0.0011 USD, phases: path_judge 0.8 s, classifier 0.9 s, change_summary 15.0 s, doc_check 2.1 s, context 12.0 s, model_review 118.0 s, config: defaults + host + repository (.werkrevisor.toml at main f34da27).<br> Reviewed head `6d8523fc44c5ab25b4bf86410cd91e48ca507ee4` against base `f34da2710db793fdfe2139a98a39b88c09aa30ec`, werkrevisor 0.44.0. </sub> </details>
Collaborator
⚠️ werkrevisor ERROR for ?, superseded by the result for 2069cc3

Codex review: critical

This replaces checks that determine whether changes can merge automatically, including contradiction detection and security-related data-outflow hints. Incorrect judgments could let harmful changes through, while the fake-model tests do not verify actual detection 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 506873 (cached 429056) / out 2450, 71.8 s, 19 commands; reviewed head `6d8523fc44c5ab25b4bf86410cd91e48ca507ee4`.
<!-- werkrevisor-codex:6d8523fc44c5ab25b4bf86410cd91e48ca507ee4 --> <!-- 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/117#issuecomment-6204">the result for <code>2069cc3</code></a></summary> ## Codex review: critical This replaces checks that determine whether changes can merge automatically, including contradiction detection and security-related data-outflow hints. Incorrect judgments could let harmful changes through, while the fake-model tests do not verify actual detection 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 506873 (cached 429056) / out 2450, 71.8 s, 19 commands; reviewed head `6d8523fc44c5ab25b4bf86410cd91e48ca507ee4`. </sub> </details>
claude-code added 1 commit 2026-10-17 13:59:04 +02:00
werkrevisor 0.45.0: PR document measurement re-run live against hs.hsadmin.ng
werkator build succeeded after 00:10
werkator/werkrevisor-statistics build succeeded after 00:33
ai-review/assessment AI findings; a developer approval after checking them unlocks the merge; no human review requested; merge conflict with main: the author rebases the branch onto main and pushes
ai-review/gate build succeeded after 02:40
ai-review/codex 1 open Codex finding(s); resolve each line comment
2069cc3614
Jev jev-latest, 103 non-trivial main-code file diffs from 15 merged PRs (#299-#329).
Data-outflow: backdoor 6/6 from 0.97 (median 0.98), 0/103 real files from 0.5 (max 0.12).
The unrelated question misses the on-topic backdoor and flags 3 real files (unrelated_min follow-up).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Collaborator
🟠 werkrevisor ORANGE for 2069cc3, superseded by the result for c175f10

🟠 werkrevisor: ORANGE / FINDINGS

Gate: no human review requested; merge conflict with main: the author rebases the branch onto main and pushes.

Change kind: mixed.

Reasons

  • ORANGE changes that weaken the checks according to Jev: tests/test_provider_order.py (weakens checks 0.88)
  • YELLOW tests lost or disabled: tests/test_doccheck.py:85 removes 16 test(s) or assertion(s) without a replacement, tests/test_provider_order.py:51 removes 3 test(s) or assertion(s) without a replacement
  • YELLOW PR too large for an AI-only approval: 991 changed lines (docs and mechanical files not counted) exceed [size] max_changed_lines = 800; please review it yourself
  • hint 11 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.01)
  • hint 16 section(s) of the PR document agree with the change summary of openrouter/minimax/minimax-m3, and its 11 change(s) belong to the PR document, according to Jev
  • hint 1 changed file was given to the AI as excerpt of the selected lines and 5 lines around each changed line, not in full (each larger than [review] max_full_file_chars = 80000): werkrevisor/cli.py
  • hint 2 changed files were given to the AI as excerpt of the selected lines and 5 lines around each changed line, not in full (all full files together would exceed [review] max_full_files_chars = 160000): werkrevisor/report.py, werkrevisor/verdict.py
  • hint files the model cannot review: docs/werkrevisor-pr-workflow-dark.svg, docs/werkrevisor-pr-workflow.svg, docs/werkrevisor-review-inside-dark.svg and 1 more (advisory: Jev judged every changed file)
  • hint 1 finding(s) of low severity or rated minor by Jev: werkrevisor/config.py:193-194
  • hint model recommends merge with caution

Findings

  1. Inconsistent measurement numbers at werkrevisor/config.py:193-194, severity unknown, counted as medium, hint, as a line comment

Classifier

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

Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 84231, calls 1, tokens in 80974 / out 16522 (reasoning included in out), duration 152.6 s, cost 0.0441 USD (reported), classifier `jev-1.13.0` calls 16, tokens in 14171, cost 0.0006 USD, finding judge `jev-1.13.0` calls 1, tokens in 1716, cost 0.0001 USD, excerpt selection `openrouter/openai/gpt-6-luna` calls 3, tokens in 34486 / out 984, cost 0.0008 USD (reported), change summary `openrouter/minimax/minimax-m3` via Minimax calls 1, tokens in 24592 / out 3843, cost 0.0120 USD (reported), PR document check `jev-1.13.0` calls 27, tokens in 73286, cost 0.0031 USD, build file judge `jev-1.13.0` calls 13, tokens in 25757, cost 0.0011 USD, phases: path_judge 0.8 s, classifier 0.9 s, change_summary 16.6 s, doc_check 1.6 s, context 14.2 s, model_review 117.6 s, finding_judge 0.2 s, config: defaults + host + repository (.werkrevisor.toml at main d0b4dfe).
Reviewed head `2069cc3614653327514df2da3e7504805007e90d` against base `d0b4dfed34977f793140a47b72d9fa7181d8796d`, werkrevisor 0.44.1.
<!-- werkrevisor:2069cc3614653327514df2da3e7504805007e90d --> <!-- werkrevisor-verdict:ORANGE --> <!-- werkrevisor-blocks:bbf8ca7e81a73a04e0fdd3c065d4c16c,26a00494d89f7fccefbce04f7cf74fcd,02b3660ea009977d8fe00010086d62b8,67627e86953ca263b49939e3872bc072,d23f2418497808d835f2a01c9bf0f7b5,8db6f38e434027f8b6009556838a25ef,6c805c51f62b4cb974f9ee9e372afc81,a023555482311e552509f1f24175028c,37eca35f05cd36ffdb53a0e27a718c10,29cf54eecedca28dd0ae15f0070ef7ff,28df7fa573ed3542b944138c1c156a39,5a8acb6711dfe085acf090d8cebfbbfb,81419fe03b74e0d4af7ff8289be57bde,4c3c574018a9c4cb6e443bcb7ce3260a,2848c5a49f8347c327c457e15d84c51c,e3d9ce30b2f9e796855f837ffc0b8c54,fcd86354c45dfd077d2086287722b02a,52213f529f22e22e44d31bdb4053e4e1,0db258a85feb0c86d09da36129334ae6,74b05cbcfc0c0c431f099dd58a1c5580,27b54449bd2ee804b35f42e7bc52e96a,58ed9bf16300be6c03da1cca4f3fa80a,e79a6481fa5c49ea38104d5990e52ffc,6fcd8a98fcf57001e05de85b4c14d1d9,04e890b47d5f6d2908343e67e13bf0b2,327559c000cc02024a3d393fff290c3a,c2759bf5da0f902e34efafe05719108b,134dd16c31be4cf933adbdb1228e1350,e619d972a9f18edffddbe57c52b43adb,5c2902bac8965614a3f82ec002b523f5,f7105fe39b4456aefbf5bc986165e358,8882e0a878b30148292ec681263b620c,937507a48dd55e20b8d849516581b82f,38254c1fb68b36a070c09ac57e2e6c4b,b5ed1d7b428f476e37c12fa7eeca951d,4509df2cd5f1a886a5fb8be232a54856,5033a5a5d592a3c49005751316b66ddf,8d9d09465276a4b5f491f0465d0a5bf7,3c0a4ab0ae253a995348fbb2c16623e9,384bda4fd7cca6dfe1f101a7ee63ce57,92bee29da39f7fe5aa8b6088d707a292,2badd4babf2b97e834436b772aae3d74,03dd97e7857829246667018cb291f63b,518a2827d1071bae74c8417704a32ea3,d03089398a8792e0324053c18604a01a,0d6808d97a40f6814dc7c1ef63cf854b,ce361c336705a2d9fcf8fa0360b5165d,464298a0d38a9f282499d858f3d801c4,a16ee8d3bbda97af20093ac1a68b71b2,3c24eb3e1c0794d14ebc96b74f0d5763,302e1c7293290258a0a9be1cf31d3cd9,eb0392f7f013239ceb0f2168b6792af6,b6e91c3ce31255dd7a07bfa4f09291d5,783160668023ed73d5f4c7937179e65d,56aed94ea075060da4c6b77ef1c56930,0209d1517a56683b7cffaa16d689edea,4fbe60039c0fdda0fb85aad244fd537b,542e3ad7adfcb132cb794eb47cc46bf1,aab430cd1a8f5e20ce02d562952313fd,2124a078b62f9d46fc8eca74d5795a47,cc80a2f63763e5b7b0c01351da35bd46,b0bb65c598e7ff2ca2e0c062e1123a18,b66bd6e66dc2ada80d9a658cf47b3de1,5e0016b5444cb9fc1f6f75db8ba200bf,bb00365669daeff4f8e7d3ee0c9d05b8,b16345dd528f622ce356d5dea5f24e93,d0819fa6ededcb1f82e5c9f23a31cd8a,fda8d9455ebe9e31dc1443fba01a13c8,1317bf2a79df492fe093389b46e29612,4c4007f00bf625207e2214981f30e3e9,a146385e787b7b7ff5a88242fad03bfb,439197cfdd99776c21dfced455527803,e57386fc22cd44ad3a66af18b8161d84,2a20d7d0636d12eb957d11dc48ef334b,e1a51d682b06de7e6a6a652163bcbd75,b6bdcade7d7eb13f440c1ec00627bf7c,01724d734c9fe695dc7e91b0f3a40eff,b565a41437a3e02d8fc498efabeffc36,41c34c5c51d451e81c0de134fd9cd79b,a62c27092501f52a49d6ec4034d5667a,40801e231161356192e7d234e90c7ec9,5f0f15611b9ddd66596b74e8216be5f4,39eb1ff40a006c24474513fe5efd501e,316ef2f400dda6889c76454ea08be26c,92afec3512bc8f10d28cec645e36caef,3c72f33065b45667278a3cd61a03571c,16c91ad9ccb769ce5af93ff020af03e7,5692ca31081024684c7dcf362b48aa17,cc1cc9c87b7d2f90b289a7f0e2095893,57583934ec9b7e78ca6f4579e9e64195,9c415235e285a773ab6fce7d7db0ab23,1ed4883d95bd28f73bc1add1fb4ecc25,7668dc00d8941b8913fb094101da1ea5,915c94cc4d9abc0c0e4219eebbc7aa58,1bb90c5672d456891f7f9a5bce9be158,abd4561cfacec6615c1c3fbf3dcd71d6,4f01f77d59453a3db4ffef964fc3eee4,e5d8bbcdf8f866ae10bd07e4af11dc19,76b106f683cabc9957bfdde7a8c6f494,a52accd1b5f99725cc7068d5f460caa1,fe6ccb288bf54779965b54d47d4f8e46,8501dcc56deed074fb09f466f348d84b,bf7581726968d29bc0655b80cd5749ed,7ff16e036f4921abb569529ddd06da75,4ad072ef00574cd82c3fe73b2fc67971,7389f323d8d868f68c9b305e1e03de3b,5de21bc0ed0744c4997a851c4c34acb2,681d2ea7f433380bed3d6982f29a7346,eadcddbf4197ae59059ce10471ca33b1,aa0ae64032d3fa7212c2e4f3d0151f7c,4c42d23a59d0185576ed6abea9adc0e7,90d811ecbc401ffcd2698cb444b61add,79ce41574725115a15a344e80fc9c197,f968ec9c61750d13e99d35d4526e36df,42e237e02316e22603d3fee3725b8f38,bcf714764fd7b651ecb7e9940a0e00f8,eba865e204363f825360434ad56b97a2,03338089dafbec70684dbea2b8350cde,4bd33dd8935f97a673538f57d465dbe9,53f8cc0f65c94e2222fffa3fb7e9244f,90d830e3c1ad6967a2f0c10cb957bcad,4448d87619ea5c142675cb1f430cf2d5,e6929e8bedb879c85445dc951bcbfe7b,537b863b59f8544a25acd6c9dcb273e0,66f04e6d584035e202fb1299d9ee8085,d41e1feb48e8a51300659f12337bf687,031ca274e6c0e6e4ebe80e11f0eaae94,da055cabc5b8bae586cbc801ad76dd79,08d9c2e57ceacbf56624071a5681e8e4 --> <!-- werkrevisor-folded --> <details><summary>🟠 werkrevisor ORANGE for <code>2069cc3</code>, superseded by <a href="http://git.javagil.de/mi/werkrevisor/pulls/117#issuecomment-6221">the result for <code>c175f10</code></a></summary> ## 🟠 werkrevisor: ORANGE / FINDINGS Gate: no human review requested; merge conflict with main: the author rebases the branch onto main and pushes. Change kind: `mixed`. ### Reasons - **ORANGE** changes that weaken the checks according to Jev: tests/test_provider_order.py (weakens checks 0.88) - **YELLOW** tests lost or disabled: tests/test_doccheck.py:85 removes 16 test(s) or assertion(s) without a replacement, tests/test_provider_order.py:51 removes 3 test(s) or assertion(s) without a replacement - **YELLOW** PR too large for an AI-only approval: 991 changed lines (docs and mechanical files not counted) exceed [size] max_changed_lines = 800; please review it yourself - **hint** 11 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.01) - **hint** 16 section(s) of the PR document agree with the change summary of openrouter/minimax/minimax-m3, and its 11 change(s) belong to the PR document, according to Jev - **hint** 1 changed file was given to the AI as excerpt of the selected lines and 5 lines around each changed line, not in full (each larger than [review] max_full_file_chars = 80000): werkrevisor/cli.py - **hint** 2 changed files were given to the AI as excerpt of the selected lines and 5 lines around each changed line, not in full (all full files together would exceed [review] max_full_files_chars = 160000): werkrevisor/report.py, werkrevisor/verdict.py - **hint** files the model cannot review: docs/werkrevisor-pr-workflow-dark.svg, docs/werkrevisor-pr-workflow.svg, docs/werkrevisor-review-inside-dark.svg and 1 more (advisory: Jev judged every changed file) - **hint** 1 finding(s) of low severity or rated minor by Jev: werkrevisor/config.py:193-194 - **hint** model recommends merge with caution ### Findings 1. **Inconsistent measurement numbers** at `werkrevisor/config.py:193-194`, severity unknown, counted as medium, hint, as a line comment ### Classifier 16 of 16 units passed all questions (1 PR document(s)). 8 answers ignored because of a confidence below [classifier] min_confidence. <sub> Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 84231, calls 1, tokens in 80974 / out 16522 (reasoning included in out), duration 152.6 s, cost 0.0441 USD (reported), classifier `jev-1.13.0` calls 16, tokens in 14171, cost 0.0006 USD, finding judge `jev-1.13.0` calls 1, tokens in 1716, cost 0.0001 USD, excerpt selection `openrouter/openai/gpt-6-luna` calls 3, tokens in 34486 / out 984, cost 0.0008 USD (reported), change summary `openrouter/minimax/minimax-m3` via Minimax calls 1, tokens in 24592 / out 3843, cost 0.0120 USD (reported), PR document check `jev-1.13.0` calls 27, tokens in 73286, cost 0.0031 USD, build file judge `jev-1.13.0` calls 13, tokens in 25757, cost 0.0011 USD, phases: path_judge 0.8 s, classifier 0.9 s, change_summary 16.6 s, doc_check 1.6 s, context 14.2 s, model_review 117.6 s, finding_judge 0.2 s, config: defaults + host + repository (.werkrevisor.toml at main d0b4dfe).<br> Reviewed head `2069cc3614653327514df2da3e7504805007e90d` against base `d0b4dfed34977f793140a47b72d9fa7181d8796d`, werkrevisor 0.44.1. </sub> </details>
ai-reviewer left a comment
Collaborator

werkrevisor: ORANGE / FINDINGS for 2069cc3614653327514df2da3e7504805007e90d.
The result comment of werkrevisor holds the details.

werkrevisor: ORANGE / FINDINGS for `2069cc3614653327514df2da3e7504805007e90d`. The result comment of werkrevisor holds the details. <!-- werkrevisor-review:2069cc3614653327514df2da3e7504805007e90d -->
@@ -198,3 +191,3 @@
# Measured on 36 merged PRs with planted changes; see the PR document of PR#116.
unrelated_min: float = 0.7
provider_order: tuple = ()
# Measured on 2026-10-17: 6 of 6 backdoors from 0.7 on, 0 false alarms on 109 real main-code files.
Collaborator

Documentation inconsistency on file count, severity unknown, counted as medium (werkrevisor)

hint; Jev: real 0.82, severity 1.6 of 3

The config comment for exfil_min claims "0 false alarms on 109 real main-code files", but the README, PR document, and werkbaum #doc.exfilmin all say "103 real files". The werkbaum #doc.exfil repeats the "109 real files" wording. The number must be consistent across the config comment and the documentation so a reader calibrating the threshold sees the same false-positive set everywhere.

Updated by the review of 66855b1590eb2ab3288882b3243d89aab0ca1f94.

**Documentation inconsistency on file count**, severity unknown, counted as medium (werkrevisor) hint; Jev: real 0.82, severity 1.6 of 3 The config comment for `exfil_min` claims "0 false alarms on 109 real main-code files", but the README, PR document, and werkbaum `#doc.exfilmin` all say "103 real files". The werkbaum `#doc.exfil` repeats the "109 real files" wording. The number must be consistent across the config comment and the documentation so a reader calibrating the threshold sees the same false-positive set everywhere. <sub>Updated by the review of `66855b1590eb2ab3288882b3243d89aab0ca1f94`.</sub>
ai-reviewer left a comment
Collaborator

Codex review of 2069cc3614653327514df2da3e7504805007e90d

Codex review of `2069cc3614653327514df2da3e7504805007e90d` <!-- werkrevisor-codex -->
@@ -261,3 +223,3 @@
continue
orange = flagged.get(ORANGE_QUESTION, 0.0) >= config.orange_min
orange = row["values"].get(ORANGE_QUESTION, 0.0) >= config.orange_min
if not orange and row["fingerprint"] in answered:
Collaborator

[medium] A resolved hint suppresses newly detected issues for the same file (Codex review)

The resolved fingerprint identifies only the file, diff and PR document, not which questions the author answered. If an unrelated-change hint is resolved and a later review detects data outflow in the unchanged file, this branch silently discards the new finding. An in-memory reproduction with a resolved unrelated-change hint and a subsequent data-outflow score of 0.98 produces zero findings and counts it as answered. Resolution must distinguish previously reported questions from newly detected ones.

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

**[medium] A resolved hint suppresses newly detected issues for the same file** (Codex review) The resolved fingerprint identifies only the file, diff and PR document, not which questions the author answered. If an unrelated-change hint is resolved and a later review detects data outflow in the unchanged file, this branch silently discards the new finding. An in-memory reproduction with a resolved unrelated-change hint and a subsequent data-outflow score of 0.98 produces zero findings and counts it as answered. Resolution must distinguish previously reported questions from newly detected ones. Fix it, or reply why it does not hold, and resolve this comment. <!-- werkrevisor-codex -->
Collaborator
⚠️ werkrevisor ERROR for ?, superseded by the result for c175f10

Codex review: critical

This changes the review judgments and comment handling that control automatic merges, including a new data-outflow check. Mistakes could let unsafe changes merge, and mocked model responses cannot establish that the gate remains effective.

Findings

  1. [medium] A resolved hint suppresses newly detected issues for the same file at werkrevisor/doccheck.py:225, 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 639920 (cached 563840) / out 3002, 104.6 s, 20 commands; reviewed head `2069cc3614653327514df2da3e7504805007e90d`.
<!-- werkrevisor-codex:2069cc3614653327514df2da3e7504805007e90d --> <!-- 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/117#issuecomment-6221">the result for <code>c175f10</code></a></summary> ## Codex review: critical This changes the review judgments and comment handling that control automatic merges, including a new data-outflow check. Mistakes could let unsafe changes merge, and mocked model responses cannot establish that the gate remains effective. ### Findings 1. **[medium] A resolved hint suppresses newly detected issues for the same file** at `werkrevisor/doccheck.py:225`, 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 639920 (cached 563840) / out 3002, 104.6 s, 20 commands; reviewed head `2069cc3614653327514df2da3e7504805007e90d`. </sub> </details>
claude-code added 1 commit 2026-10-17 14:09:46 +02:00
werkrevisor 0.45.0: measurement pairs each PR with its own doc; unrelated_min stays 0.7
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:31
ai-review/assessment AI findings; a developer approval after checking them unlocks the merge; no human review requested; merge conflict with main: the author rebases the branch onto main and pushes
ai-review/gate build succeeded after 00:23
c175f10599
The earlier 3 unrelated flags were a measurement artifact: a stacked PR carries its base
PR's doc too, and the harness picked the wrong one. With the matching PR document, both
the data-outflow and the unrelated question stay below 0.3 on 103 real file diffs, so
unrelated_min and exfil_min stay at 0.7 (wide gap to the 0.7-0.98 of a planted change).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Collaborator
🟠 werkrevisor ORANGE for c175f10, superseded by the result for 66855b1

🟠 werkrevisor: ORANGE / FINDINGS

Gate: no human review requested; merge conflict with main: the author rebases the branch onto main and pushes.

Change kind: mixed.

Reasons

  • ORANGE changes that weaken the checks according to Jev: tests/test_provider_order.py (weakens checks 0.89)
  • YELLOW tests lost or disabled: tests/test_doccheck.py:85 removes 16 test(s) or assertion(s) without a replacement, tests/test_provider_order.py:51 removes 3 test(s) or assertion(s) without a replacement
  • YELLOW PR too large for an AI-only approval: 991 changed lines (docs and mechanical files not counted) exceed [size] max_changed_lines = 800; please review it yourself
  • YELLOW spec: docs/prs/2026-10-17-PR#117-doccheck-variant-b.md section 'Follow-up PRs' hard_to_understand (0.54 > yellow_above = 0.5)
  • hint 11 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.01)
  • hint 16 section(s) of the PR document agree with the change summary of openrouter/minimax/minimax-m3, and its 5 change(s) belong to the PR document, according to Jev
  • hint 1 changed file was given to the AI as excerpt of the selected lines and 5 lines around each changed line, not in full (each larger than [review] max_full_file_chars = 80000): werkrevisor/cli.py
  • hint 2 changed files were given to the AI as excerpt of the selected lines and 5 lines around each changed line, not in full (all full files together would exceed [review] max_full_files_chars = 160000): werkrevisor/report.py, werkrevisor/verdict.py
  • hint files the model cannot review: docs/werkrevisor-pr-workflow-dark.svg, docs/werkrevisor-pr-workflow.svg, docs/werkrevisor-review-inside-dark.svg and 1 more (advisory: Jev judged every changed file)
  • hint 3 finding(s) of low severity or rated minor by Jev: tests/test_doccheck.py:266-269, docs/werkrevisor.werkbaum:80-92, docs/werkrevisor.werkbaum:90-95
  • hint model recommends changes before merge

Findings

  1. Weakened test for repeated hint after file edit at tests/test_doccheck.py:266-269, severity unknown, counted as medium, hint, as a line comment

  2. Contradictory file count in measurement at docs/werkrevisor.werkbaum:80-92, severity unknown, counted as medium

    hint; Jev: real 0.78, severity 1.8 of 3

    The PR document and README state "103 real main-code file diffs" while werkrevisor/config.py (DocCheckConfig comment) and the #doc.exfil entry in the werkbaum state "109 real main-code files". The #doc.exfilmin entry of the same werkbaum then reuses the 103 figure. One of the two numbers is wrong, and the inconsistency between the PR document, the host config comment, and the plan makes the calibration harder to trust.

  3. Duplicate calibration entry at docs/werkrevisor.werkbaum:90-95, severity unknown, counted as medium

    hint; Jev: real 0.78, severity 1.1 of 3

    The new - [ ] Calibrate hint_min on real PRs; decide whether data-outflow becomes ORANGE (S) immediately precedes the kept - [^] Calibrate hint_min on real PRs (S) that already records the PR#66 calibration. The "hint_min" calibration task is now listed twice with the same scope; the new entry should subsume the old one (or be merged into it) so the plan has one owner for the calibration.

Classifier

Unit Question Problem Confidence Verdict
docs/prs/2026-10-17-PR#117-doccheck-variant-b.md section 'Follow-up PRs' hard_to_understand 0.54 0.52 YELLOW

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

Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 85367, calls 1, tokens in 82064 / out 23577 (reasoning included in out), duration 156.6 s, cost 0.0529 USD (reported), classifier `jev-1.13.0` calls 16, tokens in 14295, cost 0.0006 USD, finding judge `jev-1.13.0` calls 3, tokens in 5774, cost 0.0002 USD, excerpt selection `openrouter/openai/gpt-6-luna` calls 3, tokens in 34486 / out 709, cost 0.0007 USD (reported), change summary `openrouter/minimax/minimax-m3` via Minimax calls 1, tokens in 24651 / out 3153, cost 0.0111 USD (reported), PR document check `jev-1.13.0` calls 21, tokens in 44432, cost 0.0019 USD, build file judge `jev-1.13.0` calls 13, tokens in 25757, cost 0.0011 USD, phases: path_judge 0.8 s, classifier 0.9 s, change_summary 19.5 s, doc_check 1.4 s, context 12.9 s, model_review 120.1 s, finding_judge 0.3 s, config: defaults + host + repository (.werkrevisor.toml at main d0b4dfe).
Reviewed head `c175f10599168ed377f550221ef90960d7c30e1c` against base `d0b4dfed34977f793140a47b72d9fa7181d8796d`, werkrevisor 0.44.1.
<!-- werkrevisor:c175f10599168ed377f550221ef90960d7c30e1c --> <!-- werkrevisor-verdict:ORANGE --> <!-- werkrevisor-blocks:bbf8ca7e81a73a04e0fdd3c065d4c16c,26a00494d89f7fccefbce04f7cf74fcd,02b3660ea009977d8fe00010086d62b8,67627e86953ca263b49939e3872bc072,d23f2418497808d835f2a01c9bf0f7b5,8db6f38e434027f8b6009556838a25ef,6c805c51f62b4cb974f9ee9e372afc81,a023555482311e552509f1f24175028c,37eca35f05cd36ffdb53a0e27a718c10,29cf54eecedca28dd0ae15f0070ef7ff,28df7fa573ed3542b944138c1c156a39,5a8acb6711dfe085acf090d8cebfbbfb,81419fe03b74e0d4af7ff8289be57bde,51554fad9985c6d1cd483f2707ebafdd,2848c5a49f8347c327c457e15d84c51c,e3d9ce30b2f9e796855f837ffc0b8c54,fcd86354c45dfd077d2086287722b02a,52213f529f22e22e44d31bdb4053e4e1,0db258a85feb0c86d09da36129334ae6,74b05cbcfc0c0c431f099dd58a1c5580,27b54449bd2ee804b35f42e7bc52e96a,58ed9bf16300be6c03da1cca4f3fa80a,e79a6481fa5c49ea38104d5990e52ffc,6fcd8a98fcf57001e05de85b4c14d1d9,04e890b47d5f6d2908343e67e13bf0b2,327559c000cc02024a3d393fff290c3a,e2aa00b5c7d61e572e32138157aaae8a,134dd16c31be4cf933adbdb1228e1350,e619d972a9f18edffddbe57c52b43adb,5c2902bac8965614a3f82ec002b523f5,f7105fe39b4456aefbf5bc986165e358,8882e0a878b30148292ec681263b620c,937507a48dd55e20b8d849516581b82f,38254c1fb68b36a070c09ac57e2e6c4b,b5ed1d7b428f476e37c12fa7eeca951d,4509df2cd5f1a886a5fb8be232a54856,5033a5a5d592a3c49005751316b66ddf,8d9d09465276a4b5f491f0465d0a5bf7,3c0a4ab0ae253a995348fbb2c16623e9,384bda4fd7cca6dfe1f101a7ee63ce57,92bee29da39f7fe5aa8b6088d707a292,2badd4babf2b97e834436b772aae3d74,03dd97e7857829246667018cb291f63b,518a2827d1071bae74c8417704a32ea3,d03089398a8792e0324053c18604a01a,0d6808d97a40f6814dc7c1ef63cf854b,ce361c336705a2d9fcf8fa0360b5165d,464298a0d38a9f282499d858f3d801c4,a16ee8d3bbda97af20093ac1a68b71b2,3c24eb3e1c0794d14ebc96b74f0d5763,302e1c7293290258a0a9be1cf31d3cd9,eb0392f7f013239ceb0f2168b6792af6,b6e91c3ce31255dd7a07bfa4f09291d5,783160668023ed73d5f4c7937179e65d,56aed94ea075060da4c6b77ef1c56930,0209d1517a56683b7cffaa16d689edea,4fbe60039c0fdda0fb85aad244fd537b,542e3ad7adfcb132cb794eb47cc46bf1,aab430cd1a8f5e20ce02d562952313fd,2124a078b62f9d46fc8eca74d5795a47,cc80a2f63763e5b7b0c01351da35bd46,b0bb65c598e7ff2ca2e0c062e1123a18,b66bd6e66dc2ada80d9a658cf47b3de1,5e0016b5444cb9fc1f6f75db8ba200bf,bb00365669daeff4f8e7d3ee0c9d05b8,b16345dd528f622ce356d5dea5f24e93,d0819fa6ededcb1f82e5c9f23a31cd8a,fda8d9455ebe9e31dc1443fba01a13c8,1317bf2a79df492fe093389b46e29612,4c4007f00bf625207e2214981f30e3e9,a146385e787b7b7ff5a88242fad03bfb,439197cfdd99776c21dfced455527803,e57386fc22cd44ad3a66af18b8161d84,2a20d7d0636d12eb957d11dc48ef334b,e1a51d682b06de7e6a6a652163bcbd75,b6bdcade7d7eb13f440c1ec00627bf7c,01724d734c9fe695dc7e91b0f3a40eff,b565a41437a3e02d8fc498efabeffc36,41c34c5c51d451e81c0de134fd9cd79b,a62c27092501f52a49d6ec4034d5667a,40801e231161356192e7d234e90c7ec9,5f0f15611b9ddd66596b74e8216be5f4,39eb1ff40a006c24474513fe5efd501e,316ef2f400dda6889c76454ea08be26c,92afec3512bc8f10d28cec645e36caef,3c72f33065b45667278a3cd61a03571c,16c91ad9ccb769ce5af93ff020af03e7,5692ca31081024684c7dcf362b48aa17,cc1cc9c87b7d2f90b289a7f0e2095893,57583934ec9b7e78ca6f4579e9e64195,9c415235e285a773ab6fce7d7db0ab23,1ed4883d95bd28f73bc1add1fb4ecc25,7668dc00d8941b8913fb094101da1ea5,915c94cc4d9abc0c0e4219eebbc7aa58,1bb90c5672d456891f7f9a5bce9be158,abd4561cfacec6615c1c3fbf3dcd71d6,4f01f77d59453a3db4ffef964fc3eee4,e5d8bbcdf8f866ae10bd07e4af11dc19,76b106f683cabc9957bfdde7a8c6f494,a52accd1b5f99725cc7068d5f460caa1,fe6ccb288bf54779965b54d47d4f8e46,8501dcc56deed074fb09f466f348d84b,bf7581726968d29bc0655b80cd5749ed,7ff16e036f4921abb569529ddd06da75,4ad072ef00574cd82c3fe73b2fc67971,7389f323d8d868f68c9b305e1e03de3b,5de21bc0ed0744c4997a851c4c34acb2,681d2ea7f433380bed3d6982f29a7346,eadcddbf4197ae59059ce10471ca33b1,aa0ae64032d3fa7212c2e4f3d0151f7c,4c42d23a59d0185576ed6abea9adc0e7,90d811ecbc401ffcd2698cb444b61add,79ce41574725115a15a344e80fc9c197,f968ec9c61750d13e99d35d4526e36df,42e237e02316e22603d3fee3725b8f38,bcf714764fd7b651ecb7e9940a0e00f8,eba865e204363f825360434ad56b97a2,03338089dafbec70684dbea2b8350cde,4bd33dd8935f97a673538f57d465dbe9,53f8cc0f65c94e2222fffa3fb7e9244f,90d830e3c1ad6967a2f0c10cb957bcad,4448d87619ea5c142675cb1f430cf2d5,e6929e8bedb879c85445dc951bcbfe7b,537b863b59f8544a25acd6c9dcb273e0,66f04e6d584035e202fb1299d9ee8085,d41e1feb48e8a51300659f12337bf687,031ca274e6c0e6e4ebe80e11f0eaae94,da055cabc5b8bae586cbc801ad76dd79,08d9c2e57ceacbf56624071a5681e8e4 --> <!-- werkrevisor-folded --> <details><summary>🟠 werkrevisor ORANGE for <code>c175f10</code>, superseded by <a href="http://git.javagil.de/mi/werkrevisor/pulls/117#issuecomment-6319">the result for <code>66855b1</code></a></summary> ## 🟠 werkrevisor: ORANGE / FINDINGS Gate: no human review requested; merge conflict with main: the author rebases the branch onto main and pushes. Change kind: `mixed`. ### Reasons - **ORANGE** changes that weaken the checks according to Jev: tests/test_provider_order.py (weakens checks 0.89) - **YELLOW** tests lost or disabled: tests/test_doccheck.py:85 removes 16 test(s) or assertion(s) without a replacement, tests/test_provider_order.py:51 removes 3 test(s) or assertion(s) without a replacement - **YELLOW** PR too large for an AI-only approval: 991 changed lines (docs and mechanical files not counted) exceed [size] max_changed_lines = 800; please review it yourself - **YELLOW** spec: docs/prs/2026-10-17-PR#117-doccheck-variant-b.md section 'Follow-up PRs' hard_to_understand (0.54 > yellow_above = 0.5) - **hint** 11 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.01) - **hint** 16 section(s) of the PR document agree with the change summary of openrouter/minimax/minimax-m3, and its 5 change(s) belong to the PR document, according to Jev - **hint** 1 changed file was given to the AI as excerpt of the selected lines and 5 lines around each changed line, not in full (each larger than [review] max_full_file_chars = 80000): werkrevisor/cli.py - **hint** 2 changed files were given to the AI as excerpt of the selected lines and 5 lines around each changed line, not in full (all full files together would exceed [review] max_full_files_chars = 160000): werkrevisor/report.py, werkrevisor/verdict.py - **hint** files the model cannot review: docs/werkrevisor-pr-workflow-dark.svg, docs/werkrevisor-pr-workflow.svg, docs/werkrevisor-review-inside-dark.svg and 1 more (advisory: Jev judged every changed file) - **hint** 3 finding(s) of low severity or rated minor by Jev: tests/test_doccheck.py:266-269, docs/werkrevisor.werkbaum:80-92, docs/werkrevisor.werkbaum:90-95 - **hint** model recommends changes before merge ### Findings 1. **Weakened test for repeated hint after file edit** at `tests/test_doccheck.py:266-269`, severity unknown, counted as medium, hint, as a line comment 2. **Contradictory file count in measurement** at `docs/werkrevisor.werkbaum:80-92`, severity unknown, counted as medium hint; Jev: real 0.78, severity 1.8 of 3 The PR document and README state "103 real main-code file diffs" while `werkrevisor/config.py` (DocCheckConfig comment) and the `#doc.exfil` entry in the werkbaum state "109 real main-code files". The `#doc.exfilmin` entry of the same werkbaum then reuses the 103 figure. One of the two numbers is wrong, and the inconsistency between the PR document, the host config comment, and the plan makes the calibration harder to trust. 3. **Duplicate calibration entry** at `docs/werkrevisor.werkbaum:90-95`, severity unknown, counted as medium hint; Jev: real 0.78, severity 1.1 of 3 The new `- [ ] Calibrate hint_min on real PRs; decide whether data-outflow becomes ORANGE (S)` immediately precedes the kept `- [^] Calibrate hint_min on real PRs (S)` that already records the PR#66 calibration. The "hint_min" calibration task is now listed twice with the same scope; the new entry should subsume the old one (or be merged into it) so the plan has one owner for the calibration. ### Classifier | Unit | Question | Problem | Confidence | Verdict | |---|---|---|---|---| | docs/prs/2026-10-17-PR#117-doccheck-variant-b.md section 'Follow-up PRs' | hard_to_understand | 0.54 | 0.52 | YELLOW | 15 of 16 units passed all questions (1 PR document(s)). 6 answers ignored because of a confidence below [classifier] min_confidence. <sub> Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 85367, calls 1, tokens in 82064 / out 23577 (reasoning included in out), duration 156.6 s, cost 0.0529 USD (reported), classifier `jev-1.13.0` calls 16, tokens in 14295, cost 0.0006 USD, finding judge `jev-1.13.0` calls 3, tokens in 5774, cost 0.0002 USD, excerpt selection `openrouter/openai/gpt-6-luna` calls 3, tokens in 34486 / out 709, cost 0.0007 USD (reported), change summary `openrouter/minimax/minimax-m3` via Minimax calls 1, tokens in 24651 / out 3153, cost 0.0111 USD (reported), PR document check `jev-1.13.0` calls 21, tokens in 44432, cost 0.0019 USD, build file judge `jev-1.13.0` calls 13, tokens in 25757, cost 0.0011 USD, phases: path_judge 0.8 s, classifier 0.9 s, change_summary 19.5 s, doc_check 1.4 s, context 12.9 s, model_review 120.1 s, finding_judge 0.3 s, config: defaults + host + repository (.werkrevisor.toml at main d0b4dfe).<br> Reviewed head `c175f10599168ed377f550221ef90960d7c30e1c` against base `d0b4dfed34977f793140a47b72d9fa7181d8796d`, werkrevisor 0.44.1. </sub> </details>
ai-reviewer left a comment
Collaborator

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

werkrevisor: ORANGE / FINDINGS for `c175f10599168ed377f550221ef90960d7c30e1c`. The result comment of werkrevisor holds the details. <!-- werkrevisor-review:c175f10599168ed377f550221ef90960d7c30e1c -->
@@ -275,3 +266,1 @@
second_round(self.gitea, self.jev, DOC_TEXT.replace("The PR adds the endpoint", "The PR adds an endpoint"))
[comment] = self.gitea.review_comments[-1]
self.assertEqual((comment["path"], comment["new_position"]), (DOC, SOLUTION_LINE))
def test_a_changed_file_is_checked_again(self):
Collaborator

Weakened test for repeated hint after file edit, severity unknown, counted as medium (werkrevisor)

hint; Jev: real 0.88, severity 2.0 of 3

The renamed test test_a_changed_file_is_checked_again no longer carries the resolved fingerprints from setUp: it builds a fresh FakeGitea, so the previous orange/hint looks "unanswered" regardless of whether the fingerprint machinery works. With a fresh gitea the test passes even if the fingerprint is broken, and the original Scenario#50.02 assertion (a new comment at the right location with the same setUp state) is gone. To actually test the fingerprint mechanism, the test should reuse self.gitea.line_comments (the resolved fingerprints) while only changing the file diff, or extend second_round so it accepts a different file diff.

**Weakened test for repeated hint after file edit**, severity unknown, counted as medium (werkrevisor) hint; Jev: real 0.88, severity 2.0 of 3 The renamed test `test_a_changed_file_is_checked_again` no longer carries the resolved fingerprints from `setUp`: it builds a fresh `FakeGitea`, so the previous orange/hint looks "unanswered" regardless of whether the fingerprint machinery works. With a fresh gitea the test passes even if the fingerprint is broken, and the original Scenario#50.02 assertion (a new comment at the right location with the same setUp state) is gone. To actually test the fingerprint mechanism, the test should reuse `self.gitea.line_comments` (the resolved fingerprints) while only changing the file diff, or extend `second_round` so it accepts a different file diff.
Collaborator
⚠️ werkrevisor ERROR for ?, superseded by the result for 66855b1

Codex review: critical

This changes the review gate’s model inputs, security checks, and merge-blocking comments; mistakes could let harmful changes merge without human review, which mocked model tests cannot rule out. Human review is required.

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 508014 (cached 430464) / out 2559, 88.3 s, 18 commands; reviewed head `c175f10599168ed377f550221ef90960d7c30e1c`.
<!-- werkrevisor-codex:c175f10599168ed377f550221ef90960d7c30e1c --> <!-- 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/117#issuecomment-6319">the result for <code>66855b1</code></a></summary> ## Codex review: critical This changes the review gate’s model inputs, security checks, and merge-blocking comments; mistakes could let harmful changes merge without human review, which mocked model tests cannot rule out. Human review is required. 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 508014 (cached 430464) / out 2559, 88.3 s, 18 commands; reviewed head `c175f10599168ed377f550221ef90960d7c30e1c`. </sub> </details>
mi approved these changes 2026-10-17 16:38:46 +02:00
Dismissed
mi approved these changes 2026-10-17 16:42:45 +02:00
Dismissed
claude-code changed title from werkrevisor 0.45.0: Jev checks each changed file against the PR document to werkrevisor 0.49.0: Jev checks each changed file against the PR document 2026-10-17 16:50:45 +02:00
claude-code added 1 commit 2026-10-17 16:50:47 +02:00
Merge remote-tracking branch 'origin/main' into claude-code/doccheck-variant-b
werkator build succeeded after 00:26
werkator/werkrevisor-statistics build succeeded after 01:28
ai-review/assessment AI findings; a developer approval after checking them unlocks the merge; the approval of mi came before this result; review requested again, please approve again after reading it; merge already scheduled
ai-review/gate build succeeded after 04:10
ai-review/codex 1 open Codex finding(s); resolve each line comment
66855b1590
# Conflicts:
#	statistics/build.gradle.kts
#	werkrevisor/__init__.py
claude-code dismissed mi's review 2026-10-17 16:50:47 +02:00
Reason:

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

mi approved these changes 2026-10-17 16:52:11 +02:00
Collaborator

🟠 werkrevisor: ORANGE / FINDINGS

Gate: the approval of mi came before this result; review requested again, please approve again after reading it; merge already scheduled.

Change kind: mixed.

Reasons

  • ORANGE changes that weaken the checks according to Jev: tests/test_provider_order.py (weakens checks 0.88)
  • ORANGE 1 finding(s) that Jev rates as probably real and severe: werkrevisor/doccheck.py:114-127
  • YELLOW tests lost or disabled: tests/test_doccheck.py:85 removes 16 test(s) or assertion(s) without a replacement, tests/test_provider_order.py:51 removes 3 test(s) or assertion(s) without a replacement
  • YELLOW PR too large for an AI-only approval: 991 changed lines (docs and mechanical files not counted) exceed [size] max_changed_lines = 800; please review it yourself
  • YELLOW spec: docs/prs/2026-10-17-PR#117-doccheck-variant-b.md section 'Follow-up PRs' hard_to_understand (0.56 > yellow_above = 0.5)
  • hint 11 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.01)
  • hint 16 section(s) of the PR document agree with the change summary of openrouter/minimax/minimax-m3, and its 8 change(s) belong to the PR document, according to Jev
  • hint 1 changed file was given to the AI as excerpt of the selected lines and 5 lines around each changed line, not in full (each larger than [review] max_full_file_chars = 80000): werkrevisor/cli.py
  • hint 2 changed files were given to the AI as excerpt of the selected lines and 5 lines around each changed line, not in full (all full files together would exceed [review] max_full_files_chars = 160000): werkrevisor/report.py, werkrevisor/verdict.py
  • hint files the model cannot review: docs/werkrevisor-pr-workflow-dark.svg, docs/werkrevisor-pr-workflow.svg, docs/werkrevisor-review-inside-dark.svg and 1 more (advisory: Jev judged every changed file)
  • hint 1 finding(s) of low severity or rated minor by Jev: werkrevisor/config.py:193
  • hint model recommends merge with caution

Findings

  1. Deleted PR document sent to Jev at werkrevisor/doccheck.py:114-127, severity unknown, counted as medium, ORANGE, as a line comment

  2. Documentation inconsistency on file count at werkrevisor/config.py:193, severity unknown, counted as medium, hint, still open in an earlier line comment

Classifier

Unit Question Problem Confidence Verdict
docs/prs/2026-10-17-PR#117-doccheck-variant-b.md section 'Follow-up PRs' hard_to_understand 0.56 0.58 YELLOW

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

Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 86066, calls 1, tokens in 82731 / out 49062 (reasoning included in out), duration 242.1 s, cost 0.0837 USD (reported), classifier `jev-1.13.0` calls 16, tokens in 14295, cost 0.0006 USD, finding judge `jev-1.13.0` calls 2, tokens in 3288, cost 0.0001 USD, excerpt selection `openrouter/openai/gpt-6-luna` calls 3, tokens in 34486 / out 1155, cost 0.0049 USD (reported), change summary `openrouter/minimax/minimax-m3` via Minimax calls 1, tokens in 24651 / out 2802, cost 0.0107 USD (reported), PR document check `jev-1.13.0` calls 24, tokens in 59131, cost 0.0025 USD, build file judge `jev-1.13.0` calls 13, tokens in 25757, cost 0.0011 USD, phases: path_judge 1.0 s, classifier 0.9 s, change_summary 13.5 s, doc_check 1.7 s, context 17.3 s, model_review 206.6 s, finding_judge 0.3 s, config: defaults + host + repository (.werkrevisor.toml at main c54e49b).
Reviewed head `66855b1590eb2ab3288882b3243d89aab0ca1f94` against base `c54e49b4b28017ebccad63fe26d9ddcf9fcf5bb3`, werkrevisor 0.48.0.
<!-- werkrevisor:66855b1590eb2ab3288882b3243d89aab0ca1f94 --> <!-- werkrevisor-verdict:ORANGE --> <!-- werkrevisor-blocks:bbf8ca7e81a73a04e0fdd3c065d4c16c,26a00494d89f7fccefbce04f7cf74fcd,02b3660ea009977d8fe00010086d62b8,67627e86953ca263b49939e3872bc072,d23f2418497808d835f2a01c9bf0f7b5,8db6f38e434027f8b6009556838a25ef,6c805c51f62b4cb974f9ee9e372afc81,a023555482311e552509f1f24175028c,37eca35f05cd36ffdb53a0e27a718c10,29cf54eecedca28dd0ae15f0070ef7ff,28df7fa573ed3542b944138c1c156a39,5a8acb6711dfe085acf090d8cebfbbfb,81419fe03b74e0d4af7ff8289be57bde,779b634ae1f4385a8882bea263a5e70a,2848c5a49f8347c327c457e15d84c51c,e3d9ce30b2f9e796855f837ffc0b8c54,fcd86354c45dfd077d2086287722b02a,52213f529f22e22e44d31bdb4053e4e1,0db258a85feb0c86d09da36129334ae6,74b05cbcfc0c0c431f099dd58a1c5580,27b54449bd2ee804b35f42e7bc52e96a,58ed9bf16300be6c03da1cca4f3fa80a,e79a6481fa5c49ea38104d5990e52ffc,6fcd8a98fcf57001e05de85b4c14d1d9,04e890b47d5f6d2908343e67e13bf0b2,327559c000cc02024a3d393fff290c3a,e2aa00b5c7d61e572e32138157aaae8a,134dd16c31be4cf933adbdb1228e1350,e619d972a9f18edffddbe57c52b43adb,10682772fdbe55d1125f5a7d724bb290,f7105fe39b4456aefbf5bc986165e358,8882e0a878b30148292ec681263b620c,937507a48dd55e20b8d849516581b82f,38254c1fb68b36a070c09ac57e2e6c4b,b5ed1d7b428f476e37c12fa7eeca951d,4509df2cd5f1a886a5fb8be232a54856,5033a5a5d592a3c49005751316b66ddf,8d9d09465276a4b5f491f0465d0a5bf7,3c0a4ab0ae253a995348fbb2c16623e9,384bda4fd7cca6dfe1f101a7ee63ce57,92bee29da39f7fe5aa8b6088d707a292,2badd4babf2b97e834436b772aae3d74,03dd97e7857829246667018cb291f63b,518a2827d1071bae74c8417704a32ea3,d03089398a8792e0324053c18604a01a,0d6808d97a40f6814dc7c1ef63cf854b,ce361c336705a2d9fcf8fa0360b5165d,464298a0d38a9f282499d858f3d801c4,a16ee8d3bbda97af20093ac1a68b71b2,3c24eb3e1c0794d14ebc96b74f0d5763,302e1c7293290258a0a9be1cf31d3cd9,eb0392f7f013239ceb0f2168b6792af6,b6e91c3ce31255dd7a07bfa4f09291d5,783160668023ed73d5f4c7937179e65d,56aed94ea075060da4c6b77ef1c56930,0209d1517a56683b7cffaa16d689edea,4fbe60039c0fdda0fb85aad244fd537b,542e3ad7adfcb132cb794eb47cc46bf1,aab430cd1a8f5e20ce02d562952313fd,04505ec9ff4cb92922ce19d8f758e977,cc80a2f63763e5b7b0c01351da35bd46,b0bb65c598e7ff2ca2e0c062e1123a18,b66bd6e66dc2ada80d9a658cf47b3de1,5e0016b5444cb9fc1f6f75db8ba200bf,bb00365669daeff4f8e7d3ee0c9d05b8,b16345dd528f622ce356d5dea5f24e93,d0819fa6ededcb1f82e5c9f23a31cd8a,fda8d9455ebe9e31dc1443fba01a13c8,1317bf2a79df492fe093389b46e29612,4c4007f00bf625207e2214981f30e3e9,a146385e787b7b7ff5a88242fad03bfb,439197cfdd99776c21dfced455527803,e57386fc22cd44ad3a66af18b8161d84,2a20d7d0636d12eb957d11dc48ef334b,e1a51d682b06de7e6a6a652163bcbd75,b6bdcade7d7eb13f440c1ec00627bf7c,01724d734c9fe695dc7e91b0f3a40eff,b565a41437a3e02d8fc498efabeffc36,41c34c5c51d451e81c0de134fd9cd79b,a62c27092501f52a49d6ec4034d5667a,40801e231161356192e7d234e90c7ec9,5f0f15611b9ddd66596b74e8216be5f4,39eb1ff40a006c24474513fe5efd501e,316ef2f400dda6889c76454ea08be26c,92afec3512bc8f10d28cec645e36caef,3c72f33065b45667278a3cd61a03571c,16c91ad9ccb769ce5af93ff020af03e7,5692ca31081024684c7dcf362b48aa17,cc1cc9c87b7d2f90b289a7f0e2095893,57583934ec9b7e78ca6f4579e9e64195,9c415235e285a773ab6fce7d7db0ab23,1ed4883d95bd28f73bc1add1fb4ecc25,7668dc00d8941b8913fb094101da1ea5,915c94cc4d9abc0c0e4219eebbc7aa58,1bb90c5672d456891f7f9a5bce9be158,abd4561cfacec6615c1c3fbf3dcd71d6,4f01f77d59453a3db4ffef964fc3eee4,e5d8bbcdf8f866ae10bd07e4af11dc19,76b106f683cabc9957bfdde7a8c6f494,a52accd1b5f99725cc7068d5f460caa1,fe6ccb288bf54779965b54d47d4f8e46,8501dcc56deed074fb09f466f348d84b,bf7581726968d29bc0655b80cd5749ed,7ff16e036f4921abb569529ddd06da75,4ad072ef00574cd82c3fe73b2fc67971,7389f323d8d868f68c9b305e1e03de3b,5de21bc0ed0744c4997a851c4c34acb2,681d2ea7f433380bed3d6982f29a7346,eadcddbf4197ae59059ce10471ca33b1,aa0ae64032d3fa7212c2e4f3d0151f7c,4c42d23a59d0185576ed6abea9adc0e7,90d811ecbc401ffcd2698cb444b61add,79ce41574725115a15a344e80fc9c197,f968ec9c61750d13e99d35d4526e36df,42e237e02316e22603d3fee3725b8f38,bcf714764fd7b651ecb7e9940a0e00f8,eba865e204363f825360434ad56b97a2,03338089dafbec70684dbea2b8350cde,4bd33dd8935f97a673538f57d465dbe9,53f8cc0f65c94e2222fffa3fb7e9244f,90d830e3c1ad6967a2f0c10cb957bcad,4448d87619ea5c142675cb1f430cf2d5,e6929e8bedb879c85445dc951bcbfe7b,537b863b59f8544a25acd6c9dcb273e0,66f04e6d584035e202fb1299d9ee8085,d41e1feb48e8a51300659f12337bf687,031ca274e6c0e6e4ebe80e11f0eaae94,da055cabc5b8bae586cbc801ad76dd79,08d9c2e57ceacbf56624071a5681e8e4 --> ## 🟠 werkrevisor: ORANGE / FINDINGS Gate: the approval of mi came before this result; review requested again, please approve again after reading it; merge already scheduled. Change kind: `mixed`. ### Reasons - **ORANGE** changes that weaken the checks according to Jev: tests/test_provider_order.py (weakens checks 0.88) - **ORANGE** 1 finding(s) that Jev rates as probably real and severe: werkrevisor/doccheck.py:114-127 - **YELLOW** tests lost or disabled: tests/test_doccheck.py:85 removes 16 test(s) or assertion(s) without a replacement, tests/test_provider_order.py:51 removes 3 test(s) or assertion(s) without a replacement - **YELLOW** PR too large for an AI-only approval: 991 changed lines (docs and mechanical files not counted) exceed [size] max_changed_lines = 800; please review it yourself - **YELLOW** spec: docs/prs/2026-10-17-PR#117-doccheck-variant-b.md section 'Follow-up PRs' hard_to_understand (0.56 > yellow_above = 0.5) - **hint** 11 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.01) - **hint** 16 section(s) of the PR document agree with the change summary of openrouter/minimax/minimax-m3, and its 8 change(s) belong to the PR document, according to Jev - **hint** 1 changed file was given to the AI as excerpt of the selected lines and 5 lines around each changed line, not in full (each larger than [review] max_full_file_chars = 80000): werkrevisor/cli.py - **hint** 2 changed files were given to the AI as excerpt of the selected lines and 5 lines around each changed line, not in full (all full files together would exceed [review] max_full_files_chars = 160000): werkrevisor/report.py, werkrevisor/verdict.py - **hint** files the model cannot review: docs/werkrevisor-pr-workflow-dark.svg, docs/werkrevisor-pr-workflow.svg, docs/werkrevisor-review-inside-dark.svg and 1 more (advisory: Jev judged every changed file) - **hint** 1 finding(s) of low severity or rated minor by Jev: werkrevisor/config.py:193 - **hint** model recommends merge with caution ### Findings 1. **Deleted PR document sent to Jev** at `werkrevisor/doccheck.py:114-127`, severity unknown, counted as medium, ORANGE, as a line comment 2. **Documentation inconsistency on file count** at `werkrevisor/config.py:193`, severity unknown, counted as medium, hint, still open in [an earlier line comment](http://git.javagil.de/mi/werkrevisor/pulls/117#issuecomment-6205) ### Classifier | Unit | Question | Problem | Confidence | Verdict | |---|---|---|---|---| | docs/prs/2026-10-17-PR#117-doccheck-variant-b.md section 'Follow-up PRs' | hard_to_understand | 0.56 | 0.58 | YELLOW | 15 of 16 units passed all questions (1 PR document(s)). 5 answers ignored because of a confidence below [classifier] min_confidence. <sub> Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 86066, calls 1, tokens in 82731 / out 49062 (reasoning included in out), duration 242.1 s, cost 0.0837 USD (reported), classifier `jev-1.13.0` calls 16, tokens in 14295, cost 0.0006 USD, finding judge `jev-1.13.0` calls 2, tokens in 3288, cost 0.0001 USD, excerpt selection `openrouter/openai/gpt-6-luna` calls 3, tokens in 34486 / out 1155, cost 0.0049 USD (reported), change summary `openrouter/minimax/minimax-m3` via Minimax calls 1, tokens in 24651 / out 2802, cost 0.0107 USD (reported), PR document check `jev-1.13.0` calls 24, tokens in 59131, cost 0.0025 USD, build file judge `jev-1.13.0` calls 13, tokens in 25757, cost 0.0011 USD, phases: path_judge 1.0 s, classifier 0.9 s, change_summary 13.5 s, doc_check 1.7 s, context 17.3 s, model_review 206.6 s, finding_judge 0.3 s, config: defaults + host + repository (.werkrevisor.toml at main c54e49b).<br> Reviewed head `66855b1590eb2ab3288882b3243d89aab0ca1f94` against base `c54e49b4b28017ebccad63fe26d9ddcf9fcf5bb3`, werkrevisor 0.48.0. </sub>
ai-reviewer left a comment
Collaborator

werkrevisor: ORANGE / FINDINGS for 66855b1590eb2ab3288882b3243d89aab0ca1f94.
The result comment of werkrevisor holds the details.

werkrevisor: ORANGE / FINDINGS for `66855b1590eb2ab3288882b3243d89aab0ca1f94`. The result comment of werkrevisor holds the details. <!-- werkrevisor-review:66855b1590eb2ab3288882b3243d89aab0ca1f94 -->
@@ -135,3 +114,1 @@
parts = []
for path, d in diffs.items():
if path in docs:
def target_files(files, diffs, docs, mechanical):
Collaborator

Deleted PR document sent to Jev, severity unknown, counted as medium (werkrevisor)

ORANGE; Jev: real 0.72, severity 2.8 of 3

target_files excludes only paths that appear in docs, and changed_docs filters out deleted files with not f.deleted. A PR that deletes one PR document while another PR document is also changed lets the deleted PR document slip into targets, so Jev is asked to compare its deletion diff against the surviving PR document. The check should treat a deleted PR document the same way it treats a present one and keep it out of the Jev state.

**Deleted PR document sent to Jev**, severity unknown, counted as medium (werkrevisor) ORANGE; Jev: real 0.72, severity 2.8 of 3 `target_files` excludes only paths that appear in `docs`, and `changed_docs` filters out deleted files with `not f.deleted`. A PR that deletes one PR document while another PR document is also changed lets the deleted PR document slip into `targets`, so Jev is asked to compare its deletion diff against the surviving PR document. The check should treat a deleted PR document the same way it treats a present one and keep it out of the Jev state.
ai-reviewer requested review from mi 2026-10-17 16:55:00 +02:00
Collaborator

Codex review: critical

This changes the automated merge gate’s document checks, security-related data-outflow detection, and which findings hold a merge. Mistakes could let harmful changes merge, and tests with mocked Jev answers cannot establish the real classifier’s reliability.

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 626059 (cached 557696) / out 2510, 98.7 s, 14 commands; reviewed head `66855b1590eb2ab3288882b3243d89aab0ca1f94`.
<!-- werkrevisor-codex:66855b1590eb2ab3288882b3243d89aab0ca1f94 --> <!-- werkrevisor-codex-critical:true --> <!-- werkrevisor-codex-unattached:0 --> <!-- werkrevisor-codex --> ## Codex review: critical This changes the automated merge gate’s document checks, security-related data-outflow detection, and which findings hold a merge. Mistakes could let harmful changes merge, and tests with mocked Jev answers cannot establish the real classifier’s reliability. 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 626059 (cached 557696) / out 2510, 98.7 s, 14 commands; reviewed head `66855b1590eb2ab3288882b3243d89aab0ca1f94`. </sub>
mi merged commit c260eab803 into main 2026-10-17 17:10:29 +02:00
mi deleted branch claude-code/doccheck-variant-b 2026-10-17 17:10:29 +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#117