refactor: fans are the whole additive node — dead support re-union removed (#302)

С адресным тримом (он не режет полосы обычных узлов) возврат саппорт-квадов в
тело стал мёртвым слоем: полный юнит-набор зелёный без него — проверено
исполнением, а не предположено. По дисциплине мутационного реестра
избыточный слой убран (fans only), его мутант `junction-supports-not-restored`
снят: у #271-узлов трим режет только ЗА пределами саппорта, возвращать
нечего. Саппорт-квады остаются экспортом `junctionNodeGeometry` — детектор и
тесты используют их как источник контрактной истины.

`npm test` 1303/1303; `golden:verify` 126/126; контракт-проба репро — 0;
`smoke_junction_holes` OK.

Issue: #302
User-Visible: no
This commit is contained in:
Codex
2026-08-25 17:34:19 +03:00
parent 9c396935dc
commit d3ed299d2a
4 changed files with 9 additions and 16 deletions
+5 -1
View File
@@ -3564,7 +3564,11 @@ export function wallBodiesGeometry(
rooms, walls, openCuts, pitch, cellCm, gridPitch, coordScale,
multiWallNodes,
);
for (const piece of [...corners.supports, ...corners.fans]) {
// Fans only: with the trim now TARGETED (it never cuts an ordinary
// node's strips) the support re-union became dead weight — measured by
// the full unit suite staying green without it. The support quads stay
// exported: the detector and the tests use them as the contract truth.
for (const piece of corners.fans) {
try {
let ring: any = [closedRing(piece)];
if (bound) ring = intersection(ring, bound);