test(plan): Node witness for the landmark cascade; smoke via __hpTest

The three #687 mutants now name a Node suite over the compiled Plan
stylesheet (test/plan-device-landmarks.test.mjs), as the #683 stair
cursor mutant does: the reviewed browser-guard inventory is at its cap
(200/200, #659). The suite pins no hiding in .stage.markup, the
filter: opacity(0.35) fade without an opacity override, the pointer
boundary on the marker, its subtree and ::before (and Background's),
and a fade scoped to the Plan stage. Parity of the 35% with Background
is a computed-style fact and stays with the smoke (#624 forbids text
reads of the monolith). The smoke now enters modes and tools through
window.__hpTest instead of private writes (#629).

Issue: #687
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-28 09:59:52 +03:00
parent 560849a1a7
commit 128af2392a
3 changed files with 94 additions and 14 deletions
+8 -4
View File
@@ -3957,9 +3957,11 @@ const MUTANT_DEFINITIONS = [
},
{
id: 'plan-device-landmarks-hidden',
guard: 'node demo/smoke_plan_device_landmarks.mjs',
guard: 'npx tsc -p tsconfig.test.json && node scripts/fix-test-build.mjs '
+ '&& node --test test/plan-device-landmarks.test.mjs',
because: '#687 AC1: the Plan editor shows the same markers as View as landmarks; hiding '
+ 'them again removes the reference the owner asked for',
+ 'them again removes the reference the owner asked for (browser proof: '
+ 'demo/smoke_plan_device_landmarks.mjs; Node witness keeps #659 cap)',
patches: [{
file: 'src/styles/plan.styles.ts',
find: ' .stage.markup .devlayer .dev {\n'
@@ -3972,7 +3974,8 @@ const MUTANT_DEFINITIONS = [
},
{
id: 'plan-device-landmarks-override-own-opacity',
guard: 'node demo/smoke_plan_device_landmarks.mjs',
guard: 'npx tsc -p tsconfig.test.json && node scripts/fix-test-build.mjs '
+ '&& node --test test/plan-device-landmarks.test.mjs',
because: '#687 contract item 2: the fade multiplies the marker\'s own opacity as the '
+ 'Background layer does; an opacity override shows an unavailable marker at 35% '
+ 'instead of 35% x 35%',
@@ -3986,7 +3989,8 @@ const MUTANT_DEFINITIONS = [
},
{
id: 'plan-device-landmarks-hit-target',
guard: 'node demo/smoke_plan_device_landmarks.mjs',
guard: 'npx tsc -p tsconfig.test.json && node scripts/fix-test-build.mjs '
+ '&& node --test test/plan-device-landmarks.test.mjs',
because: '#687 AC2: a visible marker must never own a Plan-editor point; without the '
+ 'pointer boundary its 44 px hit area and capsule swallow the Walls tool click and the '
+ 'room settings button below',