1.3.2
Touched-test acceptance now finds every test that can break: check --tests and mutant follow the project's imports to the end, resolve modules the way the project does, and keep the coverage that tests write from child processes.
What's new in 1.3.2
- Every test that reaches the change.
check --testsandmutantselect the whole chain of importers (imports, re-exports, dynamic imports,require, and path strings in tests), not two steps. On a real bun monorepo a change to a shared utility now selects 109 of the 109 tests that depend on it (1.3.1: 23). pre-push is unchanged. - Modules resolve like the project resolves them. The nearest
tsconfig.jsonpaths(throughextends, TypeScript key precedence),package.json#imports(#lib/*), and workspace packages by name (exports, including the string form,module,main). - Coverage from child processes counts. The built-in node, bun, vitest and pytest commands write their report under
$QG_DIRand append it to$QG_LCOVinstead of replacing the file; the exit code stays the tests'. - Broken lcov is refused everywhere. The full gate, a plain
checkand--skip-testscheck the lcov structure before any CRAP number; an orphan or repeatedend_of_recordis invalid coverage. mutant_timeout_sdefaults to 900 s, astouched_timeout_s: a mutant on a shared module now runs every dependent test.
Verified: 404 tests; live runs on two real consumer repositories (a TypeScript agent and a bun monorepo), including a shared module with 576 dependent test files (check --tests GATE PASS, mutant KILLED).
Upgrade: claude plugin update code-quality@code-quality, or your agent's plugin update. No config change is needed.