From 87195c2b5dd91eae054eb38b55e4c38788eba80b Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 28 Sep 2026 16:01:32 +0300 Subject: [PATCH] test(daycycle): #582/#544 witnesses follow the bounded, hint-free layers smoke_live_pan_coverage now expects an exposed scene to open only within clip-path: inset(-25%) and the clip-marked day-cycle outline never to open; idle scenes keep no clip-path. paper-scene-contract pins the opacity hint. The Release trailer asks the branch's push Validate for the heavy jobs (smokes, golden, performance): #689 moves golden frames and must be proven by the full smoke set before S7 (#690). Release: v1.78.0-beta.9 Issue: #689 User-Visible: no Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_018qZfe7YS4rqEMKoVeS3GKd --- demo/smoke_live_pan_coverage.mjs | 11 +++++++++-- test/paper-scene-contract.test.mjs | 3 ++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/demo/smoke_live_pan_coverage.mjs b/demo/smoke_live_pan_coverage.mjs index b3683a32..dd914b1c 100644 --- a/demo/smoke_live_pan_coverage.mjs +++ b/demo/smoke_live_pan_coverage.mjs @@ -52,12 +52,19 @@ const liveState = () => page.evaluate(() => { view: structuredClone(card._view), transformed: scenes.filter((node) => node.style.transform).length, sceneCount: scenes.length, + // #689: an exposed scene opens only within its bound; the filtered + // day-cycle outline (marked clip) is projected but never opened. allSceneOverflowOpen: scenes.length > 0 - && scenes.every((node) => node.style.overflow === 'visible'), + && scenes.every((node) => (node.getAttribute('data-hp-live-overflow') === 'clip' + ? !node.style.overflow && !node.style.clipPath + : node.style.overflow === 'visible' && node.style.clipPath === 'inset(-25%)')), allScenePromoted: scenes.length > 0 && scenes.every((node) => node.style.transform && node.style.transformOrigin && node.style.willChange === 'transform' - && node.style.overflow === 'visible'), + && (node.getAttribute('data-hp-live-overflow') === 'clip' + ? !node.style.overflow && !node.style.clipPath + : node.style.overflow === 'visible' && node.style.clipPath === 'inset(-25%)')), allTemporaryStylesCleared: scenes.every((node) => !node.style.overflow + && !node.style.clipPath && !node.style.transform && !node.style.transformOrigin && !node.style.willChange), marker: centre(root.querySelector('[data-hp="device"]')), room: centre(root.querySelector('[data-hp="room"]')), diff --git a/test/paper-scene-contract.test.mjs b/test/paper-scene-contract.test.mjs index 729670a8..f5e5c09d 100644 --- a/test/paper-scene-contract.test.mjs +++ b/test/paper-scene-contract.test.mjs @@ -33,7 +33,8 @@ test('#582 safe camera scene uses explicit bounded plan and outline layers', () assert.match(card, / \.hp-paper-outline-svg \{[\s\S]*?z-index:\s*0;/); assert.match(styles, /\.hp-static-stage\.daycycle \.hp-paper-outline-svg/); assert.match(styles, /\.hp-static-stage\.daycycle \.hp-paperg \{[\s\S]*?filter:\s*none;[\s\S]*?will-change:\s*auto;/);