mirror of
https://github.com/Matysh/houseplan-card
synced 2026-09-30 11:49:16 +00:00
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:
File diff suppressed because one or more lines are too long
Vendored
+2
-2
File diff suppressed because one or more lines are too long
@@ -2189,17 +2189,6 @@ export const MUTANTS = [
|
||||
replace: ' void A2; void B2;',
|
||||
}],
|
||||
},
|
||||
{
|
||||
id: 'junction-supports-not-restored',
|
||||
guard: 'npx tsc -p tsconfig.test.json && node scripts/fix-test-build.mjs && node --test --test-name-pattern="hole-free end to end" test/wall-thickness.test.mjs',
|
||||
because: 'фаска старого слоя срезает материал полос на острых стыках; '
|
||||
+ 'без возврата саппорт-квадов узла репро владельца снова дырявое',
|
||||
patches: [{
|
||||
file: 'src/wall-thickness.ts',
|
||||
find: ' for (const piece of [...corners.supports, ...corners.fans]) {',
|
||||
replace: ' for (const piece of corners.fans) {',
|
||||
}],
|
||||
},
|
||||
{
|
||||
id: 'junction-fan-ignores-thick-length',
|
||||
guard: 'npx tsc -p tsconfig.test.json && node scripts/fix-test-build.mjs && node --test --test-name-pattern="issue 302" test/wall-thickness.test.mjs',
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user