Historic PR-documentation is not maintained along with new PRs — treat it as a snapshot, not as current documentation.
The Problem
PR#134 limited each PIT minion to 512 MiB of heap.
It was merged before its local check had finished, so that the nightly build would already run with it.
The check then failed: a full local run of the nightly command ended 8 mutants in MEMORY_ERROR, and 7 methods became INCONCLUSIVE.
werkcrappit refuses an inconclusive method, so the nightly gate would turn red for that alone.
The affected methods are mostly covered by Spring tests (UiController, Watcher).
A minion runs many tests one after the other, and Spring keeps their application contexts cached, so its heap need grows over its life.
JVM in the local run
Limit
Highest resident memory
PIT main process
768 MiB heap
659 MiB
PIT minion
512 MiB heap
1050 MiB
Non-Goals
No new minion limit yet: a limit that fits needs its own measured run, e.g. with a smaller Spring context cache.
That run takes more than an hour, and the next nightly build starts sooner.
The Solution
The minions lose -Xmx512m and keep only -XX:+UseSerialGC; their heap limit is the JVM default again, a quarter of the RAM, as before PR#134.
The main process keeps -Xmx768m: it stayed below 700 MiB and had no memory error.
Follow-up PRs
A limit for the minions that fits, measured with a full run, possibly together with spring.test.context.cache.maxSize for the minions.
> Historic PR-documentation is not maintained along with new PRs — treat it as a snapshot, not as current documentation.
## The Problem
PR#134 limited each PIT minion to 512 MiB of heap.
It was merged before its local check had finished, so that the nightly build would already run with it.
The check then failed: a full local run of the nightly command ended 8 mutants in `MEMORY_ERROR`, and 7 methods became `INCONCLUSIVE`.
werkcrappit refuses an inconclusive method, so the nightly gate would turn red for that alone.
The affected methods are mostly covered by Spring tests (`UiController`, `Watcher`).
A minion runs many tests one after the other, and Spring keeps their application contexts cached, so its heap need grows over its life.
| JVM in the local run | Limit | Highest resident memory |
|----------------------|--------------|------------------------:|
| PIT main process | 768 MiB heap | 659 MiB |
| PIT minion | 512 MiB heap | 1050 MiB |
## Non-Goals
- No new minion limit yet: a limit that fits needs its own measured run, e.g. with a smaller Spring context cache.
That run takes more than an hour, and the next nightly build starts sooner.
## The Solution
- The minions lose `-Xmx512m` and keep only `-XX:+UseSerialGC`; their heap limit is the JVM default again, a quarter of the RAM, as before PR#134.
- The main process keeps `-Xmx768m`: it stayed below 700 MiB and had no memory error.
## Follow-up PRs
- A limit for the minions that fits, measured with a full run, possibly together with `spring.test.context.cache.maxSize` for the minions.
---
🤖 Generated with [Claude Code](https://claude.com/claude-code)
512 MiB ended 8 mutants in MEMORY_ERROR in a full local run, which
turns the nightly gate red; the minions keep only the serial collector,
the main process keeps its 768 MiB.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
claude-code
marked the pull request as ready for review 2026-10-10 00:06:57 +02:00
YELLOW risky build changes according to Jev: build.gradle.kts (weakens checks 0.11, risk 1.90, security 0.01)
hint 1 changed file(s) that neither weaken the checks, touch security nor show a risk category of jvm-spring-backend according to Jev
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
4 of 4 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 15000, calls 1, tokens in 14430 / out 11789 (reasoning included in out), duration 69.0 s, cost 0.0184 USD (reported), classifier `jev-1.13.0` calls 4, tokens in 2867, cost 0.0001 USD, excerpt selection `openrouter/openai/gpt-6-luna` calls 1, tokens in 28892 / out 113, cost 0.0037 USD (reported), build file judge `jev-1.13.0` calls 2, tokens in 2389, cost 0.0001 USD, phases: path_judge 0.3 s, classifier 0.3 s, context 4.3 s, model_review 63.9 s, config: defaults + host + repository (.werkrevisor.toml at main 8b06894).
Reviewed head `a5e38fceeda2f48621a3eec9e54a068f2130166d` against base `8b06894b65defb93732022440226d7bcd83b4f91`, werkrevisor 0.31.1.
<!-- werkrevisor:a5e38fceeda2f48621a3eec9e54a068f2130166d -->
<!-- werkrevisor-verdict:YELLOW -->
## 🟡 werkrevisor: YELLOW / HUMAN_REVIEW
Change kind: `mixed`.
### Reasons
- **YELLOW** risky build changes according to Jev: build.gradle.kts (weakens checks 0.11, risk 1.90, security 0.01)
- **hint** 1 changed file(s) that neither weaken the checks, touch security nor show a risk category of jvm-spring-backend according to Jev
- **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
4 of 4 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 15000, calls 1, tokens in 14430 / out 11789 (reasoning included in out), duration 69.0 s, cost 0.0184 USD (reported), classifier `jev-1.13.0` calls 4, tokens in 2867, cost 0.0001 USD, excerpt selection `openrouter/openai/gpt-6-luna` calls 1, tokens in 28892 / out 113, cost 0.0037 USD (reported), build file judge `jev-1.13.0` calls 2, tokens in 2389, cost 0.0001 USD, phases: path_judge 0.3 s, classifier 0.3 s, context 4.3 s, model_review 63.9 s, config: defaults + host + repository (.werkrevisor.toml at main 8b06894).<br>
Reviewed head `a5e38fceeda2f48621a3eec9e54a068f2130166d` against base `8b06894b65defb93732022440226d7bcd83b4f91`, werkrevisor 0.31.1.
</sub>
ai-reviewer
scheduled this pull request to auto merge when all checks succeed 2026-10-10 00:08:11 +02:00
ai-reviewer
requested review from mi 2026-10-10 00:08:11 +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.
The Problem
PR#134 limited each PIT minion to 512 MiB of heap.
It was merged before its local check had finished, so that the nightly build would already run with it.
The check then failed: a full local run of the nightly command ended 8 mutants in
MEMORY_ERROR, and 7 methods becameINCONCLUSIVE.werkcrappit refuses an inconclusive method, so the nightly gate would turn red for that alone.
The affected methods are mostly covered by Spring tests (
UiController,Watcher).A minion runs many tests one after the other, and Spring keeps their application contexts cached, so its heap need grows over its life.
Non-Goals
That run takes more than an hour, and the next nightly build starts sooner.
The Solution
-Xmx512mand keep only-XX:+UseSerialGC; their heap limit is the JVM default again, a quarter of the RAM, as before PR#134.-Xmx768m: it stayed below 700 MiB and had no memory error.Follow-up PRs
spring.test.context.cache.maxSizefor the minions.🤖 Generated with Claude Code
🟡 werkrevisor: YELLOW / HUMAN_REVIEW
Change kind:
mixed.Reasons
Classifier
4 of 4 units passed all questions (1 PR document(s)).
Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 15000, calls 1, tokens in 14430 / out 11789 (reasoning included in out), duration 69.0 s, cost 0.0184 USD (reported), classifier `jev-1.13.0` calls 4, tokens in 2867, cost 0.0001 USD, excerpt selection `openrouter/openai/gpt-6-luna` calls 1, tokens in 28892 / out 113, cost 0.0037 USD (reported), build file judge `jev-1.13.0` calls 2, tokens in 2389, cost 0.0001 USD, phases: path_judge 0.3 s, classifier 0.3 s, context 4.3 s, model_review 63.9 s, config: defaults + host + repository (.werkrevisor.toml at main1 answer ignored because of a confidence below [classifier] min_confidence.
8b06894).Reviewed head `a5e38fceeda2f48621a3eec9e54a068f2130166d` against base `8b06894b65defb93732022440226d7bcd83b4f91`, werkrevisor 0.31.1.