A small shop in `werkprobe.shop` that shows each colour of werkcrappit's code city, structure page and matrix once, built every night by Werkator.
See `docs/prs/2026-10-11-PR#14-shop-demo.md`.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
hint 23 changed file(s) that neither weaken the checks, touch security nor show a risk category of jvm-spring-backend according to Jev
hint 3 finding(s) of low severity or rated minor by Jev: docs/prs/2026-10-11-PR#14-shop-demo.md:55-59, README.md:223-233, .werkator.yml:52-61
hint model recommends changes before merge
Findings
[medium] Doc contradicts code at docs/prs/2026-10-11-PR#14-shop-demo.md:55-59, hint, as a line comment
[medium] README claims untested measures at README.md:223-233
hint; Jev: real 0.57, severity 1.5 of 3
The README table states exact values (Mutation-CRAP 42 "no test at all", change risk 168), yet CatalogTest does cover restock and reserve. reorderQuantity is untested, which matches the claim, but the stated numbers cannot be verified from the diff. The Shipping row is also misaligned in the Markdown table (extra padding). The numbers depend on the werkcrappit run and may drift.
[low] Shared log files in a shared worktree at .werkator.yml:52-61, hint, as a line comment
6 of 7 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 34798, calls 1, tokens in 34924 / out 712 (reasoning included in out), duration 19.7 s, cost 0.0770 USD (reported), classifier `jev-1.13.0` calls 7, tokens in 5348, cost 0.0002 USD, finding judge `jev-1.13.0` calls 2, tokens in 3611, cost 0.0002 USD, build file judge `jev-1.13.0` calls 26, tokens in 23009, cost 0.0010 USD, phases: path_judge 1.5 s, classifier 0.5 s, context 0.8 s, model_review 16.3 s, finding_judge 0.4 s, config: defaults + host + repository (.werkrevisor.toml at main c33f77e).
Reviewed head `e67475a0ebf93e4d7971963b02257d83a2117f1c` against base `c33f77e23e7ef0367a3c93c85d75a396fa2da2ab`, werkrevisor 0.32.7.
<!-- werkrevisor:e67475a0ebf93e4d7971963b02257d83a2117f1c -->
<!-- werkrevisor-verdict:YELLOW -->
<!-- werkrevisor-blocks:e1bc0117da26ec42e087287f2c0debfc,92442402e9f533acc4945b0119cd615f,79d727f249c2122fc2e25297a63ffdc8,85323e480f71af2dbe70959da30136b5,45937a89e1d330f7201ed31d5283880d,963c5ebad137a918ce50b5789d0a4621,035178a1529df80efd1fa5b224df503d,6bec16ff9f839c9a00b5fe215cef26ed,3d9cbfa5140a120d18de691ae2891750,9f603f1785e23fb66eff858bf6eaf247,d7579cc8a23a60da38e723bfea74d7d2,a4df11c3f23a6f362a16a4f9de6cb042,ca95c41e7ec46e0912ad0dc57cf4682f,fb79e06b73d602bfc4cce0d7a7a56a7c,ecece431898b20aab250db9e5f9ca478,ad209aadd466dd8b6868ebfa48a44816,63a65bcbb71b585af15f52230e3b1f56,5880f3652e3a4906627e17b851b27810,2b9946c23c852fab4f3ef17f33d6e7c7,eb7d7e01a2bd6ecc95f81e69a42b4408,2ff23b9f0979e6f8353b8af3a5cfd423,154f435cff2d397c77ed02db05b681e1,23ff0e7e42adeda820830f9b07f650b9,7d4c2e0f7a9725b5e1d594dabdf64a22,ad694fb527fe291b96efc3ad0f785061,5b8eed44b39634ad86428accabca0e78,fe03c66af642159890934236742d0cb1,3572365df10b3361a87a15c0a4e01aac,a97b930f9c222c5b0342f705d87d1a60,05909894b9df8f2861768c956204a7bb,40d5b2be7509a1262ff5486b10283119,0bfdbb1c0376a339f2c29bfe1daf9ede -->
<!-- werkrevisor-folded -->
<details><summary>🟡 werkrevisor YELLOW for <code>e67475a</code>, superseded by <a href="http://git.javagil.de/mi/werkprobe/pulls/14#issuecomment-3759">the result for <code>963bfa6</code></a></summary>
## 🟡 werkrevisor: YELLOW / HUMAN_REVIEW
Change kind: `mixed`.
### Reasons
- **YELLOW** risky build changes according to Jev: .werkator.yml (weakens checks 0.33, risk 1.96, security 0.03), build.gradle (weakens checks 0.57, risk 2.41, security 0.02), settings.gradle (weakens checks 0.06, risk 2.72, security 0.08)
- **YELLOW** spec: docs/prs/2026-10-11-PR#14-shop-demo.md Scenario#14.01 hard_to_read (0.65 > yellow_above = 0.5)
- **YELLOW** spec: docs/prs/2026-10-11-PR#14-shop-demo.md Scenario#14.01 implementation_details (0.80 > yellow_above = 0.6)
- **hint** 23 changed file(s) that neither weaken the checks, touch security nor show a risk category of jvm-spring-backend according to Jev
- **hint** 3 finding(s) of low severity or rated minor by Jev: docs/prs/2026-10-11-PR#14-shop-demo.md:55-59, README.md:223-233, .werkator.yml:52-61
- **hint** model recommends changes before merge
### Findings
1. **[medium] Doc contradicts code** at `docs/prs/2026-10-11-PR#14-shop-demo.md:55-59`, hint, as a line comment
2. **[medium] README claims untested measures** at `README.md:223-233`
hint; Jev: real 0.57, severity 1.5 of 3
The README table states exact values (Mutation-CRAP 42 "no test at all", change risk 168), yet `CatalogTest` does cover `restock` and `reserve`. `reorderQuantity` is untested, which matches the claim, but the stated numbers cannot be verified from the diff. The Shipping row is also misaligned in the Markdown table (extra padding). The numbers depend on the werkcrappit run and may drift.
3. **[low] Shared log files in a shared worktree** at `.werkator.yml:52-61`, hint, as a line comment
### Classifier
| Unit | Question | Problem | Confidence | Verdict |
|---|---|---|---|---|
| docs/prs/2026-10-11-PR#14-shop-demo.md Scenario#14.01 | hard_to_read | 0.65 | 0.85 | YELLOW |
| docs/prs/2026-10-11-PR#14-shop-demo.md Scenario#14.01 | implementation_details | 0.80 | – | YELLOW |
6 of 7 units passed all questions (1 PR document(s)).
1 answer ignored because of a confidence below [classifier] min_confidence.
<sub>
Usage: model `openrouter/anthropic/claude-sonnet-5.5`, LLM done, tokens counted before the call 34798, calls 1, tokens in 34924 / out 712 (reasoning included in out), duration 19.7 s, cost 0.0770 USD (reported), classifier `jev-1.13.0` calls 7, tokens in 5348, cost 0.0002 USD, finding judge `jev-1.13.0` calls 2, tokens in 3611, cost 0.0002 USD, build file judge `jev-1.13.0` calls 26, tokens in 23009, cost 0.0010 USD, phases: path_judge 1.5 s, classifier 0.5 s, context 0.8 s, model_review 16.3 s, finding_judge 0.4 s, config: defaults + host + repository (.werkrevisor.toml at main c33f77e).<br>
Reviewed head `e67475a0ebf93e4d7971963b02257d83a2117f1c` against base `c33f77e23e7ef0367a3c93c85d75a396fa2da2ab`, werkrevisor 0.32.7.
</sub>
</details>
werkrevisor: YELLOW / HUMAN_REVIEW for e67475a0ebf93e4d7971963b02257d83a2117f1c.
The result comment of werkrevisor holds the details.
werkrevisor: YELLOW / HUMAN_REVIEW for `e67475a0ebf93e4d7971963b02257d83a2117f1c`.
The result comment of werkrevisor holds the details.
<!-- werkrevisor-review:e67475a0ebf93e4d7971963b02257d83a2117f1c -->
[low] Shared log files in a shared worktree (werkrevisor)
hint
The mutation build uses build.stdout.log and build.stderr.log, the same names as the default build, in a worktree the comment says is shared with the default build. If the default build runs on a push while mutation runs, they overwrite each other's logs. The cleanCommand also leaves those logs in place.
**[low] Shared log files in a shared worktree** (werkrevisor)
hint
The `mutation` build uses `build.stdout.log` and `build.stderr.log`, the same names as the `default` build, in a worktree the comment says is shared with the default build. If the `default` build runs on a push while `mutation` runs, they overwrite each other's logs. The `cleanCommand` also leaves those logs in place.
The Solution section says settings.gradle and the repositories add the Maven registry, and that the shop holds 14 classes. The diff shows 13 shop classes plus package-info, so the count is off. The doc also says maxMutationCrap = 10 "sets the colours", while the README states red from 9 and yellow from 4.5. The README table says Mutation-CRAP 13 for Discounts.rate, while the PR doc reports 13.4. Align the numbers.
**[medium] Doc contradicts code** (werkrevisor)
hint; Jev: real 0.81, severity 1.6 of 3
The Solution section says `settings.gradle` and the repositories add the Maven registry, and that the shop holds 14 classes. The diff shows 13 shop classes plus `package-info`, so the count is off. The doc also says `maxMutationCrap = 10` "sets the colours", while the README states red from 9 and yellow from 4.5. The README table says Mutation-CRAP 13 for `Discounts.rate`, while the PR doc reports 13.4. Align the numbers.
Fixed in 963bfa6: 13 classes (package-info is no class), "red from 9 and yellow from 4.5" in the PR document too, and 13.4 for Discounts.rate in the README.
Fixed in 963bfa6: 13 classes (`package-info` is no class), "red from 9 and yellow from 4.5" in the PR document too, and 13.4 for `Discounts.rate` in the README.
claude-code marked this conversation as resolved
ai-reviewer
scheduled this pull request to auto merge when all checks succeed 2026-10-11 11:20:49 +02:00
ai-reviewer
requested review from mi 2026-10-11 11:20:49 +02:00
Scenario#14.01, hard to read and implementation details: it now says what a developer does and gets, without commands and paths.
"Doc contradicts code": 13 classes, the colour bands and 13.4 aligned.
"README claims untested measures": the README says the values are those of werkcrappit 0.26.0 on 2026-10-11 and may shift a little; the Shipping row is aligned. The values come from a local run; the first nightly build checks them again.
"Shared log files": the build mutation names no log files of its own.
YELLOW for .werkator.yml, build.gradle and settings.gradle: structural, left to the human. They add the nightly build without a gate, PIT and werkcrappit over werkprobe.shop, and the Maven registry of git.javagil.de; the container tests and the default build stay as they are.
Round 1, fixed in 963bfa6:
- Scenario#14.01, hard to read and implementation details: it now says what a developer does and gets, without commands and paths.
- "Doc contradicts code": 13 classes, the colour bands and 13.4 aligned.
- "README claims untested measures": the README says the values are those of werkcrappit 0.26.0 on 2026-10-11 and may shift a little; the Shipping row is aligned. The values come from a local run; the first nightly build checks them again.
- "Shared log files": the build `mutation` names no log files of its own.
- YELLOW for `.werkator.yml`, `build.gradle` and `settings.gradle`: structural, left to the human. They add the nightly build without a gate, PIT and werkcrappit over `werkprobe.shop`, and the Maven registry of git.javagil.de; the container tests and the default build stay as they are.
hint 23 changed file(s) that neither weaken the checks, touch security nor show a risk category of jvm-spring-backend according to Jev
hint 3 finding(s) of low severity or rated minor by Jev: docs/prs/2026-10-11-PR#14-shop-demo.md:28-38, build.gradle:14, README.md:235-237
hint model recommends merge with caution
Findings
[medium] Doc contradicts code at docs/prs/2026-10-11-PR#14-shop-demo.md:28-38, hint, as a line comment
[medium] Plugin repository not authenticated or pinned at build.gradle:14, hint, as a line comment
[low] Inconsistent colour thresholds at README.md:235-237
hint
The README says maxMutationCrap = 10 gives "red from 9, yellow from 4.5", yet the same table labels Mutation-CRAP 6 as yellow and 13.4 as red, and build.gradle comments "red from 9". A threshold of 10 giving red from 9 is unexplained, which is confusing for a reader who wants to reproduce the colours.
5 of 7 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 34809, calls 1, tokens in 34897 / out 899 (reasoning included in out), duration 22.8 s, cost 0.0788 USD (reported), classifier `jev-1.13.0` calls 7, tokens in 5342, cost 0.0002 USD, finding judge `jev-1.13.0` calls 2, tokens in 3847, cost 0.0002 USD, build file judge `jev-1.13.0` calls 26, tokens in 22989, cost 0.0010 USD, phases: path_judge 1.6 s, classifier 0.5 s, context 1.1 s, model_review 18.9 s, finding_judge 0.3 s, config: defaults + host + repository (.werkrevisor.toml at main c33f77e).
Reviewed head `963bfa6ff6bdef615c7d0f0c068b6232d4b0194a` against base `c33f77e23e7ef0367a3c93c85d75a396fa2da2ab`, werkrevisor 0.32.7.
<!-- werkrevisor:963bfa6ff6bdef615c7d0f0c068b6232d4b0194a -->
<!-- werkrevisor-verdict:YELLOW -->
<!-- werkrevisor-blocks:06d28ad0b0e9696b4dd0a6b7bad1dd27,92442402e9f533acc4945b0119cd615f,79d727f249c2122fc2e25297a63ffdc8,8f6dc9decc0ff0bd8773fc101686e79c,45937a89e1d330f7201ed31d5283880d,963c5ebad137a918ce50b5789d0a4621,035178a1529df80efd1fa5b224df503d,d86e84d1cc4dfa015f54b3a516c36871,3d9cbfa5140a120d18de691ae2891750,9f603f1785e23fb66eff858bf6eaf247,d7579cc8a23a60da38e723bfea74d7d2,a4df11c3f23a6f362a16a4f9de6cb042,ca95c41e7ec46e0912ad0dc57cf4682f,fb79e06b73d602bfc4cce0d7a7a56a7c,ecece431898b20aab250db9e5f9ca478,ad209aadd466dd8b6868ebfa48a44816,63a65bcbb71b585af15f52230e3b1f56,5880f3652e3a4906627e17b851b27810,2b9946c23c852fab4f3ef17f33d6e7c7,eb7d7e01a2bd6ecc95f81e69a42b4408,2ff23b9f0979e6f8353b8af3a5cfd423,154f435cff2d397c77ed02db05b681e1,23ff0e7e42adeda820830f9b07f650b9,7d4c2e0f7a9725b5e1d594dabdf64a22,ad694fb527fe291b96efc3ad0f785061,5b8eed44b39634ad86428accabca0e78,fe03c66af642159890934236742d0cb1,3572365df10b3361a87a15c0a4e01aac,a97b930f9c222c5b0342f705d87d1a60,05909894b9df8f2861768c956204a7bb,40d5b2be7509a1262ff5486b10283119,0bfdbb1c0376a339f2c29bfe1daf9ede -->
<!-- werkrevisor-folded -->
<details><summary>🟡 werkrevisor YELLOW for <code>963bfa6</code>, superseded by <a href="http://git.javagil.de/mi/werkprobe/pulls/14#issuecomment-3773">the result for <code>75678cb</code></a></summary>
## 🟡 werkrevisor: YELLOW / HUMAN_REVIEW
Change kind: `mixed`.
### Reasons
- **YELLOW** risky build changes according to Jev: .werkator.yml (weakens checks 0.42, risk 2.00, security 0.02), build.gradle (weakens checks 0.63, risk 2.43, security 0.02), settings.gradle (weakens checks 0.05, risk 2.67, security 0.07)
- **YELLOW** spec: docs/prs/2026-10-11-PR#14-shop-demo.md Scenario#14.01 hard_to_read (0.53 > yellow_above = 0.5)
- **YELLOW** spec: docs/prs/2026-10-11-PR#14-shop-demo.md Scenario#14.02 hard_to_read (0.51 > yellow_above = 0.5)
- **hint** 23 changed file(s) that neither weaken the checks, touch security nor show a risk category of jvm-spring-backend according to Jev
- **hint** 3 finding(s) of low severity or rated minor by Jev: docs/prs/2026-10-11-PR#14-shop-demo.md:28-38, build.gradle:14, README.md:235-237
- **hint** model recommends merge with caution
### Findings
1. **[medium] Doc contradicts code** at `docs/prs/2026-10-11-PR#14-shop-demo.md:28-38`, hint, as a line comment
2. **[medium] Plugin repository not authenticated or pinned** at `build.gradle:14`, hint, as a line comment
3. **[low] Inconsistent colour thresholds** at `README.md:235-237`
hint
The README says `maxMutationCrap = 10` gives "red from 9, yellow from 4.5", yet the same table labels Mutation-CRAP 6 as yellow and 13.4 as red, and `build.gradle` comments "red from 9". A threshold of 10 giving red from 9 is unexplained, which is confusing for a reader who wants to reproduce the colours.
### Classifier
| Unit | Question | Problem | Confidence | Verdict |
|---|---|---|---|---|
| docs/prs/2026-10-11-PR#14-shop-demo.md Scenario#14.01 | hard_to_read | 0.53 | 0.52 | YELLOW |
| docs/prs/2026-10-11-PR#14-shop-demo.md Scenario#14.02 | hard_to_read | 0.51 | 0.39 | YELLOW |
5 of 7 units passed all questions (1 PR document(s)).
1 answer ignored because of a confidence below [classifier] min_confidence.
<sub>
Usage: model `openrouter/anthropic/claude-sonnet-5.5`, LLM done, tokens counted before the call 34809, calls 1, tokens in 34897 / out 899 (reasoning included in out), duration 22.8 s, cost 0.0788 USD (reported), classifier `jev-1.13.0` calls 7, tokens in 5342, cost 0.0002 USD, finding judge `jev-1.13.0` calls 2, tokens in 3847, cost 0.0002 USD, build file judge `jev-1.13.0` calls 26, tokens in 22989, cost 0.0010 USD, phases: path_judge 1.6 s, classifier 0.5 s, context 1.1 s, model_review 18.9 s, finding_judge 0.3 s, config: defaults + host + repository (.werkrevisor.toml at main c33f77e).<br>
Reviewed head `963bfa6ff6bdef615c7d0f0c068b6232d4b0194a` against base `c33f77e23e7ef0367a3c93c85d75a396fa2da2ab`, werkrevisor 0.32.7.
</sub>
</details>
werkrevisor: YELLOW / HUMAN_REVIEW for 963bfa6ff6bdef615c7d0f0c068b6232d4b0194a.
The result comment of werkrevisor holds the details.
werkrevisor: YELLOW / HUMAN_REVIEW for `963bfa6ff6bdef615c7d0f0c068b6232d4b0194a`.
The result comment of werkrevisor holds the details.
<!-- werkrevisor-review:963bfa6ff6bdef615c7d0f0c068b6232d4b0194a -->
[medium] Plugin repository not authenticated or pinned (werkrevisor)
hint; Jev: real 0.52, severity 2.0 of 3
de.javagil.werkcrappit and werkcrappit-pit are resolved from a third-party Gitea Maven registry placed alongside mavenCentral(). The extra repository in repositories has no content filter, so any artifact lookup may also hit this host, and the build depends on its availability. This is not a vulnerability by itself, but restricting it with content { includeGroup ... } would limit the exposure and speed up resolution.
**[medium] Plugin repository not authenticated or pinned** (werkrevisor)
hint; Jev: real 0.52, severity 2.0 of 3
`de.javagil.werkcrappit` and `werkcrappit-pit` are resolved from a third-party Gitea Maven registry placed alongside `mavenCentral()`. The extra repository in `repositories` has no content filter, so any artifact lookup may also hit this host, and the build depends on its availability. This is not a vulnerability by itself, but restricting it with `content { includeGroup ... }` would limit the exposure and speed up resolution.
The Solution section says "13 classes" in werkprobe.shop, but the diff adds 14 main classes (Catalog, Customer, Discounts, Invoice, Order, AuditTrail, OrderRepository, OrderService, ServiceRegistry, Shipping, BillingController, FormFields, InvoiceForm = 13, plus the package-info, which is not a class). The count is therefore correct only if package-info is excluded. The same section lists only .werkator.yml, README and AGENTS.md but also says settings.gradle "and the repositories" were changed. Scenario#14.01 claims the build needs "neither werkdock nor docker", yet the README command ./gradlew pitest mutationCrapCodeCharta builds in a project whose test task is not needed. This is plausible, but the only verification is a local run, with no check that the shop tests alone avoid Testcontainers. Please make the scenario verifiable.
**[medium] Doc contradicts code** (werkrevisor)
hint; Jev: real 0.63, severity 1.9 of 3
The Solution section says "13 classes" in `werkprobe.shop`, but the diff adds 14 main classes (Catalog, Customer, Discounts, Invoice, Order, AuditTrail, OrderRepository, OrderService, ServiceRegistry, Shipping, BillingController, FormFields, InvoiceForm = 13, plus the package-info, which is not a class). The count is therefore correct only if package-info is excluded. The same section lists only `.werkator.yml`, README and AGENTS.md but also says `settings.gradle` "and the repositories" were changed. Scenario#14.01 claims the build needs "neither werkdock nor docker", yet the README command `./gradlew pitest mutationCrapCodeCharta` builds in a project whose `test` task is not needed. This is plausible, but the only verification is a local run, with no check that the shop tests alone avoid Testcontainers. Please make the scenario verifiable.
Fixed in 75678cb: "13 classes, besides its package-info"; the Solution names settings.gradle and build.gradle; Scenario#14.01 is verified by the nightly build mutation, which runs without DOCKER_HOST, unlike the default build.
Fixed in 75678cb: "13 classes, besides its package-info"; the Solution names `settings.gradle` and `build.gradle`; Scenario#14.01 is verified by the nightly build `mutation`, which runs without `DOCKER_HOST`, unlike the default build.
"Doc contradicts code": class count, changed files and how Scenario#14.01 is verified.
"Plugin repository not authenticated or pinned": a content filter on the group de.javagil.werkcrappit in both repositories.
"Inconsistent colour thresholds": the README and build.gradle explain red from 90 % of the limit and yellow from half of that.
Scenario#14.01 and #14.02, hard to read: shorter steps in plain words.
YELLOW for the build files: structural, left to the human.
Round 2, fixed in 75678cb:
- "Doc contradicts code": class count, changed files and how Scenario#14.01 is verified.
- "Plugin repository not authenticated or pinned": a content filter on the group `de.javagil.werkcrappit` in both repositories.
- "Inconsistent colour thresholds": the README and `build.gradle` explain red from 90 % of the limit and yellow from half of that.
- Scenario#14.01 and #14.02, hard to read: shorter steps in plain words.
- YELLOW for the build files: structural, left to the human.
YELLOW Concurrency and idempotency according to Jev: src/main/java/werkprobe/shop/persistence/OrderRepository.java (0.90); a human checks it, unless you revert the change because the task does not need it
hint 22 changed file(s) that neither weaken the checks, touch security nor show a risk category of jvm-spring-backend according to Jev
hint 2 finding(s) of low severity or rated minor by Jev: docs/prs/2026-10-11-PR#14-shop-demo.md:28-39, README.md:223-233
hint model recommends merge with caution
Findings
[medium] Doc contradicts the build setup at docs/prs/2026-10-11-PR#14-shop-demo.md:28-39, hint, as a line comment
[low] Value contradiction in table at README.md:223-233
hint
The README lists Catalog.reorderQuantity as "no test at all" with Mutation-CRAP 42. The Catalog javadoc says no test checks it, which is consistent, but Shipping.cost is described as "yellow by complexity alone" with a row wider than the table's column formatting. The README also hardcodes tool-specific numbers (13.4, 42, 168) that may drift; this is acknowledged but not verifiable from the diff.
6 of 7 units passed all questions (1 PR document(s)).
2 answers ignored because of a confidence below [classifier] min_confidence.
Usage: model `openrouter/anthropic/claude-sonnet-5.5`, LLM done, tokens counted before the call 35192, calls 1, tokens in 35247 / out 597 (reasoning included in out), duration 19.2 s, cost 0.0765 USD (reported), classifier `jev-1.13.0` calls 7, tokens in 5295, cost 0.0002 USD, finding judge `jev-1.13.0` calls 1, tokens in 2098, cost 0.0001 USD, build file judge `jev-1.13.0` calls 26, tokens in 23089, cost 0.0010 USD, phases: path_judge 1.6 s, classifier 0.5 s, context 1.1 s, model_review 15.4 s, finding_judge 0.2 s, config: defaults + host + repository (.werkrevisor.toml at main c33f77e).
Reviewed head `75678cb50cafb92e6078a300a692ee8ec6b3f32e` against base `c33f77e23e7ef0367a3c93c85d75a396fa2da2ab`, werkrevisor 0.32.7.
<!-- werkrevisor:75678cb50cafb92e6078a300a692ee8ec6b3f32e -->
<!-- werkrevisor-verdict:YELLOW -->
<!-- werkrevisor-blocks:06d28ad0b0e9696b4dd0a6b7bad1dd27,92442402e9f533acc4945b0119cd615f,79d727f249c2122fc2e25297a63ffdc8,ef73f446c56f17e07b6889fcd0cf047c,45937a89e1d330f7201ed31d5283880d,5c3808845fe5d0ee347e852fcec48cbd,61bc05e660e26c77d1bd4d758ee68ec5,be00071f5b93f27d488f9f46cbf1e0bc,61e83e1fbd9175fed987bdaca219dab3,9f603f1785e23fb66eff858bf6eaf247,d7579cc8a23a60da38e723bfea74d7d2,a4df11c3f23a6f362a16a4f9de6cb042,ca95c41e7ec46e0912ad0dc57cf4682f,fb79e06b73d602bfc4cce0d7a7a56a7c,ecece431898b20aab250db9e5f9ca478,ad209aadd466dd8b6868ebfa48a44816,63a65bcbb71b585af15f52230e3b1f56,5880f3652e3a4906627e17b851b27810,2b9946c23c852fab4f3ef17f33d6e7c7,eb7d7e01a2bd6ecc95f81e69a42b4408,2ff23b9f0979e6f8353b8af3a5cfd423,154f435cff2d397c77ed02db05b681e1,23ff0e7e42adeda820830f9b07f650b9,7d4c2e0f7a9725b5e1d594dabdf64a22,ad694fb527fe291b96efc3ad0f785061,5b8eed44b39634ad86428accabca0e78,fe03c66af642159890934236742d0cb1,3572365df10b3361a87a15c0a4e01aac,a97b930f9c222c5b0342f705d87d1a60,05909894b9df8f2861768c956204a7bb,40d5b2be7509a1262ff5486b10283119,0bfdbb1c0376a339f2c29bfe1daf9ede -->
<!-- werkrevisor-folded -->
<details><summary>🟡 werkrevisor YELLOW for <code>75678cb</code>, superseded by <a href="http://git.javagil.de/mi/werkprobe/pulls/14#issuecomment-3780">the result for <code>c196a0e</code></a></summary>
## 🟡 werkrevisor: YELLOW / HUMAN_REVIEW
Change kind: `mixed`.
### Reasons
- **YELLOW** Concurrency and idempotency according to Jev: src/main/java/werkprobe/shop/persistence/OrderRepository.java (0.90); a human checks it, unless you revert the change because the task does not need it
- **YELLOW** risky build changes according to Jev: .werkator.yml (weakens checks 0.35, risk 1.97, security 0.02), build.gradle (weakens checks 0.47, risk 2.38, security 0.02), settings.gradle (weakens checks 0.06, risk 2.38, security 0.07)
- **YELLOW** spec: docs/prs/2026-10-11-PR#14-shop-demo.md Scenario#14.01 hard_to_read (0.55 > yellow_above = 0.5)
- **hint** 22 changed file(s) that neither weaken the checks, touch security nor show a risk category of jvm-spring-backend according to Jev
- **hint** 2 finding(s) of low severity or rated minor by Jev: docs/prs/2026-10-11-PR#14-shop-demo.md:28-39, README.md:223-233
- **hint** model recommends merge with caution
### Findings
1. **[medium] Doc contradicts the build setup** at `docs/prs/2026-10-11-PR#14-shop-demo.md:28-39`, hint, as a line comment
2. **[low] Value contradiction in table** at `README.md:223-233`
hint
The README lists Catalog.reorderQuantity as "no test at all" with Mutation-CRAP 42. The `Catalog` javadoc says no test checks it, which is consistent, but `Shipping.cost` is described as "yellow by complexity alone" with a row wider than the table's column formatting. The README also hardcodes tool-specific numbers (13.4, 42, 168) that may drift; this is acknowledged but not verifiable from the diff.
### Classifier
| Unit | Question | Problem | Confidence | Verdict |
|---|---|---|---|---|
| docs/prs/2026-10-11-PR#14-shop-demo.md Scenario#14.01 | hard_to_read | 0.55 | 0.58 | YELLOW |
6 of 7 units passed all questions (1 PR document(s)).
2 answers ignored because of a confidence below [classifier] min_confidence.
<sub>
Usage: model `openrouter/anthropic/claude-sonnet-5.5`, LLM done, tokens counted before the call 35192, calls 1, tokens in 35247 / out 597 (reasoning included in out), duration 19.2 s, cost 0.0765 USD (reported), classifier `jev-1.13.0` calls 7, tokens in 5295, cost 0.0002 USD, finding judge `jev-1.13.0` calls 1, tokens in 2098, cost 0.0001 USD, build file judge `jev-1.13.0` calls 26, tokens in 23089, cost 0.0010 USD, phases: path_judge 1.6 s, classifier 0.5 s, context 1.1 s, model_review 15.4 s, finding_judge 0.2 s, config: defaults + host + repository (.werkrevisor.toml at main c33f77e).<br>
Reviewed head `75678cb50cafb92e6078a300a692ee8ec6b3f32e` against base `c33f77e23e7ef0367a3c93c85d75a396fa2da2ab`, werkrevisor 0.32.7.
</sub>
</details>
werkrevisor: YELLOW / HUMAN_REVIEW for 75678cb50cafb92e6078a300a692ee8ec6b3f32e.
The result comment of werkrevisor holds the details.
werkrevisor: YELLOW / HUMAN_REVIEW for `75678cb50cafb92e6078a300a692ee8ec6b3f32e`.
The result comment of werkrevisor holds the details.
<!-- werkrevisor-review:75678cb50cafb92e6078a300a692ee8ec6b3f32e -->
[medium] Doc contradicts the build setup (werkrevisor)
hint; Jev: real 0.69, severity 2.0 of 3
Scenario#14.01 claims the demo "needs no container engine" and that the nightly build mutation runs without DOCKER_HOST. Nothing in the diff proves the plugin or PIT resolution works offline, and the build needs the git.javagil.de Maven registry, so the scenario is only about docker. Also, mutationCrapCodeCharta presumably depends on unit tests only, but pitest with targetTests = werkprobe.shop.* is the only filter; the scenario should say what is actually guaranteed (no docker needed) rather than "anyone with a JDK can build the demo".
**[medium] Doc contradicts the build setup** (werkrevisor)
hint; Jev: real 0.69, severity 2.0 of 3
Scenario#14.01 claims the demo "needs no container engine" and that the nightly build `mutation` runs without `DOCKER_HOST`. Nothing in the diff proves the plugin or PIT resolution works offline, and the build needs the git.javagil.de Maven registry, so the scenario is only about docker. Also, `mutationCrapCodeCharta` presumably depends on unit tests only, but `pitest` with `targetTests = werkprobe.shop.*` is the only filter; the scenario should say what is actually guaranteed (no docker needed) rather than "anyone with a JDK can build the demo".
Fixed in c196a0e: the scenario claims only that no container engine is needed ("also builds where neither docker nor werkdock runs"), not that a JDK alone suffices; the plugins still come from the registry.
Fixed in c196a0e: the scenario claims only that no container engine is needed ("also builds where neither docker nor werkdock runs"), not that a JDK alone suffices; the plugins still come from the registry.
"Doc contradicts the build setup": Scenario#14.01 claims only that no container engine is needed.
"Value contradiction in table": no change; the Shipping row is valid Markdown, and the README says the values are those of werkcrappit 0.26.0 and may drift.
Concurrency and idempotency of OrderRepository: no change; it is an in-memory demo, used by one thread in unit tests only. Left to the human, with the build files.
Round 3, fixed in c196a0e:
- "Doc contradicts the build setup": Scenario#14.01 claims only that no container engine is needed.
- "Value contradiction in table": no change; the Shipping row is valid Markdown, and the README says the values are those of werkcrappit 0.26.0 and may drift.
- Concurrency and idempotency of `OrderRepository`: no change; it is an in-memory demo, used by one thread in unit tests only. Left to the human, with the build files.
YELLOW Concurrency and idempotency according to Jev: src/main/java/werkprobe/shop/persistence/OrderRepository.java (0.90); a human checks it, unless you revert the change because the task does not need it
hint 22 changed file(s) that neither weaken the checks, touch security nor show a risk category of jvm-spring-backend according to Jev
hint 3 finding(s) of low severity or rated minor by Jev: docs/prs/2026-10-11-PR#14-shop-demo.md:28-40, README.md:223-233, .werkator.yml:47-59
hint model recommends merge with caution
Findings
[medium] Doc contradicts code on registry at docs/prs/2026-10-11-PR#14-shop-demo.md:28-40, hint, as a line comment
[low] Mutation-CRAP values likely inconsistent at README.md:223-233
hint
The README states Catalog.reorderQuantity has Mutation-CRAP 42 and the class a change risk of 168. The doc says "no test at all" for it, but Catalog is covered by CatalogTest only for reserve. Also Shipping.cost is described as complexity 6, yet counting branches (3 ifs plus an else-if, plus the !"DE" check and the cap check) gives 6, while the Catalog Javadoc claims LCOM4 3 despite reorderQuantity using stock. These values are hard-coded and unverifiable here. A werkcrappit or PIT update would silently invalidate them, which the README acknowledges only loosely.
[low] Nightly build lacks a werkdock environment at .werkator.yml:47-59, hint, as a line comment
Classifier
7 of 7 units passed all questions (1 PR document(s)).
3 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 35181, calls 1, tokens in 35244 / out 833 (reasoning included in out), duration 21.3 s, cost 0.0788 USD (reported), classifier `jev-1.13.0` calls 7, tokens in 5277, cost 0.0002 USD, finding judge `jev-1.13.0` calls 1, tokens in 2116, cost 0.0001 USD, build file judge `jev-1.13.0` calls 26, tokens in 23089, cost 0.0010 USD, phases: path_judge 1.5 s, classifier 0.5 s, context 1.6 s, model_review 17.1 s, finding_judge 0.2 s, config: defaults + host + repository (.werkrevisor.toml at main c33f77e).
Reviewed head `c196a0eadfa757504f26326105c05aff97ee85dd` against base `c33f77e23e7ef0367a3c93c85d75a396fa2da2ab`, werkrevisor 0.32.7.
<!-- werkrevisor:c196a0eadfa757504f26326105c05aff97ee85dd -->
<!-- werkrevisor-verdict:YELLOW -->
<!-- werkrevisor-blocks:06d28ad0b0e9696b4dd0a6b7bad1dd27,92442402e9f533acc4945b0119cd615f,79d727f249c2122fc2e25297a63ffdc8,ef73f446c56f17e07b6889fcd0cf047c,45937a89e1d330f7201ed31d5283880d,5c3808845fe5d0ee347e852fcec48cbd,61bc05e660e26c77d1bd4d758ee68ec5,d80f665dfd8f20e50e1fe303c0960263,61e83e1fbd9175fed987bdaca219dab3,9f603f1785e23fb66eff858bf6eaf247,d7579cc8a23a60da38e723bfea74d7d2,a4df11c3f23a6f362a16a4f9de6cb042,ca95c41e7ec46e0912ad0dc57cf4682f,fb79e06b73d602bfc4cce0d7a7a56a7c,ecece431898b20aab250db9e5f9ca478,ad209aadd466dd8b6868ebfa48a44816,63a65bcbb71b585af15f52230e3b1f56,5880f3652e3a4906627e17b851b27810,2b9946c23c852fab4f3ef17f33d6e7c7,eb7d7e01a2bd6ecc95f81e69a42b4408,2ff23b9f0979e6f8353b8af3a5cfd423,154f435cff2d397c77ed02db05b681e1,23ff0e7e42adeda820830f9b07f650b9,7d4c2e0f7a9725b5e1d594dabdf64a22,ad694fb527fe291b96efc3ad0f785061,5b8eed44b39634ad86428accabca0e78,fe03c66af642159890934236742d0cb1,3572365df10b3361a87a15c0a4e01aac,a97b930f9c222c5b0342f705d87d1a60,05909894b9df8f2861768c956204a7bb,40d5b2be7509a1262ff5486b10283119,0bfdbb1c0376a339f2c29bfe1daf9ede -->
## 🟡 werkrevisor: YELLOW / HUMAN_REVIEW
Change kind: `mixed`.
### Reasons
- **YELLOW** Concurrency and idempotency according to Jev: src/main/java/werkprobe/shop/persistence/OrderRepository.java (0.90); a human checks it, unless you revert the change because the task does not need it
- **YELLOW** risky build changes according to Jev: .werkator.yml (weakens checks 0.35, risk 1.97, security 0.02), build.gradle (weakens checks 0.49, risk 2.39, security 0.02), settings.gradle (weakens checks 0.07, risk 2.32, security 0.07)
- **hint** 22 changed file(s) that neither weaken the checks, touch security nor show a risk category of jvm-spring-backend according to Jev
- **hint** 3 finding(s) of low severity or rated minor by Jev: docs/prs/2026-10-11-PR#14-shop-demo.md:28-40, README.md:223-233, .werkator.yml:47-59
- **hint** model recommends merge with caution
### Findings
1. **[medium] Doc contradicts code on registry** at `docs/prs/2026-10-11-PR#14-shop-demo.md:28-40`, hint, as a line comment
2. **[low] Mutation-CRAP values likely inconsistent** at `README.md:223-233`
hint
The README states Catalog.reorderQuantity has Mutation-CRAP 42 and the class a change risk of 168. The doc says "no test at all" for it, but `Catalog` is covered by `CatalogTest` only for `reserve`. Also `Shipping.cost` is described as complexity 6, yet counting branches (3 ifs plus an else-if, plus the `!"DE"` check and the cap check) gives 6, while the `Catalog` Javadoc claims LCOM4 3 despite `reorderQuantity` using `stock`. These values are hard-coded and unverifiable here. A werkcrappit or PIT update would silently invalidate them, which the README acknowledges only loosely.
3. **[low] Nightly build lacks a werkdock environment** at `.werkator.yml:47-59`, hint, as a line comment
### Classifier
7 of 7 units passed all questions (1 PR document(s)).
3 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 35181, calls 1, tokens in 35244 / out 833 (reasoning included in out), duration 21.3 s, cost 0.0788 USD (reported), classifier `jev-1.13.0` calls 7, tokens in 5277, cost 0.0002 USD, finding judge `jev-1.13.0` calls 1, tokens in 2116, cost 0.0001 USD, build file judge `jev-1.13.0` calls 26, tokens in 23089, cost 0.0010 USD, phases: path_judge 1.5 s, classifier 0.5 s, context 1.6 s, model_review 17.1 s, finding_judge 0.2 s, config: defaults + host + repository (.werkrevisor.toml at main c33f77e).<br>
Reviewed head `c196a0eadfa757504f26326105c05aff97ee85dd` against base `c33f77e23e7ef0367a3c93c85d75a396fa2da2ab`, werkrevisor 0.32.7.
</sub>
werkrevisor: YELLOW / HUMAN_REVIEW for c196a0eadfa757504f26326105c05aff97ee85dd.
The result comment of werkrevisor holds the details.
werkrevisor: YELLOW / HUMAN_REVIEW for `c196a0eadfa757504f26326105c05aff97ee85dd`.
The result comment of werkrevisor holds the details.
<!-- werkrevisor-review:c196a0eadfa757504f26326105c05aff97ee85dd -->
[low] Nightly build lacks a werkdock environment (werkrevisor)
hint
The mutation build defines no werkdock section, whereas default does. If the sandbox is mandatory in Werkator, the build may run unsandboxed or fail. The PR does not say which applies. Uncertain; depends on Werkator defaults.
**[low] Nightly build lacks a werkdock environment** (werkrevisor)
hint
The `mutation` build defines no `werkdock` section, whereas `default` does. If the sandbox is mandatory in Werkator, the build may run unsandboxed or fail. The PR does not say which applies. Uncertain; depends on Werkator defaults.
[medium] Doc contradicts code on registry (werkrevisor)
hint; Jev: real 0.55, severity 2.1 of 3
The Solution says settings.gradle and build.gradle add the registry, "each limited to the group de.javagil.werkcrappit". The build.gradle comment says the repository is for "werkcrappit-pit". This works only if the PIT plugin artifact has the same group. The doc also states that the demo "needs no container engine" and that the nightly build runs "without DOCKER_HOST". .werkator.yml gives the mutation build no werkdock block, so it is unclear whether it runs inside the sandbox at all. The claim is not backed by the config.
**[medium] Doc contradicts code on registry** (werkrevisor)
hint; Jev: real 0.55, severity 2.1 of 3
The Solution says `settings.gradle` and `build.gradle` add the registry, "each limited to the group `de.javagil.werkcrappit`". The `build.gradle` comment says the repository is for "werkcrappit-pit". This works only if the PIT plugin artifact has the same group. The doc also states that the demo "needs no container engine" and that the nightly build runs "without `DOCKER_HOST`". `.werkator.yml` gives the `mutation` build no werkdock block, so it is unclear whether it runs inside the sandbox at all. The claim is not backed by the config.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
A small shop in
werkprobe.shopthat shows each colour of werkcrappit's code city, structure page and matrix once, built every night by Werkator.See
docs/prs/2026-10-11-PR#14-shop-demo.md.🤖 Generated with Claude Code
🟡 werkrevisor YELLOW for
e67475a, superseded by the result for963bfa6🟡 werkrevisor: YELLOW / HUMAN_REVIEW
Change kind:
mixed.Reasons
Findings
[medium] Doc contradicts code at
docs/prs/2026-10-11-PR#14-shop-demo.md:55-59, hint, as a line comment[medium] README claims untested measures at
README.md:223-233hint; Jev: real 0.57, severity 1.5 of 3
The README table states exact values (Mutation-CRAP 42 "no test at all", change risk 168), yet
CatalogTestdoes coverrestockandreserve.reorderQuantityis untested, which matches the claim, but the stated numbers cannot be verified from the diff. The Shipping row is also misaligned in the Markdown table (extra padding). The numbers depend on the werkcrappit run and may drift.[low] Shared log files in a shared worktree at
.werkator.yml:52-61, hint, as a line commentClassifier
6 of 7 units passed all questions (1 PR document(s)).
Usage: model `openrouter/anthropic/claude-sonnet-5.5`, LLM done, tokens counted before the call 34798, calls 1, tokens in 34924 / out 712 (reasoning included in out), duration 19.7 s, cost 0.0770 USD (reported), classifier `jev-1.13.0` calls 7, tokens in 5348, cost 0.0002 USD, finding judge `jev-1.13.0` calls 2, tokens in 3611, cost 0.0002 USD, build file judge `jev-1.13.0` calls 26, tokens in 23009, cost 0.0010 USD, phases: path_judge 1.5 s, classifier 0.5 s, context 0.8 s, model_review 16.3 s, finding_judge 0.4 s, config: defaults + host + repository (.werkrevisor.toml at main1 answer ignored because of a confidence below [classifier] min_confidence.
c33f77e).Reviewed head `e67475a0ebf93e4d7971963b02257d83a2117f1c` against base `c33f77e23e7ef0367a3c93c85d75a396fa2da2ab`, werkrevisor 0.32.7.
werkrevisor: YELLOW / HUMAN_REVIEW for
e67475a0ebf93e4d7971963b02257d83a2117f1c.The result comment of werkrevisor holds the details.
@@ -43,0 +49,4 @@atTimes: ["04:00"]branches: ["main"]activeWithin: 24h# only its own reports: the worktree is main's, shared with the default build[low] Shared log files in a shared worktree (werkrevisor)
hint
The
mutationbuild usesbuild.stdout.logandbuild.stderr.log, the same names as thedefaultbuild, in a worktree the comment says is shared with the default build. If thedefaultbuild runs on a push whilemutationruns, they overwrite each other's logs. ThecleanCommandalso leaves those logs in place.Fixed in
963bfa6: the buildmutationnames no log files of its own, as the mutation builds of werkcrappit and Werkator.@@ -0,0 +52,4 @@## Solution- `werkprobe.shop` holds 14 classes in `domain`, `service`, `persistence`, `web` and `web.forms`,[medium] Doc contradicts code (werkrevisor)
hint; Jev: real 0.81, severity 1.6 of 3
The Solution section says
settings.gradleand the repositories add the Maven registry, and that the shop holds 14 classes. The diff shows 13 shop classes pluspackage-info, so the count is off. The doc also saysmaxMutationCrap = 10"sets the colours", while the README states red from 9 and yellow from 4.5. The README table says Mutation-CRAP 13 forDiscounts.rate, while the PR doc reports 13.4. Align the numbers.Fixed in
963bfa6: 13 classes (package-infois no class), "red from 9 and yellow from 4.5" in the PR document too, and 13.4 forDiscounts.ratein the README.Round 1, fixed in
963bfa6:mutationnames no log files of its own..werkator.yml,build.gradleandsettings.gradle: structural, left to the human. They add the nightly build without a gate, PIT and werkcrappit overwerkprobe.shop, and the Maven registry of git.javagil.de; the container tests and the default build stay as they are.🟡 werkrevisor YELLOW for
963bfa6, superseded by the result for75678cb🟡 werkrevisor: YELLOW / HUMAN_REVIEW
Change kind:
mixed.Reasons
Findings
[medium] Doc contradicts code at
docs/prs/2026-10-11-PR#14-shop-demo.md:28-38, hint, as a line comment[medium] Plugin repository not authenticated or pinned at
build.gradle:14, hint, as a line comment[low] Inconsistent colour thresholds at
README.md:235-237hint
The README says
maxMutationCrap = 10gives "red from 9, yellow from 4.5", yet the same table labels Mutation-CRAP 6 as yellow and 13.4 as red, andbuild.gradlecomments "red from 9". A threshold of 10 giving red from 9 is unexplained, which is confusing for a reader who wants to reproduce the colours.Classifier
5 of 7 units passed all questions (1 PR document(s)).
Usage: model `openrouter/anthropic/claude-sonnet-5.5`, LLM done, tokens counted before the call 34809, calls 1, tokens in 34897 / out 899 (reasoning included in out), duration 22.8 s, cost 0.0788 USD (reported), classifier `jev-1.13.0` calls 7, tokens in 5342, cost 0.0002 USD, finding judge `jev-1.13.0` calls 2, tokens in 3847, cost 0.0002 USD, build file judge `jev-1.13.0` calls 26, tokens in 22989, cost 0.0010 USD, phases: path_judge 1.6 s, classifier 0.5 s, context 1.1 s, model_review 18.9 s, finding_judge 0.3 s, config: defaults + host + repository (.werkrevisor.toml at main1 answer ignored because of a confidence below [classifier] min_confidence.
c33f77e).Reviewed head `963bfa6ff6bdef615c7d0f0c068b6232d4b0194a` against base `c33f77e23e7ef0367a3c93c85d75a396fa2da2ab`, werkrevisor 0.32.7.
werkrevisor: YELLOW / HUMAN_REVIEW for
963bfa6ff6bdef615c7d0f0c068b6232d4b0194a.The result comment of werkrevisor holds the details.
@@ -8,3 +11,4 @@repositories {mavenLocal()mavenCentral()maven { url = 'https://git.javagil.de/api/packages/mi/maven' } // werkcrappit-pit[medium] Plugin repository not authenticated or pinned (werkrevisor)
hint; Jev: real 0.52, severity 2.0 of 3
de.javagil.werkcrappitandwerkcrappit-pitare resolved from a third-party Gitea Maven registry placed alongsidemavenCentral(). The extra repository inrepositorieshas no content filter, so any artifact lookup may also hit this host, and the build depends on its availability. This is not a vulnerability by itself, but restricting it withcontent { includeGroup ... }would limit the exposure and speed up resolution.Fixed in
75678cb: both repositories of git.javagil.de, insettings.gradleandbuild.gradle, take only the groupde.javagil.werkcrappit.@@ -0,0 +25,4 @@### Feature: the demo of werkcrappit's charts#### Scenario#14.01: the demo's charts need neither werkdock nor docker[medium] Doc contradicts code (werkrevisor)
hint; Jev: real 0.63, severity 1.9 of 3
The Solution section says "13 classes" in
werkprobe.shop, but the diff adds 14 main classes (Catalog, Customer, Discounts, Invoice, Order, AuditTrail, OrderRepository, OrderService, ServiceRegistry, Shipping, BillingController, FormFields, InvoiceForm = 13, plus the package-info, which is not a class). The count is therefore correct only if package-info is excluded. The same section lists only.werkator.yml, README and AGENTS.md but also sayssettings.gradle"and the repositories" were changed. Scenario#14.01 claims the build needs "neither werkdock nor docker", yet the README command./gradlew pitest mutationCrapCodeChartabuilds in a project whosetesttask is not needed. This is plausible, but the only verification is a local run, with no check that the shop tests alone avoid Testcontainers. Please make the scenario verifiable.Fixed in
75678cb: "13 classes, besides its package-info"; the Solution namessettings.gradleandbuild.gradle; Scenario#14.01 is verified by the nightly buildmutation, which runs withoutDOCKER_HOST, unlike the default build.Round 2, fixed in
75678cb:de.javagil.werkcrappitin both repositories.build.gradleexplain red from 90 % of the limit and yellow from half of that.🟡 werkrevisor YELLOW for
75678cb, superseded by the result forc196a0e🟡 werkrevisor: YELLOW / HUMAN_REVIEW
Change kind:
mixed.Reasons
Findings
[medium] Doc contradicts the build setup at
docs/prs/2026-10-11-PR#14-shop-demo.md:28-39, hint, as a line comment[low] Value contradiction in table at
README.md:223-233hint
The README lists Catalog.reorderQuantity as "no test at all" with Mutation-CRAP 42. The
Catalogjavadoc says no test checks it, which is consistent, butShipping.costis described as "yellow by complexity alone" with a row wider than the table's column formatting. The README also hardcodes tool-specific numbers (13.4, 42, 168) that may drift; this is acknowledged but not verifiable from the diff.Classifier
6 of 7 units passed all questions (1 PR document(s)).
Usage: model `openrouter/anthropic/claude-sonnet-5.5`, LLM done, tokens counted before the call 35192, calls 1, tokens in 35247 / out 597 (reasoning included in out), duration 19.2 s, cost 0.0765 USD (reported), classifier `jev-1.13.0` calls 7, tokens in 5295, cost 0.0002 USD, finding judge `jev-1.13.0` calls 1, tokens in 2098, cost 0.0001 USD, build file judge `jev-1.13.0` calls 26, tokens in 23089, cost 0.0010 USD, phases: path_judge 1.6 s, classifier 0.5 s, context 1.1 s, model_review 15.4 s, finding_judge 0.2 s, config: defaults + host + repository (.werkrevisor.toml at main2 answers ignored because of a confidence below [classifier] min_confidence.
c33f77e).Reviewed head `75678cb50cafb92e6078a300a692ee8ec6b3f32e` against base `c33f77e23e7ef0367a3c93c85d75a396fa2da2ab`, werkrevisor 0.32.7.
werkrevisor: YELLOW / HUMAN_REVIEW for
75678cb50cafb92e6078a300a692ee8ec6b3f32e.The result comment of werkrevisor holds the details.
@@ -0,0 +25,4 @@### Feature: the demo of werkcrappit's charts#### Scenario#14.01: the demo needs no container engine[medium] Doc contradicts the build setup (werkrevisor)
hint; Jev: real 0.69, severity 2.0 of 3
Scenario#14.01 claims the demo "needs no container engine" and that the nightly build
mutationruns withoutDOCKER_HOST. Nothing in the diff proves the plugin or PIT resolution works offline, and the build needs the git.javagil.de Maven registry, so the scenario is only about docker. Also,mutationCrapCodeChartapresumably depends on unit tests only, butpitestwithtargetTests = werkprobe.shop.*is the only filter; the scenario should say what is actually guaranteed (no docker needed) rather than "anyone with a JDK can build the demo".Fixed in
c196a0e: the scenario claims only that no container engine is needed ("also builds where neither docker nor werkdock runs"), not that a JDK alone suffices; the plugins still come from the registry.Round 3, fixed in
c196a0e:OrderRepository: no change; it is an in-memory demo, used by one thread in unit tests only. Left to the human, with the build files.🟡 werkrevisor: YELLOW / HUMAN_REVIEW
Change kind:
mixed.Reasons
Findings
[medium] Doc contradicts code on registry at
docs/prs/2026-10-11-PR#14-shop-demo.md:28-40, hint, as a line comment[low] Mutation-CRAP values likely inconsistent at
README.md:223-233hint
The README states Catalog.reorderQuantity has Mutation-CRAP 42 and the class a change risk of 168. The doc says "no test at all" for it, but
Catalogis covered byCatalogTestonly forreserve. AlsoShipping.costis described as complexity 6, yet counting branches (3 ifs plus an else-if, plus the!"DE"check and the cap check) gives 6, while theCatalogJavadoc claims LCOM4 3 despitereorderQuantityusingstock. These values are hard-coded and unverifiable here. A werkcrappit or PIT update would silently invalidate them, which the README acknowledges only loosely.[low] Nightly build lacks a werkdock environment at
.werkator.yml:47-59, hint, as a line commentClassifier
7 of 7 units passed all questions (1 PR document(s)).
Usage: model `openrouter/anthropic/claude-sonnet-5.5`, LLM done, tokens counted before the call 35181, calls 1, tokens in 35244 / out 833 (reasoning included in out), duration 21.3 s, cost 0.0788 USD (reported), classifier `jev-1.13.0` calls 7, tokens in 5277, cost 0.0002 USD, finding judge `jev-1.13.0` calls 1, tokens in 2116, cost 0.0001 USD, build file judge `jev-1.13.0` calls 26, tokens in 23089, cost 0.0010 USD, phases: path_judge 1.5 s, classifier 0.5 s, context 1.6 s, model_review 17.1 s, finding_judge 0.2 s, config: defaults + host + repository (.werkrevisor.toml at main3 answers ignored because of a confidence below [classifier] min_confidence.
c33f77e).Reviewed head `c196a0eadfa757504f26326105c05aff97ee85dd` against base `c33f77e23e7ef0367a3c93c85d75a396fa2da2ab`, werkrevisor 0.32.7.
werkrevisor: YELLOW / HUMAN_REVIEW for
c196a0eadfa757504f26326105c05aff97ee85dd.The result comment of werkrevisor holds the details.
@@ -43,0 +44,4 @@# The demo of werkcrappit's charts: PIT over werkprobe.shop and the code city with its structure# page and matrix, nightly and only when main moved, after Werkator's (00:00) and werkcrappit's# (03:00) mutation builds on the same host. No gate: the demo is red on purpose.mutation:[low] Nightly build lacks a werkdock environment (werkrevisor)
hint
The
mutationbuild defines nowerkdocksection, whereasdefaultdoes. If the sandbox is mandatory in Werkator, the build may run unsandboxed or fail. The PR does not say which applies. Uncertain; depends on Werkator defaults.@@ -0,0 +25,4 @@### Feature: the demo of werkcrappit's charts#### Scenario#14.01: the demo needs no container engine[medium] Doc contradicts code on registry (werkrevisor)
hint; Jev: real 0.55, severity 2.1 of 3
The Solution says
settings.gradleandbuild.gradleadd the registry, "each limited to the groupde.javagil.werkcrappit". Thebuild.gradlecomment says the repository is for "werkcrappit-pit". This works only if the PIT plugin artifact has the same group. The doc also states that the demo "needs no container engine" and that the nightly build runs "withoutDOCKER_HOST"..werkator.ymlgives themutationbuild no werkdock block, so it is unclear whether it runs inside the sandbox at all. The claim is not backed by the config.