Step 7 of the specification: a Kotlin/JVM fixture run through PIT with the packaged plugin, the result per Kotlin construct, and the limits in ADR 0009.
Step 7 of the specification: a Kotlin/JVM fixture run through PIT with the packaged plugin, the result per Kotlin construct, and the limits in ADR 0009.
See `docs/prs/2026-10-11-PR#61-kotlin-basics.md`.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
ai-review/assessment AI review passed; 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
claude-code
changed title from WIP: Kotlin/JVM basis support checked, limits documented to Kotlin/JVM basis support checked, limits documented (0.26.6)2026-10-11 14:04:16 +02:00
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 writing rules violated in the changed docs: CHANGELOG.md:9: more than one sentence on a line; docs/compatibility.md:30: line longer than 128 characters (136)
hint 6 changed file(s) that neither weaken the checks, touch security nor show a risk category of jvm-spring-backend according to Jev
hint 1 build change(s) of low risk according to Jev: build.gradle.kts (weakens checks 0.03, risk 0.00, security 0.01)
Classifier
6 of 6 units passed all questions (1 PR document(s)).
1 answer ignored because of a confidence below [classifier] min_confidence.
Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 22259, calls 1, tokens in 21450 / out 10360 (reasoning included in out), duration 107.4 s, cost 0.0188 USD (reported), classifier `jev-1.13.0` calls 6, tokens in 4276, cost 0.0002 USD, build file judge `jev-1.13.0` calls 7, tokens in 6832, cost 0.0003 USD, phases: path_judge 0.5 s, classifier 0.5 s, context 0.6 s, model_review 105.3 s, config: defaults + host + repository (.werkrevisor.toml at main 295aeb3).
Reviewed head `d4190ac70bb23a7024a88521ff99b2f96d64d519` against base `295aeb3894046830074ebbe242eb685087d3cd03`, werkrevisor 0.32.7.
<!-- werkrevisor:d4190ac70bb23a7024a88521ff99b2f96d64d519 -->
<!-- werkrevisor-verdict:GREEN -->
<!-- werkrevisor-blocks:21cf8140aa9374a3ed4e52650100b18f,72e6e5b76b55cc9c59d7d8e6c520cb8e,bc9cfc1ef57ec402927f6020ba41e512,11826b0dff2aa4812a60723da0a53ffa,371048899fc09b916c55f03ac32e632c,cad8c8d192d4a7a40a645f40ad923f9f,d017f57f3831bd80cf60525d71241700,a786f611c73e08ea39d9a55e1fe4e286,e301244b8da171488db0c493643ab619,14c1a5d4be05d8c5d8adc5f4980d996f,93fdd446d5c4dd47855d9a9e594d8fa8,c861fb14861958c6575773c8baecb135,d42aeda4ab827304b74a2af83b7d3455,7dd5bd1de26c45e2d1037c8bfacb096d,8a463e4ebbb58723c9112b48975bc622,c05dc4c40f82a9bde2b5d67b8f1d34e0,51e97bbca51584c7f02256bd111ec071 -->
<!-- werkrevisor-folded -->
<details><summary>🟢 werkrevisor GREEN for <code>d4190ac</code>, superseded by <a href="http://git.javagil.de/mi/werkcrappit/pulls/61#issuecomment-3997">the result for <code>4ef2d25</code></a></summary>
## 🟢 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** writing rules violated in the changed docs: CHANGELOG.md:9: more than one sentence on a line; docs/compatibility.md:30: line longer than 128 characters (136)
- **hint** 6 changed file(s) that neither weaken the checks, touch security nor show a risk category of jvm-spring-backend according to Jev
- **hint** 1 build change(s) of low risk according to Jev: build.gradle.kts (weakens checks 0.03, risk 0.00, security 0.01)
### Classifier
6 of 6 units passed all questions (1 PR document(s)).
1 answer ignored because of a confidence below [classifier] min_confidence.
<sub>
Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 22259, calls 1, tokens in 21450 / out 10360 (reasoning included in out), duration 107.4 s, cost 0.0188 USD (reported), classifier `jev-1.13.0` calls 6, tokens in 4276, cost 0.0002 USD, build file judge `jev-1.13.0` calls 7, tokens in 6832, cost 0.0003 USD, phases: path_judge 0.5 s, classifier 0.5 s, context 0.6 s, model_review 105.3 s, config: defaults + host + repository (.werkrevisor.toml at main 295aeb3).<br>
Reviewed head `d4190ac70bb23a7024a88521ff99b2f96d64d519` against base `295aeb3894046830074ebbe242eb685087d3cd03`, werkrevisor 0.32.7.
</sub>
</details>
werkrevisor: GREEN / PASS for d4190ac70bb23a7024a88521ff99b2f96d64d519.
The result comment of werkrevisor holds the details.
werkrevisor: GREEN / PASS for `d4190ac70bb23a7024a88521ff99b2f96d64d519`.
The result comment of werkrevisor holds the details.
<!-- werkrevisor-review:d4190ac70bb23a7024a88521ff99b2f96d64d519 -->
Gate: approved by werkrevisor; merge waits for 1 open hint(s): reply to each line comment and resolve it, then restart the review or push a commit.
Change kind: mixed.
Reasons
hint approval of werkrevisor for d4190ac not carried over: 2 approved block(s) are missing
hint 6 changed file(s) that neither weaken the checks, touch security nor show a risk category of jvm-spring-backend according to Jev
hint 1 build change(s) of low risk according to Jev: build.gradle.kts (weakens checks 0.03, risk 0.00, security 0.01)
hint 1 finding(s) of low severity or rated minor by Jev: werkcrappit-pit/src/functionalTest/resources/fixtures/kotlin-basic/src/main/kotlin/demo/Pricing.kt:29
hint model recommends changes before merge
hint model rates the risk as high (advisory: Jev judged every changed file)
Findings
Fixture Comparator Bug Breaks Test at werkcrappit-pit/src/functionalTest/resources/fixtures/kotlin-basic/src/main/kotlin/demo/Pricing.kt:29, severity unknown, counted as medium, hint, as a line comment
Classifier
6 of 6 units passed all questions (1 PR document(s)).
1 answer ignored because of a confidence below [classifier] min_confidence.
Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 22270, calls 1, tokens in 21460 / out 57236 (reasoning included in out), duration 480.5 s, cost 0.0751 USD (reported), classifier `jev-1.13.0` calls 6, tokens in 4276, cost 0.0002 USD, finding judge `jev-1.13.0` calls 1, tokens in 1848, cost 0.0001 USD, build file judge `jev-1.13.0` calls 7, tokens in 6832, cost 0.0003 USD, phases: path_judge 0.5 s, classifier 0.4 s, context 0.4 s, model_review 478.2 s, finding_judge 0.2 s, config: defaults + host + repository (.werkrevisor.toml at main 295aeb3).
Reviewed head `4ef2d2544e555ee7e5f1917e85d229ed0a13c5a8` against base `295aeb3894046830074ebbe242eb685087d3cd03`, werkrevisor 0.32.7.
<!-- werkrevisor:4ef2d2544e555ee7e5f1917e85d229ed0a13c5a8 -->
<!-- werkrevisor-verdict:GREEN -->
<!-- werkrevisor-blocks:0c3296c4d69a955caa5fb873bc2ce3c0,72e6e5b76b55cc9c59d7d8e6c520cb8e,bc9cfc1ef57ec402927f6020ba41e512,11826b0dff2aa4812a60723da0a53ffa,371048899fc09b916c55f03ac32e632c,cad8c8d192d4a7a40a645f40ad923f9f,63e904a12402b8a2287abde38eeaab2b,a786f611c73e08ea39d9a55e1fe4e286,e301244b8da171488db0c493643ab619,14c1a5d4be05d8c5d8adc5f4980d996f,93fdd446d5c4dd47855d9a9e594d8fa8,c861fb14861958c6575773c8baecb135,d42aeda4ab827304b74a2af83b7d3455,7dd5bd1de26c45e2d1037c8bfacb096d,8a463e4ebbb58723c9112b48975bc622,c05dc4c40f82a9bde2b5d67b8f1d34e0,51e97bbca51584c7f02256bd111ec071 -->
## 🟢 werkrevisor: GREEN / PASS
Gate: approved by werkrevisor; merge waits for 1 open hint(s): reply to each line comment and resolve it, then restart the review or push a commit.
Change kind: `mixed`.
### Reasons
- **hint** approval of werkrevisor for `d4190ac` not carried over: 2 approved block(s) are missing
- **hint** 6 changed file(s) that neither weaken the checks, touch security nor show a risk category of jvm-spring-backend according to Jev
- **hint** 1 build change(s) of low risk according to Jev: build.gradle.kts (weakens checks 0.03, risk 0.00, security 0.01)
- **hint** 1 finding(s) of low severity or rated minor by Jev: werkcrappit-pit/src/functionalTest/resources/fixtures/kotlin-basic/src/main/kotlin/demo/Pricing.kt:29
- **hint** model recommends changes before merge
- **hint** model rates the risk as high (advisory: Jev judged every changed file)
### Findings
1. **Fixture Comparator Bug Breaks Test** at `werkcrappit-pit/src/functionalTest/resources/fixtures/kotlin-basic/src/main/kotlin/demo/Pricing.kt:29`, severity unknown, counted as medium, hint, as a line comment
### Classifier
6 of 6 units passed all questions (1 PR document(s)).
1 answer ignored because of a confidence below [classifier] min_confidence.
<sub>
Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 22270, calls 1, tokens in 21460 / out 57236 (reasoning included in out), duration 480.5 s, cost 0.0751 USD (reported), classifier `jev-1.13.0` calls 6, tokens in 4276, cost 0.0002 USD, finding judge `jev-1.13.0` calls 1, tokens in 1848, cost 0.0001 USD, build file judge `jev-1.13.0` calls 7, tokens in 6832, cost 0.0003 USD, phases: path_judge 0.5 s, classifier 0.4 s, context 0.4 s, model_review 478.2 s, finding_judge 0.2 s, config: defaults + host + repository (.werkrevisor.toml at main 295aeb3).<br>
Reviewed head `4ef2d2544e555ee7e5f1917e85d229ed0a13c5a8` against base `295aeb3894046830074ebbe242eb685087d3cd03`, werkrevisor 0.32.7.
</sub>
werkrevisor: GREEN / PASS for 4ef2d2544e555ee7e5f1917e85d229ed0a13c5a8.
The result comment of werkrevisor holds the details.
werkrevisor: GREEN / PASS for `4ef2d2544e555ee7e5f1917e85d229ed0a13c5a8`.
The result comment of werkrevisor holds the details.
<!-- werkrevisor-review:4ef2d2544e555ee7e5f1917e85d229ed0a13c5a8 -->
Fixture Comparator Bug Breaks Test, severity unknown, counted as medium (werkrevisor)
hint; Jev: real 0.28, severity 2.0 of 3
In byDistance, the else branch of val db reads target - a (the distance of the first comparator argument) instead of target - b (the distance of the second argument). It is a copy-paste typo from the val da line above. The resulting comparator is inconsistent: e.g. compare(7, 1) returns 4 and compare(1, 7) returns 2, so 1 and 7 are both reported as greater than each other. The fixture's PricingTest.propertyLambdaInlineCompanionTopLevel asserts assertEquals(listOf(4, 7, 1), listOf(1, 7, 4).sortedWith(pricing.byDistance(5))), but binary insertion sort (used by Kotlin's sortedWith via Java's TimSort for arrays this small) yields [1, 4, 7] here. The fixture's test failure would prevent PIT from running cleanly and break KotlinBasicTest.
**Fixture Comparator Bug Breaks Test**, severity unknown, counted as medium (werkrevisor)
hint; Jev: real 0.28, severity 2.0 of 3
In `byDistance`, the else branch of `val db` reads `target - a` (the distance of the first comparator argument) instead of `target - b` (the distance of the second argument). It is a copy-paste typo from the `val da` line above. The resulting comparator is inconsistent: e.g. `compare(7, 1)` returns 4 and `compare(1, 7)` returns 2, so 1 and 7 are both reported as greater than each other. The fixture's `PricingTest.propertyLambdaInlineCompanionTopLevel` asserts `assertEquals(listOf(4, 7, 1), listOf(1, 7, 4).sortedWith(pricing.byDistance(5)))`, but binary insertion sort (used by Kotlin's `sortedWith` via Java's TimSort for arrays this small) yields `[1, 4, 7]` here. The fixture's test failure would prevent PIT from running cleanly and break `KotlinBasicTest`.
No change: line 28 reads val db = if (b > target) b - target else target - b, so the comparator compares the distances of a and b. listOf(1, 7, 4).sortedWith(byDistance(5)) gives [4, 7, 1] (distances 1, 2, 4), and the fixture's tests pass in KotlinBasicTest, locally and in the CI build of this head.
No change: line 28 reads `val db = if (b > target) b - target else target - b`, so the comparator compares the distances of `a` and `b`. `listOf(1, 7, 4).sortedWith(byDistance(5))` gives `[4, 7, 1]` (distances 1, 2, 4), and the fixture's tests pass in `KotlinBasicTest`, locally and in the CI build of this head.
Round 2: "Fixture Comparator Bug Breaks Test" is answered without a change, with evidence in its thread: the line already reads target - b, and the fixture's tests pass. No hint is open any more.
Round 2: "Fixture Comparator Bug Breaks Test" is answered without a change, with evidence in its thread: the line already reads `target - b`, and the fixture's tests pass. No hint is open any more.
ai-reviewer
scheduled this pull request to auto merge when all checks succeed 2026-10-11 16:16:45 +02:00
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.
Step 7 of the specification: a Kotlin/JVM fixture run through PIT with the packaged plugin, the result per Kotlin construct, and the limits in ADR 0009.
See
docs/prs/2026-10-11-PR#61-kotlin-basics.md.🤖 Generated with Claude Code
WIP: Kotlin/JVM basis support checked, limits documentedto Kotlin/JVM basis support checked, limits documented (0.26.6)🟢 werkrevisor GREEN for
d4190ac, superseded by the result for4ef2d25🟢 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
Classifier
6 of 6 units passed all questions (1 PR document(s)).
Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 22259, calls 1, tokens in 21450 / out 10360 (reasoning included in out), duration 107.4 s, cost 0.0188 USD (reported), classifier `jev-1.13.0` calls 6, tokens in 4276, cost 0.0002 USD, build file judge `jev-1.13.0` calls 7, tokens in 6832, cost 0.0003 USD, phases: path_judge 0.5 s, classifier 0.5 s, context 0.6 s, model_review 105.3 s, config: defaults + host + repository (.werkrevisor.toml at main1 answer ignored because of a confidence below [classifier] min_confidence.
295aeb3).Reviewed head `d4190ac70bb23a7024a88521ff99b2f96d64d519` against base `295aeb3894046830074ebbe242eb685087d3cd03`, werkrevisor 0.32.7.
werkrevisor: GREEN / PASS for
d4190ac70bb23a7024a88521ff99b2f96d64d519.The result comment of werkrevisor holds the details.
@@ -6,0 +6,4 @@## 0.26.6- Kotlin/JVM basis methods are tested with Kotlin 2.4.21; ADR 0009 lists what each Kotlin construct gives in the report,and the limits for inline and suspend functions. No change to the plugins.Writing rule: more than one sentence on a line (werkrevisor writing rule)
Fix the line, or reply why it stays, and resolve this comment.
Fixed in
4ef2d25: one sentence per line.@@ -26,1 +27,4 @@## Kotlin/JVMKotlin/JVM basis methods are tested with the combination above and Kotlin 2.4.21: `KotlinBasicTest`, [ADR 0009](adr/0009-kotlin-jvm.md).Writing rule: line longer than 128 characters (136) (werkrevisor writing rule)
Fix the line, or reply why it stays, and resolve this comment.
Fixed in
4ef2d25: the line wrapped after the colon.New commits pushed, approval review dismissed automatically according to repository settings
Round 1, fixed in
4ef2d25: both writing-rule hints, inCHANGELOG.mdanddocs/compatibility.md.🟢 werkrevisor: GREEN / PASS
Gate: approved by werkrevisor; merge waits for 1 open hint(s): reply to each line comment and resolve it, then restart the review or push a commit.
Change kind:
mixed.Reasons
d4190acnot carried over: 2 approved block(s) are missingFindings
werkcrappit-pit/src/functionalTest/resources/fixtures/kotlin-basic/src/main/kotlin/demo/Pricing.kt:29, severity unknown, counted as medium, hint, as a line commentClassifier
6 of 6 units passed all questions (1 PR document(s)).
Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 22270, calls 1, tokens in 21460 / out 57236 (reasoning included in out), duration 480.5 s, cost 0.0751 USD (reported), classifier `jev-1.13.0` calls 6, tokens in 4276, cost 0.0002 USD, finding judge `jev-1.13.0` calls 1, tokens in 1848, cost 0.0001 USD, build file judge `jev-1.13.0` calls 7, tokens in 6832, cost 0.0003 USD, phases: path_judge 0.5 s, classifier 0.4 s, context 0.4 s, model_review 478.2 s, finding_judge 0.2 s, config: defaults + host + repository (.werkrevisor.toml at main1 answer ignored because of a confidence below [classifier] min_confidence.
295aeb3).Reviewed head `4ef2d2544e555ee7e5f1917e85d229ed0a13c5a8` against base `295aeb3894046830074ebbe242eb685087d3cd03`, werkrevisor 0.32.7.
werkrevisor: GREEN / PASS for
4ef2d2544e555ee7e5f1917e85d229ed0a13c5a8.The result comment of werkrevisor holds the details.
@@ -0,0 +26,4 @@fun byDistance(target: Int): Comparator<Int> = Comparator { a, b ->val da = if (a > target) a - target else target - aval db = if (b > target) b - target else target - bFixture Comparator Bug Breaks Test, severity unknown, counted as medium (werkrevisor)
hint; Jev: real 0.28, severity 2.0 of 3
In
byDistance, the else branch ofval dbreadstarget - a(the distance of the first comparator argument) instead oftarget - b(the distance of the second argument). It is a copy-paste typo from theval daline above. The resulting comparator is inconsistent: e.g.compare(7, 1)returns 4 andcompare(1, 7)returns 2, so 1 and 7 are both reported as greater than each other. The fixture'sPricingTest.propertyLambdaInlineCompanionTopLevelassertsassertEquals(listOf(4, 7, 1), listOf(1, 7, 4).sortedWith(pricing.byDistance(5))), but binary insertion sort (used by Kotlin'ssortedWithvia Java's TimSort for arrays this small) yields[1, 4, 7]here. The fixture's test failure would prevent PIT from running cleanly and breakKotlinBasicTest.No change: line 28 reads
val db = if (b > target) b - target else target - b, so the comparator compares the distances ofaandb.listOf(1, 7, 4).sortedWith(byDistance(5))gives[4, 7, 1](distances 1, 2, 4), and the fixture's tests pass inKotlinBasicTest, locally and in the CI build of this head.Round 2: "Fixture Comparator Bug Breaks Test" is answered without a change, with evidence in its thread: the line already reads
target - b, and the fixture's tests pass. No hint is open any more.werkrevisor, review restarted for
4ef2d2544e555ee7e5f1917e85d229ed0a13c5a8: approved by werkrevisor; merge scheduled for when the checks succeed.