werkrevisor 0.19.0: Jev judges changes of judged build paths instead of a fixed YELLOW #27

Merged
ai-reviewer merged 3 commits from claude-code/judged-paths into main 2026-10-06 13:13:26 +02:00
Collaborator
See [docs/prs/2026-10-06-PR#27-judged-paths.md](docs/prs/2026-10-06-PR%2327-judged-paths.md). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
claude-code added 1 commit 2026-10-06 13:09:29 +02:00
werkrevisor 0.19.0: Jev judges changes of judged build paths instead of a fixed YELLOW
werkator build succeeded after 00:10
ai-review/assessment AI findings; a developer approval after checking them unlocks the merge; review requested from mi; merge scheduled for when the checks succeed
ai-review/gate build succeeded after 00:16
werkator/server build succeeded after 00:39
f39ca265c7
[hard_yellow] judged_paths go to Jev with [path_judge] judge = "jev": weakened checks give ORANGE,
routine changes a hint, the rest YELLOW; hard paths always win, and the host may forbid the repository to switch the judge on.
The README shows how workflow code, Jev and the LLM work together.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
claude-code marked the pull request as ready for review 2026-10-06 13:09:30 +02:00
Collaborator
🟠 werkrevisor ORANGE for f39ca26, superseded by the result for 6985137

🟠 werkrevisor: ORANGE / FINDINGS

Change kind: mixed.

Reasons

  • ORANGE 2 finding(s) that Jev rates as probably real and severe: werkrevisor/rules.py:244-253, werkrevisor/pathjudge.py:58-66
  • YELLOW risky paths changed: .werkrevisor.toml (built in), server/build.gradle.kts (server/*.gradle.kts), werkrevisor/config.py (werkrevisor/config.py)
  • YELLOW the changed .werkrevisor.toml uses settings unknown to the installed werkrevisor 0.18.5: [hard_yellow] judged_paths, [path_judge]; deploy a version that knows them right after the merge, or every review will end with ERROR
  • YELLOW 2 changed files were given to the AI only as diff, not in full, so it could not check them against the rest of their file (each larger than [review] max_full_file_chars = 40000): werkrevisor/cli.py, werkrevisor/config.py
  • hint writing rules violated in the changed docs: README.md:439: more than one sentence on a line
  • hint 1 finding(s) of low severity or rated minor by Jev: .werkrevisor.toml:28-32
  • hint model recommends merge with caution

Findings

  1. [medium] Judged path with a docs-category match is silently skipped at werkrevisor/rules.py:244-253, ORANGE, as a line comment

  2. [medium] Deleted or binary judged file is sent to Jev with an empty diff at werkrevisor/pathjudge.py:58-66, ORANGE, as a line comment

  3. [medium] Config contradicts PR document at .werkrevisor.toml:28-32, hint, as a line comment

Classifier

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

Usage: model `openrouter/anthropic/claude-sonnet-5.5`, LLM done, tokens counted before the call 76352, calls 1, tokens in 75275 / out 718 (reasoning included in out), duration 13.4 s, cost 0.1577 USD (reported), classifier `jev-1.13.0` calls 12, tokens in 10310, cost 0.0004 USD, finding judge `jev-1.13.0` calls 3, tokens in 4614, cost 0.0002 USD, config: defaults + host + repository (.werkrevisor.toml at base c48a7a4).
Reviewed head `f39ca265c753b73d9471023061dd43a91af6c9d1` against base `c48a7a451393ba5a9584e2c5b678e60e81709b25`, werkrevisor 0.18.5.
<!-- werkrevisor:f39ca265c753b73d9471023061dd43a91af6c9d1 --> <!-- werkrevisor-verdict:ORANGE --> <!-- werkrevisor-folded --> <details><summary>🟠 werkrevisor ORANGE for <code>f39ca26</code>, superseded by <a href="http://git.javagil.de/mi/werkrevisor/pulls/27#issuecomment-1235">the result for <code>6985137</code></a></summary> ## 🟠 werkrevisor: ORANGE / FINDINGS Change kind: `mixed`. ### Reasons - **ORANGE** 2 finding(s) that Jev rates as probably real and severe: werkrevisor/rules.py:244-253, werkrevisor/pathjudge.py:58-66 - **YELLOW** risky paths changed: .werkrevisor.toml (built in), server/build.gradle.kts (server/*.gradle.kts), werkrevisor/config.py (werkrevisor/config.py) - **YELLOW** the changed .werkrevisor.toml uses settings unknown to the installed werkrevisor 0.18.5: [hard_yellow] judged_paths, [path_judge]; deploy a version that knows them right after the merge, or every review will end with ERROR - **YELLOW** 2 changed files were given to the AI only as diff, not in full, so it could not check them against the rest of their file (each larger than [review] max_full_file_chars = 40000): werkrevisor/cli.py, werkrevisor/config.py - **hint** writing rules violated in the changed docs: README.md:439: more than one sentence on a line - **hint** 1 finding(s) of low severity or rated minor by Jev: .werkrevisor.toml:28-32 - **hint** model recommends merge with caution ### Findings 1. **[medium] Judged path with a docs-category match is silently skipped** at `werkrevisor/rules.py:244-253`, ORANGE, as a line comment 2. **[medium] Deleted or binary judged file is sent to Jev with an empty diff** at `werkrevisor/pathjudge.py:58-66`, ORANGE, as a line comment 3. **[medium] Config contradicts PR document** at `.werkrevisor.toml:28-32`, hint, as a line comment ### Classifier 12 of 12 units passed all questions (1 PR document(s)). 4 answers ignored because of a confidence below [classifier] min_confidence. <sub> Usage: model `openrouter/anthropic/claude-sonnet-5.5`, LLM done, tokens counted before the call 76352, calls 1, tokens in 75275 / out 718 (reasoning included in out), duration 13.4 s, cost 0.1577 USD (reported), classifier `jev-1.13.0` calls 12, tokens in 10310, cost 0.0004 USD, finding judge `jev-1.13.0` calls 3, tokens in 4614, cost 0.0002 USD, config: defaults + host + repository (.werkrevisor.toml at base c48a7a4).<br> Reviewed head `f39ca265c753b73d9471023061dd43a91af6c9d1` against base `c48a7a451393ba5a9584e2c5b678e60e81709b25`, werkrevisor 0.18.5. </sub> </details>
ai-reviewer left a comment
Collaborator

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

werkrevisor: ORANGE / FINDINGS for `f39ca265c753b73d9471023061dd43a91af6c9d1`. The result comment of werkrevisor holds the details. <!-- werkrevisor-review:f39ca265c753b73d9471023061dd43a91af6c9d1 -->
@@ -26,3 +26,3 @@
# These modules hold the trust boundary: tokens, redaction, the HOME guard and the Gitea writes.
"werkrevisor/isolation.py", "werkrevisor/redact.py", "werkrevisor/gitea.py", "werkrevisor/config.py",
"pyproject.toml", "requirements*.txt", "server/*.gradle.kts", "server/gradle/**", "server/gradlew*", "**/*secret*", "**/*.pem", "**/*.key", ".env*",
# The Gradle wrapper decides which Gradle runs, so it stays hard; the build files themselves are judged by Jev.
Collaborator

[medium] Config contradicts PR document (werkrevisor)

hint; Jev: real 0.58, severity 2.0 of 3

The PR document says server/settings.gradle.kts moves to judged_paths, and the new comment says the build files are judged. The config contains only the glob server/*.gradle.kts, so the statement is consistent. However, the .werkrevisor.toml change is itself a built-in hard path, so this config only takes effect after merge and the PR itself is reviewed under the old config. The document does not say that the effect starts only after the merge.

**[medium] Config contradicts PR document** (werkrevisor) hint; Jev: real 0.58, severity 2.0 of 3 The PR document says `server/settings.gradle.kts` moves to `judged_paths`, and the new comment says the build files are judged. The config contains only the glob `server/*.gradle.kts`, so the statement is consistent. However, the `.werkrevisor.toml` change is itself a built-in hard path, so this config only takes effect after merge and the PR itself is reviewed under the old config. The document does not say that the effect starts only after the merge.
@@ -0,0 +55,4 @@
records: list = field(default_factory=list)
def _diff_text(d):
Collaborator

[medium] Deleted or binary judged file is sent to Jev with an empty diff (werkrevisor)

ORANGE; Jev: real 0.79, severity 3.0 of 3

_diff_text returns an empty string when no diff exists (for example for a deleted file or one whose diff is not parsed). Jev then receives only the header and judges an empty state, which will usually yield low scores and a GREEN hint. A change that deletes a build file or one that has no visible diff would be rated harmless. An unjudgeable unit should land in not_judged instead.

**[medium] Deleted or binary judged file is sent to Jev with an empty diff** (werkrevisor) ORANGE; Jev: real 0.79, severity 3.0 of 3 `_diff_text` returns an empty string when no diff exists (for example for a deleted file or one whose diff is not parsed). Jev then receives only the header and judges an empty state, which will usually yield low scores and a GREEN hint. A change that deletes a build file or one that has no visible diff would be rated harmless. An unjudgeable unit should land in `not_judged` instead.
@@ -239,6 +241,16 @@ def evaluate_rules(files, diffs, config):
if pattern:
risky.append(f"{path} ({pattern})")
break
else:
Collaborator

[medium] Judged path with a docs-category match is silently skipped (werkrevisor)

ORANGE; Jev: real 0.72, severity 2.7 of 3

The judged list excludes paths matching the docs category. For a rename from a judged path into a docs path (or the reverse), only the non-docs name is judged. A file renamed from server/build.gradle.kts to docs/x.md is judged on the old name with a diff that is now a doc diff. No test covers renames for judged paths other than the hard-path case.

**[medium] Judged path with a docs-category match is silently skipped** (werkrevisor) ORANGE; Jev: real 0.72, severity 2.7 of 3 The `judged` list excludes paths matching the docs category. For a rename from a judged path into a docs path (or the reverse), only the non-docs name is judged. A file renamed from `server/build.gradle.kts` to `docs/x.md` is judged on the old name with a diff that is now a doc diff. No test covers renames for judged paths other than the hard-path case.
ai-reviewer scheduled this pull request to auto merge when all checks succeed 2026-10-06 13:09:52 +02:00
ai-reviewer requested review from mi 2026-10-06 13:09:52 +02:00
mi added 1 commit 2026-10-06 13:11:09 +02:00
review: deleted, empty and renamed judged files are never judged as harmless
werkator build succeeded after 00:15
ai-review/assessment human review required; a human approval unlocks the merge; a human review request is pending; merge already scheduled
ai-review/gate build succeeded after 00:22
werkator/server build succeeded after 00:29
6985137912
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Collaborator
🟡 werkrevisor YELLOW for 6985137, superseded by the result for dc84f19

🟡 werkrevisor: YELLOW / HUMAN_REVIEW

Change kind: mixed.

Reasons

  • YELLOW risky paths changed: .werkrevisor.toml (built in), server/build.gradle.kts (server/*.gradle.kts), werkrevisor/config.py (werkrevisor/config.py)
  • YELLOW the changed .werkrevisor.toml uses settings unknown to the installed werkrevisor 0.18.5: [hard_yellow] judged_paths, [path_judge]; deploy a version that knows them right after the merge, or every review will end with ERROR
  • YELLOW 2 changed files were given to the AI only as diff, not in full, so it could not check them against the rest of their file (each larger than [review] max_full_file_chars = 40000): werkrevisor/cli.py, werkrevisor/config.py
  • hint writing rules violated in the changed docs: docs/prs/2026-10-06-PR#27-judged-paths.md:152: line longer than 128 characters (130)
  • hint 3 finding(s) of low severity or rated minor by Jev: .werkrevisor.toml:31-32, werkrevisor/pathjudge.py:100-103, werkrevisor/rules.py:246-249
  • hint model recommends merge with caution

Findings

  1. [medium] Doc claims settings.gradle.kts is judged, config does not at .werkrevisor.toml:31-32, hint, as a line comment

  2. [medium] Failed Jev call counted without tokens; cost and not_judged inconsistent at werkrevisor/pathjudge.py:100-103, hint, as a line comment

  3. [medium] Judged path reason check does not cover docs-category hard paths at werkrevisor/rules.py:246-249, hint, still open in an earlier line comment

Classifier

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

Usage: model `openrouter/anthropic/claude-sonnet-5.5`, LLM done, tokens counted before the call 78756, calls 1, tokens in 77675 / out 741 (reasoning included in out), duration 17.7 s, cost 0.1628 USD (reported), classifier `jev-1.13.0` calls 13, tokens in 11315, cost 0.0005 USD, finding judge `jev-1.13.0` calls 3, tokens in 4473, cost 0.0002 USD, config: defaults + host + repository (.werkrevisor.toml at base c48a7a4).
Reviewed head `69851379129173cce2abbf71cc8b6d6044904371` against base `c48a7a451393ba5a9584e2c5b678e60e81709b25`, werkrevisor 0.18.5.
<!-- werkrevisor:69851379129173cce2abbf71cc8b6d6044904371 --> <!-- werkrevisor-verdict:YELLOW --> <!-- werkrevisor-folded --> <details><summary>🟡 werkrevisor YELLOW for <code>6985137</code>, superseded by <a href="http://git.javagil.de/mi/werkrevisor/pulls/27#issuecomment-1241">the result for <code>dc84f19</code></a></summary> ## 🟡 werkrevisor: YELLOW / HUMAN_REVIEW Change kind: `mixed`. ### Reasons - **YELLOW** risky paths changed: .werkrevisor.toml (built in), server/build.gradle.kts (server/*.gradle.kts), werkrevisor/config.py (werkrevisor/config.py) - **YELLOW** the changed .werkrevisor.toml uses settings unknown to the installed werkrevisor 0.18.5: [hard_yellow] judged_paths, [path_judge]; deploy a version that knows them right after the merge, or every review will end with ERROR - **YELLOW** 2 changed files were given to the AI only as diff, not in full, so it could not check them against the rest of their file (each larger than [review] max_full_file_chars = 40000): werkrevisor/cli.py, werkrevisor/config.py - **hint** writing rules violated in the changed docs: docs/prs/2026-10-06-PR#27-judged-paths.md:152: line longer than 128 characters (130) - **hint** 3 finding(s) of low severity or rated minor by Jev: .werkrevisor.toml:31-32, werkrevisor/pathjudge.py:100-103, werkrevisor/rules.py:246-249 - **hint** model recommends merge with caution ### Findings 1. **[medium] Doc claims settings.gradle.kts is judged, config does not** at `.werkrevisor.toml:31-32`, hint, as a line comment 2. **[medium] Failed Jev call counted without tokens; cost and not_judged inconsistent** at `werkrevisor/pathjudge.py:100-103`, hint, as a line comment 3. **[medium] Judged path reason check does not cover docs-category hard paths** at `werkrevisor/rules.py:246-249`, hint, still open in [an earlier line comment](http://git.javagil.de/mi/werkrevisor/pulls/27#issuecomment-1229) ### Classifier 13 of 13 units passed all questions (1 PR document(s)). 5 answers ignored because of a confidence below [classifier] min_confidence. <sub> Usage: model `openrouter/anthropic/claude-sonnet-5.5`, LLM done, tokens counted before the call 78756, calls 1, tokens in 77675 / out 741 (reasoning included in out), duration 17.7 s, cost 0.1628 USD (reported), classifier `jev-1.13.0` calls 13, tokens in 11315, cost 0.0005 USD, finding judge `jev-1.13.0` calls 3, tokens in 4473, cost 0.0002 USD, config: defaults + host + repository (.werkrevisor.toml at base c48a7a4).<br> Reviewed head `69851379129173cce2abbf71cc8b6d6044904371` against base `c48a7a451393ba5a9584e2c5b678e60e81709b25`, werkrevisor 0.18.5. </sub> </details>
ai-reviewer left a comment
Collaborator

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

werkrevisor: YELLOW / HUMAN_REVIEW for `69851379129173cce2abbf71cc8b6d6044904371`. The result comment of werkrevisor holds the details. <!-- werkrevisor-review:69851379129173cce2abbf71cc8b6d6044904371 -->
@@ -29,1 +28,4 @@
# The Gradle wrapper decides which Gradle runs, so it stays hard; the build files themselves are judged by Jev.
"pyproject.toml", "requirements*.txt", "server/gradle/**", "server/gradlew*", "**/*secret*", "**/*.pem", "**/*.key", ".env*",
]
# Jev judges these: a version number or a new module gives GREEN, a weakened check ORANGE.
Collaborator

[medium] Doc claims settings.gradle.kts is judged, config does not (werkrevisor)

hint; Jev: real 0.48, severity 2.0 of 3

The PR document says werkrevisor moves server/*.gradle.kts and server/settings.gradle.kts to judged_paths. The config only sets judged_paths = ["server/*.gradle.kts"], and the glob server/*.gradle.kts does not match server/settings.gradle.kts (that name ends in .gradle.kts too, so it may match; the document still names it as a separate entry). The document and the config are inconsistent, so a reader cannot tell whether settings.gradle.kts is judged. Uncertain which is intended.

**[medium] Doc claims settings.gradle.kts is judged, config does not** (werkrevisor) hint; Jev: real 0.48, severity 2.0 of 3 The PR document says werkrevisor moves `server/*.gradle.kts` and `server/settings.gradle.kts` to `judged_paths`. The config only sets `judged_paths = ["server/*.gradle.kts"]`, and the glob `server/*.gradle.kts` does not match `server/settings.gradle.kts` (that name ends in `.gradle.kts` too, so it may match; the document still names it as a separate entry). The document and the config are inconsistent, so a reader cannot tell whether settings.gradle.kts is judged. Uncertain which is intended.
@@ -0,0 +97,4 @@
for unit, future in futures:
try:
answer = future.result()
except Exception as e:
Collaborator

[medium] Failed Jev call counted without tokens; cost and not_judged inconsistent (werkrevisor)

hint; Jev: real 0.70, severity 1.9 of 3

A unit that exceeds max_state_chars or whose Jev call raises is only listed as not judged. That is fine, but judge also counts run.calls += 1 for an exception, while usage_line and the usage record then show calls with 0 tokens. Harmless, but usage_records emits a record with null values for those units. Minor.

**[medium] Failed Jev call counted without tokens; cost and not_judged inconsistent** (werkrevisor) hint; Jev: real 0.70, severity 1.9 of 3 A unit that exceeds `max_state_chars` or whose Jev call raises is only listed as not judged. That is fine, but `judge` also counts `run.calls += 1` for an exception, while `usage_line` and the usage record then show calls with 0 tokens. Harmless, but `usage_records` emits a record with null values for those units. Minor.
Author
Collaborator

Assessment of the werkrevisor findings (as of the last commit):

Fixed:

  • pathjudge.py (ORANGE): a deleted file or a file without a text diff is no longer sent to Jev; it gives YELLOW judged_paths_not_judged. Tests added.
  • rules.py (ORANGE): a renamed judged file gives YELLOW as a risky path without Jev, since its diff does not show the move. Test added.
  • PR doc: the glob server/*.gradle.kts covers build.gradle.kts and settings.gradle.kts; the doc says so instead of naming them as two entries. The effect starts with the first PR after the merge, as .werkrevisor.toml is read at the base commit.
  • Writing hints: long lines wrapped, one sentence per line in the README.

Not changed:

  • pathjudge.py:100-103, a failed Jev call counts as a call with 0 tokens: intended, as in dbschema.py; the call happened and is billed by attempts, and the usage record shows the file with null values, which marks it as not judged.
  • rules.py:246-249, docs-category names are skipped for judged paths: the same rule as for [hard_yellow] paths, so a PR document named after a build file is no build file. A rename between a docs path and a judged path now gives YELLOW anyway.
  • YELLOW risky paths: .werkrevisor.toml, server/build.gradle.kts (version bump) and werkrevisor/config.py (new settings) need a human by design.
  • YELLOW unknown settings in .werkrevisor.toml: werkrevisor 0.19.0 is deployed right after the merge, before the next PR.
  • YELLOW cli.py and config.py given only as diff: the changes are the new section, its layering mode and its validation; tests cover them.

🤖 Generated with Claude Code

Assessment of the werkrevisor findings (as of the last commit): Fixed: - `pathjudge.py` (ORANGE): a deleted file or a file without a text diff is no longer sent to Jev; it gives YELLOW `judged_paths_not_judged`. Tests added. - `rules.py` (ORANGE): a renamed judged file gives YELLOW as a risky path without Jev, since its diff does not show the move. Test added. - PR doc: the glob `server/*.gradle.kts` covers `build.gradle.kts` and `settings.gradle.kts`; the doc says so instead of naming them as two entries. The effect starts with the first PR after the merge, as `.werkrevisor.toml` is read at the base commit. - Writing hints: long lines wrapped, one sentence per line in the README. Not changed: - `pathjudge.py:100-103`, a failed Jev call counts as a call with 0 tokens: intended, as in `dbschema.py`; the call happened and is billed by attempts, and the usage record shows the file with null values, which marks it as not judged. - `rules.py:246-249`, docs-category names are skipped for judged paths: the same rule as for `[hard_yellow] paths`, so a PR document named after a build file is no build file. A rename between a docs path and a judged path now gives YELLOW anyway. - YELLOW risky paths: `.werkrevisor.toml`, `server/build.gradle.kts` (version bump) and `werkrevisor/config.py` (new settings) need a human by design. - YELLOW unknown settings in `.werkrevisor.toml`: werkrevisor 0.19.0 is deployed right after the merge, before the next PR. - YELLOW `cli.py` and `config.py` given only as diff: the changes are the new section, its layering mode and its validation; tests cover them. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
mi added 1 commit 2026-10-06 13:12:02 +02:00
review: PR#27 doc names the build files that the glob covers
werkator build succeeded after 00:10
ai-review/assessment human review required; a human approval unlocks the merge; a human review request is pending; merge already scheduled
ai-review/gate build succeeded after 00:16
werkator/server build succeeded after 00:28
dc84f1966b
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Collaborator

🟡 werkrevisor: YELLOW / HUMAN_REVIEW

Change kind: mixed.

Reasons

  • YELLOW risky paths changed: .werkrevisor.toml (built in), server/build.gradle.kts (server/*.gradle.kts), werkrevisor/config.py (werkrevisor/config.py)
  • YELLOW the changed .werkrevisor.toml uses settings unknown to the installed werkrevisor 0.18.5: [hard_yellow] judged_paths, [path_judge]; deploy a version that knows them right after the merge, or every review will end with ERROR
  • YELLOW 2 changed files were given to the AI only as diff, not in full, so it could not check them against the rest of their file (each larger than [review] max_full_file_chars = 40000): werkrevisor/cli.py, werkrevisor/config.py
  • hint writing rules violated in the changed docs: docs/prs/2026-10-06-PR#27-judged-paths.md:154: line longer than 128 characters (179)
  • hint 3 finding(s) of low severity or rated minor by Jev: werkrevisor/rules.py:244-254, werkrevisor/pathjudge.py:100-103, docs/prs/2026-10-06-PR#27-judged-paths.md:45-51
  • hint model recommends merge with caution

Findings

  1. [medium] Renamed judged file with a docs-category name is not caught at werkrevisor/rules.py:244-254, hint, still open in an earlier line comment

  2. [medium] Failed Jev call counts one call and no tokens, hiding cost at werkrevisor/pathjudge.py:100-103, hint, still open in an earlier line comment

  3. [low] Scenario table differs from the test values at docs/prs/2026-10-06-PR#27-judged-paths.md:45-51, hint, as a line comment

Classifier

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

Usage: model `openrouter/anthropic/claude-sonnet-5.5`, LLM done, tokens counted before the call 78696, calls 1, tokens in 77629 / out 763 (reasoning included in out), duration 13.5 s, cost 0.1629 USD (reported), classifier `jev-1.13.0` calls 13, tokens in 11323, cost 0.0005 USD, finding judge `jev-1.13.0` calls 2, tokens in 3149, cost 0.0001 USD, config: defaults + host + repository (.werkrevisor.toml at base c48a7a4).
Reviewed head `dc84f1966b36332e90f60dde6da36f23960d2d97` against base `c48a7a451393ba5a9584e2c5b678e60e81709b25`, werkrevisor 0.18.5.
<!-- werkrevisor:dc84f1966b36332e90f60dde6da36f23960d2d97 --> <!-- werkrevisor-verdict:YELLOW --> ## 🟡 werkrevisor: YELLOW / HUMAN_REVIEW Change kind: `mixed`. ### Reasons - **YELLOW** risky paths changed: .werkrevisor.toml (built in), server/build.gradle.kts (server/*.gradle.kts), werkrevisor/config.py (werkrevisor/config.py) - **YELLOW** the changed .werkrevisor.toml uses settings unknown to the installed werkrevisor 0.18.5: [hard_yellow] judged_paths, [path_judge]; deploy a version that knows them right after the merge, or every review will end with ERROR - **YELLOW** 2 changed files were given to the AI only as diff, not in full, so it could not check them against the rest of their file (each larger than [review] max_full_file_chars = 40000): werkrevisor/cli.py, werkrevisor/config.py - **hint** writing rules violated in the changed docs: docs/prs/2026-10-06-PR#27-judged-paths.md:154: line longer than 128 characters (179) - **hint** 3 finding(s) of low severity or rated minor by Jev: werkrevisor/rules.py:244-254, werkrevisor/pathjudge.py:100-103, docs/prs/2026-10-06-PR#27-judged-paths.md:45-51 - **hint** model recommends merge with caution ### Findings 1. **[medium] Renamed judged file with a docs-category name is not caught** at `werkrevisor/rules.py:244-254`, hint, still open in [an earlier line comment](http://git.javagil.de/mi/werkrevisor/pulls/27#issuecomment-1229) 2. **[medium] Failed Jev call counts one call and no tokens, hiding cost** at `werkrevisor/pathjudge.py:100-103`, hint, still open in [an earlier line comment](http://git.javagil.de/mi/werkrevisor/pulls/27#issuecomment-1237) 3. **[low] Scenario table differs from the test values** at `docs/prs/2026-10-06-PR#27-judged-paths.md:45-51`, hint, as a line comment ### Classifier 13 of 13 units passed all questions (1 PR document(s)). 4 answers ignored because of a confidence below [classifier] min_confidence. <sub> Usage: model `openrouter/anthropic/claude-sonnet-5.5`, LLM done, tokens counted before the call 78696, calls 1, tokens in 77629 / out 763 (reasoning included in out), duration 13.5 s, cost 0.1629 USD (reported), classifier `jev-1.13.0` calls 13, tokens in 11323, cost 0.0005 USD, finding judge `jev-1.13.0` calls 2, tokens in 3149, cost 0.0001 USD, config: defaults + host + repository (.werkrevisor.toml at base c48a7a4).<br> Reviewed head `dc84f1966b36332e90f60dde6da36f23960d2d97` against base `c48a7a451393ba5a9584e2c5b678e60e81709b25`, werkrevisor 0.18.5. </sub>
ai-reviewer left a comment
Collaborator

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

werkrevisor: YELLOW / HUMAN_REVIEW for `dc84f1966b36332e90f60dde6da36f23960d2d97`. The result comment of werkrevisor holds the details. <!-- werkrevisor-review:dc84f1966b36332e90f60dde6da36f23960d2d97 -->
@@ -0,0 +42,4 @@
- **and** Jev answers `<weakens>` for "weakens checks" and `<risk>` for the build risk
- **Then** the path gives `<color>`
| change | weakens | risk | color |
Collaborator

[low] Scenario table differs from the test values (werkrevisor)

hint

Scenario#27.01 lists weakens 0.97 and risk 2.76 for ignoreFailures, risk 1.27 for buildInfo(), and a YELLOW case of 0.15/1.90. The test uses 0.98/2.70, 1.30 and 0.18/1.93. The doc is labelled as examples, but the "Verified by" link implies the test covers these values.

**[low] Scenario table differs from the test values** (werkrevisor) hint Scenario#27.01 lists weakens 0.97 and risk 2.76 for `ignoreFailures`, risk 1.27 for `buildInfo()`, and a YELLOW case of 0.15/1.90. The test uses 0.98/2.70, 1.30 and 0.18/1.93. The doc is labelled as examples, but the "Verified by" link implies the test covers these values.
mi approved these changes 2026-10-06 13:13:23 +02:00
ai-reviewer merged commit f5852232e0 into main 2026-10-06 13:13:26 +02:00
ai-reviewer deleted branch claude-code/judged-paths 2026-10-06 13:13:26 +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#27