Skip to content

1.3.1 — accept a change by its own tests

Choose a tag to compare

@smixs smixs released this 27 Sep 07:38
· 14 commits to main since this release

A lead can now accept an agent's change by the tests that change touches, prove that a test catches a real bug, and trust that the pushed commit, not the local checkout, is what the gate judged.

What's new

1.3.0

  • check --since <base> --tests runs the tests the change touches (by name, by import, and one more hop through a test harness) with coverage in a private run folder, then judges only the changed functions. Old debt does not block.
  • mutant --file <path> --find <text> --replace <text> [--test <path>] makes one exact mutation, runs the tests, and prints KILLED, SURVIVED or ERROR. The file is restored byte for byte after every outcome, Ctrl-C included; a mutant left by a killed run is restored on the next start.
  • One test executor for the full gate, check --tests, pre-push and mutant: it waits while the machine is busy (1-minute load above 2 × CPU, up to 10 minutes, then runs) and kills the whole test process group on a timeout or Ctrl-C.
  • pre-push judges the pushed commit: when the push has touched tests to run, pushing a commit other than the checked-out one, or with uncommitted changes in the files the touched tests read, is refused with the reason.
  • New [tests] keys (touched_cmd, mutant_cmd, max_load, load_wait_s, touched_timeout_s, mutant_timeout_s) are protected like the rest of .quality.toml.
  • New acceptance skill: the runbook for accepting a change — a spec with a failure table, one parallel pass on a frozen candidate, one batched repair, two rounds.

1.3.1

  • Touched tests include X.<anything>.test.ts for X.tsx and test files that name a repository file by a path string, so render tests that load a harness by path are selected.
  • A bun.lock or bun.lockb at the root makes a package.json project a bun project for touched runs and mutant.
  • Only the agent entry points (agent-stop, guard-bash) move the machine's git hook pointers; a copy run by hand never takes them.
  • mutant reports a malformed state file as MUTANT ERROR with the state paths; lcov DA lines count only inside their SF record.

Verified: 381 tests; live runs on two real consumer repositories (a TypeScript agent and a bun monorepo).

Upgrade: claude plugin update code-quality@code-quality, or your agent's plugin update. No config change is needed.