Mutation tests in each build, in full each night #64

Merged
ai-reviewer merged 6 commits from claude-code/mutation-tests into main 2026-10-14 12:06:17 +02:00
Collaborator

Mutation tests with PIT and werkcrappit: pitestPartial in each build, pitestFull in a nightly build, as in hs.admin.ng.

See the PR document under doc/prs/.

🤖 Generated with Claude Code

Mutation tests with PIT and werkcrappit: `pitestPartial` in each build, `pitestFull` in a nightly build, as in hs.admin.ng. See the PR document under `doc/prs/`. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
claude-code added 1 commit 2026-10-14 07:23:48 +02:00
PR document: mutation tests in each build, in full each night
werkator build succeeded after 00:44
werkator/dependencies build succeeded after 00:15
f99d473a27
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
claude-code added 1 commit 2026-10-14 11:12:43 +02:00
Mutation tests in each build, in full each night
werkator build failed after 00:29
werkator/dependencies build failed after 00:13
b977c5ae2a
pitestPartial mutates the classes a branch changes against the merge base
with origin/main, limit 15; the nightly build mutation runs pitestFull on
all of main with a ratchet from today's highest value, 1806.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
claude-code added 1 commit 2026-10-14 11:15:03 +02:00
Gradle runs on Temurin 25, since werkcrappit's plugin needs Java 21
werkator build succeeded after 01:42
werkator/dependencies build succeeded after 00:26
ai-review/assessment AI findings; a developer approval after checking them unlocks the merge; review requested from mi; merge scheduled for when the checks succeed
ai-review/gate build succeeded after 04:30
09f59aabf3
Werkator starts Gradle with the host's Java 17.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
claude-code marked the pull request as ready for review 2026-10-14 11:17:54 +02:00
Collaborator
🟠 werkrevisor ORANGE for 09f59aa, superseded by the result for 460e0fa

🟠 werkrevisor: ORANGE / FINDINGS

Change kind: mixed.

Reasons

  • ORANGE spec: doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.01 implementation_details (0.87 > red_above = 0.85)
  • YELLOW risky build changes according to Jev: .werkator.yml (weakens checks 0.12, risk 1.90, security 0.02), dashboard/build.gradle.kts (weakens checks 0.12, risk 2.41, security 0.02), dashboard/gradle/gradle-daemon-jvm.properties (weakens checks 0.03, risk 1.77, security 0.02) and 1 more
  • YELLOW spec: doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.01 hard_to_read (0.62 > yellow_above = 0.5)
  • YELLOW spec: doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.02 hard_to_read (0.62 > yellow_above = 0.5)
  • YELLOW spec: doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.02 implementation_details (0.83 > yellow_above = 0.6)
  • YELLOW spec: doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.03 implementation_details (0.70 > yellow_above = 0.6)
  • YELLOW spec: doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.04 hard_to_read (0.68 > yellow_above = 0.5)
  • YELLOW spec: doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.04 implementation_details (0.83 > yellow_above = 0.6)
  • YELLOW spec: doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.04 given_when_then_misused (0.64 > yellow_above = 0.6)
  • YELLOW spec: doc/prs/2026-10-14-PR#64-mutation-tests.md section 'Follow-up PRs' hard_to_understand (0.68 > yellow_above = 0.5)

Classifier

Unit Question Problem Confidence Verdict
doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.01 hard_to_read 0.62 0.74 YELLOW
doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.01 implementation_details 0.87 – ORANGE
doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.02 hard_to_read 0.62 0.76 YELLOW
doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.02 implementation_details 0.83 – YELLOW
doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.03 implementation_details 0.70 – YELLOW
doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.04 hard_to_read 0.68 0.82 YELLOW
doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.04 implementation_details 0.83 – YELLOW
doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.04 given_when_then_misused 0.64 – YELLOW
doc/prs/2026-10-14-PR#64-mutation-tests.md section 'Follow-up PRs' hard_to_understand 0.68 0.65 YELLOW

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

Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 18319, calls 1, tokens in 17654 / out 24845 (reasoning included in out), duration 264.0 s, cost 0.0351 USD (reported), classifier `jev-1.13.0` calls 10, tokens in 8289, cost 0.0003 USD, build file judge `jev-1.13.0` calls 4, tokens in 4697, cost 0.0002 USD, phases: path_judge 0.2 s, classifier 0.6 s, context 1.5 s, model_review 261.1 s, config: defaults + host + repository (.werkrevisor.toml at main 2768a9a).
Reviewed head `09f59aabf3a55e7fd4c40b41117708f3b8407614` against base `2768a9af8791af4969392ee3347894f6b653517d`, werkrevisor 0.41.2.
<!-- werkrevisor:09f59aabf3a55e7fd4c40b41117708f3b8407614 --> <!-- werkrevisor-verdict:ORANGE --> <!-- werkrevisor-blocks:8a9cf26df4fcfa65c572d9273f89a722,20b3d4da91705145cf7f174b7383dd5b,fa9adb0c72dce88cd6457692ebe0e916,f8e1fac3a87f01bdc3b19d266cbd9ef8,aac7c18e00ed40be8fa2886dfcbe4b56,0756b77484fa28c0060f578f010e8720,caa4935c7867a4ce72284c18a276f310,bbdaf245298bf05a200aa0b1f96f3f02,ef443785ca47227e6de420f66bdfa8bd,8fe5f744c7413979c1a502e8fb29e1cb,41e214a26b999aaca9132d24ee4e0afa,a219b92b6466da704822e9b08db4e195,f56408afb4b212fbe5e445d5d02464ad,26ec1a0c26100bcbfd856b3ca12862d2,a188babfdcc2171a7bb4ad3f88d8fb90 --> <!-- werkrevisor-folded --> <details><summary>🟠 werkrevisor ORANGE for <code>09f59aa</code>, superseded by <a href="http://git.javagil.de/mi/werkregie/pulls/64#issuecomment-5306">the result for <code>460e0fa</code></a></summary> ## 🟠 werkrevisor: ORANGE / FINDINGS Change kind: `mixed`. ### Reasons - **ORANGE** spec: doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.01 implementation_details (0.87 > red_above = 0.85) - **YELLOW** risky build changes according to Jev: .werkator.yml (weakens checks 0.12, risk 1.90, security 0.02), dashboard/build.gradle.kts (weakens checks 0.12, risk 2.41, security 0.02), dashboard/gradle/gradle-daemon-jvm.properties (weakens checks 0.03, risk 1.77, security 0.02) and 1 more - **YELLOW** spec: doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.01 hard_to_read (0.62 > yellow_above = 0.5) - **YELLOW** spec: doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.02 hard_to_read (0.62 > yellow_above = 0.5) - **YELLOW** spec: doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.02 implementation_details (0.83 > yellow_above = 0.6) - **YELLOW** spec: doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.03 implementation_details (0.70 > yellow_above = 0.6) - **YELLOW** spec: doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.04 hard_to_read (0.68 > yellow_above = 0.5) - **YELLOW** spec: doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.04 implementation_details (0.83 > yellow_above = 0.6) - **YELLOW** spec: doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.04 given_when_then_misused (0.64 > yellow_above = 0.6) - **YELLOW** spec: doc/prs/2026-10-14-PR#64-mutation-tests.md section 'Follow-up PRs' hard_to_understand (0.68 > yellow_above = 0.5) ### Classifier | Unit | Question | Problem | Confidence | Verdict | |---|---|---|---|---| | doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.01 | hard_to_read | 0.62 | 0.74 | YELLOW | | doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.01 | implementation_details | 0.87 | – | ORANGE | | doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.02 | hard_to_read | 0.62 | 0.76 | YELLOW | | doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.02 | implementation_details | 0.83 | – | YELLOW | | doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.03 | implementation_details | 0.70 | – | YELLOW | | doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.04 | hard_to_read | 0.68 | 0.82 | YELLOW | | doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.04 | implementation_details | 0.83 | – | YELLOW | | doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.04 | given_when_then_misused | 0.64 | – | YELLOW | | doc/prs/2026-10-14-PR#64-mutation-tests.md section 'Follow-up PRs' | hard_to_understand | 0.68 | 0.65 | YELLOW | 5 of 10 units passed all questions (1 PR document(s)). 3 answers ignored because of a confidence below [classifier] min_confidence. <sub> Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 18319, calls 1, tokens in 17654 / out 24845 (reasoning included in out), duration 264.0 s, cost 0.0351 USD (reported), classifier `jev-1.13.0` calls 10, tokens in 8289, cost 0.0003 USD, build file judge `jev-1.13.0` calls 4, tokens in 4697, cost 0.0002 USD, phases: path_judge 0.2 s, classifier 0.6 s, context 1.5 s, model_review 261.1 s, config: defaults + host + repository (.werkrevisor.toml at main 2768a9a).<br> Reviewed head `09f59aabf3a55e7fd4c40b41117708f3b8407614` against base `2768a9af8791af4969392ee3347894f6b653517d`, werkrevisor 0.41.2. </sub> </details>
ai-reviewer scheduled this pull request to auto merge when all checks succeed 2026-10-14 11:22:28 +02:00
ai-reviewer requested review from mi 2026-10-14 11:22:28 +02:00
claude-code added 1 commit 2026-10-14 11:23:09 +02:00
PR document: scenarios describe behaviour, not the tasks
werkator build succeeded after 01:53
werkator/dependencies build succeeded after 00:39
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 07:13
460e0fabda
Review of werkrevisor on 09f59aa: implementation details and hard to read.

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

🟡 werkrevisor: YELLOW / HUMAN_REVIEW

Change kind: mixed.

Reasons

  • YELLOW risky build changes according to Jev: .werkator.yml (weakens checks 0.14, risk 1.92, security 0.02), dashboard/build.gradle.kts (weakens checks 0.13, risk 2.44, security 0.02), dashboard/gradle/gradle-daemon-jvm.properties (weakens checks 0.03, risk 1.74, security 0.02) and 1 more
  • YELLOW spec: doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.01 hard_to_read (0.54 > yellow_above = 0.5)
  • YELLOW spec: doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.01 implementation_details (0.85 > yellow_above = 0.6)
  • YELLOW spec: doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.02 hard_to_read (0.62 > yellow_above = 0.5)
  • YELLOW spec: doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.02 implementation_details (0.85 > yellow_above = 0.6)
  • YELLOW spec: doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.04 hard_to_read (0.53 > yellow_above = 0.5)
  • YELLOW spec: doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.04 given_when_then_misused (0.62 > yellow_above = 0.6)
  • hint 2 finding(s) of low severity or rated minor by Jev: .werkator.yml:22-23, doc/prs/2026-10-14-PR#64-mutation-tests.md:29-39
  • hint model recommends merge with caution

Findings

  1. Daemon JVM Setup Ineffective at .werkator.yml:22-23, severity unknown, counted as medium, hint, as a line comment

  2. Scenario Contradicts Verification at doc/prs/2026-10-14-PR#64-mutation-tests.md:29-39, severity unknown, counted as medium, hint, as a line comment

Classifier

Unit Question Problem Confidence Verdict
doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.01 hard_to_read 0.54 0.58 YELLOW
doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.01 implementation_details 0.85 – YELLOW
doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.02 hard_to_read 0.62 0.77 YELLOW
doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.02 implementation_details 0.85 – YELLOW
doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.04 hard_to_read 0.53 0.53 YELLOW
doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.04 given_when_then_misused 0.62 – YELLOW

7 of 10 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 18148, calls 1, tokens in 17490 / out 36198 (reasoning included in out), duration 427.2 s, cost 0.0487 USD (reported), classifier `jev-1.13.0` calls 10, tokens in 8267, cost 0.0003 USD, finding judge `jev-1.13.0` calls 2, tokens in 4379, cost 0.0002 USD, build file judge `jev-1.13.0` calls 4, tokens in 4697, cost 0.0002 USD, phases: path_judge 0.3 s, classifier 0.6 s, context 0.3 s, model_review 425.1 s, finding_judge 0.3 s, config: defaults + host + repository (.werkrevisor.toml at main 2768a9a).
Reviewed head `460e0fabdadfced45a3a0bd4bd126a3cb1f63c2b` against base `2768a9af8791af4969392ee3347894f6b653517d`, werkrevisor 0.41.2.
<!-- werkrevisor:460e0fabdadfced45a3a0bd4bd126a3cb1f63c2b --> <!-- werkrevisor-verdict:YELLOW --> <!-- werkrevisor-blocks:8a9cf26df4fcfa65c572d9273f89a722,20b3d4da91705145cf7f174b7383dd5b,fa9adb0c72dce88cd6457692ebe0e916,f8e1fac3a87f01bdc3b19d266cbd9ef8,aac7c18e00ed40be8fa2886dfcbe4b56,0756b77484fa28c0060f578f010e8720,caa4935c7867a4ce72284c18a276f310,bbdaf245298bf05a200aa0b1f96f3f02,ef443785ca47227e6de420f66bdfa8bd,8fe5f744c7413979c1a502e8fb29e1cb,41e214a26b999aaca9132d24ee4e0afa,25a75d8138e96fd9bc3b03f54f6d1015,f56408afb4b212fbe5e445d5d02464ad,26ec1a0c26100bcbfd856b3ca12862d2,a188babfdcc2171a7bb4ad3f88d8fb90 --> <!-- werkrevisor-folded --> <details><summary>🟡 werkrevisor YELLOW for <code>460e0fa</code>, superseded by <a href="http://git.javagil.de/mi/werkregie/pulls/64#issuecomment-5314">the result for <code>d00b31e</code></a></summary> ## 🟡 werkrevisor: YELLOW / HUMAN_REVIEW Change kind: `mixed`. ### Reasons - **YELLOW** risky build changes according to Jev: .werkator.yml (weakens checks 0.14, risk 1.92, security 0.02), dashboard/build.gradle.kts (weakens checks 0.13, risk 2.44, security 0.02), dashboard/gradle/gradle-daemon-jvm.properties (weakens checks 0.03, risk 1.74, security 0.02) and 1 more - **YELLOW** spec: doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.01 hard_to_read (0.54 > yellow_above = 0.5) - **YELLOW** spec: doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.01 implementation_details (0.85 > yellow_above = 0.6) - **YELLOW** spec: doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.02 hard_to_read (0.62 > yellow_above = 0.5) - **YELLOW** spec: doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.02 implementation_details (0.85 > yellow_above = 0.6) - **YELLOW** spec: doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.04 hard_to_read (0.53 > yellow_above = 0.5) - **YELLOW** spec: doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.04 given_when_then_misused (0.62 > yellow_above = 0.6) - **hint** 2 finding(s) of low severity or rated minor by Jev: .werkator.yml:22-23, doc/prs/2026-10-14-PR#64-mutation-tests.md:29-39 - **hint** model recommends merge with caution ### Findings 1. **Daemon JVM Setup Ineffective** at `.werkator.yml:22-23`, severity unknown, counted as medium, hint, as a line comment 2. **Scenario Contradicts Verification** at `doc/prs/2026-10-14-PR#64-mutation-tests.md:29-39`, severity unknown, counted as medium, hint, as a line comment ### Classifier | Unit | Question | Problem | Confidence | Verdict | |---|---|---|---|---| | doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.01 | hard_to_read | 0.54 | 0.58 | YELLOW | | doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.01 | implementation_details | 0.85 | – | YELLOW | | doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.02 | hard_to_read | 0.62 | 0.77 | YELLOW | | doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.02 | implementation_details | 0.85 | – | YELLOW | | doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.04 | hard_to_read | 0.53 | 0.53 | YELLOW | | doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.04 | given_when_then_misused | 0.62 | – | YELLOW | 7 of 10 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 18148, calls 1, tokens in 17490 / out 36198 (reasoning included in out), duration 427.2 s, cost 0.0487 USD (reported), classifier `jev-1.13.0` calls 10, tokens in 8267, cost 0.0003 USD, finding judge `jev-1.13.0` calls 2, tokens in 4379, cost 0.0002 USD, build file judge `jev-1.13.0` calls 4, tokens in 4697, cost 0.0002 USD, phases: path_judge 0.3 s, classifier 0.6 s, context 0.3 s, model_review 425.1 s, finding_judge 0.3 s, config: defaults + host + repository (.werkrevisor.toml at main 2768a9a).<br> Reviewed head `460e0fabdadfced45a3a0bd4bd126a3cb1f63c2b` against base `2768a9af8791af4969392ee3347894f6b653517d`, werkrevisor 0.41.2. </sub> </details>
ai-reviewer left a comment
Collaborator

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

werkrevisor: YELLOW / HUMAN_REVIEW for `460e0fabdadfced45a3a0bd4bd126a3cb1f63c2b`. The result comment of werkrevisor holds the details. <!-- werkrevisor-review:460e0fabdadfced45a3a0bd4bd126a3cb1f63c2b -->
@@ -19,12 +19,15 @@ watcher:
builds:
# The gradle wrapper is committed, so the build environment needs a JDK
# and nothing else; Foojay loads the Temurin 25 of the toolchain (ADR 0001).
# Gradle itself runs on it too, by dashboard/gradle/gradle-daemon-jvm.properties:
Collaborator

Daemon JVM Setup Ineffective, severity unknown, counted as medium (werkrevisor)

hint; Jev: real 0.82, severity 2.3 of 3

The comment claims Gradle runs on Temurin 25 via dashboard/gradle/gradle-daemon-jvm.properties because the host's Java 17 is too old for werkcrappit. But every Werkator build command in this file uses --no-daemon, which bypasses the daemon JVM entirely: Gradle then runs on the launching JVM, i.e. the host's Java. The PR doc claims the same (lines 89-90). Werkator's nightly "mutation" build reportedly succeeded (Scenario#64.04 in the PR doc), so the host may have Java 25 or werkcrappit may tolerate Java 17, but the comment, the gradle-daemon-jvm.properties file, and the buildCommand's --no-daemon flag do not hang together; either --no-daemon must be dropped (so the daemon actually uses Temurin 25) or the comment and the properties file must be removed.

**Daemon JVM Setup Ineffective**, severity unknown, counted as medium (werkrevisor) hint; Jev: real 0.82, severity 2.3 of 3 The comment claims Gradle runs on Temurin 25 via dashboard/gradle/gradle-daemon-jvm.properties because the host's Java 17 is too old for werkcrappit. But every Werkator build command in this file uses --no-daemon, which bypasses the daemon JVM entirely: Gradle then runs on the launching JVM, i.e. the host's Java. The PR doc claims the same (lines 89-90). Werkator's nightly "mutation" build reportedly succeeded (Scenario#64.04 in the PR doc), so the host may have Java 25 or werkcrappit may tolerate Java 17, but the comment, the gradle-daemon-jvm.properties file, and the buildCommand's --no-daemon flag do not hang together; either --no-daemon must be dropped (so the daemon actually uses Temurin 25) or the comment and the properties file must be removed.
claude-code marked this conversation as resolved
@@ -0,0 +26,4 @@
### Feature: mutation tests in each build, in full each night
#### Scenario#64.01: a branch build judges only the classes the branch changes
Collaborator

Scenario Contradicts Verification, severity unknown, counted as medium (werkrevisor)

hint; Jev: real 0.87, severity 2.0 of 3

Scenario#64.01 states "Given a branch that changes only the class Summaries" and "Then the build judges the Mutation-CRAP of the methods of Summaries only", yet the manual verification reports "8 classes, 77 mutants" for a changed Summaries.kt. The changedClasses logic in build.gradle.kts extracts every top-level declaration plus the file class from each changed Kotlin file, so all classes in the file (eight of them) are mutated, not only Summaries. The scenario's Then clause contradicts both the verification and the implementation.

**Scenario Contradicts Verification**, severity unknown, counted as medium (werkrevisor) hint; Jev: real 0.87, severity 2.0 of 3 Scenario#64.01 states "Given a branch that changes only the class `Summaries`" and "Then the build judges the Mutation-CRAP of the methods of `Summaries` only", yet the manual verification reports "8 classes, 77 mutants" for a changed Summaries.kt. The changedClasses logic in build.gradle.kts extracts every top-level declaration plus the file class from each changed Kotlin file, so all classes in the file (eight of them) are mutated, not only Summaries. The scenario's Then clause contradicts both the verification and the implementation.
claude-code marked this conversation as resolved
claude-code added 1 commit 2026-10-14 11:31:48 +02:00
PR document: a branch build judges the classes of the changed files
werkator build succeeded after 01:54
werkator/dependencies build succeeded after 00:43
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 11:10
d00b31e3c5
Review of werkrevisor on 460e0fa: Summaries.kt holds three classes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@@ -19,12 +19,15 @@ watcher:
builds:
# The gradle wrapper is committed, so the build environment needs a JDK
# and nothing else; Foojay loads the Temurin 25 of the toolchain (ADR 0001).
# Gradle itself runs on it too, by dashboard/gradle/gradle-daemon-jvm.properties:
Author
Collaborator

Not a defect, no change. With --no-daemon, Gradle 9 still honours gradle/gradle-daemon-jvm.properties: it forks a single-use daemon on the JVM the criteria name.
Werkator's log of 09f59aa shows it: "To honour the JVM settings for this build a single-use Daemon process will be forked."
Before that file, the same build failed on the host's Java 17: "Dependency requires at least JVM runtime version 21. This build uses a Java 17 JVM." (build of b977c5a).
The nightly build mutation has not run yet; Scenario#64.04 names it as a verification to come.

Not a defect, no change. With `--no-daemon`, Gradle 9 still honours `gradle/gradle-daemon-jvm.properties`: it forks a single-use daemon on the JVM the criteria name. Werkator's log of `09f59aa` shows it: "To honour the JVM settings for this build a single-use Daemon process will be forked." Before that file, the same build failed on the host's Java 17: "Dependency requires at least JVM runtime version 21. This build uses a Java 17 JVM." (build of `b977c5a`). The nightly build `mutation` has not run yet; Scenario#64.04 names it as a verification to come.
@@ -0,0 +26,4 @@
### Feature: mutation tests in each build, in full each night
#### Scenario#64.01: a branch build judges only the files the branch changes
Author
Collaborator

Fixed in d00b31e: Scenario#64.01 and #64.02 name the file Summaries.kt and its three classes Summarizer, ChatSummarizer and Summaries; the verification says that PIT selected these and their nested classes.

Fixed in `d00b31e`: Scenario#64.01 and #64.02 name the file `Summaries.kt` and its three classes `Summarizer`, `ChatSummarizer` and `Summaries`; the verification says that PIT selected these and their nested classes.
Collaborator
🟡 werkrevisor YELLOW for d00b31e, superseded by the result for 5db4caa

🟡 werkrevisor: YELLOW / HUMAN_REVIEW

Change kind: mixed.

Reasons

  • YELLOW risky build changes according to Jev: .werkator.yml (weakens checks 0.12, risk 1.91, security 0.02), dashboard/build.gradle.kts (weakens checks 0.15, risk 2.46, security 0.02), dashboard/gradle/gradle-daemon-jvm.properties (weakens checks 0.03, risk 1.77, security 0.02) and 1 more
  • YELLOW spec: doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.01 hard_to_read (0.58 > yellow_above = 0.5)
  • YELLOW spec: doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.01 implementation_details (0.84 > yellow_above = 0.6)
  • YELLOW spec: doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.02 hard_to_read (0.62 > yellow_above = 0.5)
  • YELLOW spec: doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.02 implementation_details (0.80 > yellow_above = 0.6)
  • YELLOW spec: doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.04 hard_to_read (0.51 > yellow_above = 0.5)
  • YELLOW spec: doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.04 implementation_details (0.63 > yellow_above = 0.6)
  • YELLOW spec: doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.04 given_when_then_misused (0.62 > yellow_above = 0.6)
  • hint 1 finding(s) of low severity or rated minor by Jev: doc/prs/2026-10-14-PR#64-mutation-tests.md:33-35

Findings

  1. Scenario wording omits nested classes at doc/prs/2026-10-14-PR#64-mutation-tests.md:33-35, severity unknown, counted as medium, hint, as a line comment

Classifier

Unit Question Problem Confidence Verdict
doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.01 hard_to_read 0.58 0.69 YELLOW
doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.01 implementation_details 0.84 – YELLOW
doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.02 hard_to_read 0.62 0.77 YELLOW
doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.02 implementation_details 0.80 – YELLOW
doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.04 hard_to_read 0.51 0.48 YELLOW
doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.04 implementation_details 0.63 – YELLOW
doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.04 given_when_then_misused 0.62 – YELLOW

7 of 10 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 18220, calls 1, tokens in 17559 / out 31884 (reasoning included in out), duration 665.6 s, cost 0.0435 USD (reported), classifier `jev-1.13.0` calls 10, tokens in 8305, cost 0.0003 USD, finding judge `jev-1.13.0` calls 1, tokens in 2170, cost 0.0001 USD, build file judge `jev-1.13.0` calls 4, tokens in 4697, cost 0.0002 USD, phases: path_judge 0.2 s, classifier 0.7 s, context 0.5 s, model_review 663.2 s, finding_judge 0.4 s, config: defaults + host + repository (.werkrevisor.toml at main 2768a9a).
Reviewed head `d00b31e3c553e1e013ba72544c24482b293326ca` against base `2768a9af8791af4969392ee3347894f6b653517d`, werkrevisor 0.41.2.
<!-- werkrevisor:d00b31e3c553e1e013ba72544c24482b293326ca --> <!-- werkrevisor-verdict:YELLOW --> <!-- werkrevisor-blocks:8a9cf26df4fcfa65c572d9273f89a722,20b3d4da91705145cf7f174b7383dd5b,fa9adb0c72dce88cd6457692ebe0e916,f8e1fac3a87f01bdc3b19d266cbd9ef8,aac7c18e00ed40be8fa2886dfcbe4b56,0756b77484fa28c0060f578f010e8720,caa4935c7867a4ce72284c18a276f310,bbdaf245298bf05a200aa0b1f96f3f02,ef443785ca47227e6de420f66bdfa8bd,8fe5f744c7413979c1a502e8fb29e1cb,41e214a26b999aaca9132d24ee4e0afa,de6b576243d2cd44999d609bbbbf8c4e,f56408afb4b212fbe5e445d5d02464ad,26ec1a0c26100bcbfd856b3ca12862d2,a188babfdcc2171a7bb4ad3f88d8fb90 --> <!-- werkrevisor-folded --> <details><summary>🟡 werkrevisor YELLOW for <code>d00b31e</code>, superseded by <a href="http://git.javagil.de/mi/werkregie/pulls/64#issuecomment-5322">the result for <code>5db4caa</code></a></summary> ## 🟡 werkrevisor: YELLOW / HUMAN_REVIEW Change kind: `mixed`. ### Reasons - **YELLOW** risky build changes according to Jev: .werkator.yml (weakens checks 0.12, risk 1.91, security 0.02), dashboard/build.gradle.kts (weakens checks 0.15, risk 2.46, security 0.02), dashboard/gradle/gradle-daemon-jvm.properties (weakens checks 0.03, risk 1.77, security 0.02) and 1 more - **YELLOW** spec: doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.01 hard_to_read (0.58 > yellow_above = 0.5) - **YELLOW** spec: doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.01 implementation_details (0.84 > yellow_above = 0.6) - **YELLOW** spec: doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.02 hard_to_read (0.62 > yellow_above = 0.5) - **YELLOW** spec: doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.02 implementation_details (0.80 > yellow_above = 0.6) - **YELLOW** spec: doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.04 hard_to_read (0.51 > yellow_above = 0.5) - **YELLOW** spec: doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.04 implementation_details (0.63 > yellow_above = 0.6) - **YELLOW** spec: doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.04 given_when_then_misused (0.62 > yellow_above = 0.6) - **hint** 1 finding(s) of low severity or rated minor by Jev: doc/prs/2026-10-14-PR#64-mutation-tests.md:33-35 ### Findings 1. **Scenario wording omits nested classes** at `doc/prs/2026-10-14-PR#64-mutation-tests.md:33-35`, severity unknown, counted as medium, hint, as a line comment ### Classifier | Unit | Question | Problem | Confidence | Verdict | |---|---|---|---|---| | doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.01 | hard_to_read | 0.58 | 0.69 | YELLOW | | doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.01 | implementation_details | 0.84 | – | YELLOW | | doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.02 | hard_to_read | 0.62 | 0.77 | YELLOW | | doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.02 | implementation_details | 0.80 | – | YELLOW | | doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.04 | hard_to_read | 0.51 | 0.48 | YELLOW | | doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.04 | implementation_details | 0.63 | – | YELLOW | | doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.04 | given_when_then_misused | 0.62 | – | YELLOW | 7 of 10 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 18220, calls 1, tokens in 17559 / out 31884 (reasoning included in out), duration 665.6 s, cost 0.0435 USD (reported), classifier `jev-1.13.0` calls 10, tokens in 8305, cost 0.0003 USD, finding judge `jev-1.13.0` calls 1, tokens in 2170, cost 0.0001 USD, build file judge `jev-1.13.0` calls 4, tokens in 4697, cost 0.0002 USD, phases: path_judge 0.2 s, classifier 0.7 s, context 0.5 s, model_review 663.2 s, finding_judge 0.4 s, config: defaults + host + repository (.werkrevisor.toml at main 2768a9a).<br> Reviewed head `d00b31e3c553e1e013ba72544c24482b293326ca` against base `2768a9af8791af4969392ee3347894f6b653517d`, werkrevisor 0.41.2. </sub> </details>
ai-reviewer left a comment
Collaborator

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

werkrevisor: YELLOW / HUMAN_REVIEW for `d00b31e3c553e1e013ba72544c24482b293326ca`. The result comment of werkrevisor holds the details. <!-- werkrevisor-review:d00b31e3c553e1e013ba72544c24482b293326ca -->
@@ -0,0 +30,4 @@
&hellip; so that the mutation tests fit into each branch build.
- **Given** a branch that changes only the file `Summaries.kt`, with the classes `Summarizer`, `ChatSummarizer` and `Summaries`
Collaborator

Scenario wording omits nested classes, severity unknown, counted as medium (werkrevisor)

hint; Jev: real 0.84, severity 1.4 of 3

Scenario#64.01's Given names only the three top-level classes in Summaries.kt (Summarizer, ChatSummarizer, Summaries), and its Then states the build judges "the methods of these three classes only". The implementation (and the same scenario's verification) actually judges eight classes: the three top-level ones and their nested ones. A strict reading of "only" excludes the nested classes and contradicts what the code does. The Given should mention that nested classes are also included, or the Then should say "of these three top-level classes and their nested ones only".

**Scenario wording omits nested classes**, severity unknown, counted as medium (werkrevisor) hint; Jev: real 0.84, severity 1.4 of 3 Scenario#64.01's Given names only the three top-level classes in `Summaries.kt` (Summarizer, ChatSummarizer, Summaries), and its Then states the build judges "the methods of these three classes only". The implementation (and the same scenario's verification) actually judges eight classes: the three top-level ones and their nested ones. A strict reading of "only" excludes the nested classes and contradicts what the code does. The Given should mention that nested classes are also included, or the Then should say "of these three top-level classes and their nested ones only".
claude-code marked this conversation as resolved
@@ -0,0 +30,4 @@
&hellip; so that the mutation tests fit into each branch build.
- **Given** a branch that changes only the file `Summaries.kt`
Author
Collaborator

Fixed in 5db4caa: the Then names the methods in Summaries.kt, nested classes included.

Fixed in `5db4caa`: the Then names the methods in `Summaries.kt`, nested classes included.
claude-code added 1 commit 2026-10-14 11:43:29 +02:00
PR document: Scenario#64.01 names the file, nested classes included
werkator build succeeded after 01:36
werkator/dependencies build succeeded after 00:32
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 06:40
5db4caaedf
Review of werkrevisor on d00b31e.

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

🟡 werkrevisor: YELLOW / HUMAN_REVIEW

Change kind: mixed.

Reasons

  • YELLOW risky build changes according to Jev: .werkator.yml (weakens checks 0.13, risk 1.90, security 0.02), dashboard/build.gradle.kts (weakens checks 0.13, risk 2.43, security 0.02), dashboard/gradle/gradle-daemon-jvm.properties (weakens checks 0.03, risk 1.79, security 0.03) and 1 more
  • YELLOW spec: doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.01 hard_to_read (0.60 > yellow_above = 0.5)
  • YELLOW spec: doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.01 implementation_details (0.79 > yellow_above = 0.6)
  • YELLOW spec: doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.02 hard_to_read (0.60 > yellow_above = 0.5)
  • YELLOW spec: doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.02 implementation_details (0.81 > yellow_above = 0.6)

Classifier

Unit Question Problem Confidence Verdict
doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.01 hard_to_read 0.60 0.70 YELLOW
doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.01 implementation_details 0.79 – YELLOW
doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.02 hard_to_read 0.60 0.75 YELLOW
doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.02 implementation_details 0.81 – YELLOW

8 of 10 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 18085, calls 1, tokens in 17434 / out 32718 (reasoning included in out), duration 392.2 s, cost 0.0445 USD (reported), classifier `jev-1.13.0` calls 10, tokens in 8279, cost 0.0003 USD, build file judge `jev-1.13.0` calls 4, tokens in 4697, cost 0.0002 USD, phases: path_judge 0.3 s, classifier 0.7 s, context 1.7 s, model_review 389.1 s, config: defaults + host + repository (.werkrevisor.toml at main 2768a9a).
Reviewed head `5db4caaedf4686b0b64493e510677b882f5fac45` against base `2768a9af8791af4969392ee3347894f6b653517d`, werkrevisor 0.41.2.
<!-- werkrevisor:5db4caaedf4686b0b64493e510677b882f5fac45 --> <!-- werkrevisor-verdict:YELLOW --> <!-- werkrevisor-blocks:8a9cf26df4fcfa65c572d9273f89a722,20b3d4da91705145cf7f174b7383dd5b,fa9adb0c72dce88cd6457692ebe0e916,f8e1fac3a87f01bdc3b19d266cbd9ef8,aac7c18e00ed40be8fa2886dfcbe4b56,0756b77484fa28c0060f578f010e8720,caa4935c7867a4ce72284c18a276f310,bbdaf245298bf05a200aa0b1f96f3f02,ef443785ca47227e6de420f66bdfa8bd,8fe5f744c7413979c1a502e8fb29e1cb,41e214a26b999aaca9132d24ee4e0afa,615e2bd10308168c3f9fc42a30a36a2e,f56408afb4b212fbe5e445d5d02464ad,26ec1a0c26100bcbfd856b3ca12862d2,a188babfdcc2171a7bb4ad3f88d8fb90 --> ## 🟡 werkrevisor: YELLOW / HUMAN_REVIEW Change kind: `mixed`. ### Reasons - **YELLOW** risky build changes according to Jev: .werkator.yml (weakens checks 0.13, risk 1.90, security 0.02), dashboard/build.gradle.kts (weakens checks 0.13, risk 2.43, security 0.02), dashboard/gradle/gradle-daemon-jvm.properties (weakens checks 0.03, risk 1.79, security 0.03) and 1 more - **YELLOW** spec: doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.01 hard_to_read (0.60 > yellow_above = 0.5) - **YELLOW** spec: doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.01 implementation_details (0.79 > yellow_above = 0.6) - **YELLOW** spec: doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.02 hard_to_read (0.60 > yellow_above = 0.5) - **YELLOW** spec: doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.02 implementation_details (0.81 > yellow_above = 0.6) ### Classifier | Unit | Question | Problem | Confidence | Verdict | |---|---|---|---|---| | doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.01 | hard_to_read | 0.60 | 0.70 | YELLOW | | doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.01 | implementation_details | 0.79 | – | YELLOW | | doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.02 | hard_to_read | 0.60 | 0.75 | YELLOW | | doc/prs/2026-10-14-PR#64-mutation-tests.md Scenario#64.02 | implementation_details | 0.81 | – | YELLOW | 8 of 10 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 18085, calls 1, tokens in 17434 / out 32718 (reasoning included in out), duration 392.2 s, cost 0.0445 USD (reported), classifier `jev-1.13.0` calls 10, tokens in 8279, cost 0.0003 USD, build file judge `jev-1.13.0` calls 4, tokens in 4697, cost 0.0002 USD, phases: path_judge 0.3 s, classifier 0.7 s, context 1.7 s, model_review 389.1 s, config: defaults + host + repository (.werkrevisor.toml at main 2768a9a).<br> Reviewed head `5db4caaedf4686b0b64493e510677b882f5fac45` against base `2768a9af8791af4969392ee3347894f6b653517d`, werkrevisor 0.41.2. </sub>
mi approved these changes 2026-10-14 12:06:15 +02:00
ai-reviewer merged commit ae59358778 into main 2026-10-14 12:06:17 +02:00
ai-reviewer deleted branch claude-code/mutation-tests 2026-10-14 12:06:17 +02:00
Sign in to join this conversation.
No labels
3 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: mi/werkregie#64