diff --git a/CLAUDE.md b/CLAUDE.md index 5103a17..dc36e57 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -353,6 +353,11 @@ See [`../workspace/policies/jqwik-prompt-injection.md`](../workspace/policies/jq See [`../workspace/policies/ci-test-diagnostics.md`](../workspace/policies/ci-test-diagnostics.md). +## PIT Mutation Testing + +See [`../workspace/policies/pit-mutation-testing.md`](../workspace/policies/pit-mutation-testing.md). +Run PIT with the lifecycle prefix — `mvn test-compile org.pitest:pitest-maven:mutationCoverage`. + ## Lombok Config See [`../workspace/policies/lombok-config.md`](../workspace/policies/lombok-config.md). diff --git a/README.md b/README.md index d6a768b..4d56359 100644 --- a/README.md +++ b/README.md @@ -178,7 +178,7 @@ src/site/ai/ - Output quality depends on chosen model ## TODO -- **Expand PIT mutation-testing scope.** PIT is wired in `pom.xml` and runs on every CI build with `100`, but `` is currently narrowed to a single class (`AiCompletionParser`). The intent is to exercise the wiring and gate against regressions on that single class today; widen `` incrementally as additional classes reach mutation-test parity (i.e., add tests until 100% mutation coverage holds on the candidate class, then add it to the list). Final target: `net.ladenthin.maven.llamacpp.aiindex.*` matching the streambuffer pattern. +- **Expand PIT mutation-testing scope.** `` in `pom.xml` lists an explicit subset of classes verified at 100% mutation parity; widen it incrementally toward the whole `net.ladenthin.maven.llamacpp.aiindex.*` tree (the streambuffer whole-package model) as more classes reach parity. Generic PIT setup and invocation: see the [PIT policy](../workspace/policies/pit-mutation-testing.md). ## Recommended Models - Qwen2.5 Coder (balanced quality and speed) - Smaller instruct models for faster indexing diff --git a/pom.xml b/pom.xml index 8894b19..54f8476 100644 --- a/pom.xml +++ b/pom.xml @@ -654,12 +654,10 @@ SPDX-License-Identifier: Apache-2.0 org.pitest @@ -840,18 +838,14 @@ SPDX-License-Identifier: Apache-2.0 Gemma 4 entries; only pick Q6_K_P if Q4_K_M quality is visibly short. Use when: a light model keeps refusing, or you need the lightest Gemma 4. - Qwen3-Coder-30B-A3B-Instruct-Q4_K_M-C32k (RECOMMENDED default for code) - + MoE 30B total / ~3B active: code-specialized AND fast on CPU; fewer - active params than Gemma-4-26B-A4B; Apache-2.0. - - 18.6 GB download; needs Qwen sampling (temp 0.7 / top_p 0.8 / top_k 20). + Qwen3-Coder-30B-A3B-Instruct-UD-Q4_K_XL-C64k (RECOMMENDED default for code; ACTIVE for both phases) + + MoE 30B total / ~3.3B active: code-specialized AND fast on CPU; fewer + active params than Gemma-4-26B-A4B; non-thinking; Apache-2.0. + + Locally present (X:/Modelle/Qwen3-Coder-30B-A3B-Instruct-UD-Q4_K_XL.gguf, + 17.7 GB); 64K context — generous but CPU-feasible (256K prefill is unusable on CPU). + - Needs Qwen sampling (temp 0.7 / top_p 0.8 / top_k 20 / repeat 1.05). Use when: this is the go-to for most code summarization on CPU. - Qwen3-Coder-30B-A3B-Instruct-Q4_K_M-C256k (same file, huge window) - + Native 256K context; MoE + GQA keep the KV cache small (~+4.8 GB vs 32K). - - CPU PREFILL of a near-full window can take minutes; only worth it for - very large package roll-ups (Phase 2) or huge files. - Use when: a single input genuinely exceeds the 32K entries. - Qwen2.5-Coder-14B-Instruct-Q4_K_M-C32k + The cited top LOCAL dense code model at the 16 GB tier; big step up from the 7B entry. @@ -1110,36 +1104,27 @@ SPDX-License-Identifier: Apache-2.0 <end_of_turn> - - - Qwen3-Coder-30B-A3B-Instruct-Q4_K_M-C32k - X:/Modelle/Qwen3-Coder-30B-A3B-Instruct-Q4_K_M.gguf - 32768 - 2048 - 0.7 - 8 - 4 - true - 0.0 - 0.8 - 20 - 1.05 - - + - Qwen3-Coder-30B-A3B-Instruct-Q4_K_M-C256k - X:/Modelle/Qwen3-Coder-30B-A3B-Instruct-Q4_K_M.gguf - 262144 - 2048 + Qwen3-Coder-30B-A3B-Instruct-UD-Q4_K_XL-C64k + X:/Modelle/Qwen3-Coder-30B-A3B-Instruct-UD-Q4_K_XL.gguf + 65536 + 1536 0.7 8 4 @@ -1232,31 +1217,46 @@ SPDX-License-Identifier: Apache-2.0 file-body