werkrevisor 0.26.0: a change that can corrupt persisted data needs a human #54

Merged
ai-reviewer merged 7 commits from data-correction-risk into main 2026-10-08 17:17:18 +02:00
Collaborator

See the PR document.

🤖 Generated with Claude Code

See [the PR document](docs/prs/2026-10-08-PR%2354-data-correction-risk.md). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
claude-code added 1 commit 2026-10-08 16:57:26 +02:00
PR#54: PR document for the risk of data that would need corrections
werkator build succeeded after 00:11
werkator/werkrevisor-statistics build succeeded after 01:03
04fdf2f8f2
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
mi added 1 commit 2026-10-08 16:57:56 +02:00
PR#54: red scenario test for data that would need corrections
werkator build failed after 00:32
werkator/werkrevisor-statistics build succeeded after 00:47
3084307793
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
claude-code marked the pull request as ready for review 2026-10-08 16:59:05 +02:00
mi added 1 commit 2026-10-08 16:59:05 +02:00
werkrevisor 0.26.0: a change that can corrupt persisted data needs a human
werkator/werkrevisor-statistics build succeeded after 01:02
ai-review/assessment human review required; a human approval unlocks the merge; review requested from mi; merge scheduled for when the checks succeed
ai-review/gate build succeeded after 01:03
werkator build succeeded after 00:22
d10bd3187b
The backend template gets the category data_correction: YELLOW from 0.85 on, never ORANGE.
The Werkbaum adds the dashboard plans and the cause of the slow reviews.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Collaborator
🟡 werkrevisor YELLOW for d10bd31, superseded by the result for 53362ed

🟡 werkrevisor: YELLOW / HUMAN_REVIEW

Change kind: mixed.

Reasons

  • YELLOW spec: docs/prs/2026-10-08-PR#54-data-correction-risk.md Scenario#54.01 implementation_details (0.62 > yellow_above = 0.6)
  • hint 3 changed file(s) that neither weaken the checks nor touch security according to Jev
  • hint 1 build change(s) of low risk according to Jev: statistics/build.gradle.kts (weakens checks 0.02, risk 0.00, security 0.01)
  • hint 7 section(s) of the PR document agree with the change summary of openrouter/minimax/minimax-m3 according to Jev
  • hint 1 finding(s) of low severity or rated minor by Jev: tests/test_risk.py:121-122
  • hint model recommends changes before merge

Findings

  1. Weakened test at tests/test_risk.py:121-122, severity unknown, counted as medium, hint, as a line comment

Classifier

Unit Question Problem Confidence Verdict
docs/prs/2026-10-08-PR#54-data-correction-risk.md Scenario#54.01 implementation_details 0.62 – YELLOW

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

Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 14207, calls 1, tokens in 13677 / out 9219 (reasoning included in out), duration 59.0 s, cost 0.0151 USD (reported), classifier `jev-1.13.0` calls 7, tokens in 5313, cost 0.0002 USD, finding judge `jev-1.13.0` calls 1, tokens in 1599, cost 0.0001 USD, change summary `openrouter/minimax/minimax-m3` calls 1, tokens in 2262 / out 2052, cost 0.0063 USD (reported), PR document check `jev-1.13.0` calls 7, tokens in 8692, cost 0.0004 USD, build file judge `jev-1.13.0` calls 4, tokens in 2390, cost 0.0001 USD, phases: path_judge 0.4 s, classifier 0.6 s, change_summary 10.5 s, doc_check 0.5 s, context 0.2 s, model_review 45.8 s, finding_judge 0.4 s, config: defaults + host + repository (.werkrevisor.toml at main da4eeb5).
Reviewed head `d10bd3187beeccdf31afae0819d70b84b49aaeb1` against base `da4eeb5240bd50cbd270262c62380f66c7a9e027`, werkrevisor 0.25.0.
<!-- werkrevisor:d10bd3187beeccdf31afae0819d70b84b49aaeb1 --> <!-- werkrevisor-verdict:YELLOW --> <!-- werkrevisor-folded --> <details><summary>🟡 werkrevisor YELLOW for <code>d10bd31</code>, superseded by <a href="http://git.javagil.de/mi/werkrevisor/pulls/54#issuecomment-2069">the result for <code>53362ed</code></a></summary> ## 🟡 werkrevisor: YELLOW / HUMAN_REVIEW Change kind: `mixed`. ### Reasons - **YELLOW** spec: docs/prs/2026-10-08-PR#54-data-correction-risk.md Scenario#54.01 implementation_details (0.62 > yellow_above = 0.6) - **hint** 3 changed file(s) that neither weaken the checks nor touch security according to Jev - **hint** 1 build change(s) of low risk according to Jev: statistics/build.gradle.kts (weakens checks 0.02, risk 0.00, security 0.01) - **hint** 7 section(s) of the PR document agree with the change summary of openrouter/minimax/minimax-m3 according to Jev - **hint** 1 finding(s) of low severity or rated minor by Jev: tests/test_risk.py:121-122 - **hint** model recommends changes before merge ### Findings 1. **Weakened test** at `tests/test_risk.py:121-122`, severity unknown, counted as medium, hint, as a line comment ### Classifier | Unit | Question | Problem | Confidence | Verdict | |---|---|---|---|---| | docs/prs/2026-10-08-PR#54-data-correction-risk.md Scenario#54.01 | implementation_details | 0.62 | – | YELLOW | 6 of 7 units passed all questions (1 PR document(s)). 2 answers ignored because of a confidence below [classifier] min_confidence. <sub> Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 14207, calls 1, tokens in 13677 / out 9219 (reasoning included in out), duration 59.0 s, cost 0.0151 USD (reported), classifier `jev-1.13.0` calls 7, tokens in 5313, cost 0.0002 USD, finding judge `jev-1.13.0` calls 1, tokens in 1599, cost 0.0001 USD, change summary `openrouter/minimax/minimax-m3` calls 1, tokens in 2262 / out 2052, cost 0.0063 USD (reported), PR document check `jev-1.13.0` calls 7, tokens in 8692, cost 0.0004 USD, build file judge `jev-1.13.0` calls 4, tokens in 2390, cost 0.0001 USD, phases: path_judge 0.4 s, classifier 0.6 s, change_summary 10.5 s, doc_check 0.5 s, context 0.2 s, model_review 45.8 s, finding_judge 0.4 s, config: defaults + host + repository (.werkrevisor.toml at main da4eeb5).<br> Reviewed head `d10bd3187beeccdf31afae0819d70b84b49aaeb1` against base `da4eeb5240bd50cbd270262c62380f66c7a9e027`, werkrevisor 0.25.0. </sub> </details>
ai-reviewer left a comment
Collaborator

werkrevisor: YELLOW / HUMAN_REVIEW for d10bd3187beeccdf31afae0819d70b84b49aaeb1.
The result comment of werkrevisor holds the details.

werkrevisor: YELLOW / HUMAN_REVIEW for `d10bd3187beeccdf31afae0819d70b84b49aaeb1`. The result comment of werkrevisor holds the details. <!-- werkrevisor-review:d10bd3187beeccdf31afae0819d70b84b49aaeb1 -->
@@ -120,2 +119,3 @@
self.assertEqual(len(categories), {"jvm-spring-backend": 16, "typescript-frontend": 15}[name])
for c in categories:
self.assertTrue(c.question.endswith("?"), c.name)
# A measured question may end with a sentence that delimits it.
Collaborator

Weakened test, severity unknown, counted as medium (werkrevisor)

hint; Jev: real 0.66, severity 1.9 of 3

The previous check assertTrue(c.question.endswith("?"), ...) enforced that every risk category question ends with ?. The replacement assertIn("?", c.question, ...) only requires the question to contain a ? somewhere, so questions may now end with any character. The relaxation is needed for the new data_correction question in jvm-spring-backend.toml, which ends with a period after "...build files cannot." With the strict version gone, future contributors can add questions whose endings do not match the established convention without any test failure.

**Weakened test**, severity unknown, counted as medium (werkrevisor) hint; Jev: real 0.66, severity 1.9 of 3 The previous check `assertTrue(c.question.endswith("?"), ...)` enforced that every risk category question ends with `?`. The replacement `assertIn("?", c.question, ...)` only requires the question to contain a `?` somewhere, so questions may now end with any character. The relaxation is needed for the new `data_correction` question in `jvm-spring-backend.toml`, which ends with a period after "...build files cannot." With the strict version gone, future contributors can add questions whose endings do not match the established convention without any test failure.
Author
Collaborator

Fixed: the check is strict again. A question must end with "?", or with "?" and exactly one sentence that delimits it, as the measured question of data_correction does; a sentence without a question fails.

Fixed: the check is strict again. A question must end with "?", or with "?" and exactly one sentence that delimits it, as the measured question of `data_correction` does; a sentence without a question fails.
claude-code marked this conversation as resolved
ai-reviewer scheduled this pull request to auto merge when all checks succeed 2026-10-08 17:00:08 +02:00
ai-reviewer requested review from mi 2026-10-08 17:00:08 +02:00
mi added 1 commit 2026-10-08 17:00:38 +02:00
PR#54: scenario without implementation details; stricter check of the question format
werkator build succeeded after 00:08
ai-review/assessment AI review passed; approved by werkrevisor; merge waits for 2 open hint(s): reply to each line comment and resolve it, then restart the review or push a commit
ai-review/gate build succeeded after 01:49
werkator/werkrevisor-statistics build succeeded after 00:28
53362edb04
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Collaborator
🟢 werkrevisor GREEN for 53362ed, superseded by the result for 9a1cc3a

🟢 werkrevisor: GREEN / PASS

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

Change kind: mixed.

Reasons

  • hint 3 changed file(s) that neither weaken the checks nor touch security according to Jev
  • hint 1 build change(s) of low risk according to Jev: statistics/build.gradle.kts (weakens checks 0.02, risk 0.00, security 0.01)
  • hint 7 section(s) of the PR document agree with the change summary of openrouter/minimax/minimax-m3 according to Jev
  • hint 2 finding(s) of low severity or rated minor by Jev: tests/test_risk.py:143-147, docs/prs/2026-10-08-PR#54-data-correction-risk.md:57-62
  • hint model recommends merge with caution

Findings

  1. Test class placed after main block at tests/test_risk.py:143-147, severity unknown, counted as medium, hint, as a line comment

  2. Missing werkbaum change at docs/prs/2026-10-08-PR#54-data-correction-risk.md:57-62, severity unknown, counted as medium, hint, as a line comment

Classifier

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

Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 14172, calls 1, tokens in 13648 / out 16610 (reasoning included in out), duration 107.6 s, cost 0.0240 USD (reported), classifier `jev-1.13.0` calls 7, tokens in 5291, cost 0.0002 USD, finding judge `jev-1.13.0` calls 2, tokens in 2691, cost 0.0001 USD, change summary `openrouter/minimax/minimax-m3` calls 1, tokens in 2273 / out 303, cost 0.0010 USD (reported), PR document check `jev-1.13.0` calls 7, tokens in 7991, cost 0.0003 USD, build file judge `jev-1.13.0` calls 4, tokens in 2399, cost 0.0001 USD, phases: path_judge 0.3 s, classifier 0.6 s, change_summary 4.8 s, doc_check 0.5 s, context 0.2 s, model_review 100.1 s, finding_judge 0.6 s, config: defaults + host + repository (.werkrevisor.toml at main da4eeb5).
Reviewed head `53362edb04d6a52b42fddb91572a51342d172a01` against base `da4eeb5240bd50cbd270262c62380f66c7a9e027`, werkrevisor 0.25.0.
<!-- werkrevisor:53362edb04d6a52b42fddb91572a51342d172a01 --> <!-- werkrevisor-verdict:GREEN --> <!-- werkrevisor-folded --> <details><summary>🟢 werkrevisor GREEN for <code>53362ed</code>, superseded by <a href="http://git.javagil.de/mi/werkrevisor/pulls/54#issuecomment-2078">the result for <code>9a1cc3a</code></a></summary> ## 🟢 werkrevisor: GREEN / PASS Gate: approved by werkrevisor; merge waits for 2 open hint(s): reply to each line comment and resolve it, then restart the review or push a commit. Change kind: `mixed`. ### Reasons - **hint** 3 changed file(s) that neither weaken the checks nor touch security according to Jev - **hint** 1 build change(s) of low risk according to Jev: statistics/build.gradle.kts (weakens checks 0.02, risk 0.00, security 0.01) - **hint** 7 section(s) of the PR document agree with the change summary of openrouter/minimax/minimax-m3 according to Jev - **hint** 2 finding(s) of low severity or rated minor by Jev: tests/test_risk.py:143-147, docs/prs/2026-10-08-PR#54-data-correction-risk.md:57-62 - **hint** model recommends merge with caution ### Findings 1. **Test class placed after main block** at `tests/test_risk.py:143-147`, severity unknown, counted as medium, hint, as a line comment 2. **Missing werkbaum change** at `docs/prs/2026-10-08-PR#54-data-correction-risk.md:57-62`, severity unknown, counted as medium, hint, as a line comment ### Classifier 7 of 7 units passed all questions (1 PR document(s)). 2 answers ignored because of a confidence below [classifier] min_confidence. <sub> Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 14172, calls 1, tokens in 13648 / out 16610 (reasoning included in out), duration 107.6 s, cost 0.0240 USD (reported), classifier `jev-1.13.0` calls 7, tokens in 5291, cost 0.0002 USD, finding judge `jev-1.13.0` calls 2, tokens in 2691, cost 0.0001 USD, change summary `openrouter/minimax/minimax-m3` calls 1, tokens in 2273 / out 303, cost 0.0010 USD (reported), PR document check `jev-1.13.0` calls 7, tokens in 7991, cost 0.0003 USD, build file judge `jev-1.13.0` calls 4, tokens in 2399, cost 0.0001 USD, phases: path_judge 0.3 s, classifier 0.6 s, change_summary 4.8 s, doc_check 0.5 s, context 0.2 s, model_review 100.1 s, finding_judge 0.6 s, config: defaults + host + repository (.werkrevisor.toml at main da4eeb5).<br> Reviewed head `53362edb04d6a52b42fddb91572a51342d172a01` against base `da4eeb5240bd50cbd270262c62380f66c7a9e027`, werkrevisor 0.25.0. </sub> </details>
ai-reviewer approved these changes 2026-10-08 17:02:33 +02:00
Dismissed
ai-reviewer left a comment
Collaborator

werkrevisor: GREEN / PASS for 53362edb04d6a52b42fddb91572a51342d172a01.
The result comment of werkrevisor holds the details.

werkrevisor: GREEN / PASS for `53362edb04d6a52b42fddb91572a51342d172a01`. The result comment of werkrevisor holds the details. <!-- werkrevisor-review:53362edb04d6a52b42fddb91572a51342d172a01 -->
@@ -0,0 +54,4 @@
The question does not separate the critical PRs of 2026-10-06 from the others,
since those were labelled by security and weakened checks, not by data that a mistake could corrupt.
## Additional Changes
Collaborator

Missing werkbaum change, severity unknown, counted as medium (werkrevisor)

hint; Jev: real 0.70, severity 1.5 of 3

The PR adds a new planned node #stats.timeout (Keep MiniMax within its timeout) to docs/werkrevisor.werkbaum, linked as a follow-up to the slow-review investigation. The "Additional Changes" section of the PR document lists the two dashboard nodes and the slow-review cause, but does not mention this new planned node, so the PR document does not fully cover the werkbaum changes applied in this PR.

**Missing werkbaum change**, severity unknown, counted as medium (werkrevisor) hint; Jev: real 0.70, severity 1.5 of 3 The PR adds a new planned node `#stats.timeout` (Keep MiniMax within its timeout) to `docs/werkrevisor.werkbaum`, linked as a follow-up to the slow-review investigation. The "Additional Changes" section of the PR document lists the two dashboard nodes and the slow-review cause, but does not mention this new planned node, so the PR document does not fully cover the werkbaum changes applied in this PR.
Author
Collaborator

Fixed: Additional Changes now also name the planned node that keeps MiniMax M3 within its timeout.

Fixed: Additional Changes now also name the planned node that keeps MiniMax M3 within its timeout.
claude-code marked this conversation as resolved
@@ -141,3 +142,14 @@ class RiskTemplatesTest(unittest.TestCase):
if __name__ == "__main__":
Collaborator

Test class placed after main block, severity unknown, counted as medium (werkrevisor)

hint; Jev: real 0.90, severity 1.9 of 3

The new DataCorrectionTest class is defined after the if __name__ == "__main__": unittest.main() block. When the test file is executed directly with python tests/test_risk.py, unittest.main() calls sys.exit() before the class is defined, so the new test will not be discovered or run. The standard test command (python -m unittest -v) still discovers the test by import, but the placement is wrong and breaks direct execution of the test file.

**Test class placed after main block**, severity unknown, counted as medium (werkrevisor) hint; Jev: real 0.90, severity 1.9 of 3 The new DataCorrectionTest class is defined after the `if __name__ == "__main__": unittest.main()` block. When the test file is executed directly with `python tests/test_risk.py`, `unittest.main()` calls `sys.exit()` before the class is defined, so the new test will not be discovered or run. The standard test command (`python -m unittest -v`) still discovers the test by import, but the placement is wrong and breaks direct execution of the test file.
Author
Collaborator

Fixed: the class is before the __main__ block now. tests/test_doccheck.py and tests/test_risk_with_issue.py had the same mistake from PR#50 and PR#53 and are fixed too; a direct run of each module now runs all its tests.

Fixed: the class is before the `__main__` block now. tests/test_doccheck.py and tests/test_risk_with_issue.py had the same mistake from PR#50 and PR#53 and are fixed too; a direct run of each module now runs all its tests.
claude-code marked this conversation as resolved
ai-reviewer canceled auto merging this pull request when all checks succeed 2026-10-08 17:02:33 +02:00
mi added 1 commit 2026-10-08 17:03:55 +02:00
PR#54: test classes before the __main__ block; the PR document names the timeout node
werkator/werkrevisor-statistics build succeeded after 00:28
werkator build succeeded after 00:08
ai-review/assessment AI review passed; approved by werkrevisor; merge waits for 1 open hint(s): reply to each line comment and resolve it, then restart the review or push a commit
ai-review/gate build succeeded after 06:28
9a1cc3acd8
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
mi dismissed ai-reviewer's review 2026-10-08 17:03:56 +02:00
Reason:

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

Collaborator
🟢 werkrevisor GREEN for 9a1cc3a, superseded by the result for 08cb80d

🟢 werkrevisor: GREEN / PASS

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

Change kind: mixed.

Reasons

  • hint 5 changed file(s) that neither weaken the checks nor touch security according to Jev
  • hint 1 build change(s) of low risk according to Jev: statistics/build.gradle.kts (weakens checks 0.02, risk 0.00, security 0.01)
  • hint 7 section(s) of the PR document agree with the change summary of openrouter/minimax/minimax-m3 according to Jev
  • hint 1 finding(s) of low severity or rated minor by Jev: tests/test_risk.py:121-122
  • hint model recommends merge with caution

Findings

  1. Weakened test at tests/test_risk.py:121-122, severity unknown, counted as medium, hint, as a line comment

Classifier

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

Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 21753, calls 1, tokens in 20987 / out 5084 (reasoning included in out), duration 386.8 s, cost 0.0121 USD (reported), classifier `jev-1.13.0` calls 7, tokens in 5356, cost 0.0002 USD, finding judge `jev-1.13.0` calls 1, tokens in 1712, cost 0.0001 USD, change summary `openrouter/minimax/minimax-m3` calls 1, tokens in 2548 / out 491, cost 0.0010 USD (reported), PR document check `jev-1.13.0` calls 7, tokens in 9344, cost 0.0004 USD, build file judge `jev-1.13.0` calls 6, tokens in 3363, cost 0.0001 USD, phases: path_judge 0.5 s, classifier 0.5 s, change_summary 6.4 s, doc_check 0.6 s, context 0.3 s, model_review 377.9 s, finding_judge 0.3 s, config: defaults + host + repository (.werkrevisor.toml at main da4eeb5).
Reviewed head `9a1cc3acd8d4f6b3fb79be17fb6115fd298a8dcd` against base `da4eeb5240bd50cbd270262c62380f66c7a9e027`, werkrevisor 0.25.0.
<!-- werkrevisor:9a1cc3acd8d4f6b3fb79be17fb6115fd298a8dcd --> <!-- werkrevisor-verdict:GREEN --> <!-- werkrevisor-folded --> <details><summary>🟢 werkrevisor GREEN for <code>9a1cc3a</code>, superseded by <a href="http://git.javagil.de/mi/werkrevisor/pulls/54#issuecomment-2084">the result for <code>08cb80d</code></a></summary> ## 🟢 werkrevisor: GREEN / PASS Gate: approved by werkrevisor; merge waits for 1 open hint(s): reply to each line comment and resolve it, then restart the review or push a commit. Change kind: `mixed`. ### Reasons - **hint** 5 changed file(s) that neither weaken the checks nor touch security according to Jev - **hint** 1 build change(s) of low risk according to Jev: statistics/build.gradle.kts (weakens checks 0.02, risk 0.00, security 0.01) - **hint** 7 section(s) of the PR document agree with the change summary of openrouter/minimax/minimax-m3 according to Jev - **hint** 1 finding(s) of low severity or rated minor by Jev: tests/test_risk.py:121-122 - **hint** model recommends merge with caution ### Findings 1. **Weakened test** at `tests/test_risk.py:121-122`, severity unknown, counted as medium, hint, as a line comment ### Classifier 7 of 7 units passed all questions (1 PR document(s)). 2 answers ignored because of a confidence below [classifier] min_confidence. <sub> Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 21753, calls 1, tokens in 20987 / out 5084 (reasoning included in out), duration 386.8 s, cost 0.0121 USD (reported), classifier `jev-1.13.0` calls 7, tokens in 5356, cost 0.0002 USD, finding judge `jev-1.13.0` calls 1, tokens in 1712, cost 0.0001 USD, change summary `openrouter/minimax/minimax-m3` calls 1, tokens in 2548 / out 491, cost 0.0010 USD (reported), PR document check `jev-1.13.0` calls 7, tokens in 9344, cost 0.0004 USD, build file judge `jev-1.13.0` calls 6, tokens in 3363, cost 0.0001 USD, phases: path_judge 0.5 s, classifier 0.5 s, change_summary 6.4 s, doc_check 0.6 s, context 0.3 s, model_review 377.9 s, finding_judge 0.3 s, config: defaults + host + repository (.werkrevisor.toml at main da4eeb5).<br> Reviewed head `9a1cc3acd8d4f6b3fb79be17fb6115fd298a8dcd` against base `da4eeb5240bd50cbd270262c62380f66c7a9e027`, werkrevisor 0.25.0. </sub> </details>
ai-reviewer approved these changes 2026-10-08 17:10:27 +02:00
Dismissed
ai-reviewer left a comment
Collaborator

werkrevisor: GREEN / PASS for 9a1cc3acd8d4f6b3fb79be17fb6115fd298a8dcd.
The result comment of werkrevisor holds the details.

werkrevisor: GREEN / PASS for `9a1cc3acd8d4f6b3fb79be17fb6115fd298a8dcd`. The result comment of werkrevisor holds the details. <!-- werkrevisor-review:9a1cc3acd8d4f6b3fb79be17fb6115fd298a8dcd -->
@@ -120,2 +119,3 @@
self.assertEqual(len(categories), {"jvm-spring-backend": 16, "typescript-frontend": 15}[name])
for c in categories:
self.assertTrue(c.question.endswith("?"), c.name)
# A measured question may end with one sentence that delimits it.
Collaborator

Weakened test, severity unknown, counted as medium (werkrevisor)

hint; Jev: real 0.57, severity 1.9 of 3

The question-format check in RiskTemplatesTest.test_every_template_loads was relaxed from c.question.endswith("?") to assertRegex(c.question, r"\?( [^?]+\.)?$"). The new regex accepts questions that end with ? or with ? followed by an optional delimited sentence, so it passes any question that the old assertion would have passed. The weakening is needed for the new data_correction question (which ends with "...build files cannot."), but as a side effect it also accepts any future category question that omits the final ? entirely (e.g. ends with a bare sentence or a different punctuation), reducing the test's ability to enforce a consistent question format. The per-template count check and the test reorganization are at least as strict as before.

**Weakened test**, severity unknown, counted as medium (werkrevisor) hint; Jev: real 0.57, severity 1.9 of 3 The question-format check in `RiskTemplatesTest.test_every_template_loads` was relaxed from `c.question.endswith("?")` to `assertRegex(c.question, r"\?( [^?]+\.)?$")`. The new regex accepts questions that end with `?` or with `?` followed by an optional delimited sentence, so it passes any question that the old assertion would have passed. The weakening is needed for the new `data_correction` question (which ends with "...build files cannot."), but as a side effect it also accepts any future category question that omits the final `?` entirely (e.g. ends with a bare sentence or a different punctuation), reducing the test's ability to enforce a consistent question format. The per-template count check and the test reorganization are at least as strict as before.
Author
Collaborator

A question without "?" never passed: the pattern always needs the question mark. But a new test showed a real gap: after the "?" it allowed several sentences. The pattern now allows exactly one delimiting sentence, and test_the_question_format_needs_a_question_mark proves both: a text without "?" and a question with two trailing sentences fail.

A question without "?" never passed: the pattern always needs the question mark. But a new test showed a real gap: after the "?" it allowed several sentences. The pattern now allows exactly one delimiting sentence, and `test_the_question_format_needs_a_question_mark` proves both: a text without "?" and a question with two trailing sentences fail.
claude-code marked this conversation as resolved
mi added 1 commit 2026-10-08 17:11:50 +02:00
PR#54: the question format allows one delimiting sentence only, proven by a test
ai-review/assessment AI review passed; approved by werkrevisor; merge waits for 1 open hint(s): reply to each line comment and resolve it, then restart the review or push a commit
ai-review/gate build succeeded after 02:38
werkator build succeeded after 00:08
werkator/werkrevisor-statistics build succeeded after 00:27
08cb80d2dd
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
mi dismissed ai-reviewer's review 2026-10-08 17:11:50 +02:00
Reason:

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

Collaborator
🟢 werkrevisor GREEN for 08cb80d, superseded by the result for 9644092

🟢 werkrevisor: GREEN / PASS

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

Change kind: mixed.

Reasons

  • hint 5 changed file(s) that neither weaken the checks nor touch security according to Jev
  • hint 1 build change(s) of low risk according to Jev: statistics/build.gradle.kts (weakens checks 0.02, risk 0.00, security 0.01)
  • hint 7 section(s) of the PR document agree with the change summary of openrouter/minimax/minimax-m3 according to Jev
  • hint 1 finding(s) of low severity or rated minor by Jev: docs/prs/2026-10-08-PR#54-data-correction-risk.md:60-61

Findings

  1. Ambiguous wording at docs/prs/2026-10-08-PR#54-data-correction-risk.md:60-61, severity unknown, counted as medium, hint, as a line comment

Classifier

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

Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 22076, calls 1, tokens in 21295 / out 28241 (reasoning included in out), duration 155.6 s, cost 0.0402 USD (reported), classifier `jev-1.13.0` calls 7, tokens in 5356, cost 0.0002 USD, finding judge `jev-1.13.0` calls 1, tokens in 1362, cost 0.0001 USD, change summary `openrouter/minimax/minimax-m3` calls 1, tokens in 2678 / out 594, cost 0.0011 USD (reported), PR document check `jev-1.13.0` calls 7, tokens in 10016, cost 0.0004 USD, build file judge `jev-1.13.0` calls 6, tokens in 3501, cost 0.0001 USD, phases: path_judge 0.5 s, classifier 0.5 s, change_summary 9.3 s, doc_check 0.5 s, context 0.4 s, model_review 143.6 s, finding_judge 0.3 s, config: defaults + host + repository (.werkrevisor.toml at main da4eeb5).
Reviewed head `08cb80d2dd0a0db565670d22f1d5a2a9ac183a25` against base `da4eeb5240bd50cbd270262c62380f66c7a9e027`, werkrevisor 0.25.0.
<!-- werkrevisor:08cb80d2dd0a0db565670d22f1d5a2a9ac183a25 --> <!-- werkrevisor-verdict:GREEN --> <!-- werkrevisor-folded --> <details><summary>🟢 werkrevisor GREEN for <code>08cb80d</code>, superseded by <a href="http://git.javagil.de/mi/werkrevisor/pulls/54#issuecomment-2090">the result for <code>9644092</code></a></summary> ## 🟢 werkrevisor: GREEN / PASS Gate: approved by werkrevisor; merge waits for 1 open hint(s): reply to each line comment and resolve it, then restart the review or push a commit. Change kind: `mixed`. ### Reasons - **hint** 5 changed file(s) that neither weaken the checks nor touch security according to Jev - **hint** 1 build change(s) of low risk according to Jev: statistics/build.gradle.kts (weakens checks 0.02, risk 0.00, security 0.01) - **hint** 7 section(s) of the PR document agree with the change summary of openrouter/minimax/minimax-m3 according to Jev - **hint** 1 finding(s) of low severity or rated minor by Jev: docs/prs/2026-10-08-PR#54-data-correction-risk.md:60-61 ### Findings 1. **Ambiguous wording** at `docs/prs/2026-10-08-PR#54-data-correction-risk.md:60-61`, severity unknown, counted as medium, hint, as a line comment ### Classifier 7 of 7 units passed all questions (1 PR document(s)). 2 answers ignored because of a confidence below [classifier] min_confidence. <sub> Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 22076, calls 1, tokens in 21295 / out 28241 (reasoning included in out), duration 155.6 s, cost 0.0402 USD (reported), classifier `jev-1.13.0` calls 7, tokens in 5356, cost 0.0002 USD, finding judge `jev-1.13.0` calls 1, tokens in 1362, cost 0.0001 USD, change summary `openrouter/minimax/minimax-m3` calls 1, tokens in 2678 / out 594, cost 0.0011 USD (reported), PR document check `jev-1.13.0` calls 7, tokens in 10016, cost 0.0004 USD, build file judge `jev-1.13.0` calls 6, tokens in 3501, cost 0.0001 USD, phases: path_judge 0.5 s, classifier 0.5 s, change_summary 9.3 s, doc_check 0.5 s, context 0.4 s, model_review 143.6 s, finding_judge 0.3 s, config: defaults + host + repository (.werkrevisor.toml at main da4eeb5).<br> Reviewed head `08cb80d2dd0a0db565670d22f1d5a2a9ac183a25` against base `da4eeb5240bd50cbd270262c62380f66c7a9e027`, werkrevisor 0.25.0. </sub> </details>
ai-reviewer approved these changes 2026-10-08 17:14:36 +02:00
Dismissed
ai-reviewer left a comment
Collaborator

werkrevisor: GREEN / PASS for 08cb80d2dd0a0db565670d22f1d5a2a9ac183a25.
The result comment of werkrevisor holds the details.

werkrevisor: GREEN / PASS for `08cb80d2dd0a0db565670d22f1d5a2a9ac183a25`. The result comment of werkrevisor holds the details. <!-- werkrevisor-review:08cb80d2dd0a0db565670d22f1d5a2a9ac183a25 -->
@@ -0,0 +57,4 @@
## Additional Changes
- docs/werkrevisor.werkbaum: two planned nodes for the statistics dashboard, as asked on 2026-10-08:
the tables per day, week and month count pull requests and show the cost per pull request,
Collaborator

Ambiguous wording, severity unknown, counted as medium (werkrevisor)

hint; Jev: real 0.83, severity 1.1 of 3

In "Additional Changes", the sentence "a trend chart between each heading and its table shows the cost per period, the cost per pull request and their count" is ambiguous: "their" has no plural antecedent in the list and a reader cannot tell whether "their count" refers to periods, pull requests or cost. The werkbaum entry #stats.chart spells this out as "the number of pull requests" on the y axis; the PR document should match that precision.

**Ambiguous wording**, severity unknown, counted as medium (werkrevisor) hint; Jev: real 0.83, severity 1.1 of 3 In "Additional Changes", the sentence "a trend chart between each heading and its table shows the cost per period, the cost per pull request and their count" is ambiguous: "their" has no plural antecedent in the list and a reader cannot tell whether "their count" refers to periods, pull requests or cost. The werkbaum entry `#stats.chart` spells this out as "the number of pull requests" on the y axis; the PR document should match that precision.
Author
Collaborator

Fixed: the sentence now names the number of pull requests, as the Werkbaum node does.

Fixed: the sentence now names the number of pull requests, as the Werkbaum node does.
claude-code marked this conversation as resolved
mi added 1 commit 2026-10-08 17:15:21 +02:00
PR#54: the trend chart names the number of pull requests
werkator build succeeded after 00:09
werkator/werkrevisor-statistics build succeeded after 00:30
ai-review/assessment AI review passed; approved by werkrevisor; merge scheduled for when the checks succeed; review request of mi withdrawn
ai-review/gate build succeeded after 01:50
9644092cf4
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
mi dismissed ai-reviewer's review 2026-10-08 17:15:21 +02:00
Reason:

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

Collaborator

🟢 werkrevisor: GREEN / PASS

Change kind: mixed.

Reasons

  • hint 5 changed file(s) that neither weaken the checks nor touch security according to Jev
  • hint 1 build change(s) of low risk according to Jev: statistics/build.gradle.kts (weakens checks 0.02, risk 0.00, security 0.01)
  • hint 7 section(s) of the PR document agree with the change summary of openrouter/minimax/minimax-m3 according to Jev

Classifier

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

Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 22078, calls 1, tokens in 21297 / out 13567 (reasoning included in out), duration 107.7 s, cost 0.0226 USD (reported), classifier `jev-1.13.0` calls 7, tokens in 5361, cost 0.0002 USD, change summary `openrouter/minimax/minimax-m3` calls 1, tokens in 2678 / out 535, cost 0.0008 USD (reported), PR document check `jev-1.13.0` calls 7, tokens in 9601, cost 0.0004 USD, build file judge `jev-1.13.0` calls 6, tokens in 3501, cost 0.0001 USD, phases: path_judge 0.5 s, classifier 0.5 s, change_summary 9.6 s, doc_check 0.5 s, context 0.5 s, model_review 95.5 s, config: defaults + host + repository (.werkrevisor.toml at main da4eeb5).
Reviewed head `9644092cf496d809303227ede5b64f6568f0ad3d` against base `da4eeb5240bd50cbd270262c62380f66c7a9e027`, werkrevisor 0.25.0.
<!-- werkrevisor:9644092cf496d809303227ede5b64f6568f0ad3d --> <!-- werkrevisor-verdict:GREEN --> ## 🟢 werkrevisor: GREEN / PASS Change kind: `mixed`. ### Reasons - **hint** 5 changed file(s) that neither weaken the checks nor touch security according to Jev - **hint** 1 build change(s) of low risk according to Jev: statistics/build.gradle.kts (weakens checks 0.02, risk 0.00, security 0.01) - **hint** 7 section(s) of the PR document agree with the change summary of openrouter/minimax/minimax-m3 according to Jev ### Classifier 7 of 7 units passed all questions (1 PR document(s)). 2 answers ignored because of a confidence below [classifier] min_confidence. <sub> Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 22078, calls 1, tokens in 21297 / out 13567 (reasoning included in out), duration 107.7 s, cost 0.0226 USD (reported), classifier `jev-1.13.0` calls 7, tokens in 5361, cost 0.0002 USD, change summary `openrouter/minimax/minimax-m3` calls 1, tokens in 2678 / out 535, cost 0.0008 USD (reported), PR document check `jev-1.13.0` calls 7, tokens in 9601, cost 0.0004 USD, build file judge `jev-1.13.0` calls 6, tokens in 3501, cost 0.0001 USD, phases: path_judge 0.5 s, classifier 0.5 s, change_summary 9.6 s, doc_check 0.5 s, context 0.5 s, model_review 95.5 s, config: defaults + host + repository (.werkrevisor.toml at main da4eeb5).<br> Reviewed head `9644092cf496d809303227ede5b64f6568f0ad3d` against base `da4eeb5240bd50cbd270262c62380f66c7a9e027`, werkrevisor 0.25.0. </sub>
ai-reviewer left a comment
Collaborator

werkrevisor: GREEN / PASS for 9644092cf496d809303227ede5b64f6568f0ad3d.
The result comment of werkrevisor holds the details.

werkrevisor: GREEN / PASS for `9644092cf496d809303227ede5b64f6568f0ad3d`. The result comment of werkrevisor holds the details. <!-- werkrevisor-review:9644092cf496d809303227ede5b64f6568f0ad3d -->
ai-reviewer scheduled this pull request to auto merge when all checks succeed 2026-10-08 17:17:16 +02:00
ai-reviewer removed review request for mi 2026-10-08 17:17:16 +02:00
ai-reviewer merged commit 167a3ae80c into main 2026-10-08 17:17:18 +02:00
ai-reviewer deleted branch data-correction-risk 2026-10-08 17:17:18 +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#54