process: mutants run only in the nightly full registry; speed rules for ship/show (#709)

Owner's decision 2026-09-29: mutants check the tests, not the product.
During development they are not run at all — not locally, not in CI,
not by the reviewer. The whole registry is the nightly run
(mutation-gate.yml, #513); a survivor files an issue (#472). The #693
post-mortem: 36 of 57 minutes of a one-line fix went to optional work.

- process-track.mjs: `mutants` is always false (no track, no label).
- classify-changes.mjs: Validate requests no diff mutants on any event;
  the `mutants` input stays so old `-f mutants=…` calls do not fail.
- _process.yml: the default for the gate and the merge is false.
- pre-push-gate.mjs: the manual run no longer runs mutants.
- Canon: PROCESS §2.7 (a mutant is written, not run; `--check` keeps the
  anchors), §5.1 (`ci:mutants` retired), §8 (ship/show: nothing beyond
  gate:small and the spec — one proof per item, no `--smokes` on ship,
  a stray flake is an issue, not an investigation), §10.4; AUTHOR,
  REVIEWER, AGENTS, TESTING.
- Registry: four mutants of the old request rules replaced by
  dev-mutants-requested-again and track-pays-for-mutants-again.

Issue: #709
User-Visible: no
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018qZfe7YS4rqEMKoVeS3GKd
This commit is contained in:
Claude
2026-09-29 23:04:41 +03:00
parent 18c9f8e77c
commit a8321e32cc
15 changed files with 143 additions and 152 deletions
+4 -3
View File
@@ -121,9 +121,10 @@ export function isTaskBranch(refName) {
* CLI по-прежнему передаёт headMessage и fullInput вместе с остальным —
* функция их не читает, и тест закрепляет, что они НЕ влияют на ответ.
*/
export function mutantsRequested({ eventName, mutantsInput } = {}) {
if (eventName === 'pull_request') return true;
if (eventName === 'workflow_dispatch') return String(mutantsInput) === 'true';
export function mutantsRequested() {
// #709: мутанты проверяют тесты, а не продукт — в разработке Validate их не
// гоняет ни на dispatch (`mutants=true` больше ничего не включает), ни на PR.
// Весь реестр проверяет только ночной прогон (mutation-gate.yml).
return false;
}