{ "schemaVersion": 1, "candidate": "f68632324ed9fa0ef5d0175ddc5d6d1c1e1ffbd7", "checkpoint": "sceneseed-canvas", "viewports": [ { "viewportClass": "mobile", "viewportWidth": 390, "viewportHeight": 844, "viewportUnit": "css_px", "contentWidth": 390, "contentHeight": 844, "contentUnit": "css_px", "windowWidth": null, "windowHeight": null, "windowUnit": null, "deviceScaleFactor": 3, "captureWidth": 1170, "captureHeight": 2532, "captureUnit": "device_px", "state": "populated + queued + failed + blank draft", "transitionWidths": [389, 390, 391], "cycles": 5, "elapsedMs": 5210, "beforeScreenshot": "qa/final-head-mobile-before.png", "afterScreenshot": "qa/final-head-mobile-after.png", "recording": "qa/final-head-reveal-timestamped-captures.json", "proof": "Prompt cards reflow into a bounded horizontal rail and the Three.js stage remains full-width with no document overflow. Five reveals completed without a blank frame or accumulated object drift.", "notes": "The after capture intentionally shows the accessible focus handoff scrolling the selected-object controls into view.", "result": "PASS" }, { "viewportClass": "small/narrow", "viewportWidth": 768, "viewportHeight": 900, "viewportUnit": "css_px", "contentWidth": 768, "contentHeight": 900, "contentUnit": "css_px", "windowWidth": null, "windowHeight": null, "windowUnit": null, "deviceScaleFactor": 2, "captureWidth": 1536, "captureHeight": 1800, "captureUnit": "device_px", "state": "populated + queued + failed + blank draft", "transitionWidths": [767, 768, 769, 899, 900, 901, 1099, 1100, 1101], "cycles": 5, "elapsedMs": 4914, "beforeScreenshot": "qa/final-head-small-narrow-before.png", "afterScreenshot": "qa/final-head-small-narrow-after.png", "recording": "qa/final-head-reveal-timestamped-captures.json", "proof": "The 448 CSS-pixel plugin column preserves readable cards, the stage, and all selected-object actions without horizontal page overflow. The compact-to-grid transition is stable on both sides of 1100 CSS pixels.", "notes": "The host sidebar opens at 768 CSS pixels; the plugin correctly retains its compact column layout in the remaining width.", "result": "PASS" }, { "viewportClass": "normal desktop", "viewportWidth": 1440, "viewportHeight": 900, "viewportUnit": "css_px", "contentWidth": 1440, "contentHeight": 900, "contentUnit": "css_px", "windowWidth": null, "windowHeight": null, "windowUnit": null, "deviceScaleFactor": 2, "captureWidth": 2880, "captureHeight": 1800, "captureUnit": "device_px", "state": "populated + queued + failed + blank draft", "transitionWidths": [1099, 1100, 1101, 1439, 1440, 1441], "cycles": 5, "elapsedMs": 4645, "beforeScreenshot": "qa/final-head-normal-desktop-before.png", "afterScreenshot": "qa/final-head-normal-desktop-after.png", "recording": "qa/final-head-reveal-timestamped-captures.json", "proof": "The card rail, stage, selected-object controls, and accessible object list remain aligned with no clipping or page overflow. The selected scene returns to the same geometry after five reveal cycles.", "notes": "Light, dark, system persistence, reduced motion, hard reload, drag placement, keyboard placement, and WebGL recovery were exercised on this exact branch build.", "result": "PASS" }, { "viewportClass": "very large desktop", "viewportWidth": 3440, "viewportHeight": 1440, "viewportUnit": "css_px", "contentWidth": 3440, "contentHeight": 1440, "contentUnit": "css_px", "windowWidth": null, "windowHeight": null, "windowUnit": null, "deviceScaleFactor": 1, "captureWidth": 3440, "captureHeight": 1440, "captureUnit": "device_px", "state": "populated + queued + failed + blank draft", "transitionWidths": [3439, 3440, 3441], "cycles": 5, "elapsedMs": 4972, "beforeScreenshot": "qa/final-head-very-large-desktop-before.png", "afterScreenshot": "qa/final-head-very-large-desktop-after.png", "recording": "qa/final-head-reveal-timestamped-captures.json", "proof": "The ultrawide stage expands continuously while the card rail remains bounded and the 3D objects retain their camera framing. Five reveals introduce no gaps, resets, drift, or overflow.", "notes": "The canvas uses the available width by design; object scale and controls remain stable rather than stretching with the stage.", "result": "PASS" } ], "responsiveTransitions": "PASS", "sustainedMotion": "PASS", "result": "PASS" }