werkrevisor 0.20.4: Gradle build files reach the model #35

Merged
ai-reviewer merged 4 commits from claude-code/gradle-files-reviewed into main 2026-10-06 17:25:19 +02:00
Collaborator

See the PR doc.

🤖 Generated with Claude Code

See [the PR doc](docs/prs/2026-10-06-PR%2335-gradle-files-reach-the-model.md). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
claude-code added 1 commit 2026-10-06 17:17:58 +02:00
docs: PR#35 doc, Gradle build files reach the model
werkator build succeeded after 01:34
werkator/werkrevisor-statistics build succeeded after 00:50
dc50f94a43
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
claude-code marked the pull request as ready for review 2026-10-06 17:19:28 +02:00
mi added 1 commit 2026-10-06 17:19:29 +02:00
werkrevisor 0.20.4: Gradle build files reach the model
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 00:39
werkator build succeeded after 00:10
werkator/werkrevisor-statistics build succeeded after 00:32
a59d494d0a
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Collaborator
🟡 werkrevisor YELLOW for a59d494, superseded by the result for fdc6231

🟡 werkrevisor: YELLOW / HUMAN_REVIEW

Change kind: mixed.

Reasons

  • YELLOW spec: docs/prs/2026-10-06-PR#35-gradle-files-reach-the-model.md Scenario#35.01 implementation_details (0.62 > yellow_above = 0.6)
  • YELLOW 1 finding(s) possibly severe, but Jev doubts that they are real: werkrevisor/review.py:71
  • hint 1 build change(s) of low risk according to Jev: statistics/build.gradle.kts (weakens checks 0.02, risk 0.00)
  • hint 1 finding(s) of low severity or rated minor by Jev: docs/prs/2026-10-06-PR#35-gradle-files-reach-the-model.md:30
  • hint model recommends merge with caution

Findings

  1. [medium] Settings read before they are applied at werkrevisor/review.py:71, YELLOW, as a line comment

  2. [low] Scenario text is unclear at docs/prs/2026-10-06-PR#35-gradle-files-reach-the-model.md:30, hint, as a line comment

Classifier

Unit Question Problem Confidence Verdict
docs/prs/2026-10-06-PR#35-gradle-files-reach-the-model.md Scenario#35.01 implementation_details 0.62 – YELLOW

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

Usage: model `openrouter/anthropic/claude-sonnet-5.5`, LLM done, tokens counted before the call 25447, calls 1, tokens in 25713 / out 615 (reasoning included in out), duration 35.4 s, cost 0.0576 USD (reported), classifier `jev-1.13.0` calls 5, tokens in 3679, cost 0.0002 USD, finding judge `jev-1.13.0` calls 1, tokens in 1501, cost 0.0001 USD, build file judge `jev-1.13.0` calls 1, tokens in 560, cost 0.0000 USD, config: defaults + host + repository (.werkrevisor.toml at base d7f7f2f).
Reviewed head `a59d494d0a1a1eaf9d0f14dd9d61ab613add4fb6` against base `d7f7f2f7fb65ac53389a8cb22994ec33ec9b6cc6`, werkrevisor 0.20.3.
<!-- werkrevisor:a59d494d0a1a1eaf9d0f14dd9d61ab613add4fb6 --> <!-- werkrevisor-verdict:YELLOW --> <!-- werkrevisor-folded --> <details><summary>🟡 werkrevisor YELLOW for <code>a59d494</code>, superseded by <a href="http://git.javagil.de/mi/werkrevisor/pulls/35#issuecomment-1530">the result for <code>fdc6231</code></a></summary> ## 🟡 werkrevisor: YELLOW / HUMAN_REVIEW Change kind: `mixed`. ### Reasons - **YELLOW** spec: docs/prs/2026-10-06-PR#35-gradle-files-reach-the-model.md Scenario#35.01 implementation_details (0.62 > yellow_above = 0.6) - **YELLOW** 1 finding(s) possibly severe, but Jev doubts that they are real: werkrevisor/review.py:71 - **hint** 1 build change(s) of low risk according to Jev: statistics/build.gradle.kts (weakens checks 0.02, risk 0.00) - **hint** 1 finding(s) of low severity or rated minor by Jev: docs/prs/2026-10-06-PR#35-gradle-files-reach-the-model.md:30 - **hint** model recommends merge with caution ### Findings 1. **[medium] Settings read before they are applied** at `werkrevisor/review.py:71`, YELLOW, as a line comment 2. **[low] Scenario text is unclear** at `docs/prs/2026-10-06-PR#35-gradle-files-reach-the-model.md:30`, hint, as a line comment ### Classifier | Unit | Question | Problem | Confidence | Verdict | |---|---|---|---|---| | docs/prs/2026-10-06-PR#35-gradle-files-reach-the-model.md Scenario#35.01 | implementation_details | 0.62 | – | YELLOW | 4 of 5 units passed all questions (1 PR document(s)). 1 answer ignored because of a confidence below [classifier] min_confidence. <sub> Usage: model `openrouter/anthropic/claude-sonnet-5.5`, LLM done, tokens counted before the call 25447, calls 1, tokens in 25713 / out 615 (reasoning included in out), duration 35.4 s, cost 0.0576 USD (reported), classifier `jev-1.13.0` calls 5, tokens in 3679, cost 0.0002 USD, finding judge `jev-1.13.0` calls 1, tokens in 1501, cost 0.0001 USD, build file judge `jev-1.13.0` calls 1, tokens in 560, cost 0.0000 USD, config: defaults + host + repository (.werkrevisor.toml at base d7f7f2f).<br> Reviewed head `a59d494d0a1a1eaf9d0f14dd9d61ab613add4fb6` against base `d7f7f2f7fb65ac53389a8cb22994ec33ec9b6cc6`, werkrevisor 0.20.3. </sub> </details>
ai-reviewer left a comment
Collaborator

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

werkrevisor: YELLOW / HUMAN_REVIEW for `a59d494d0a1a1eaf9d0f14dd9d61ab613add4fb6`. The result comment of werkrevisor holds the details. <!-- werkrevisor-review:a59d494d0a1a1eaf9d0f14dd9d61ab613add4fb6 -->
@@ -0,0 +27,4 @@
#### Scenario#35.01: a changed Gradle file is in the prompt of the model
So that the model reviews the build code it depends on.
Collaborator

[low] Scenario text is unclear (werkrevisor)

hint

The So that line of Scenario#35.01 says the model reviews "the build code it depends on". The model does not depend on build code, so the sentence is unclear. Say that the model reviews the changed build code.
The classifier also rated this scenario as implementation details; the Given/Then steps are fine, but the rationale line is the vague part.

**[low] Scenario text is unclear** (werkrevisor) hint The `So that` line of Scenario#35.01 says the model reviews "the build code it depends on". The model does not depend on build code, so the sentence is unclear. Say that the model reviews the changed build code. The classifier also rated this scenario as implementation details; the Given/Then steps are fine, but the rationale line is the vague part.
Author
Collaborator

Fixed in fdc6231: the So-that names what the model reviews (dependencies, repositories, plugins); title and Then no longer speak of the prompt.

Fixed in fdc6231: the So-that names what the model reviews (dependencies, repositories, plugins); title and Then no longer speak of the prompt.
claude-code marked this conversation as resolved
@@ -68,6 +68,7 @@ def pr_agent_settings(config, pr, gitea_token, openrouter_key, extra_instruction
"pr_description.enable_large_pr_handling": False,
"pr_description.max_ai_calls": 1,
"model_routing.enable": False,
"bad_extensions.default": reviewer_bad_extensions(),
Collaborator

[medium] Settings read before they are applied (werkrevisor)

YELLOW; Jev: real 0.52, severity 2.6 of 3

pr_agent_settings calls reviewer_bad_extensions(), which reads get_settings().bad_extensions.default, to build the forced values. apply_settings then writes the filtered list back into the same key.
If pr_agent_settings or apply_settings runs twice in one process, the second run filters an already filtered list, which is harmless. But is_reviewable_by_pr_agent also reads the live settings. If it runs before apply_settings, or in a process where the settings were never forced, it reads whatever the settings hold at that point.
A repository or global settings file could change that list. The "forced settings" invariant in the pr_agent_settings docstring is therefore weakened for this key, because the value derives from mutable state instead of a constant.

**[medium] Settings read before they are applied** (werkrevisor) YELLOW; Jev: real 0.52, severity 2.6 of 3 `pr_agent_settings` calls `reviewer_bad_extensions()`, which reads `get_settings().bad_extensions.default`, to build the forced values. `apply_settings` then writes the filtered list back into the same key. If `pr_agent_settings` or `apply_settings` runs twice in one process, the second run filters an already filtered list, which is harmless. But `is_reviewable_by_pr_agent` also reads the live settings. If it runs before `apply_settings`, or in a process where the settings were never forced, it reads whatever the settings hold at that point. A repository or global settings file could change that list. The "forced settings" invariant in the `pr_agent_settings` docstring is therefore weakened for this key, because the value derives from mutable state instead of a constant.
Author
Collaborator

Fixed in fdc6231: reviewer_bad_extensions reads the list once from language_extensions.toml shipped with PR-Agent, no longer from the live settings; test_reviewability_does_not_follow_changed_settings failed before and passes now.

Fixed in fdc6231: `reviewer_bad_extensions` reads the list once from `language_extensions.toml` shipped with PR-Agent, no longer from the live settings; `test_reviewability_does_not_follow_changed_settings` failed before and passes now.
claude-code marked this conversation as resolved
ai-reviewer scheduled this pull request to auto merge when all checks succeed 2026-10-06 17:20:18 +02:00
ai-reviewer requested review from mi 2026-10-06 17:20:18 +02:00
Author
Collaborator

Answer to the review of a59d494 (YELLOW):

  • YELLOW werkrevisor/review.py:71 (settings read before they are applied): fixed in fdc6231, thread resolved.
  • YELLOW spec Scenario#35.01 implementation_details and hint on its wording: fixed in fdc6231, thread resolved.
  • hint build change statistics/build.gradle.kts: only the version bump.
Answer to the review of `a59d494` (YELLOW): - YELLOW `werkrevisor/review.py:71` (settings read before they are applied): fixed in fdc6231, thread resolved. - YELLOW spec Scenario#35.01 `implementation_details` and hint on its wording: fixed in fdc6231, thread resolved. - hint build change `statistics/build.gradle.kts`: only the version bump.
mi added 1 commit 2026-10-06 17:22:26 +02:00
review: the reviewable extensions come from the file shipped with PR-Agent; Scenario#35.01 without prompt details
werkator build succeeded after 00:09
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:12
werkator/werkrevisor-statistics build succeeded after 00:28
fdc62318df
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Collaborator
🟡 werkrevisor YELLOW for fdc6231, superseded by the result for 9d0a32c

🟡 werkrevisor: YELLOW / HUMAN_REVIEW

Change kind: mixed.

Reasons

  • YELLOW spec: docs/prs/2026-10-06-PR#35-gradle-files-reach-the-model.md Scenario#35.01 vague_then (0.66 > yellow_above = 0.6)
  • hint 1 build change(s) of low risk according to Jev: statistics/build.gradle.kts (weakens checks 0.02, risk 0.00)
  • hint 3 finding(s) of low severity or rated minor by Jev: docs/prs/2026-10-06-PR#35-gradle-files-reach-the-model.md:17, docs/prs/2026-10-06-PR#35-gradle-files-reach-the-model.md:34, werkrevisor/review.py:353-364
  • hint model recommends merge with caution

Findings

  1. [medium] Doc contradicts code on Kotlin Gradle files at docs/prs/2026-10-06-PR#35-gradle-files-reach-the-model.md:17, hint, as a line comment

  2. [low] Vague Then clause in scenario at docs/prs/2026-10-06-PR#35-gradle-files-reach-the-model.md:34, hint, as a line comment

  3. [low] Missing blank line before comment and wrong order of definitions at werkrevisor/review.py:353-364, hint, as a line comment

Classifier

Unit Question Problem Confidence Verdict
docs/prs/2026-10-06-PR#35-gradle-files-reach-the-model.md Scenario#35.01 vague_then 0.66 – YELLOW

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

Usage: model `openrouter/anthropic/claude-sonnet-5.5`, LLM done, tokens counted before the call 26360, calls 1, tokens in 26714 / out 663 (reasoning included in out), duration 10.9 s, cost 0.0601 USD (reported), classifier `jev-1.13.0` calls 5, tokens in 3652, cost 0.0002 USD, finding judge `jev-1.13.0` calls 1, tokens in 1224, cost 0.0001 USD, build file judge `jev-1.13.0` calls 1, tokens in 560, cost 0.0000 USD, config: defaults + host + repository (.werkrevisor.toml at base d7f7f2f).
Reviewed head `fdc62318df3b3884464db2dcffb88f70c906f23b` against base `d7f7f2f7fb65ac53389a8cb22994ec33ec9b6cc6`, werkrevisor 0.20.3.
<!-- werkrevisor:fdc62318df3b3884464db2dcffb88f70c906f23b --> <!-- werkrevisor-verdict:YELLOW --> <!-- werkrevisor-folded --> <details><summary>🟡 werkrevisor YELLOW for <code>fdc6231</code>, superseded by <a href="http://git.javagil.de/mi/werkrevisor/pulls/35#issuecomment-1540">the result for <code>9d0a32c</code></a></summary> ## 🟡 werkrevisor: YELLOW / HUMAN_REVIEW Change kind: `mixed`. ### Reasons - **YELLOW** spec: docs/prs/2026-10-06-PR#35-gradle-files-reach-the-model.md Scenario#35.01 vague_then (0.66 > yellow_above = 0.6) - **hint** 1 build change(s) of low risk according to Jev: statistics/build.gradle.kts (weakens checks 0.02, risk 0.00) - **hint** 3 finding(s) of low severity or rated minor by Jev: docs/prs/2026-10-06-PR#35-gradle-files-reach-the-model.md:17, docs/prs/2026-10-06-PR#35-gradle-files-reach-the-model.md:34, werkrevisor/review.py:353-364 - **hint** model recommends merge with caution ### Findings 1. **[medium] Doc contradicts code on Kotlin Gradle files** at `docs/prs/2026-10-06-PR#35-gradle-files-reach-the-model.md:17`, hint, as a line comment 2. **[low] Vague Then clause in scenario** at `docs/prs/2026-10-06-PR#35-gradle-files-reach-the-model.md:34`, hint, as a line comment 3. **[low] Missing blank line before comment and wrong order of definitions** at `werkrevisor/review.py:353-364`, hint, as a line comment ### Classifier | Unit | Question | Problem | Confidence | Verdict | |---|---|---|---|---| | docs/prs/2026-10-06-PR#35-gradle-files-reach-the-model.md Scenario#35.01 | vague_then | 0.66 | – | YELLOW | 4 of 5 units passed all questions (1 PR document(s)). 1 answer ignored because of a confidence below [classifier] min_confidence. <sub> Usage: model `openrouter/anthropic/claude-sonnet-5.5`, LLM done, tokens counted before the call 26360, calls 1, tokens in 26714 / out 663 (reasoning included in out), duration 10.9 s, cost 0.0601 USD (reported), classifier `jev-1.13.0` calls 5, tokens in 3652, cost 0.0002 USD, finding judge `jev-1.13.0` calls 1, tokens in 1224, cost 0.0001 USD, build file judge `jev-1.13.0` calls 1, tokens in 560, cost 0.0000 USD, config: defaults + host + repository (.werkrevisor.toml at base d7f7f2f).<br> Reviewed head `fdc62318df3b3884464db2dcffb88f70c906f23b` against base `d7f7f2f7fb65ac53389a8cb22994ec33ec9b6cc6`, werkrevisor 0.20.3. </sub> </details>
ai-reviewer left a comment
Collaborator

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

werkrevisor: YELLOW / HUMAN_REVIEW for `fdc62318df3b3884464db2dcffb88f70c906f23b`. The result comment of werkrevisor holds the details. <!-- werkrevisor-review:fdc62318df3b3884464db2dcffb88f70c906f23b -->
@@ -0,0 +14,4 @@
Gradle files are build code: they hold dependencies, repositories and plugins,
which a review must see.
`build.gradle.kts` is not affected, since its extension is `kts`.
Collaborator

[medium] Doc contradicts code on Kotlin Gradle files (werkrevisor)

hint; Jev: real 0.60, severity 2.1 of 3

The doc says build.gradle.kts is not affected because its extension is kts. The new integration test lists build.gradle.kts as reviewable, but that is not evidence that the unchanged code handles it, and the PR changes statistics/build.gradle.kts itself. The Problem section and test list do not state how the claim is verified, so the doc is unclear about whether the test confirms it.

**[medium] Doc contradicts code on Kotlin Gradle files** (werkrevisor) hint; Jev: real 0.60, severity 2.1 of 3 The doc says `build.gradle.kts` is not affected because its extension is `kts`. The new integration test lists `build.gradle.kts` as reviewable, but that is not evidence that the unchanged code handles it, and the PR changes `statistics/build.gradle.kts` itself. The Problem section and test list do not state how the claim is verified, so the doc is unclear about whether the test confirms it.
Author
Collaborator

Clarified in 9d0a32c: build.gradle.kts was never in the list, since its extension is kts; test_gradle_files_are_reviewable_but_binary_files_are_not covers it as reviewable.

Clarified in 9d0a32c: `build.gradle.kts` was never in the list, since its extension is `kts`; `test_gradle_files_are_reviewable_but_binary_files_are_not` covers it as reviewable.
claude-code marked this conversation as resolved
@@ -0,0 +31,4 @@
- **Given** a PR that changes `settings.gradle` and `src/a.py`
- **When** werkrevisor reviews the PR
- **Then** the model reviews the changes of both files
Collaborator

[low] Vague Then clause in scenario (werkrevisor)

hint

The Then step "the model reviews the changes of both files" is vague: the test only checks that the files appear in the prompt, not that the model reviews them. Say "both files appear in the model prompt". The classifier also rated this scenario as vague.

**[low] Vague Then clause in scenario** (werkrevisor) hint The Then step "the model reviews the changes of both files" is vague: the test only checks that the files appear in the prompt, not that the model reviews them. Say "both files appear in the model prompt". The classifier also rated this scenario as vague.
Author
Collaborator

Changed in 9d0a32c: the Then names both files. It stays at what the model gets, not at what a test sees in the prompt, since the previous round rated the prompt wording as implementation detail.

Changed in 9d0a32c: the Then names both files. It stays at what the model gets, not at what a test sees in the prompt, since the previous round rated the prompt wording as implementation detail.
claude-code marked this conversation as resolved
@@ -347,6 +350,20 @@ def run_model_review(config, pr, gitea_token, openrouter_key, extra_instructions
)
# PR-Agent lists these among binary formats, but they hold build code that a review must see.
Collaborator

[low] Missing blank line before comment and wrong order of definitions (werkrevisor)

hint

pr_agent_settings calls reviewer_bad_extensions(), which is defined at the end of the module, after run_model_review. This works at runtime but separates related helpers and makes the file harder to follow. Move the definition above pr_agent_settings.

**[low] Missing blank line before comment and wrong order of definitions** (werkrevisor) hint `pr_agent_settings` calls `reviewer_bad_extensions()`, which is defined at the end of the module, after `run_model_review`. This works at runtime but separates related helpers and makes the file harder to follow. Move the definition above `pr_agent_settings`.
Author
Collaborator

Fixed in 9d0a32c: REVIEWED_EXTENSIONS and reviewer_bad_extensions now precede pr_agent_settings.

Fixed in 9d0a32c: `REVIEWED_EXTENSIONS` and `reviewer_bad_extensions` now precede `pr_agent_settings`.
claude-code marked this conversation as resolved
mi added 1 commit 2026-10-06 17:24:01 +02:00
review: the extension helpers precede pr_agent_settings; Scenario#35.01 names both files in its Then
werkator/werkrevisor-statistics build succeeded after 00:26
werkator build succeeded after 00:09
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 00:01
9d0a32c2c0
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Author
Collaborator

Answer to the review of fdc6231 (YELLOW):

  • YELLOW spec Scenario#35.01 vague_then and its hint: the Then names both files in 9d0a32c, thread resolved.
  • hint doc on build.gradle.kts: clarified in 9d0a32c, thread resolved.
  • hint order of definitions in werkrevisor/review.py: fixed in 9d0a32c, thread resolved.
  • hint build change statistics/build.gradle.kts: only the version bump.
Answer to the review of `fdc6231` (YELLOW): - YELLOW spec Scenario#35.01 `vague_then` and its hint: the Then names both files in 9d0a32c, thread resolved. - hint doc on `build.gradle.kts`: clarified in 9d0a32c, thread resolved. - hint order of definitions in `werkrevisor/review.py`: fixed in 9d0a32c, thread resolved. - hint build change `statistics/build.gradle.kts`: only the version bump.
Collaborator

🟢 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 1 build change(s) of low risk according to Jev: statistics/build.gradle.kts (weakens checks 0.02, risk 0.00)
  • hint 2 finding(s) of low severity or rated minor by Jev: docs/prs/2026-10-06-PR#35-gradle-files-reach-the-model.md:17, werkrevisor/review.py:35-42
  • hint model recommends merge with caution

Findings

  1. [medium] Doc contradicts code on build.gradle.kts at docs/prs/2026-10-06-PR#35-gradle-files-reach-the-model.md:17, hint, as a line comment

  2. [medium] Failure mode of reading the shipped TOML at werkrevisor/review.py:35-42, hint, as a line comment

Classifier

5 of 5 units passed all questions (1 PR document(s)).

Usage: model `openrouter/anthropic/claude-sonnet-5.5`, LLM done, tokens counted before the call 26304, calls 1, tokens in 26680 / out 619 (reasoning included in out), duration 10.8 s, cost 0.0595 USD (reported), classifier `jev-1.13.0` calls 5, tokens in 3679, cost 0.0002 USD, finding judge `jev-1.13.0` calls 2, tokens in 2764, cost 0.0001 USD, build file judge `jev-1.13.0` calls 1, tokens in 560, cost 0.0000 USD, config: defaults + host + repository (.werkrevisor.toml at base d7f7f2f).
Reviewed head `9d0a32c2c0a09e7ff0145bdf11292f3895d083a4` against base `d7f7f2f7fb65ac53389a8cb22994ec33ec9b6cc6`, werkrevisor 0.20.3.
<!-- werkrevisor:9d0a32c2c0a09e7ff0145bdf11292f3895d083a4 --> <!-- werkrevisor-verdict:GREEN --> ## 🟢 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** 1 build change(s) of low risk according to Jev: statistics/build.gradle.kts (weakens checks 0.02, risk 0.00) - **hint** 2 finding(s) of low severity or rated minor by Jev: docs/prs/2026-10-06-PR#35-gradle-files-reach-the-model.md:17, werkrevisor/review.py:35-42 - **hint** model recommends merge with caution ### Findings 1. **[medium] Doc contradicts code on build.gradle.kts** at `docs/prs/2026-10-06-PR#35-gradle-files-reach-the-model.md:17`, hint, as a line comment 2. **[medium] Failure mode of reading the shipped TOML** at `werkrevisor/review.py:35-42`, hint, as a line comment ### Classifier 5 of 5 units passed all questions (1 PR document(s)). <sub> Usage: model `openrouter/anthropic/claude-sonnet-5.5`, LLM done, tokens counted before the call 26304, calls 1, tokens in 26680 / out 619 (reasoning included in out), duration 10.8 s, cost 0.0595 USD (reported), classifier `jev-1.13.0` calls 5, tokens in 3679, cost 0.0002 USD, finding judge `jev-1.13.0` calls 2, tokens in 2764, cost 0.0001 USD, build file judge `jev-1.13.0` calls 1, tokens in 560, cost 0.0000 USD, config: defaults + host + repository (.werkrevisor.toml at base d7f7f2f).<br> Reviewed head `9d0a32c2c0a09e7ff0145bdf11292f3895d083a4` against base `d7f7f2f7fb65ac53389a8cb22994ec33ec9b6cc6`, werkrevisor 0.20.3. </sub>
ai-reviewer left a comment
Collaborator

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

werkrevisor: GREEN / PASS for `9d0a32c2c0a09e7ff0145bdf11292f3895d083a4`. The result comment of werkrevisor holds the details. <!-- werkrevisor-review:9d0a32c2c0a09e7ff0145bdf11292f3895d083a4 -->
@@ -0,0 +14,4 @@
Gradle files are build code: they hold dependencies, repositories and plugins,
which a review must see.
`build.gradle.kts` was not affected, since its extension is `kts`; the tests below cover it too.
Collaborator

[medium] Doc contradicts code on build.gradle.kts (werkrevisor)

hint; Jev: real 0.74, severity 2.0 of 3

The doc says build.gradle.kts "was not affected, since its extension is kts" and that the tests cover it. The test list only includes a build.gradle.kts case in is_reviewable_by_pr_agent. The doc mentions no test that sends it through the prompt. Also, kts is not verified to be absent from PR-Agent's bad_extensions; the claim rests on an unverified assumption. Suggest checking that kts is absent and stating this precisely.

**[medium] Doc contradicts code on build.gradle.kts** (werkrevisor) hint; Jev: real 0.74, severity 2.0 of 3 The doc says `build.gradle.kts` "was not affected, since its extension is `kts`" and that the tests cover it. The test list only includes a `build.gradle.kts` case in `is_reviewable_by_pr_agent`. The doc mentions no test that sends it through the prompt. Also, `kts` is not verified to be absent from PR-Agent's `bad_extensions`; the claim rests on an unverified assumption. Suggest checking that `kts` is absent and stating this precisely.
Author
Collaborator

Checked in the pinned PR-Agent 0.47.0 image: kts is neither in bad_extensions.default nor in extra. is_reviewable_by_pr_agent("build.gradle.kts") returning True in the test is exactly that check, since reviewability only depends on that list. Not changed.

Checked in the pinned PR-Agent 0.47.0 image: `kts` is neither in `bad_extensions.default` nor in `extra`. `is_reviewable_by_pr_agent("build.gradle.kts")` returning True in the test is exactly that check, since reviewability only depends on that list. Not changed.
claude-code marked this conversation as resolved
@@ -29,0 +32,4 @@
REVIEWED_EXTENSIONS = frozenset({"gradle"})
@functools.cache
Collaborator

[medium] Failure mode of reading the shipped TOML (werkrevisor)

hint; Jev: real 0.72, severity 2.0 of 3

reviewer_bad_extensions reads a private file path inside PR-Agent (settings/language_extensions.toml) and the bad_extensions.default key. If the layout differs, it raises FileNotFoundError or KeyError at settings build time. This happens before any model call and fails the whole run, and no test covers this error path. The path is fixed to 0.47.0 and the PR-Agent image is pinned, so the realistic impact is limited. The test test_every_forced_setting_exists_in_pr_agent does exercise the happy path.

**[medium] Failure mode of reading the shipped TOML** (werkrevisor) hint; Jev: real 0.72, severity 2.0 of 3 `reviewer_bad_extensions` reads a private file path inside PR-Agent (`settings/language_extensions.toml`) and the `bad_extensions.default` key. If the layout differs, it raises `FileNotFoundError` or `KeyError` at settings build time. This happens before any model call and fails the whole run, and no test covers this error path. The path is fixed to 0.47.0 and the PR-Agent image is pinned, so the realistic impact is limited. The test `test_every_forced_setting_exists_in_pr_agent` does exercise the happy path.
Author
Collaborator

Not changed, on purpose: the image is pinned by digest, and the test suite reads the file in every run (test_gradle_files_are_reviewable_but_binary_files_are_not), so a changed layout fails the build of the upgrade PR. At runtime, a missing file fails the review before any model call, which is the safe direction.

Not changed, on purpose: the image is pinned by digest, and the test suite reads the file in every run (`test_gradle_files_are_reviewable_but_binary_files_are_not`), so a changed layout fails the build of the upgrade PR. At runtime, a missing file fails the review before any model call, which is the safe direction.
claude-code marked this conversation as resolved
ai-reviewer canceled auto merging this pull request when all checks succeed 2026-10-06 17:24:18 +02:00
Author
Collaborator

Answer to the review of 9d0a32c (GREEN, merge held for 2 hints):

  • hint PR doc on build.gradle.kts: verified that kts is no bad extension of PR-Agent 0.47.0; not changed, resolved.
  • hint failure mode of reading the shipped TOML: the pinned image and the tests catch a changed layout; not changed, resolved.

Restarting the review to release the merge.

Answer to the review of `9d0a32c` (GREEN, merge held for 2 hints): - hint PR doc on `build.gradle.kts`: verified that `kts` is no bad extension of PR-Agent 0.47.0; not changed, resolved. - hint failure mode of reading the shipped TOML: the pinned image and the tests catch a changed layout; not changed, resolved. Restarting the review to release the merge.
ai-reviewer scheduled this pull request to auto merge when all checks succeed 2026-10-06 17:25:17 +02:00
ai-reviewer removed review request for mi 2026-10-06 17:25:17 +02:00
Collaborator

werkrevisor, review restarted for 9d0a32c2c0a09e7ff0145bdf11292f3895d083a4: approved by werkrevisor; merge scheduled for when the checks succeed; review request of mi withdrawn.

werkrevisor, review restarted for `9d0a32c2c0a09e7ff0145bdf11292f3895d083a4`: approved by werkrevisor; merge scheduled for when the checks succeed; review request of mi withdrawn.
ai-reviewer merged commit 93b3979350 into main 2026-10-06 17:25:19 +02:00
ai-reviewer deleted branch claude-code/gradle-files-reviewed 2026-10-06 17:25:19 +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#35