werkrevisor 0.57.0: hs-review puts the diagrams of PR Lens next to its draft #129

Merged
ai-reviewer merged 8 commits from claude-code/hs-review-diagrams into main 2026-10-21 07:32:05 +02:00
Collaborator

See docs/prs for the PR document.

🤖 Generated with Claude Code

See docs/prs for the PR document. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
claude-code marked the pull request as ready for review 2026-10-20 17:27:46 +02:00
Collaborator
🟢 werkrevisor GREEN for 0426c14, superseded by the result for c20a7ea

🟢 werkrevisor: GREEN / PASS

Change kind: mixed.

Reasons

  • hint 7 changed file(s) that neither weaken the checks, touch security nor show a risk category of the repository config according to Jev
  • hint 1 build change(s) of low risk according to Jev: statistics/build.gradle.kts (weakens checks 0.02, risk 0.00, security 0.02)
  • hint 10 changed file(s) agree with the PR document according to Jev
  • hint 1 changed file was given to the AI as excerpt with 40 lines around each changed line, not in full (each larger than [review] max_full_file_chars = 80000): werkrevisor/cli.py
  • hint excerpt selection by openrouter/openai/gpt-6-luna failed, the fixed window was used: werkrevisor/cli.py (a range lies outside the file)

Classifier

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

Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 36382, calls 1, tokens in 35092 / out 14537 (reasoning included in out), duration 155.8 s, cost 0.0279 USD (reported), classifier `jev-1.13.0` calls 6, tokens in 4940, cost 0.0002 USD, excerpt selection `openrouter/openai/gpt-6-luna` calls 1, tokens in 24557 / out 278, cost 0.0032 USD (reported), PR document check `jev-1.13.0` calls 10, tokens in 23812, cost 0.0010 USD, build file judge `jev-1.13.0` calls 8, tokens in 7560, cost 0.0003 USD, phases: path_judge 0.5 s, classifier 0.4 s, doc_check 0.8 s, context 4.8 s, model_review 148.9 s, config: defaults + host + repository (.werkrevisor.toml at main 88772c4).
Reviewed head `0426c14e50ac65b9013d779b313931b54edcdf0f` against base `88772c494abe8d265952e10c082327a0785451c2`, werkrevisor 0.54.1.
<!-- werkrevisor:0426c14e50ac65b9013d779b313931b54edcdf0f --> <!-- werkrevisor-verdict:GREEN --> <!-- werkrevisor-blocks:8102a2f34ad23d90ba6b6c1cdf516e40,ccec1e866aa9f91e4ba83029a486a285,cc1909b243b6d269efa410c1e89d3f41,eeefe1ebcde182613197ec0aefd5f5f5,df8711a9adfffba37063837cdbd3d331,c53429501a14ae6a34c05e2f32c10734,57e0e1ac4af3a94adeb4276f1a8096fb,1e28cea6304297f8b0b92c1f750c03f8,9403d822502d4e6d0041029529eb5fa5,5baf2af922ba1244d38efd9556c32311,052fcdd9797bd2a50907739e223a15a8,bae46659f9425b760c925d8320ff2044,bfaf56a6bf0ea377623f1c8717a5e28d,97f0de698613ce7de2257f9530bccd39,8b6c3141398852433efb8e76d8811886,4b06d771e9ea486137956fd556b69740,30c46b4057f41f08604058c6f427826c,c6e107fc0249091957d7498f62ff7266,4c01e722232ac67c14e1963070c3f79b,536732d6c22e29671a203371bac9fcea,295c95068c6a06b13448cf2e0729a460,ed9eae77367d93fab6543b374ccc24c8,947c65bfa7fc89e4c20ade2785f06e17,5ec17ca5c8bd0506bbe5288127941958,edcc3585c67144de1e1f1f443d7ee0f5,5175f3ba702c93939279724837b299c4,e43f099488f94f9db59910913d4c8751,8d8135960f4a25705d5dee92337a6fa3,2c749db59f8bcf6f7388f0c3870c4a73 --> <!-- werkrevisor-folded --> <details><summary>🟢 werkrevisor GREEN for <code>0426c14</code>, superseded by <a href="http://git.javagil.de/mi/werkrevisor/pulls/129#issuecomment-6847">the result for <code>c20a7ea</code></a></summary> ## 🟢 werkrevisor: GREEN / PASS Change kind: `mixed`. ### Reasons - **hint** 7 changed file(s) that neither weaken the checks, touch security nor show a risk category of the repository config according to Jev - **hint** 1 build change(s) of low risk according to Jev: statistics/build.gradle.kts (weakens checks 0.02, risk 0.00, security 0.02) - **hint** 10 changed file(s) agree with the PR document according to Jev - **hint** 1 changed file was given to the AI as excerpt with 40 lines around each changed line, not in full (each larger than [review] max_full_file_chars = 80000): werkrevisor/cli.py - **hint** excerpt selection by openrouter/openai/gpt-6-luna failed, the fixed window was used: werkrevisor/cli.py (a range lies outside the file) ### Classifier 6 of 6 units passed all questions (1 PR document(s)). 1 answer ignored because of a confidence below [classifier] min_confidence. <sub> Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 36382, calls 1, tokens in 35092 / out 14537 (reasoning included in out), duration 155.8 s, cost 0.0279 USD (reported), classifier `jev-1.13.0` calls 6, tokens in 4940, cost 0.0002 USD, excerpt selection `openrouter/openai/gpt-6-luna` calls 1, tokens in 24557 / out 278, cost 0.0032 USD (reported), PR document check `jev-1.13.0` calls 10, tokens in 23812, cost 0.0010 USD, build file judge `jev-1.13.0` calls 8, tokens in 7560, cost 0.0003 USD, phases: path_judge 0.5 s, classifier 0.4 s, doc_check 0.8 s, context 4.8 s, model_review 148.9 s, config: defaults + host + repository (.werkrevisor.toml at main 88772c4).<br> Reviewed head `0426c14e50ac65b9013d779b313931b54edcdf0f` against base `88772c494abe8d265952e10c082327a0785451c2`, werkrevisor 0.54.1. </sub> </details>
ai-reviewer approved these changes 2026-10-20 17:30:33 +02:00
Dismissed
ai-reviewer left a comment
Collaborator

werkrevisor: GREEN / PASS for 0426c14e50ac65b9013d779b313931b54edcdf0f.
The result comment of werkrevisor holds the details.

werkrevisor: GREEN / PASS for `0426c14e50ac65b9013d779b313931b54edcdf0f`. The result comment of werkrevisor holds the details. <!-- werkrevisor-review:0426c14e50ac65b9013d779b313931b54edcdf0f -->
ai-reviewer scheduled this pull request to auto merge when all checks succeed 2026-10-20 17:30:33 +02:00
ai-reviewer left a comment
Collaborator

Codex review of 0426c14e50ac65b9013d779b313931b54edcdf0f

Codex review of `0426c14e50ac65b9013d779b313931b54edcdf0f` <!-- werkrevisor-codex -->
@@ -116,9 +138,10 @@ def main(argv=None, environ=None):
codex_error = f"{type(e).__name__}: {e}"
thread.join()
werkrevisor_head = reviewed_head(result.get("werkrevisor"))
diagrams = copy_diagrams(os.path.join(ROOT, drawn), out)
Collaborator

[medium] Previous diagrams are copied when the current run produces none (Codex review)

The diagram directory persists across runs, and this call copies its SVGs unconditionally. Cleanup in cli.py only runs when diagrams are enabled and the review finishes without ERROR or supersession. After a successful run, a model failure or disabling diagrams therefore makes the next draft include the previous run's diagrams, potentially from an older commit. Clear the source before each run or copy only artifacts identified as belonging to the current run.

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

**[medium] Previous diagrams are copied when the current run produces none** (Codex review) The diagram directory persists across runs, and this call copies its SVGs unconditionally. Cleanup in cli.py only runs when diagrams are enabled and the review finishes without ERROR or supersession. After a successful run, a model failure or disabling diagrams therefore makes the next draft include the previous run's diagrams, potentially from an older commit. Clear the source before each run or copy only artifacts identified as belonging to the current run. Fix it, or reply why it does not hold, and resolve this comment. <!-- werkrevisor-codex -->
Author
Collaborator

Fixed in c20a7ea: review-report empties the directory of the diagrams before each dry run (clear_diagrams), so a run that draws none shows no SVGs of an earlier run. Scenario#129.02.

Fixed in `c20a7ea`: `review-report` empties the directory of the diagrams before each dry run (`clear_diagrams`), so a run that draws none shows no SVGs of an earlier run. Scenario#129.02.
claude-code marked this conversation as resolved
Collaborator
⚠️ werkrevisor ERROR for ?, superseded by the result for c20a7ea

Codex review: not critical

The change adds local diagram export and draft links without changing authorization, merge gates, or existing data formats. It does not weaken tests or introduce checked-in secrets.

Findings

  1. [medium] Previous diagrams are copied when the current run produces none at werkrevisor/reviewreport.py:141, 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 337384 (cached 280192) / out 2303, 80.8 s, 12 commands; reviewed head `0426c14e50ac65b9013d779b313931b54edcdf0f`.
<!-- werkrevisor-codex:0426c14e50ac65b9013d779b313931b54edcdf0f --> <!-- werkrevisor-codex-critical:false --> <!-- 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/129#issuecomment-6847">the result for <code>c20a7ea</code></a></summary> ## Codex review: not critical The change adds local diagram export and draft links without changing authorization, merge gates, or existing data formats. It does not weaken tests or introduce checked-in secrets. ### Findings 1. **[medium] Previous diagrams are copied when the current run produces none** at `werkrevisor/reviewreport.py:141`, 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 337384 (cached 280192) / out 2303, 80.8 s, 12 commands; reviewed head `0426c14e50ac65b9013d779b313931b54edcdf0f`. </sub> </details>
claude-code dismissed ai-reviewer's review 2026-10-20 18:24:57 +02:00
Reason:

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

Collaborator
🟢 werkrevisor GREEN for c20a7ea, superseded by the result for 1c33cf7

🟢 werkrevisor: GREEN / PASS

Change kind: mixed.

Reasons

  • hint approval of werkrevisor for 0426c14 not carried over: 5 approved block(s) are missing
  • hint 7 changed file(s) that neither weaken the checks, touch security nor show a risk category of the repository config according to Jev
  • hint 1 build change(s) of low risk according to Jev: statistics/build.gradle.kts (weakens checks 0.02, risk 0.00, security 0.02)
  • hint 10 changed file(s) agree with 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 finding(s) of low severity or rated minor by Jev: docs/prs/2026-10-20-PR#129-hs-review-diagrams.md:73-74

Findings

  1. Misleading Wording at docs/prs/2026-10-20-PR#129-hs-review-diagrams.md:73-74, severity unknown, counted as medium

    hint; Jev: real 0.87, severity 1.4 of 3

    The Solution section describes the rule as "a fresh review with the model, no possible secret, no GREEN", but the same PR sets skip_green = false in config/hsadmin-ng.toml, so a GREEN verdict still gets diagrams. The actual condition is not (skip_green and verdict is GREEN), so the bare "no GREEN" contradicts the new config and the new scenario.

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 36255, calls 1, tokens in 34954 / out 15336 (reasoning included in out), duration 125.8 s, cost 0.0289 USD (reported), classifier `jev-1.13.0` calls 7, tokens in 5941, cost 0.0002 USD, finding judge `jev-1.13.0` calls 1, tokens in 1558, cost 0.0001 USD, excerpt selection `openrouter/openai/gpt-6-luna` calls 1, tokens in 24557 / out 341, cost 0.0032 USD (reported), PR document check `jev-1.13.0` calls 10, tokens in 26601, cost 0.0011 USD, build file judge `jev-1.13.0` calls 8, tokens in 7929, cost 0.0003 USD, phases: path_judge 0.6 s, classifier 0.5 s, doc_check 0.7 s, context 5.1 s, model_review 117.9 s, finding_judge 0.4 s, config: defaults + host + repository (.werkrevisor.toml at main 88772c4).
Reviewed head `c20a7eaa54d38fd3573cfed4d8cfd5748e806f8c` against base `88772c494abe8d265952e10c082327a0785451c2`, werkrevisor 0.54.1.
<!-- werkrevisor:c20a7eaa54d38fd3573cfed4d8cfd5748e806f8c --> <!-- werkrevisor-verdict:GREEN --> <!-- werkrevisor-blocks:8102a2f34ad23d90ba6b6c1cdf516e40,ccec1e866aa9f91e4ba83029a486a285,6bbe500ad9f04602f60b04cfd0eee12c,2cb9a90e1cad46d2433b410f7cefcc79,df8711a9adfffba37063837cdbd3d331,c53429501a14ae6a34c05e2f32c10734,57e0e1ac4af3a94adeb4276f1a8096fb,1e28cea6304297f8b0b92c1f750c03f8,9403d822502d4e6d0041029529eb5fa5,ce4fab40070583a5cd89f31c1d15cc16,5baf2af922ba1244d38efd9556c32311,61a4639c1a4f4e8d1a2f02cb2546ec67,bae46659f9425b760c925d8320ff2044,bfaf56a6bf0ea377623f1c8717a5e28d,97f0de698613ce7de2257f9530bccd39,8b6c3141398852433efb8e76d8811886,4b06d771e9ea486137956fd556b69740,30c46b4057f41f08604058c6f427826c,c6e107fc0249091957d7498f62ff7266,4c01e722232ac67c14e1963070c3f79b,536732d6c22e29671a203371bac9fcea,295c95068c6a06b13448cf2e0729a460,ed9eae77367d93fab6543b374ccc24c8,947c65bfa7fc89e4c20ade2785f06e17,5ec17ca5c8bd0506bbe5288127941958,2ae02745d44129aa71047e4a9194f35e,3b6987f082a19157120341c6460fbaae,e43f099488f94f9db59910913d4c8751,8d8135960f4a25705d5dee92337a6fa3,2c749db59f8bcf6f7388f0c3870c4a73 --> <!-- werkrevisor-folded --> <details><summary>🟢 werkrevisor GREEN for <code>c20a7ea</code>, superseded by <a href="http://git.javagil.de/mi/werkrevisor/pulls/129#issuecomment-6870">the result for <code>1c33cf7</code></a></summary> ## 🟢 werkrevisor: GREEN / PASS Change kind: `mixed`. ### Reasons - **hint** approval of werkrevisor for `0426c14` not carried over: 5 approved block(s) are missing - **hint** 7 changed file(s) that neither weaken the checks, touch security nor show a risk category of the repository config according to Jev - **hint** 1 build change(s) of low risk according to Jev: statistics/build.gradle.kts (weakens checks 0.02, risk 0.00, security 0.02) - **hint** 10 changed file(s) agree with 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 finding(s) of low severity or rated minor by Jev: docs/prs/2026-10-20-PR#129-hs-review-diagrams.md:73-74 ### Findings 1. **Misleading Wording** at `docs/prs/2026-10-20-PR#129-hs-review-diagrams.md:73-74`, severity unknown, counted as medium hint; Jev: real 0.87, severity 1.4 of 3 The Solution section describes the rule as "a fresh review with the model, no possible secret, no GREEN", but the same PR sets `skip_green = false` in `config/hsadmin-ng.toml`, so a GREEN verdict still gets diagrams. The actual condition is `not (skip_green and verdict is GREEN)`, so the bare "no GREEN" contradicts the new config and the new scenario. ### 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 36255, calls 1, tokens in 34954 / out 15336 (reasoning included in out), duration 125.8 s, cost 0.0289 USD (reported), classifier `jev-1.13.0` calls 7, tokens in 5941, cost 0.0002 USD, finding judge `jev-1.13.0` calls 1, tokens in 1558, cost 0.0001 USD, excerpt selection `openrouter/openai/gpt-6-luna` calls 1, tokens in 24557 / out 341, cost 0.0032 USD (reported), PR document check `jev-1.13.0` calls 10, tokens in 26601, cost 0.0011 USD, build file judge `jev-1.13.0` calls 8, tokens in 7929, cost 0.0003 USD, phases: path_judge 0.6 s, classifier 0.5 s, doc_check 0.7 s, context 5.1 s, model_review 117.9 s, finding_judge 0.4 s, config: defaults + host + repository (.werkrevisor.toml at main 88772c4).<br> Reviewed head `c20a7eaa54d38fd3573cfed4d8cfd5748e806f8c` against base `88772c494abe8d265952e10c082327a0785451c2`, werkrevisor 0.54.1. </sub> </details>
ai-reviewer approved these changes 2026-10-20 18:31:06 +02:00
Dismissed
ai-reviewer left a comment
Collaborator

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

werkrevisor: GREEN / PASS for `c20a7eaa54d38fd3573cfed4d8cfd5748e806f8c`. The result comment of werkrevisor holds the details. <!-- werkrevisor-review:c20a7eaa54d38fd3573cfed4d8cfd5748e806f8c -->
ai-reviewer left a comment
Collaborator

Codex review of c20a7eaa54d38fd3573cfed4d8cfd5748e806f8c

Codex review of `c20a7eaa54d38fd3573cfed4d8cfd5748e806f8c` <!-- werkrevisor-codex -->
@@ -1123,3 +1125,3 @@
if outcome.superseded or result.verdict is Verdict.ERROR:
result.exit_code = Verdict.ERROR.exit_code
elif outcome.published and config.diagrams.enabled and deps.draw_diagrams is not None:
elif config.diagrams.enabled and deps.draw_diagrams is not None and (outcome.published or deps.diagrams_out):
Collaborator

[low] Failed dry runs leave diagrams from the previous run (Codex review)

When a direct run with --no-publish --diagrams-out reuses a directory and the model fails or the review is superseded, this branch skips _write_diagrams, including its cleanup. SVGs from the previous review therefore remain in the output directory. review-report clears its source directory separately, but direct CLI and tools/dry-run invocations do not.

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

**[low] Failed dry runs leave diagrams from the previous run** (Codex review) When a direct run with --no-publish --diagrams-out reuses a directory and the model fails or the review is superseded, this branch skips _write_diagrams, including its cleanup. SVGs from the previous review therefore remain in the output directory. review-report clears its source directory separately, but direct CLI and tools/dry-run invocations do not. Fix it, or reply why it does not hold, and resolve this comment. <!-- werkrevisor-codex -->
Author
Collaborator

Fixed in 1c33cf7: execute removes the old SVGs of --diagrams-out at the start of each run, so a run that ends in ERROR or is superseded leaves none. Scenario#129.01, test_a_failed_dry_run_leaves_no_diagrams_of_an_earlier_run.

Fixed in `1c33cf7`: `execute` removes the old SVGs of `--diagrams-out` at the start of each run, so a run that ends in ERROR or is superseded leaves none. Scenario#129.01, `test_a_failed_dry_run_leaves_no_diagrams_of_an_earlier_run`.
claude-code marked this conversation as resolved
Collaborator
⚠️ werkrevisor ERROR for ?, superseded by the result for 1c33cf7

Codex review: not critical

The change adds local diagram output and draft links without changing merge decisions or weakening security checks. Failures affect review artifacts rather than protected data or authorization.

Findings

  1. [low] Failed dry runs leave diagrams from the previous run at werkrevisor/cli.py:1127, 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 416773 (cached 355072) / out 2487, 95.2 s, 10 commands; reviewed head `c20a7eaa54d38fd3573cfed4d8cfd5748e806f8c`.
<!-- werkrevisor-codex:c20a7eaa54d38fd3573cfed4d8cfd5748e806f8c --> <!-- werkrevisor-codex-critical:false --> <!-- 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/129#issuecomment-6870">the result for <code>1c33cf7</code></a></summary> ## Codex review: not critical The change adds local diagram output and draft links without changing merge decisions or weakening security checks. Failures affect review artifacts rather than protected data or authorization. ### Findings 1. **[low] Failed dry runs leave diagrams from the previous run** at `werkrevisor/cli.py:1127`, 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 416773 (cached 355072) / out 2487, 95.2 s, 10 commands; reviewed head `c20a7eaa54d38fd3573cfed4d8cfd5748e806f8c`. </sub> </details>
claude-code dismissed ai-reviewer's review 2026-10-20 18:35:38 +02:00
Reason:

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

Collaborator
🟠 werkrevisor ORANGE for 1c33cf7, superseded by the result for 175b7fc

🟠 werkrevisor: ORANGE / FINDINGS

Change kind: mixed.

Reasons

  • ORANGE 1 finding(s) that Jev rates as probably real and severe: werkrevisor/reviewreport.py:87-102
  • hint approval of werkrevisor for c20a7ea not carried over: 3 approved block(s) are missing
  • hint 7 changed file(s) that neither weaken the checks, touch security nor show a risk category of the repository config according to Jev
  • hint 1 build change(s) of low risk according to Jev: statistics/build.gradle.kts (weakens checks 0.02, risk 0.00, security 0.02)
  • hint 10 changed file(s) agree with 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 finding(s) of low severity or rated minor by Jev: docs/prs/2026-10-20-PR#129-hs-review-diagrams.md:71-86, tests/test_prlens.py:291-294

Findings

  1. duplicated prefix constant at werkrevisor/reviewreport.py:87-102, severity unknown, counted as medium, ORANGE, as a line comment

  2. unclear GREEN rule at docs/prs/2026-10-20-PR#129-hs-review-diagrams.md:71-86, severity unknown, counted as medium, hint, as a line comment

  3. weak Scenario#129.03 test at tests/test_prlens.py:291-294, severity unknown, counted as medium, hint, as a line comment

Classifier

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

Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 37230, calls 1, tokens in 35895 / out 20143 (reasoning included in out), duration 243.6 s, cost 0.0349 USD (reported), classifier `jev-1.13.0` calls 7, tokens in 5942, cost 0.0002 USD, finding judge `jev-1.13.0` calls 3, tokens in 5316, cost 0.0002 USD, excerpt selection `openrouter/openai/gpt-6-luna` calls 1, tokens in 24711 / out 354, cost 0.0033 USD (reported), PR document check `jev-1.13.0` calls 10, tokens in 27334, cost 0.0011 USD, build file judge `jev-1.13.0` calls 8, tokens in 8252, cost 0.0003 USD, phases: path_judge 0.4 s, classifier 0.4 s, doc_check 0.7 s, context 6.0 s, model_review 235.3 s, finding_judge 0.2 s, config: defaults + host + repository (.werkrevisor.toml at main 88772c4).
Reviewed head `1c33cf7ce176b456ab5be3ad2b99adfd1a34f207` against base `88772c494abe8d265952e10c082327a0785451c2`, werkrevisor 0.54.1.

Diagrams

Drawn by a model from the diff with PR Lens: a view of what the PR touches, not a statement of what it does.

pr-lens-v-containers.svg

pr-lens-v-flow.svg

<!-- werkrevisor:1c33cf7ce176b456ab5be3ad2b99adfd1a34f207 --> <!-- werkrevisor-verdict:ORANGE --> <!-- werkrevisor-blocks:8102a2f34ad23d90ba6b6c1cdf516e40,ccec1e866aa9f91e4ba83029a486a285,6bbe500ad9f04602f60b04cfd0eee12c,a8559d03dcccd38b3ed39cccc562626a,df8711a9adfffba37063837cdbd3d331,c53429501a14ae6a34c05e2f32c10734,57e0e1ac4af3a94adeb4276f1a8096fb,1e28cea6304297f8b0b92c1f750c03f8,c4f4de8021bfe4b5e381b6696f1837f3,ce4fab40070583a5cd89f31c1d15cc16,5baf2af922ba1244d38efd9556c32311,61a4639c1a4f4e8d1a2f02cb2546ec67,bae46659f9425b760c925d8320ff2044,bfaf56a6bf0ea377623f1c8717a5e28d,97f0de698613ce7de2257f9530bccd39,8b6c3141398852433efb8e76d8811886,0f0e26df8c36576638961a4e7395d919,4b06d771e9ea486137956fd556b69740,30c46b4057f41f08604058c6f427826c,60428ae98d0a5dd68a3142c3bffebba1,4c01e722232ac67c14e1963070c3f79b,536732d6c22e29671a203371bac9fcea,295c95068c6a06b13448cf2e0729a460,ed9eae77367d93fab6543b374ccc24c8,947c65bfa7fc89e4c20ade2785f06e17,5ec17ca5c8bd0506bbe5288127941958,2ae02745d44129aa71047e4a9194f35e,3b6987f082a19157120341c6460fbaae,e43f099488f94f9db59910913d4c8751,8d8135960f4a25705d5dee92337a6fa3,2c749db59f8bcf6f7388f0c3870c4a73 --> <!-- werkrevisor:diagrams --> <!-- werkrevisor-folded --> <details><summary>🟠 werkrevisor ORANGE for <code>1c33cf7</code>, superseded by <a href="http://git.javagil.de/mi/werkrevisor/pulls/129#issuecomment-6885">the result for <code>175b7fc</code></a></summary> ## 🟠 werkrevisor: ORANGE / FINDINGS Change kind: `mixed`. ### Reasons - **ORANGE** 1 finding(s) that Jev rates as probably real and severe: werkrevisor/reviewreport.py:87-102 - **hint** approval of werkrevisor for `c20a7ea` not carried over: 3 approved block(s) are missing - **hint** 7 changed file(s) that neither weaken the checks, touch security nor show a risk category of the repository config according to Jev - **hint** 1 build change(s) of low risk according to Jev: statistics/build.gradle.kts (weakens checks 0.02, risk 0.00, security 0.02) - **hint** 10 changed file(s) agree with 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 finding(s) of low severity or rated minor by Jev: docs/prs/2026-10-20-PR#129-hs-review-diagrams.md:71-86, tests/test_prlens.py:291-294 ### Findings 1. **duplicated prefix constant** at `werkrevisor/reviewreport.py:87-102`, severity unknown, counted as medium, ORANGE, as a line comment 2. **unclear GREEN rule** at `docs/prs/2026-10-20-PR#129-hs-review-diagrams.md:71-86`, severity unknown, counted as medium, hint, as a line comment 3. **weak Scenario#129.03 test** at `tests/test_prlens.py:291-294`, severity unknown, counted as medium, hint, as a line comment ### Classifier 7 of 7 units passed all questions (1 PR document(s)). 1 answer ignored because of a confidence below [classifier] min_confidence. <sub> Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 37230, calls 1, tokens in 35895 / out 20143 (reasoning included in out), duration 243.6 s, cost 0.0349 USD (reported), classifier `jev-1.13.0` calls 7, tokens in 5942, cost 0.0002 USD, finding judge `jev-1.13.0` calls 3, tokens in 5316, cost 0.0002 USD, excerpt selection `openrouter/openai/gpt-6-luna` calls 1, tokens in 24711 / out 354, cost 0.0033 USD (reported), PR document check `jev-1.13.0` calls 10, tokens in 27334, cost 0.0011 USD, build file judge `jev-1.13.0` calls 8, tokens in 8252, cost 0.0003 USD, phases: path_judge 0.4 s, classifier 0.4 s, doc_check 0.7 s, context 6.0 s, model_review 235.3 s, finding_judge 0.2 s, config: defaults + host + repository (.werkrevisor.toml at main 88772c4).<br> Reviewed head `1c33cf7ce176b456ab5be3ad2b99adfd1a34f207` against base `88772c494abe8d265952e10c082327a0785451c2`, werkrevisor 0.54.1. </sub> ### Diagrams Drawn by a model from the diff with [PR Lens](https://github.com/coldteadotai/pr-lens): a view of what the PR touches, not a statement of what it does. ![pr-lens-v-containers.svg](https://git.javagil.de/attachments/92317096-da96-47fe-9584-61f586eef0d6) ![pr-lens-v-flow.svg](https://git.javagil.de/attachments/404ad93f-7ba2-4c10-82cd-9d192fd8ef17) </details>
ai-reviewer left a comment
Collaborator

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

werkrevisor: ORANGE / FINDINGS for `1c33cf7ce176b456ab5be3ad2b99adfd1a34f207`. The result comment of werkrevisor holds the details. <!-- werkrevisor-review:1c33cf7ce176b456ab5be3ad2b99adfd1a34f207 -->
@@ -0,0 +68,4 @@
- [test_prlens.DiagramsConfigTest.test_hs_review_draws_also_for_green](../../tests/test_prlens.py)
## Solution
Collaborator

unclear GREEN rule, severity unknown, counted as medium (werkrevisor)

hint; Jev: real 0.80, severity 1.7 of 3

The Solution bullet for --diagrams-out says diagrams are written under the same rules as the result comment, including "no GREEN". The PR's focus is hs-review, and config/hsadmin-ng.toml sets [diagrams] skip_green = false, so a GREEN result of hs-review does get diagrams (this is the whole point of Scenario#129.03). A reader could wrongly conclude that a GREEN PR of hs-review will end up with an empty diagrams directory. The Solution should make clear that "no GREEN" is the default of the flag (which hsadmin-ng.toml overrides via skip_green = false) or drop that clause from this bullet.

**unclear GREEN rule**, severity unknown, counted as medium (werkrevisor) hint; Jev: real 0.80, severity 1.7 of 3 The Solution bullet for `--diagrams-out` says diagrams are written under the same rules as the result comment, including "no GREEN". The PR's focus is `hs-review`, and `config/hsadmin-ng.toml` sets `[diagrams] skip_green = false`, so a GREEN result of `hs-review` does get diagrams (this is the whole point of Scenario#129.03). A reader could wrongly conclude that a GREEN PR of `hs-review` will end up with an empty diagrams directory. The Solution should make clear that "no GREEN" is the default of the flag (which `hsadmin-ng.toml` overrides via `skip_green = false`) or drop that clause from this bullet.
Author
Collaborator

Fixed in 175b7fc: the Solution says that a GREEN result gets diagrams only with skip_green = false, as config/hsadmin-ng.toml sets it.

Fixed in `175b7fc`: the Solution says that a GREEN result gets diagrams only with `skip_green = false`, as `config/hsadmin-ng.toml` sets it.
claude-code marked this conversation as resolved
@@ -245,6 +288,11 @@ class DrawTest(unittest.TestCase):
class DiagramsConfigTest(unittest.TestCase):
def test_hs_review_draws_also_for_green(self):
Collaborator

weak Scenario#129.03 test, severity unknown, counted as medium (werkrevisor)

hint; Jev: real 0.82, severity 2.1 of 3

Scenario#129.03 says "hs-review draws the diagrams also for a GREEN result", but test_hs_review_draws_also_for_green only asserts that example_config("hsadmin-ng.toml").diagrams.skip_green is False. It does not run werkrevisor with that config on a GREEN result to confirm that diagrams are actually produced and written. A regression that broke the GREEN-drawing path on the loaded config would not be caught.

**weak Scenario#129.03 test**, severity unknown, counted as medium (werkrevisor) hint; Jev: real 0.82, severity 2.1 of 3 Scenario#129.03 says "hs-review draws the diagrams also for a GREEN result", but `test_hs_review_draws_also_for_green` only asserts that `example_config("hsadmin-ng.toml").diagrams.skip_green` is `False`. It does not run werkrevisor with that config on a GREEN result to confirm that diagrams are actually produced and written. A regression that broke the GREEN-drawing path on the loaded config would not be caught.
Author
Collaborator

Fixed in 175b7fc: test_hs_review_draws_also_for_green runs a GREEN dry run with the [diagrams] of config/hsadmin-ng.toml and checks that the SVGs are written.

Fixed in `175b7fc`: `test_hs_review_draws_also_for_green` runs a GREEN dry run with the `[diagrams]` of `config/hsadmin-ng.toml` and checks that the SVGs are written.
claude-code marked this conversation as resolved
@@ -77,6 +84,24 @@ def compose(head, werkrevisor, codex_result, werkrevisor_error="", codex_error="
return "\n".join(out).rstrip() + "\n"
def clear_diagrams(directory):
Collaborator

duplicated prefix constant, severity unknown, counted as medium (werkrevisor)

ORANGE; Jev: real 0.73, severity 2.7 of 3

clear_diagrams and copy_diagrams hardcode the prefix "pr-lens-" to identify diagrams, while the matching filter in werkrevisor/cli.py (_write_diagrams) uses prlens.ASSET_PREFIX. Both must stay in sync; if the asset prefix in prlens ever changes, the report tool will quietly drop diagrams. Importing the constant from prlens keeps them aligned.

**duplicated prefix constant**, severity unknown, counted as medium (werkrevisor) ORANGE; Jev: real 0.73, severity 2.7 of 3 `clear_diagrams` and `copy_diagrams` hardcode the prefix `"pr-lens-"` to identify diagrams, while the matching filter in `werkrevisor/cli.py` (`_write_diagrams`) uses `prlens.ASSET_PREFIX`. Both must stay in sync; if the asset prefix in `prlens` ever changes, the report tool will quietly drop diagrams. Importing the constant from `prlens` keeps them aligned.
Author
Collaborator

Fixed in 175b7fc: clear_diagrams and copy_diagrams use prlens.ASSET_PREFIX.

Fixed in `175b7fc`: `clear_diagrams` and `copy_diagrams` use `prlens.ASSET_PREFIX`.
claude-code marked this conversation as resolved
ai-reviewer requested review from mi 2026-10-20 18:44:54 +02:00
claude-code changed title from werkrevisor 0.56.0: hs-review puts the diagrams of PR Lens next to its draft to werkrevisor 0.57.0: hs-review puts the diagrams of PR Lens next to its draft 2026-10-20 18:46:15 +02:00
Collaborator
⚠️ werkrevisor ERROR for ?, superseded by the result for 175b7fc

Codex review: not critical

The change adds local diagram generation and links in draft reports without changing merge decisions, authorization, or secret checks. It does not weaken CI gates or tests or introduce irreversible changes to existing application data.

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 304761 (cached 243840) / out 1482, 60.8 s, 8 commands; reviewed head `1c33cf7ce176b456ab5be3ad2b99adfd1a34f207`.
<!-- werkrevisor-codex:1c33cf7ce176b456ab5be3ad2b99adfd1a34f207 --> <!-- werkrevisor-codex-critical:false --> <!-- 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/129#issuecomment-6885">the result for <code>175b7fc</code></a></summary> ## Codex review: not critical The change adds local diagram generation and links in draft reports without changing merge decisions, authorization, or secret checks. It does not weaken CI gates or tests or introduce irreversible changes to existing application data. 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 304761 (cached 243840) / out 1482, 60.8 s, 8 commands; reviewed head `1c33cf7ce176b456ab5be3ad2b99adfd1a34f207`. </sub> </details>
Collaborator
🟢 werkrevisor GREEN for 175b7fc, superseded by the result for 7cc5832

🟢 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 7 changed file(s) that neither weaken the checks, touch security nor show a risk category of the repository config according to Jev
  • hint 1 build change(s) of low risk according to Jev: statistics/build.gradle.kts (weakens checks 0.02, risk 0.00, security 0.02)
  • hint 10 changed file(s) agree with 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 finding(s) of low severity or rated minor by Jev: tests/test_reviewreport.py:104-114

Findings

  1. Test misaligned with scenario at tests/test_reviewreport.py:104-114, 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 35819, calls 1, tokens in 34533 / out 16463 (reasoning included in out), duration 200.4 s, cost 0.0298 USD (reported), classifier `jev-1.13.0` calls 7, tokens in 5965, cost 0.0003 USD, finding judge `jev-1.13.0` calls 1, tokens in 1591, cost 0.0001 USD, excerpt selection `openrouter/openai/gpt-6-luna` calls 1, tokens in 24711 / out 413, cost 0.0005 USD (reported), PR document check `jev-1.13.0` calls 10, tokens in 27768, cost 0.0012 USD, build file judge `jev-1.13.0` calls 8, tokens in 8456, cost 0.0004 USD, phases: path_judge 0.5 s, classifier 0.5 s, doc_check 0.7 s, context 6.0 s, model_review 192.0 s, finding_judge 0.2 s, config: defaults + host + repository (.werkrevisor.toml at main 88772c4).
Reviewed head `175b7fce2e6cb4772342f64d1bcaa4c63bfe24d3` against base `88772c494abe8d265952e10c082327a0785451c2`, werkrevisor 0.54.1.
<!-- werkrevisor:175b7fce2e6cb4772342f64d1bcaa4c63bfe24d3 --> <!-- werkrevisor-verdict:GREEN --> <!-- werkrevisor-blocks:8102a2f34ad23d90ba6b6c1cdf516e40,ccec1e866aa9f91e4ba83029a486a285,6bbe500ad9f04602f60b04cfd0eee12c,93407103964b9441b2cf0292921d43ea,df8711a9adfffba37063837cdbd3d331,de3d2307239c96df1404cdf93c9152a2,57e0e1ac4af3a94adeb4276f1a8096fb,1e28cea6304297f8b0b92c1f750c03f8,c4f4de8021bfe4b5e381b6696f1837f3,604db6aecff6d7ba31b1bee339fc82a4,5baf2af922ba1244d38efd9556c32311,61a4639c1a4f4e8d1a2f02cb2546ec67,bae46659f9425b760c925d8320ff2044,bfaf56a6bf0ea377623f1c8717a5e28d,266aa8cec98f13e77a5467fa768a8403,8b6c3141398852433efb8e76d8811886,0f0e26df8c36576638961a4e7395d919,4b06d771e9ea486137956fd556b69740,30c46b4057f41f08604058c6f427826c,60428ae98d0a5dd68a3142c3bffebba1,4c01e722232ac67c14e1963070c3f79b,536732d6c22e29671a203371bac9fcea,295c95068c6a06b13448cf2e0729a460,ed9eae77367d93fab6543b374ccc24c8,5361121e622f218a9d27240cecff0972,947c65bfa7fc89e4c20ade2785f06e17,5ec17ca5c8bd0506bbe5288127941958,024fce43174fec160325887cd4ca7b7b,3b6987f082a19157120341c6460fbaae,e43f099488f94f9db59910913d4c8751,8d8135960f4a25705d5dee92337a6fa3,2c749db59f8bcf6f7388f0c3870c4a73 --> <!-- werkrevisor-folded --> <details><summary>🟢 werkrevisor GREEN for <code>175b7fc</code>, superseded by <a href="http://git.javagil.de/mi/werkrevisor/pulls/129#issuecomment-6965">the result for <code>7cc5832</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** 7 changed file(s) that neither weaken the checks, touch security nor show a risk category of the repository config according to Jev - **hint** 1 build change(s) of low risk according to Jev: statistics/build.gradle.kts (weakens checks 0.02, risk 0.00, security 0.02) - **hint** 10 changed file(s) agree with 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 finding(s) of low severity or rated minor by Jev: tests/test_reviewreport.py:104-114 ### Findings 1. **Test misaligned with scenario** at `tests/test_reviewreport.py:104-114`, 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 35819, calls 1, tokens in 34533 / out 16463 (reasoning included in out), duration 200.4 s, cost 0.0298 USD (reported), classifier `jev-1.13.0` calls 7, tokens in 5965, cost 0.0003 USD, finding judge `jev-1.13.0` calls 1, tokens in 1591, cost 0.0001 USD, excerpt selection `openrouter/openai/gpt-6-luna` calls 1, tokens in 24711 / out 413, cost 0.0005 USD (reported), PR document check `jev-1.13.0` calls 10, tokens in 27768, cost 0.0012 USD, build file judge `jev-1.13.0` calls 8, tokens in 8456, cost 0.0004 USD, phases: path_judge 0.5 s, classifier 0.5 s, doc_check 0.7 s, context 6.0 s, model_review 192.0 s, finding_judge 0.2 s, config: defaults + host + repository (.werkrevisor.toml at main 88772c4).<br> Reviewed head `175b7fce2e6cb4772342f64d1bcaa4c63bfe24d3` against base `88772c494abe8d265952e10c082327a0785451c2`, werkrevisor 0.54.1. </sub> </details>
ai-reviewer approved these changes 2026-10-20 18:49:46 +02:00
Dismissed
ai-reviewer left a comment
Collaborator

werkrevisor: GREEN / PASS for 175b7fce2e6cb4772342f64d1bcaa4c63bfe24d3.
The result comment of werkrevisor holds the details.

werkrevisor: GREEN / PASS for `175b7fce2e6cb4772342f64d1bcaa4c63bfe24d3`. The result comment of werkrevisor holds the details. <!-- werkrevisor-review:175b7fce2e6cb4772342f64d1bcaa4c63bfe24d3 -->
@@ -81,0 +101,4 @@
self.assertIn("![pr-lens-flow.svg](pr-lens-flow.svg)", report)
self.assertLess(report.index("### Diagrams"), report.index("### Codex"))
def test_a_run_without_new_diagrams_shows_none_of_an_earlier_run(self):
Collaborator

Test misaligned with scenario, severity unknown, counted as medium (werkrevisor)

hint; Jev: real 0.82, severity 2.0 of 3

test_a_run_without_new_diagrams_shows_none_of_an_earlier_run is cited as verifying the "a run that draws none shows none of an earlier run" branch of Scenario#129.02, but the setup places the "earlier" SVG in source (the dry-run output directory) rather than in target (the draft directory, where a prior run's SVGs would actually persist for the scenario to be relevant). The assertion that copy_diagrams(source, target) == [] passes trivially because target was empty to begin with, so the test never exercises the actual cleanup of earlier SVGs from the draft directory. The functional behavior is incidentally covered by test_the_draft_links_the_diagrams_next_to_it (which puts pr-lens-old.svg in target and verifies it disappears), but the specific concern of scenario#129.02's "no new diagrams" case lacks a dedicated, scenario-shaped test.

**Test misaligned with scenario**, severity unknown, counted as medium (werkrevisor) hint; Jev: real 0.82, severity 2.0 of 3 `test_a_run_without_new_diagrams_shows_none_of_an_earlier_run` is cited as verifying the "a run that draws none shows none of an earlier run" branch of Scenario#129.02, but the setup places the "earlier" SVG in `source` (the dry-run output directory) rather than in `target` (the draft directory, where a prior run's SVGs would actually persist for the scenario to be relevant). The assertion that `copy_diagrams(source, target) == []` passes trivially because target was empty to begin with, so the test never exercises the actual cleanup of earlier SVGs from the draft directory. The functional behavior is incidentally covered by `test_the_draft_links_the_diagrams_next_to_it` (which puts `pr-lens-old.svg` in target and verifies it disappears), but the specific concern of scenario#129.02's "no new diagrams" case lacks a dedicated, scenario-shaped test.
Author
Collaborator

Fixed in 7cc5832: the test puts an earlier SVG into the output directory and next to the draft; after a run without new diagrams both are empty and the draft has no Diagrams section.

Fixed in `7cc5832`: the test puts an earlier SVG into the output directory and next to the draft; after a run without new diagrams both are empty and the draft has no Diagrams section.
claude-code marked this conversation as resolved
ai-reviewer canceled auto merging this pull request when all checks succeed 2026-10-20 18:49:47 +02:00
Collaborator
⚠️ werkrevisor ERROR for ?, superseded by the result for 7cc5832

Codex review: not critical

The change adds local diagram generation and draft-report links without changing authorization, authentication, merge gates, or existing review decisions. Cleanup is limited to generated diagram files, and no tests are weakened.

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 281921 (cached 227200) / out 1476, 57.9 s, 14 commands; reviewed head `175b7fce2e6cb4772342f64d1bcaa4c63bfe24d3`.
<!-- werkrevisor-codex:175b7fce2e6cb4772342f64d1bcaa4c63bfe24d3 --> <!-- werkrevisor-codex-critical:false --> <!-- 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/129#issuecomment-6965">the result for <code>7cc5832</code></a></summary> ## Codex review: not critical The change adds local diagram generation and draft-report links without changing authorization, authentication, merge gates, or existing review decisions. Cleanup is limited to generated diagram files, and no tests are weakened. 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 281921 (cached 227200) / out 1476, 57.9 s, 14 commands; reviewed head `175b7fce2e6cb4772342f64d1bcaa4c63bfe24d3`. </sub> </details>
claude-code added 7 commits 2026-10-21 07:21:30 +02:00
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
werkrevisor --diagrams-out writes them in a dry run; tools/dry-run runs in the base stage with Node.js
when WERKREVISOR_DIAGRAMS_OUT is set; review-report copies them next to report.md and links them.
config/hsadmin-ng.toml switches the diagrams on.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
config/hsadmin-ng.toml sets skip_green = false, since a human reviews each PR of hs-review.
review-report empties the directory of the diagrams before each dry run (Codex line comment 6797).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Also after an ERROR; Codex line comment 6855.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
werkrevisor 0.57.0: review-report uses prlens.ASSET_PREFIX; Scenario#129.03 runs a GREEN dry run
ai-review/codex waiting for the Codex review
werkator build succeeded after 00:31
werkator/werkrevisor-statistics build succeeded after 00:43
ai-review/gate build failed after 04:59
5f58756837
Version 0.57.0, since PR#128 takes 0.56.0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
claude-code force-pushed claude-code/hs-review-diagrams from 175b7fce2e to 5f58756837 2026-10-21 07:21:30 +02:00 Compare
claude-code dismissed ai-reviewer's review 2026-10-21 07:21:30 +02:00
Reason:

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

claude-code added 1 commit 2026-10-21 07:21:47 +02:00
Scenario#129.02: the test puts the earlier SVGs next to the draft as well
werkator build succeeded after 00:09
werkator/werkrevisor-statistics build succeeded after 00:26
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 03:33
ai-review/codex Codex review passed
7cc58326cc
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Collaborator

🟢 werkrevisor: GREEN / PASS

Change kind: mixed.

Reasons

  • hint approval of werkrevisor for 175b7fc not carried over: 3 approved block(s) are missing
  • hint 7 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 10 changed file(s) agree with 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

Classifier

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

Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 36621, calls 1, tokens in 35309 / out 17403 (reasoning included in out), duration 211.3 s, cost 0.0314 USD (reported), classifier `jev-1.13.0` calls 7, tokens in 5965, cost 0.0003 USD, excerpt selection `openrouter/openai/gpt-6-luna` calls 1, tokens in 24711 / out 455, cost 0.0005 USD (reported), PR document check `jev-1.13.0` calls 10, tokens in 27839, cost 0.0012 USD, build file judge `jev-1.13.0` calls 8, tokens in 8527, cost 0.0004 USD, phases: path_judge 0.5 s, classifier 0.3 s, doc_check 0.5 s, context 7.3 s, model_review 201.9 s, config: defaults + host + repository (.werkrevisor.toml at main 02c5cad).
Reviewed head `7cc58326cc3cfddf447092aff71fb32c632501ae` against base `02c5cad01497e3bc457babf06bdcace76a87a777`, werkrevisor 0.55.0.
<!-- werkrevisor:7cc58326cc3cfddf447092aff71fb32c632501ae --> <!-- werkrevisor-verdict:GREEN --> <!-- werkrevisor-blocks:8102a2f34ad23d90ba6b6c1cdf516e40,ccec1e866aa9f91e4ba83029a486a285,6bbe500ad9f04602f60b04cfd0eee12c,93407103964b9441b2cf0292921d43ea,df8711a9adfffba37063837cdbd3d331,cd3ff5db5856eb7e8c65affaf95de677,57e0e1ac4af3a94adeb4276f1a8096fb,1e28cea6304297f8b0b92c1f750c03f8,c4f4de8021bfe4b5e381b6696f1837f3,604db6aecff6d7ba31b1bee339fc82a4,5baf2af922ba1244d38efd9556c32311,644f1b7f69f5e490f83999fe407b9dae,bae46659f9425b760c925d8320ff2044,bfaf56a6bf0ea377623f1c8717a5e28d,baa971cee5d1665549286a36d2cbc081,8b6c3141398852433efb8e76d8811886,0f0e26df8c36576638961a4e7395d919,4b06d771e9ea486137956fd556b69740,30c46b4057f41f08604058c6f427826c,60428ae98d0a5dd68a3142c3bffebba1,4c01e722232ac67c14e1963070c3f79b,536732d6c22e29671a203371bac9fcea,295c95068c6a06b13448cf2e0729a460,ed9eae77367d93fab6543b374ccc24c8,5361121e622f218a9d27240cecff0972,947c65bfa7fc89e4c20ade2785f06e17,5ec17ca5c8bd0506bbe5288127941958,024fce43174fec160325887cd4ca7b7b,3b6987f082a19157120341c6460fbaae,e43f099488f94f9db59910913d4c8751,8d8135960f4a25705d5dee92337a6fa3,2c749db59f8bcf6f7388f0c3870c4a73 --> ## 🟢 werkrevisor: GREEN / PASS Change kind: `mixed`. ### Reasons - **hint** approval of werkrevisor for `175b7fc` not carried over: 3 approved block(s) are missing - **hint** 7 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** 10 changed file(s) agree with 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 ### Classifier 7 of 7 units passed all questions (1 PR document(s)). 1 answer ignored because of a confidence below [classifier] min_confidence. <sub> Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 36621, calls 1, tokens in 35309 / out 17403 (reasoning included in out), duration 211.3 s, cost 0.0314 USD (reported), classifier `jev-1.13.0` calls 7, tokens in 5965, cost 0.0003 USD, excerpt selection `openrouter/openai/gpt-6-luna` calls 1, tokens in 24711 / out 455, cost 0.0005 USD (reported), PR document check `jev-1.13.0` calls 10, tokens in 27839, cost 0.0012 USD, build file judge `jev-1.13.0` calls 8, tokens in 8527, cost 0.0004 USD, phases: path_judge 0.5 s, classifier 0.3 s, doc_check 0.5 s, context 7.3 s, model_review 201.9 s, config: defaults + host + repository (.werkrevisor.toml at main 02c5cad).<br> Reviewed head `7cc58326cc3cfddf447092aff71fb32c632501ae` against base `02c5cad01497e3bc457babf06bdcace76a87a777`, werkrevisor 0.55.0. </sub>
ai-reviewer left a comment
Collaborator

werkrevisor: GREEN / PASS for 7cc58326cc3cfddf447092aff71fb32c632501ae.
The result comment of werkrevisor holds the details.

werkrevisor: GREEN / PASS for `7cc58326cc3cfddf447092aff71fb32c632501ae`. The result comment of werkrevisor holds the details. <!-- werkrevisor-review:7cc58326cc3cfddf447092aff71fb32c632501ae -->
ai-reviewer scheduled this pull request to auto merge when all checks succeed 2026-10-21 07:30:12 +02:00
ai-reviewer removed review request for mi 2026-10-21 07:30:12 +02:00
Collaborator

Codex review: not critical

The change adds local diagram generation and draft-report links without changing authorization, merge gates, or review verdicts. Existing secret checks remain in place, and diagram failures do not alter the verdict.

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 251869 (cached 198272) / out 1341, 56.7 s, 9 commands; reviewed head `7cc58326cc3cfddf447092aff71fb32c632501ae`.
<!-- werkrevisor-codex:7cc58326cc3cfddf447092aff71fb32c632501ae --> <!-- werkrevisor-codex-critical:false --> <!-- werkrevisor-codex-unattached:0 --> <!-- werkrevisor-codex --> ## Codex review: not critical The change adds local diagram generation and draft-report links without changing authorization, merge gates, or review verdicts. Existing secret checks remain in place, and diagram failures do not alter the verdict. 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 251869 (cached 198272) / out 1341, 56.7 s, 9 commands; reviewed head `7cc58326cc3cfddf447092aff71fb32c632501ae`. </sub>
ai-reviewer merged commit 0349323c85 into main 2026-10-21 07:32:05 +02:00
ai-reviewer deleted branch claude-code/hs-review-diagrams 2026-10-21 07:32:05 +02:00
Sign in to join this conversation.
No Reviewers
No labels
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: mi/werkrevisor#129