Skip to content

Commit 5d7fd72

Browse files
committed
docs: point to PIT policy; track audioFile(Path) hermeticity gap
Add a 'PIT Mutation Testing' pointer to the workspace policy in CLAUDE.md, noting the test-compile invocation rule and that this repo's gate is 100% only with the audio fixture. Add an open TODO item for the non-hermetic value.ContentPart.audioFile(Path) PIT gap (4 NO_COVERAGE mutants, killable only by the fixture-gated AudioInputIntegrationTest) and the hermetic fix (a temp-file unit test mirroring the imageFile(Path) tests). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017i6A5bMhgCSbiKibQhxwuz
1 parent 2c91d1a commit 5d7fd72

2 files changed

Lines changed: 21 additions & 0 deletions

File tree

CLAUDE.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1097,6 +1097,14 @@ See [`../workspace/policies/lombok-config.md`](../workspace/policies/lombok-conf
10971097
10981098
See [`../workspace/policies/ci-test-diagnostics.md`](../workspace/policies/ci-test-diagnostics.md).
10991099
1100+
## PIT Mutation Testing
1101+
1102+
See [`../workspace/policies/pit-mutation-testing.md`](../workspace/policies/pit-mutation-testing.md).
1103+
Run PIT with the lifecycle prefix — `mvn test-compile org.pitest:pitest-maven:mutationCoverage`
1104+
(the bare goal fails with `NoSuchFileException: {argLine}`). Note: this repo's gate reaches 100%
1105+
only with the audio fixture present; without it, `value.ContentPart.audioFile(Path)` is
1106+
uncovered (98%) — see §4 of the policy.
1107+
11001108
## JPMS Module Descriptor
11011109
11021110
This repo ships a `module-info.java` compiled in a separate `release 9` execution. Javadoc

TODO.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,19 @@ cross-cutting initiative.
1313

1414
## Open — jllama-specific
1515

16+
### PIT gate not hermetic — `value.ContentPart.audioFile(Path)` (open)
17+
18+
The PIT mutation gate reaches 100% **only when the audio test fixture is present**. Without it the
19+
run is **98%**: 4 `NO_COVERAGE` mutants in `value.ContentPart.audioFile(Path)` (the null file-name
20+
guard, the `.wav`/`.mp3` extension dispatch, and `Files.readAllBytes`). The only test that exercises
21+
that method is `AudioInputIntegrationTest`, which is model-/fixture-gated and self-skips (`Assume`)
22+
when no audio clip is supplied (`net.ladenthin.llama.audio.input` — no committed default). So any
23+
environment lacking the clip (e.g. a network-restricted sandbox) reds the gate. Fix: add a hermetic
24+
temp-file unit test for `audioFile(Path)` — write a few bytes to a `@TempDir` `*.wav` / `*.mp3` and
25+
assert the format dispatch — mirroring the existing `imageFile(Path)` temp-file tests (PNG/JPG/GIF/
26+
WEBP), which already make the image path hermetic. See
27+
[`../workspace/policies/pit-mutation-testing.md`](../workspace/policies/pit-mutation-testing.md) §4.
28+
1629
### Code audit — pre-existing correctness / safety findings (RESOLVED — PRs #258 + #260)
1730

1831
A multi-area audit (2026-06-20) of the **existing** codebase surfaced 18 correctness/safety findings,

0 commit comments

Comments
 (0)