mirror of
https://github.com/Matysh/houseplan-card
synced 2026-09-30 19:58:50 +00:00
fix: close both code-review mediums and drop the dead paper layer (#302 r1 M1,M2)
**M1.** `docs/WALL-THICKNESS.md` §3 «Junction nodes» переписан под решение №5: полный mitre, фаска #249 в отставке, `bevelMultiWallBody` — только адресный латеральный трим. Прежний абзац описывал отменённое утреннее решение. **M2.** Guard мутанта `junction-fans-disabled` собирает `test-build` и бандл перед смоком: `smoke_junction_holes` — единственный смок, импортирующий из `test-build`, и в чистом worktree он падал `ERR_MODULE_NOT_FOUND` до применения мутации. Ревью прав: после переякорения guard'а на смок я не перегнал его штатным харнесом — только ручной test-build-патч, который worktree не видит. **Low + следствие.** `bevelMultiWallPaper` удалена как мёртвый код; следом измерено (фикстура #197 и репро владельца — байт в байт с веерами и без), что и `paperWithNodeCorners` бумаге ничего не даёт: footprint ∪ shell уже покрывает каждый узел. Слой удалён целиком, бумага возвращена к rawPaper. Осиротевший мутант `multi-wall-paper-full-origin-cut` (#261, «белый клин от вычитающего разреза бумаги») снят с обоснованием: в бумаге не осталось ни одного вычитания — этот класс регресса невозможен по построению. `npm test` 1303/1303; `golden:verify` 126/126; контракт-проба репро — 0. Issue: #302 User-Visible: no
This commit is contained in:
@@ -614,45 +614,6 @@ export const MUTANTS = [
|
||||
replace: ' return v;',
|
||||
}],
|
||||
},
|
||||
{
|
||||
id: 'multi-wall-paper-full-origin-cut',
|
||||
guard: 'npx tsc -p tsconfig.test.json && node scripts/fix-test-build.mjs '
|
||||
+ '&& node --test --test-name-pattern="issue #197 keeps" '
|
||||
+ 'test/wall-thickness.test.mjs',
|
||||
because: 'the exterior paper must retain valid multi-wall overlap up to R; cutting from the '
|
||||
+ 'offset origins recreates the measured white T-junction wedge from #261',
|
||||
patches: [{
|
||||
file: 'src/wall-thickness.ts',
|
||||
find: ' const cuts = multiWallEffectiveCutGeometry(\n'
|
||||
+ ' node, map, true, true, protectedStrips,\n'
|
||||
+ ' );',
|
||||
replace: ' const cuts = multiWallEffectiveCutGeometry(\n'
|
||||
+ ' node, map, false, true, protectedStrips,\n'
|
||||
+ ' );',
|
||||
}, {
|
||||
file: 'src/wall-thickness.ts',
|
||||
find: ' if (envelope) localInside = intersection(localInside, envelope);\n'
|
||||
+ ' else if (centre) localInside = intersection(localInside, centre);',
|
||||
replace: ' if (centre) localInside = intersection(localInside, centre);\n'
|
||||
+ ' else if (envelope) localInside = intersection(localInside, envelope);',
|
||||
}, {
|
||||
file: 'src/wall-thickness.ts',
|
||||
find: ' return cuts && protectedStrips ? difference(cuts, protectedStrips) : cuts;',
|
||||
replace: ' return cuts;',
|
||||
}, {
|
||||
file: 'src/wall-thickness.ts',
|
||||
find: ' if (protectedStrips) local = union(local, protectedStrips);',
|
||||
replace: ' // protected-strip fail-safe intentionally disabled by the mutant',
|
||||
}, {
|
||||
file: 'src/wall-thickness.ts',
|
||||
find: ' if (protectedStrips) {\n'
|
||||
+ ' try {\n'
|
||||
+ ' let protectedInside = protectedStrips;',
|
||||
replace: ' if (protectedStrips && false) {\n'
|
||||
+ ' try {\n'
|
||||
+ ' let protectedInside = protectedStrips;',
|
||||
}],
|
||||
},
|
||||
{
|
||||
id: 'multi-wall-orthogonal-strip-protection-disabled',
|
||||
guard: 'npx tsc -p tsconfig.test.json && node scripts/fix-test-build.mjs '
|
||||
@@ -2211,7 +2172,9 @@ export const MUTANTS = [
|
||||
},
|
||||
{
|
||||
id: 'junction-fans-disabled',
|
||||
guard: 'node demo/smoke_junction_holes.mjs',
|
||||
guard: 'npx tsc -p tsconfig.test.json && node scripts/fix-test-build.mjs '
|
||||
+ '&& npm run build >/dev/null 2>&1 && cp dist/houseplan-card.js demo/srv/assets/houseplan-card.js '
|
||||
+ '&& node demo/smoke_junction_holes.mjs',
|
||||
because: 'без вееров сектор между соседними полосами узла остаётся дырой — '
|
||||
+ 'это и есть класс артефактов #302',
|
||||
patches: [{
|
||||
|
||||
Reference in New Issue
Block a user