PIT minions without a heap limit (v1.38.3) #135

Merged
ai-reviewer merged 1 commits from mihoe/pit-minion-heap into main 2026-10-10 00:08:21 +02:00
Collaborator

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

> 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)
claude-code added 1 commit 2026-10-10 00:03:40 +02:00
PIT minions without a heap limit (v1.38.3)
werkator build succeeded after 02:57
ai-review/assessment human review required; a human approval unlocks the merge; review requested from mi; merge scheduled for when the checks succeed
ai-review/gate build succeeded after 01:13
a5e38fceed
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
Collaborator

🟡 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.

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
mi approved these changes 2026-10-10 00:08:19 +02:00
ai-reviewer merged commit 6097e550ec into main 2026-10-10 00:08:21 +02:00
ai-reviewer deleted branch mihoe/pit-minion-heap 2026-10-10 00:08:21 +02:00
Sign in to join this conversation.
No Reviewers
No labels
3 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: mi/werkator#135