The main build of c218a0c failed in ProcessTreeCpuTimeIntegrationTest. The host was loaded, and two seconds of wall clock held less than 300 ms of processor time. The test now burns until it has measured enough, with a 30 s deadline, and kills the whole tree.
See [the PR-doc](docs/prs/2026-10-12-PR%23157-cpu-time-test-under-load.md).
The main build of c218a0c failed in ProcessTreeCpuTimeIntegrationTest. The host was loaded, and two seconds of wall clock held less than 300 ms of processor time. The test now burns until it has measured enough, with a 30 s deadline, and kills the whole tree.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
YELLOW tests lost or disabled: src/test/kotlin/de/hoennig/werkator/build/ProcessTreeCpuTimeIntegrationTest.kt:37 removes 1 test(s) or assertion(s) without a replacement
hint 2 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 changed file was given to the AI as excerpt of the selected lines and 5 lines around each changed line, not in full (each larger than [review] max_full_file_chars = 80000): src/main/resources/templates/releases.html
Classifier
3 of 3 units passed all questions (1 PR document(s)).
Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 18281, calls 1, tokens in 17545 / out 5026 (reasoning included in out), duration 40.6 s, cost 0.0113 USD (reported), classifier `jev-1.13.0` calls 3, tokens in 2346, cost 0.0001 USD, excerpt selection `openrouter/openai/gpt-6-luna` calls 1, tokens in 31226 / out 126, cost 0.0040 USD (reported), build file judge `jev-1.13.0` calls 3, tokens in 3364, cost 0.0001 USD, phases: path_judge 0.2 s, classifier 0.2 s, context 4.0 s, model_review 35.8 s, config: defaults + host + repository (.werkrevisor.toml at main c218a0c).
Reviewed head `8a2eab8833cd7310a325609915f2dd9c6e886850` against base `c218a0c0c2f7b8169b4e9c8108d4c5b69328dec4`, werkrevisor 0.39.0.
<!-- werkrevisor:8a2eab8833cd7310a325609915f2dd9c6e886850 -->
<!-- werkrevisor-verdict:YELLOW -->
<!-- werkrevisor-blocks:853c92f22ad9f5e272f17c95e63d891f,b1023f4b5577b59cc8ef8975b143a32b,78a3905c8810a82d4266a94a7dcfa6ea,bfe49dc3fe39dcd689b2cfec8859c937,0a5f51ce5c9ee0df446bb1bab0691a6f,a583d632e341cb52b31a05a0263e551e,ea0db61c66bd9d965285938c4e278c2c,1f132a813b4c6855063b1019a4fbad4a,c22dd247dcda28f3b0e134565eb73ec3,251804718a646697d0c94d11671f220c -->
<!-- werkrevisor-folded -->
<details><summary>🟡 werkrevisor YELLOW for <code>8a2eab8</code>, superseded by <a href="http://git.javagil.de/mi/werkator/pulls/157#issuecomment-4861">the result for <code>ae688a0</code></a></summary>
## 🟡 werkrevisor: YELLOW / HUMAN_REVIEW
Change kind: `mixed`.
### Reasons
- **YELLOW** tests lost or disabled: src/test/kotlin/de/hoennig/werkator/build/ProcessTreeCpuTimeIntegrationTest.kt:37 removes 1 test(s) or assertion(s) without a replacement
- **hint** 2 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 changed file was given to the AI as excerpt of the selected lines and 5 lines around each changed line, not in full (each larger than [review] max_full_file_chars = 80000): src/main/resources/templates/releases.html
### Classifier
3 of 3 units passed all questions (1 PR document(s)).
<sub>
Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 18281, calls 1, tokens in 17545 / out 5026 (reasoning included in out), duration 40.6 s, cost 0.0113 USD (reported), classifier `jev-1.13.0` calls 3, tokens in 2346, cost 0.0001 USD, excerpt selection `openrouter/openai/gpt-6-luna` calls 1, tokens in 31226 / out 126, cost 0.0040 USD (reported), build file judge `jev-1.13.0` calls 3, tokens in 3364, cost 0.0001 USD, phases: path_judge 0.2 s, classifier 0.2 s, context 4.0 s, model_review 35.8 s, config: defaults + host + repository (.werkrevisor.toml at main c218a0c).<br>
Reviewed head `8a2eab8833cd7310a325609915f2dd9c6e886850` against base `c218a0c0c2f7b8169b4e9c8108d4c5b69328dec4`, werkrevisor 0.39.0.
</sub>
</details>
ai-reviewer
scheduled this pull request to auto merge when all checks succeed 2026-10-12 17:50:29 +02:00
ai-reviewer
requested review from mi 2026-10-12 17:50:29 +02:00
hint 2 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 changed file was given to the AI as excerpt of the selected lines and 5 lines around each changed line, not in full (each larger than [review] max_full_file_chars = 80000): src/main/resources/templates/releases.html
Classifier
3 of 3 units passed all questions (1 PR document(s)).
Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 18228, calls 1, tokens in 17502 / out 5994 (reasoning included in out), duration 47.5 s, cost 0.0124 USD (reported), classifier `jev-1.13.0` calls 3, tokens in 2346, cost 0.0001 USD, excerpt selection `openrouter/openai/gpt-6-luna` calls 1, tokens in 31226 / out 185, cost 0.0004 USD (reported), build file judge `jev-1.13.0` calls 3, tokens in 3322, cost 0.0001 USD, phases: path_judge 0.2 s, classifier 0.3 s, context 3.6 s, model_review 43.0 s, config: defaults + host + repository (.werkrevisor.toml at main c218a0c).
Reviewed head `ae688a07a4f7fe70dab708ec0f07111765ae604a` against base `c218a0c0c2f7b8169b4e9c8108d4c5b69328dec4`, werkrevisor 0.39.0.
<!-- werkrevisor:ae688a07a4f7fe70dab708ec0f07111765ae604a -->
<!-- werkrevisor-verdict:GREEN -->
<!-- werkrevisor-blocks:853c92f22ad9f5e272f17c95e63d891f,b1023f4b5577b59cc8ef8975b143a32b,78a3905c8810a82d4266a94a7dcfa6ea,bfe49dc3fe39dcd689b2cfec8859c937,0a5f51ce5c9ee0df446bb1bab0691a6f,a583d632e341cb52b31a05a0263e551e,c987ac2628e8266cdc5426223ee546d2,1f132a813b4c6855063b1019a4fbad4a,d0ed58b08104055c1bb8a77a44a08eab,3e6fed078a214c59036c67ed63804c02,a79227c904cc1f7ca48eb54ee79d7604 -->
## 🟢 werkrevisor: GREEN / PASS
Change kind: `mixed`.
### Reasons
- **hint** 2 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 changed file was given to the AI as excerpt of the selected lines and 5 lines around each changed line, not in full (each larger than [review] max_full_file_chars = 80000): src/main/resources/templates/releases.html
### Classifier
3 of 3 units passed all questions (1 PR document(s)).
<sub>
Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 18228, calls 1, tokens in 17502 / out 5994 (reasoning included in out), duration 47.5 s, cost 0.0124 USD (reported), classifier `jev-1.13.0` calls 3, tokens in 2346, cost 0.0001 USD, excerpt selection `openrouter/openai/gpt-6-luna` calls 1, tokens in 31226 / out 185, cost 0.0004 USD (reported), build file judge `jev-1.13.0` calls 3, tokens in 3322, cost 0.0001 USD, phases: path_judge 0.2 s, classifier 0.3 s, context 3.6 s, model_review 43.0 s, config: defaults + host + repository (.werkrevisor.toml at main c218a0c).<br>
Reviewed head `ae688a07a4f7fe70dab708ec0f07111765ae604a` against base `c218a0c0c2f7b8169b4e9c8108d4c5b69328dec4`, werkrevisor 0.39.0.
</sub>
werkrevisor: GREEN / PASS for ae688a07a4f7fe70dab708ec0f07111765ae604a.
The result comment of werkrevisor holds the details.
werkrevisor: GREEN / PASS for `ae688a07a4f7fe70dab708ec0f07111765ae604a`.
The result comment of werkrevisor holds the details.
<!-- werkrevisor-review:ae688a07a4f7fe70dab708ec0f07111765ae604a -->
ai-reviewer
removed review request for mi 2026-10-12 17:52:57 +02:00
[medium] The infinite burner can survive a mutation-test timeout (Codex review)
This spec is included in PIT. A mutant that makes sample() return null or zero keeps the test waiting for 30 seconds, but build.gradle.kts configures PIT with a 20-second timeout allowance beyond its short normal runtime (PIT timeout calculation). PIT can therefore terminate the test JVM before finally executes. The external shell loop then survives and burns CPU indefinitely; repeated mutants can accumulate such processes. Previously the burner stopped itself after two seconds. Give the external process its own bounded lifetime.
Fix it, or reply why it does not hold, and resolve this comment.
**[medium] The infinite burner can survive a mutation-test timeout** (Codex review)
This spec is included in PIT. A mutant that makes sample() return null or zero keeps the test waiting for 30 seconds, but build.gradle.kts configures PIT with a 20-second timeout allowance beyond its short normal runtime ([PIT timeout calculation](https://pitest.org/faq/#im-seeing-a-lot-of-timeouts-whats-going-on)). PIT can therefore terminate the test JVM before finally executes. The external shell loop then survives and burns CPU indefinitely; repeated mutants can accumulate such processes. Previously the burner stopped itself after two seconds. Give the external process its own bounded lifetime.
Fix it, or reply why it does not hold, and resolve this comment.
<!-- werkrevisor-codex -->
The change introduces an unbounded external CPU burner whose cleanup depends on the test JVM surviving. Mutation-test timeouts can leave these processes consuming the shared host’s CPU, which an ordinary green test run would not reveal.
Findings
[medium] The infinite burner can survive a mutation-test timeout at src/test/kotlin/de/hoennig/werkator/build/ProcessTreeCpuTimeIntegrationTest.kt:16, as a line comment
This review only advises; it holds no merge.
Model `gpt-6-astra`, effort high, tokens in 306346 (cached 254720) / out 1263, 76.3 s, 6 commands; reviewed head `ae688a07a4f7fe70dab708ec0f07111765ae604a`.
<!-- werkrevisor-codex:ae688a07a4f7fe70dab708ec0f07111765ae604a -->
<!-- werkrevisor-codex-critical:true -->
<!-- werkrevisor-codex-unattached:0 -->
<!-- werkrevisor-codex -->
## Codex review: critical
The change introduces an unbounded external CPU burner whose cleanup depends on the test JVM surviving. Mutation-test timeouts can leave these processes consuming the shared host’s CPU, which an ordinary green test run would not reveal.
### Findings
1. **[medium] The infinite burner can survive a mutation-test timeout** at `src/test/kotlin/de/hoennig/werkator/build/ProcessTreeCpuTimeIntegrationTest.kt:16`, as a line comment
This review only advises; it holds no merge.
<sub>
Model `gpt-6-astra`, effort high, tokens in 306346 (cached 254720) / out 1263, 76.3 s, 6 commands; reviewed head `ae688a07a4f7fe70dab708ec0f07111765ae604a`.
</sub>
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.
See the PR-doc.
The main build of
c218a0cfailed in ProcessTreeCpuTimeIntegrationTest. The host was loaded, and two seconds of wall clock held less than 300 ms of processor time. The test now burns until it has measured enough, with a 30 s deadline, and kills the whole tree.🤖 Generated with Claude Code
🟡 werkrevisor YELLOW for
8a2eab8, superseded by the result forae688a0🟡 werkrevisor: YELLOW / HUMAN_REVIEW
Change kind:
mixed.Reasons
Classifier
3 of 3 units passed all questions (1 PR document(s)).
Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 18281, calls 1, tokens in 17545 / out 5026 (reasoning included in out), duration 40.6 s, cost 0.0113 USD (reported), classifier `jev-1.13.0` calls 3, tokens in 2346, cost 0.0001 USD, excerpt selection `openrouter/openai/gpt-6-luna` calls 1, tokens in 31226 / out 126, cost 0.0040 USD (reported), build file judge `jev-1.13.0` calls 3, tokens in 3364, cost 0.0001 USD, phases: path_judge 0.2 s, classifier 0.2 s, context 4.0 s, model_review 35.8 s, config: defaults + host + repository (.werkrevisor.toml at mainc218a0c).Reviewed head `8a2eab8833cd7310a325609915f2dd9c6e886850` against base `c218a0c0c2f7b8169b4e9c8108d4c5b69328dec4`, werkrevisor 0.39.0.
🟢 werkrevisor: GREEN / PASS
Change kind:
mixed.Reasons
Classifier
3 of 3 units passed all questions (1 PR document(s)).
Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 18228, calls 1, tokens in 17502 / out 5994 (reasoning included in out), duration 47.5 s, cost 0.0124 USD (reported), classifier `jev-1.13.0` calls 3, tokens in 2346, cost 0.0001 USD, excerpt selection `openrouter/openai/gpt-6-luna` calls 1, tokens in 31226 / out 185, cost 0.0004 USD (reported), build file judge `jev-1.13.0` calls 3, tokens in 3322, cost 0.0001 USD, phases: path_judge 0.2 s, classifier 0.3 s, context 3.6 s, model_review 43.0 s, config: defaults + host + repository (.werkrevisor.toml at mainc218a0c).Reviewed head `ae688a07a4f7fe70dab708ec0f07111765ae604a` against base `c218a0c0c2f7b8169b4e9c8108d4c5b69328dec4`, werkrevisor 0.39.0.
werkrevisor: GREEN / PASS for
ae688a07a4f7fe70dab708ec0f07111765ae604a.The result comment of werkrevisor holds the details.
Codex review of
ae688a07a4f7fe70dab708ec0f07111765ae604a@@ -14,0 +13,4 @@* can see it; `& wait` keeps the outer shell from handing its process over to the loop.*/private fun burner(): Process =ProcessBuilder("sh", "-c", "sh -c 'while :; do :; done' & wait")[medium] The infinite burner can survive a mutation-test timeout (Codex review)
This spec is included in PIT. A mutant that makes sample() return null or zero keeps the test waiting for 30 seconds, but build.gradle.kts configures PIT with a 20-second timeout allowance beyond its short normal runtime (PIT timeout calculation). PIT can therefore terminate the test JVM before finally executes. The external shell loop then survives and burns CPU indefinitely; repeated mutants can accumulate such processes. Previously the burner stopped itself after two seconds. Give the external process its own bounded lifetime.
Fix it, or reply why it does not hold, and resolve this comment.
Codex review: critical
The change introduces an unbounded external CPU burner whose cleanup depends on the test JVM surviving. Mutation-test timeouts can leave these processes consuming the shared host’s CPU, which an ordinary green test run would not reveal.
Findings
src/test/kotlin/de/hoennig/werkator/build/ProcessTreeCpuTimeIntegrationTest.kt:16, as a line commentThis review only advises; it holds no merge.
Model `gpt-6-astra`, effort high, tokens in 306346 (cached 254720) / out 1263, 76.3 s, 6 commands; reviewed head `ae688a07a4f7fe70dab708ec0f07111765ae604a`.