From 84ed38e3d5d511687de48e8ca4dae714f82efe2f Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 30 Sep 2026 21:22:19 +0300 Subject: [PATCH] test(perf): the Stage 4 dense contract requires no nudged overlay (#719) The isometric-stage3-dense-v1 runner still demanded at least one bounded #651 nudge. Since #713 every raised device tile and lock badge is lifted by the one shared wall-top rise and carries data-hp-iso-nudged="false", so the Full Performance profile failed its input contract before any timing. The contract is inverted: a single nudged raised root now fails the sample, matching the golden requireOneRise preflight. The performance README states the current contract, and the #570 runner-contract unit pins the new failure text. Issue: #719 User-Visible: no Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_018qZfe7YS4rqEMKoVeS3GKd --- demo/benchmark_large_house.mjs | 3 ++- demo/performance/README.md | 6 ++++-- test/performance-workflow.test.mjs | 1 + 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/demo/benchmark_large_house.mjs b/demo/benchmark_large_house.mjs index f3e56460..1570e50d 100644 --- a/demo/benchmark_large_house.mjs +++ b/demo/benchmark_large_house.mjs @@ -255,7 +255,8 @@ try { if (snapshot.renderedOverlayCount < 1) failures.push('no raised overlay roots rendered'); if (snapshot.raisedOverlayCount !== snapshot.renderedOverlayCount) failures.push('one or more Stage 4 overlay roots remained outside the low visual plane'); - if (snapshot.nudgedOverlayCount < 1) failures.push('dense fixture produced no bounded nudge'); + if (snapshot.nudgedOverlayCount !== 0) + failures.push('raised overlay nudged although #713 lifts every tile by one rise'); if (snapshot.raisedVacuumCount !== 0) failures.push('floor-bound vacuum was marked as raised'); if (missingKinds.length) failures.push(`missing overlay kinds: ${missingKinds.join(', ')}`); for (const kind of expectedKinds) { diff --git a/demo/performance/README.md b/demo/performance/README.md index 487df364..abc4b133 100644 --- a/demo/performance/README.md +++ b/demo/performance/README.md @@ -22,8 +22,10 @@ value, LQI and new-device badges plus contact/lock-bound door, window and gate examples. The base invocation explicitly allows a Stage 2 renderer so an older `dev` SHA remains measurable; the candidate invocation fails closed unless it reports effective Iso, the Stage 3 revision, all required raised overlay kinds, -at least one real nudge, a bounded shared material-definition set and zero -structural rebuilds during HA, opening and hover/focus updates. The two extra +no nudged overlay root (since #713 every raised tile is lifted by the one shared +wall-top rise, so a nudge means the #651 placement search came back), a bounded +shared material-definition set and zero structural rebuilds during HA, opening +and hover/focus updates. The two extra timing windows use limits no softer than the historical HA-update budget. This does not change the fixture, measured windows or budget of `large-house-isometric-v1`, which remains the #124 regression witness. diff --git a/test/performance-workflow.test.mjs b/test/performance-workflow.test.mjs index 42077f3c..638958fa 100644 --- a/test/performance-workflow.test.mjs +++ b/test/performance-workflow.test.mjs @@ -150,6 +150,7 @@ test('#570 current Stage 4 runner fails closed on the agreed observable DOM cont 'opening surfaces', 'entered Flat fallback', 'structural build counter is absent', + 'raised overlay nudged although #713 lifts every tile by one rise', 'isoStructuralBuilds', 'haUpdateDelta', 'performed a structural rebuild for an HA-only state update',