Два мутанта реестра снова компилируются

`inner-span-reads-whole-edge-thickness` и `safe-resize-legacy-midpoint-fail-open`
падали на `npx tsc -p tsconfig.test.json` до запуска заявленного теста и потому
не проверяли ничего. Причина одна: патч делал ветку статически мёртвой
(`if (false)`, `false &&`), а в мёртвой ветке TypeScript теряет сужение типов,
сделанное выше — `profile` снова `| null`, `direct` снова `| undefined`.

Условия заменены на ложные в рантайме, но не статически. Смысл мутантов тот же,
и оба теперь ловятся заявленными тестами. Обнаружено прогоном на этой ветке:
правка реестра затягивает в отбор мутантов чужие файлы, и красным стал гейт
задачи, к которой эти записи отношения не имеют. Провал такого мутанта
незаметен, пока его не выберет дифф — это отдельный пробел, #568.

Issue: #566
User-Visible: no
This commit is contained in:
Codex
2026-09-14 01:40:23 +03:00
parent dedcedc8cc
commit 7ecdafef94
+8 -2
View File
@@ -1993,8 +1993,11 @@ const MUTANT_DEFINITIONS = [
+ 'one unambiguous whole changed edge (#298)',
patches: [{
file: 'src/wall-thickness.ts',
// `false &&` делало ветку статически мёртвой, и TypeScript терял сужение
// `direct` внутри неё: мутант падал на компиляции вместо проверки (#568).
// Сравнение со строкой вне союза даёт ту же ложь без потери сужения.
find: " if (mode === 'fixed-topology') {\n const direct = wholeEdgeMoves.get(w.key);",
replace: " if (false && mode === 'fixed-topology') {\n const direct = wholeEdgeMoves.get(w.key);",
replace: " if (String(mode) === 'mutant-never-fixed-topology') {\n const direct = wholeEdgeMoves.get(w.key);",
}],
},
{
@@ -4411,8 +4414,11 @@ const MUTANT_DEFINITIONS = [
+ 'edges (#233, spec review r1/H2)',
patches: [{
file: 'src/wall-thickness.ts',
// Условие ложно в рантайме, но не статически: с литеральным `false`
// TypeScript признаёт блок мёртвым и ТЕРЯЕТ сужение `profile` выше, из-за
// чего мутант падал на компиляции и не проверял ничего (#568).
find: ' if (distToSeg(mid[0], mid[1], p0[0], p0[1], p1[0], p1[1]) <= eps) {',
replace: ' if (false) {',
replace: ' if (eps < 0) {',
}],
},
{