← back to Wallpaper Paint Antics
auto-data-snapshot: 2026-09-04T23:48:35 (4 data files) — verification/01-runaway-roll-decode.txt verification/01-runaway-roll-render.txt verification/02-splash-of-personality-render.txt verification/03-great-wall-off-render.txt
bca76813cc3c92d00f80c55562c5a4131a06123f · 2026-09-04 23:48:40 -0700 · auto-commit-fleet
Files touched
A verification/01-runaway-roll-decode.txtA verification/01-runaway-roll-render.txtA verification/02-splash-of-personality-render.txtA verification/03-great-wall-off-render.txt
Diff
commit bca76813cc3c92d00f80c55562c5a4131a06123f
Author: auto-commit-fleet <steve@designerwallcoverings.com>
Date: Fri Sep 4 23:48:40 2026 -0700
auto-data-snapshot: 2026-09-04T23:48:35 (4 data files) — verification/01-runaway-roll-decode.txt verification/01-runaway-roll-render.txt verification/02-splash-of-personality-render.txt verification/03-great-wall-off-render.txt
---
verification/01-runaway-roll-decode.txt | 1 +
verification/01-runaway-roll-render.txt | 97 ++++++++++++++++++++++++
verification/02-splash-of-personality-render.txt | 96 +++++++++++++++++++++++
verification/03-great-wall-off-render.txt | 96 +++++++++++++++++++++++
4 files changed, 290 insertions(+)
diff --git a/verification/01-runaway-roll-decode.txt b/verification/01-runaway-roll-decode.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/verification/01-runaway-roll-decode.txt
@@ -0,0 +1 @@
+
diff --git a/verification/01-runaway-roll-render.txt b/verification/01-runaway-roll-render.txt
new file mode 100644
index 0000000..61a504e
--- /dev/null
+++ b/verification/01-runaway-roll-render.txt
@@ -0,0 +1,97 @@
+
+◆ Rendering wallpaper-paint-antics/episodes/01-runaway-roll.html → /Users/macstudio3/Projects/wallpaper-paint-antics/renders/01-runaway-roll.mp4
+ 30fps · high · 2 workers
+ GPU: browser GPU (auto-detect)
+
+[?25l│
+◇ Browser: cache
+[?25h
+ ✗ invalid_parent_traversal_in_asset_path: Found 4 asset path(s) traversing above the project root with "../" (../assets/ (4)). Renders rewrite this against each sub-composition's source path, but Studio preview and other live consumers resolve against the project root and 404.
+ Fix: Use plain root-relative paths (e.g. "assets/...", "capture/...", "fonts/...") — compositions are served with the project root as their base URL, so paths must be root-relative, not relative to the compositions/ directory.
+ Continuing render despite lint issues. Use --strict to block errors.
+
+ Parallel drawElement capture stays off for this install (a previous render had to fall back). Re-enable with HF_DE_PARALLEL_ROUTER=true.
+ █░░░░░░░░░░░░░░░░░░░░░░░░ 5% Compiling composition
+ ██░░░░░░░░░░░░░░░░░░░░░░░ 10% Extracting video frames
+ █████░░░░░░░░░░░░░░░░░░░░ 20% Processing audio tracks
+ ██████░░░░░░░░░░░░░░░░░░░ 25% Starting frame capture
+[BrowserManager] Browser launched (HeadlessChrome/152.0.7977.30, screenshot, gl=--use-gl=angle --use-angle=metal, headlessShell=true, platform=darwin)
+[initSession:screenshot] page.goto start (0ms)
+[initSession:screenshot] page.goto start (0ms)
+[HyperFrames] render runtime fps [object Object]
+[HyperFrames] render runtime fps [object Object]
+[initSession:screenshot] page.goto complete (105ms)
+[initSession:screenshot] page.goto complete (105ms)
+[initSession:screenshot] GSAP proxy flush complete (138ms)
+[initSession:screenshot] GSAP proxy flush complete (138ms)
+[initSession:screenshot] pollHfReady complete (140ms)
+[initSession:screenshot] pollHfReady complete (141ms)
+[initSession:screenshot] pollSubCompositionTimelines complete (ready) (142ms)
+[initSession:screenshot] applyVideoMetadataHints complete (142ms)
+[initSession:screenshot] pollSubCompositionTimelines complete (ready) (143ms)
+[initSession:screenshot] applyVideoMetadataHints complete (143ms)
+[initSession:screenshot] media + fonts + tailwind ready (143ms)
+[initSession:screenshot] media + fonts + tailwind ready (144ms)
+[initSession:screenshot] static-frame dedup: disabled (canvas/webgl) (147ms)
+[initSession:screenshot] static-frame dedup: disabled (canvas/webgl) (148ms)
+ ██████░░░░░░░░░░░░░░░░░░░ 27% Capturing frame 30/600 (2 workers)
+ ███████░░░░░░░░░░░░░░░░░░ 30% Capturing frame 60/600 (2 workers)
+ ████████░░░░░░░░░░░░░░░░░ 32% Capturing frame 90/600 (2 workers)
+ ████████░░░░░░░░░░░░░░░░░ 34% Capturing frame 120/600 (2 workers)
+ █████████░░░░░░░░░░░░░░░░ 36% Capturing frame 150/600 (2 workers)
+ █████████░░░░░░░░░░░░░░░░ 39% Capturing frame 180/600 (2 workers)
+ ██████████░░░░░░░░░░░░░░░ 41% Capturing frame 210/600 (2 workers)
+ ██████████░░░░░░░░░░░░░░░ 43% Capturing frame 240/600 (2 workers)
+ ███████████░░░░░░░░░░░░░░ 45% Capturing frame 270/600 (2 workers)
+ ████████████░░░░░░░░░░░░░ 48% Capturing frame 300/600 (2 workers)
+ ████████████░░░░░░░░░░░░░ 50% Capturing frame 330/600 (2 workers)
+ █████████████░░░░░░░░░░░░ 52% Capturing frame 360/600 (2 workers)
+ █████████████░░░░░░░░░░░░ 54% Capturing frame 390/600 (2 workers)
+ ██████████████░░░░░░░░░░░ 57% Capturing frame 420/600 (2 workers)
+ ██████████████░░░░░░░░░░░ 59% Capturing frame 450/600 (2 workers)
+ ███████████████░░░░░░░░░░ 61% Capturing frame 480/600 (2 workers)
+ ███████████████░░░░░░░░░░ 63% Capturing frame 510/600 (2 workers)
+ ████████████████░░░░░░░░░ 66% Capturing frame 540/600 (2 workers)
+ █████████████████░░░░░░░░ 68% Capturing frame 570/600 (2 workers)
+ █████████████████░░░░░░░░ 70% Capturing frame 600/600 (2 workers)
+ ██████████████████░░░░░░░ 75% Encoding video
+ ██████████████████████░░░ 90% Assembling final video
+ █████████████████████████ 100% Render complete
+
+◇ /Users/macstudio3/Projects/wallpaper-paint-antics/renders/01-runaway-roll.mp4
+ 14.4 MB · 20.0s video · rendered in 19.1s
+ [hyperframes] Agent feedback: hyperframes feedback --rating <0-10> --comment "..."
+
+[INFO] [Render] Pipeline started {"renderJobId":"84e797c0-b19c-49fd-a5ae-9d03014be775","platform":"darwin","arch":"arm64","nodeVersion":"v26.4.0","fps":{"num":30,"den":1},"format":"mp4","quality":"high","browserGpuMode":"auto","forceScreenshot":false,"protocolTimeout":300000,"browserTimeout":120000,"pageNavigationTimeout":60000,"playerReadyTimeout":45000}
+[INFO] [Render:trace] {"renderJobId":"84e797c0-b19c-49fd-a5ae-9d03014be775","phase":"pipeline","status":"checkpoint","elapsedMs":1,"message":"started","format":"mp4","quality":"high","browserGpuMode":"auto","forceScreenshot":false,"protocolTimeoutMs":300000,"pageNavigationTimeoutMs":60000,"playerReadyTimeoutMs":45000,"requestedWorkers":2}
+[INFO] [Render:trace] {"renderJobId":"84e797c0-b19c-49fd-a5ae-9d03014be775","phase":"compile","status":"start","elapsedMs":2,"needsAlpha":false}
+[INFO] [Compiler] Embedded local font file: assets/archivo.ttf (86 KB → data URI)
+[INFO] [Compiler] Embedded local font file: assets/space-mono.ttf (79 KB → data URI)
+[INFO] Compiled composition metadata {"renderJobId":"84e797c0-b19c-49fd-a5ae-9d03014be775","entryFile":"episodes/01-runaway-roll.html","staticDuration":20,"width":1080,"height":1920,"videoCount":0,"audioCount":1,"renderModeHints":{"recommendScreenshot":false,"reasons":[]}}
+[INFO] [Render:trace] {"renderJobId":"84e797c0-b19c-49fd-a5ae-9d03014be775","phase":"compile","status":"end","elapsedMs":359,"durationMs":357,"needsAlpha":false}
+[INFO] [Render:trace] {"renderJobId":"84e797c0-b19c-49fd-a5ae-9d03014be775","phase":"compile","status":"checkpoint","elapsedMs":359,"message":"composition metadata resolved","width":1080,"height":1920,"videoCount":0,"audioCount":1,"imageCount":0,"deviceScaleFactor":1,"forceScreenshot":false,"compositionHash":"882289b0d5df8d77"}
+[INFO] [Render:trace] {"renderJobId":"84e797c0-b19c-49fd-a5ae-9d03014be775","phase":"browser_probe","status":"start","elapsedMs":359,"forceScreenshot":false,"stagePhase":"calibrating"}
+[INFO] [Render:trace] {"renderJobId":"84e797c0-b19c-49fd-a5ae-9d03014be775","phase":"browser_probe","status":"end","elapsedMs":361,"durationMs":2,"forceScreenshot":false,"stagePhase":"calibrating"}
+[INFO] [Render:trace] {"renderJobId":"84e797c0-b19c-49fd-a5ae-9d03014be775","phase":"browser_probe","status":"checkpoint","elapsedMs":361,"message":"duration resolved","durationSeconds":20,"totalFrames":600,"compositionHash":"882289b0d5df8d77","beginFrameStalled":false}
+[INFO] [Render:trace] {"renderJobId":"84e797c0-b19c-49fd-a5ae-9d03014be775","phase":"video_extract","status":"start","elapsedMs":361,"videoCount":0}
+[INFO] [Render:trace] {"renderJobId":"84e797c0-b19c-49fd-a5ae-9d03014be775","phase":"video_extract","status":"end","elapsedMs":362,"durationMs":1,"videoCount":0}
+[INFO] [Render:trace] {"renderJobId":"84e797c0-b19c-49fd-a5ae-9d03014be775","phase":"video_extract","status":"checkpoint","elapsedMs":362,"message":"frames resolved","videoCount":0,"extractedVideoCount":0,"totalFramesExtracted":0,"maxFramesPerVideo":0,"avgFramesPerExtractedVideo":null,"vfrPreflightCount":null,"vfrPreflightMs":null,"cacheHits":null,"cacheMisses":null,"transientRetries":null,"minVideoFrameCoverageRatio":null,"authoredTimedClipCount":3}
+[INFO] [Render] No HDR sources detected — rendering SDR {"renderJobId":"84e797c0-b19c-49fd-a5ae-9d03014be775"}
+[INFO] [Render:trace] {"renderJobId":"84e797c0-b19c-49fd-a5ae-9d03014be775","phase":"hdr_detection","status":"checkpoint","elapsedMs":362,"message":"resolved","requestedHdrMode":"auto","effectiveHdr":"sdr","nativeHdrVideoCount":0,"nativeHdrImageCount":0}
+[INFO] [Render:trace] {"renderJobId":"84e797c0-b19c-49fd-a5ae-9d03014be775","phase":"audio_process","status":"start","elapsedMs":362,"audioCount":1}
+[INFO] [Render:trace] {"renderJobId":"84e797c0-b19c-49fd-a5ae-9d03014be775","phase":"audio_process","status":"end","elapsedMs":1137,"durationMs":775,"audioCount":1}
+[INFO] [Render:trace] {"renderJobId":"84e797c0-b19c-49fd-a5ae-9d03014be775","phase":"file_server","status":"start","elapsedMs":1137,"reused":false}
+[INFO] [Render:trace] {"renderJobId":"84e797c0-b19c-49fd-a5ae-9d03014be775","phase":"file_server","status":"end","elapsedMs":1141,"durationMs":4}
+[hyperframes] browserGpuMode probe → hardware (WebGL renderer vendor="Google Inc. (Apple)" renderer="ANGLE (Apple, ANGLE Metal Renderer: Apple M3 Ultra, Unspecified Version)")
+[INFO] [Render:trace] {"renderJobId":"84e797c0-b19c-49fd-a5ae-9d03014be775","phase":"capture_calibration","status":"checkpoint","elapsedMs":1332,"message":"skipped","requestedWorkers":2,"totalFrames":600,"htmlInCanvasDetected":false,"lowMemoryMode":false,"deInversionEligible":false,"deParallelRouterEligible":false}
+[INFO] [Render:trace] {"renderJobId":"84e797c0-b19c-49fd-a5ae-9d03014be775","phase":"worker_resolution","status":"checkpoint","elapsedMs":1332,"message":"resolved","workerCount":2}
+[INFO] streaming-encode gate {"renderJobId":"84e797c0-b19c-49fd-a5ae-9d03014be775","enabled":false,"configFlag":true,"outputFormat":"mp4","workerCount":2,"durationSeconds":20,"maxDurationSeconds":240}
+[INFO] [Render] Fast capture: default-on drawElement disabled for this render — parallel capture has no runtime self-verification. Set PRODUCER_EXPERIMENTAL_FAST_CAPTURE=true to override. {"renderJobId":"84e797c0-b19c-49fd-a5ae-9d03014be775"}
+[INFO] [Render:trace] {"renderJobId":"84e797c0-b19c-49fd-a5ae-9d03014be775","phase":"capture_strategy","status":"checkpoint","elapsedMs":1332,"message":"resolved","workerCount":2,"forceScreenshot":false,"captureBeyondViewport":null,"useStreamingEncode":false,"useLayeredComposite":false,"usePageSideCompositing":false,"hasHdrContent":false,"hasShaderTransitions":false,"isPngSequence":false}
+[INFO] [Render:trace] {"renderJobId":"84e797c0-b19c-49fd-a5ae-9d03014be775","phase":"capture_disk","status":"start","elapsedMs":1332,"stagePhase":"capturing","needsAlpha":false,"workerCount":2,"forceScreenshot":false,"totalFrames":600,"framesCompleted":0,"captureMode":"beginframe","captureOperation":"beginFrame"}
+[INFO] [Render:trace] {"renderJobId":"84e797c0-b19c-49fd-a5ae-9d03014be775","phase":"capture_disk","status":"end","elapsedMs":15671,"durationMs":14339,"stagePhase":"capturing","needsAlpha":false,"workerCount":2,"forceScreenshot":false,"totalFrames":600,"framesCompleted":600,"captureMode":"beginframe","captureOperation":"encode"}
+[INFO] [Render:trace] {"renderJobId":"84e797c0-b19c-49fd-a5ae-9d03014be775","phase":"encode","status":"start","elapsedMs":15671,"stagePhase":"capturing","hasAudio":true,"isPngSequence":false,"isGif":false,"chunkedEncode":false,"workerCount":2,"forceScreenshot":false,"totalFrames":600,"framesCompleted":600,"captureMode":"beginframe","captureOperation":"encode"}
+[INFO] [Render:trace] {"renderJobId":"84e797c0-b19c-49fd-a5ae-9d03014be775","phase":"encode","status":"end","elapsedMs":18355,"durationMs":2683,"stagePhase":"capturing","hasAudio":true,"isPngSequence":false,"isGif":false,"chunkedEncode":false,"workerCount":2,"forceScreenshot":false,"totalFrames":600,"framesCompleted":600,"captureMode":"beginframe","captureOperation":"encode"}
+[INFO] [Render:trace] {"renderJobId":"84e797c0-b19c-49fd-a5ae-9d03014be775","phase":"assemble","status":"start","elapsedMs":18356,"stagePhase":"capturing","hasAudio":true,"workerCount":2,"forceScreenshot":false,"totalFrames":600,"framesCompleted":600,"captureMode":"beginframe","captureOperation":"encode"}
+[INFO] [Render:trace] {"renderJobId":"84e797c0-b19c-49fd-a5ae-9d03014be775","phase":"assemble","status":"end","elapsedMs":18984,"durationMs":628,"stagePhase":"capturing","hasAudio":true,"workerCount":2,"forceScreenshot":false,"totalFrames":600,"framesCompleted":600,"captureMode":"beginframe","captureOperation":"encode"}
+[INFO] [Render:trace] {"renderJobId":"84e797c0-b19c-49fd-a5ae-9d03014be775","phase":"pipeline","status":"checkpoint","elapsedMs":19021,"message":"artifact validated","totalElapsedMs":19018}
diff --git a/verification/02-splash-of-personality-render.txt b/verification/02-splash-of-personality-render.txt
new file mode 100644
index 0000000..d472161
--- /dev/null
+++ b/verification/02-splash-of-personality-render.txt
@@ -0,0 +1,96 @@
+
+◆ Rendering wallpaper-paint-antics/episodes/02-splash-of-personality.html → /Users/macstudio3/Projects/wallpaper-paint-antics/renders/02-splash-of-personality.mp4
+ 30fps · high · 2 workers
+ GPU: browser GPU (auto-detect)
+
+[?25l│
+◇ Browser: cache
+[?25h
+ ✗ invalid_parent_traversal_in_asset_path: Found 4 asset path(s) traversing above the project root with "../" (../assets/ (4)). Renders rewrite this against each sub-composition's source path, but Studio preview and other live consumers resolve against the project root and 404.
+ Fix: Use plain root-relative paths (e.g. "assets/...", "capture/...", "fonts/...") — compositions are served with the project root as their base URL, so paths must be root-relative, not relative to the compositions/ directory.
+ Continuing render despite lint issues. Use --strict to block errors.
+
+ Parallel drawElement capture stays off for this install (a previous render had to fall back). Re-enable with HF_DE_PARALLEL_ROUTER=true.
+ █░░░░░░░░░░░░░░░░░░░░░░░░ 5% Compiling composition
+ ██░░░░░░░░░░░░░░░░░░░░░░░ 10% Extracting video frames
+ █████░░░░░░░░░░░░░░░░░░░░ 20% Processing audio tracks
+ ██████░░░░░░░░░░░░░░░░░░░ 25% Starting frame capture
+[BrowserManager] Browser launched (HeadlessChrome/152.0.7977.30, screenshot, gl=--use-gl=angle --use-angle=metal, headlessShell=true, platform=darwin)
+[initSession:screenshot] page.goto start (1ms)
+[initSession:screenshot] page.goto start (0ms)
+[HyperFrames] render runtime fps [object Object]
+[HyperFrames] render runtime fps [object Object]
+[initSession:screenshot] page.goto complete (102ms)
+[initSession:screenshot] page.goto complete (102ms)
+[initSession:screenshot] GSAP proxy flush complete (134ms)
+[initSession:screenshot] GSAP proxy flush complete (133ms)
+[initSession:screenshot] pollHfReady complete (136ms)
+[initSession:screenshot] pollHfReady complete (136ms)
+[initSession:screenshot] pollSubCompositionTimelines complete (ready) (137ms)
+[initSession:screenshot] applyVideoMetadataHints complete (137ms)
+[initSession:screenshot] pollSubCompositionTimelines complete (ready) (137ms)
+[initSession:screenshot] applyVideoMetadataHints complete (137ms)
+[initSession:screenshot] media + fonts + tailwind ready (139ms)
+[initSession:screenshot] media + fonts + tailwind ready (138ms)
+[initSession:screenshot] static-frame dedup: disabled (canvas/webgl) (142ms)
+[initSession:screenshot] static-frame dedup: disabled (canvas/webgl) (141ms)
+ ██████░░░░░░░░░░░░░░░░░░░ 27% Capturing frame 30/600 (2 workers)
+ ███████░░░░░░░░░░░░░░░░░░ 30% Capturing frame 60/600 (2 workers)
+ ████████░░░░░░░░░░░░░░░░░ 32% Capturing frame 90/600 (2 workers)
+ ████████░░░░░░░░░░░░░░░░░ 34% Capturing frame 120/600 (2 workers)
+ █████████░░░░░░░░░░░░░░░░ 36% Capturing frame 150/600 (2 workers)
+ █████████░░░░░░░░░░░░░░░░ 39% Capturing frame 180/600 (2 workers)
+ ██████████░░░░░░░░░░░░░░░ 41% Capturing frame 210/600 (2 workers)
+ ██████████░░░░░░░░░░░░░░░ 43% Capturing frame 240/600 (2 workers)
+ ███████████░░░░░░░░░░░░░░ 45% Capturing frame 270/600 (2 workers)
+ ████████████░░░░░░░░░░░░░ 48% Capturing frame 300/600 (2 workers)
+ ████████████░░░░░░░░░░░░░ 50% Capturing frame 330/600 (2 workers)
+ █████████████░░░░░░░░░░░░ 52% Capturing frame 360/600 (2 workers)
+ █████████████░░░░░░░░░░░░ 54% Capturing frame 390/600 (2 workers)
+ ██████████████░░░░░░░░░░░ 57% Capturing frame 420/600 (2 workers)
+ ██████████████░░░░░░░░░░░ 59% Capturing frame 450/600 (2 workers)
+ ███████████████░░░░░░░░░░ 61% Capturing frame 480/600 (2 workers)
+ ███████████████░░░░░░░░░░ 63% Capturing frame 510/600 (2 workers)
+ ████████████████░░░░░░░░░ 66% Capturing frame 540/600 (2 workers)
+ █████████████████░░░░░░░░ 68% Capturing frame 570/600 (2 workers)
+ █████████████████░░░░░░░░ 70% Capturing frame 600/600 (2 workers)
+ ██████████████████░░░░░░░ 75% Encoding video
+ ██████████████████████░░░ 90% Assembling final video
+ █████████████████████████ 100% Render complete
+
+◇ /Users/macstudio3/Projects/wallpaper-paint-antics/renders/02-splash-of-personality.mp4
+ 12.5 MB · 20.0s video · rendered in 18.1s
+
+[INFO] [Render] Pipeline started {"renderJobId":"3420f2a1-db43-4133-919c-2c2591bce22c","platform":"darwin","arch":"arm64","nodeVersion":"v26.4.0","fps":{"num":30,"den":1},"format":"mp4","quality":"high","browserGpuMode":"auto","forceScreenshot":false,"protocolTimeout":300000,"browserTimeout":120000,"pageNavigationTimeout":60000,"playerReadyTimeout":45000}
+[INFO] [Render:trace] {"renderJobId":"3420f2a1-db43-4133-919c-2c2591bce22c","phase":"pipeline","status":"checkpoint","elapsedMs":1,"message":"started","format":"mp4","quality":"high","browserGpuMode":"auto","forceScreenshot":false,"protocolTimeoutMs":300000,"pageNavigationTimeoutMs":60000,"playerReadyTimeoutMs":45000,"requestedWorkers":2}
+[INFO] [Render:trace] {"renderJobId":"3420f2a1-db43-4133-919c-2c2591bce22c","phase":"compile","status":"start","elapsedMs":2,"needsAlpha":false}
+[INFO] [Compiler] Embedded local font file: assets/archivo.ttf (86 KB → data URI)
+[INFO] [Compiler] Embedded local font file: assets/space-mono.ttf (79 KB → data URI)
+[INFO] Compiled composition metadata {"renderJobId":"3420f2a1-db43-4133-919c-2c2591bce22c","entryFile":"episodes/02-splash-of-personality.html","staticDuration":20,"width":1080,"height":1920,"videoCount":0,"audioCount":1,"renderModeHints":{"recommendScreenshot":false,"reasons":[]}}
+[INFO] [Render:trace] {"renderJobId":"3420f2a1-db43-4133-919c-2c2591bce22c","phase":"compile","status":"end","elapsedMs":72,"durationMs":69,"needsAlpha":false}
+[INFO] [Render:trace] {"renderJobId":"3420f2a1-db43-4133-919c-2c2591bce22c","phase":"compile","status":"checkpoint","elapsedMs":73,"message":"composition metadata resolved","width":1080,"height":1920,"videoCount":0,"audioCount":1,"imageCount":0,"deviceScaleFactor":1,"forceScreenshot":false,"compositionHash":"ef7b6d83d3f2a1cb"}
+[INFO] [Render:trace] {"renderJobId":"3420f2a1-db43-4133-919c-2c2591bce22c","phase":"browser_probe","status":"start","elapsedMs":73,"forceScreenshot":false,"stagePhase":"calibrating"}
+[INFO] [Render:trace] {"renderJobId":"3420f2a1-db43-4133-919c-2c2591bce22c","phase":"browser_probe","status":"end","elapsedMs":75,"durationMs":2,"forceScreenshot":false,"stagePhase":"calibrating"}
+[INFO] [Render:trace] {"renderJobId":"3420f2a1-db43-4133-919c-2c2591bce22c","phase":"browser_probe","status":"checkpoint","elapsedMs":75,"message":"duration resolved","durationSeconds":20,"totalFrames":600,"compositionHash":"ef7b6d83d3f2a1cb","beginFrameStalled":false}
+[INFO] [Render:trace] {"renderJobId":"3420f2a1-db43-4133-919c-2c2591bce22c","phase":"video_extract","status":"start","elapsedMs":75,"videoCount":0}
+[INFO] [Render:trace] {"renderJobId":"3420f2a1-db43-4133-919c-2c2591bce22c","phase":"video_extract","status":"end","elapsedMs":75,"durationMs":0,"videoCount":0}
+[INFO] [Render:trace] {"renderJobId":"3420f2a1-db43-4133-919c-2c2591bce22c","phase":"video_extract","status":"checkpoint","elapsedMs":76,"message":"frames resolved","videoCount":0,"extractedVideoCount":0,"totalFramesExtracted":0,"maxFramesPerVideo":0,"avgFramesPerExtractedVideo":null,"vfrPreflightCount":null,"vfrPreflightMs":null,"cacheHits":null,"cacheMisses":null,"transientRetries":null,"minVideoFrameCoverageRatio":null,"authoredTimedClipCount":3}
+[INFO] [Render] No HDR sources detected — rendering SDR {"renderJobId":"3420f2a1-db43-4133-919c-2c2591bce22c"}
+[INFO] [Render:trace] {"renderJobId":"3420f2a1-db43-4133-919c-2c2591bce22c","phase":"hdr_detection","status":"checkpoint","elapsedMs":76,"message":"resolved","requestedHdrMode":"auto","effectiveHdr":"sdr","nativeHdrVideoCount":0,"nativeHdrImageCount":0}
+[INFO] [Render:trace] {"renderJobId":"3420f2a1-db43-4133-919c-2c2591bce22c","phase":"audio_process","status":"start","elapsedMs":76,"audioCount":1}
+[INFO] [Render:trace] {"renderJobId":"3420f2a1-db43-4133-919c-2c2591bce22c","phase":"audio_process","status":"end","elapsedMs":637,"durationMs":561,"audioCount":1}
+[INFO] [Render:trace] {"renderJobId":"3420f2a1-db43-4133-919c-2c2591bce22c","phase":"file_server","status":"start","elapsedMs":637,"reused":false}
+[INFO] [Render:trace] {"renderJobId":"3420f2a1-db43-4133-919c-2c2591bce22c","phase":"file_server","status":"end","elapsedMs":643,"durationMs":6}
+[hyperframes] browserGpuMode probe → hardware (WebGL renderer vendor="Google Inc. (Apple)" renderer="ANGLE (Apple, ANGLE Metal Renderer: Apple M3 Ultra, Unspecified Version)")
+[INFO] [Render:trace] {"renderJobId":"3420f2a1-db43-4133-919c-2c2591bce22c","phase":"capture_calibration","status":"checkpoint","elapsedMs":831,"message":"skipped","requestedWorkers":2,"totalFrames":600,"htmlInCanvasDetected":false,"lowMemoryMode":false,"deInversionEligible":false,"deParallelRouterEligible":false}
+[INFO] [Render:trace] {"renderJobId":"3420f2a1-db43-4133-919c-2c2591bce22c","phase":"worker_resolution","status":"checkpoint","elapsedMs":832,"message":"resolved","workerCount":2}
+[INFO] streaming-encode gate {"renderJobId":"3420f2a1-db43-4133-919c-2c2591bce22c","enabled":false,"configFlag":true,"outputFormat":"mp4","workerCount":2,"durationSeconds":20,"maxDurationSeconds":240}
+[INFO] [Render] Fast capture: default-on drawElement disabled for this render — parallel capture has no runtime self-verification. Set PRODUCER_EXPERIMENTAL_FAST_CAPTURE=true to override. {"renderJobId":"3420f2a1-db43-4133-919c-2c2591bce22c"}
+[INFO] [Render:trace] {"renderJobId":"3420f2a1-db43-4133-919c-2c2591bce22c","phase":"capture_strategy","status":"checkpoint","elapsedMs":832,"message":"resolved","workerCount":2,"forceScreenshot":false,"captureBeyondViewport":null,"useStreamingEncode":false,"useLayeredComposite":false,"usePageSideCompositing":false,"hasHdrContent":false,"hasShaderTransitions":false,"isPngSequence":false}
+[INFO] [Render:trace] {"renderJobId":"3420f2a1-db43-4133-919c-2c2591bce22c","phase":"capture_disk","status":"start","elapsedMs":832,"stagePhase":"capturing","needsAlpha":false,"workerCount":2,"forceScreenshot":false,"totalFrames":600,"framesCompleted":0,"captureMode":"beginframe","captureOperation":"beginFrame"}
+[INFO] [Render:trace] {"renderJobId":"3420f2a1-db43-4133-919c-2c2591bce22c","phase":"capture_disk","status":"end","elapsedMs":14733,"durationMs":13901,"stagePhase":"capturing","needsAlpha":false,"workerCount":2,"forceScreenshot":false,"totalFrames":600,"framesCompleted":600,"captureMode":"beginframe","captureOperation":"encode"}
+[INFO] [Render:trace] {"renderJobId":"3420f2a1-db43-4133-919c-2c2591bce22c","phase":"encode","status":"start","elapsedMs":14734,"stagePhase":"capturing","hasAudio":true,"isPngSequence":false,"isGif":false,"chunkedEncode":false,"workerCount":2,"forceScreenshot":false,"totalFrames":600,"framesCompleted":600,"captureMode":"beginframe","captureOperation":"encode"}
+[INFO] [Render:trace] {"renderJobId":"3420f2a1-db43-4133-919c-2c2591bce22c","phase":"encode","status":"end","elapsedMs":17429,"durationMs":2695,"stagePhase":"capturing","hasAudio":true,"isPngSequence":false,"isGif":false,"chunkedEncode":false,"workerCount":2,"forceScreenshot":false,"totalFrames":600,"framesCompleted":600,"captureMode":"beginframe","captureOperation":"encode"}
+[INFO] [Render:trace] {"renderJobId":"3420f2a1-db43-4133-919c-2c2591bce22c","phase":"assemble","status":"start","elapsedMs":17430,"stagePhase":"capturing","hasAudio":true,"workerCount":2,"forceScreenshot":false,"totalFrames":600,"framesCompleted":600,"captureMode":"beginframe","captureOperation":"encode"}
+[INFO] [Render:trace] {"renderJobId":"3420f2a1-db43-4133-919c-2c2591bce22c","phase":"assemble","status":"end","elapsedMs":18045,"durationMs":615,"stagePhase":"capturing","hasAudio":true,"workerCount":2,"forceScreenshot":false,"totalFrames":600,"framesCompleted":600,"captureMode":"beginframe","captureOperation":"encode"}
+[INFO] [Render:trace] {"renderJobId":"3420f2a1-db43-4133-919c-2c2591bce22c","phase":"pipeline","status":"checkpoint","elapsedMs":18085,"message":"artifact validated","totalElapsedMs":18082}
diff --git a/verification/03-great-wall-off-render.txt b/verification/03-great-wall-off-render.txt
new file mode 100644
index 0000000..2288497
--- /dev/null
+++ b/verification/03-great-wall-off-render.txt
@@ -0,0 +1,96 @@
+
+◆ Rendering wallpaper-paint-antics/episodes/03-great-wall-off.html → /Users/macstudio3/Projects/wallpaper-paint-antics/renders/03-great-wall-off.mp4
+ 30fps · high · 2 workers
+ GPU: browser GPU (auto-detect)
+
+[?25l│
+◇ Browser: cache
+[?25h
+ ✗ invalid_parent_traversal_in_asset_path: Found 4 asset path(s) traversing above the project root with "../" (../assets/ (4)). Renders rewrite this against each sub-composition's source path, but Studio preview and other live consumers resolve against the project root and 404.
+ Fix: Use plain root-relative paths (e.g. "assets/...", "capture/...", "fonts/...") — compositions are served with the project root as their base URL, so paths must be root-relative, not relative to the compositions/ directory.
+ Continuing render despite lint issues. Use --strict to block errors.
+
+ Parallel drawElement capture stays off for this install (a previous render had to fall back). Re-enable with HF_DE_PARALLEL_ROUTER=true.
+ █░░░░░░░░░░░░░░░░░░░░░░░░ 5% Compiling composition
+ ██░░░░░░░░░░░░░░░░░░░░░░░ 10% Extracting video frames
+ █████░░░░░░░░░░░░░░░░░░░░ 20% Processing audio tracks
+ ██████░░░░░░░░░░░░░░░░░░░ 25% Starting frame capture
+[BrowserManager] Browser launched (HeadlessChrome/152.0.7977.30, screenshot, gl=--use-gl=angle --use-angle=metal, headlessShell=true, platform=darwin)
+[initSession:screenshot] page.goto start (0ms)
+[initSession:screenshot] page.goto start (0ms)
+[HyperFrames] render runtime fps [object Object]
+[HyperFrames] render runtime fps [object Object]
+[initSession:screenshot] page.goto complete (100ms)
+[initSession:screenshot] page.goto complete (101ms)
+[initSession:screenshot] GSAP proxy flush complete (131ms)
+[initSession:screenshot] GSAP proxy flush complete (133ms)
+[initSession:screenshot] pollHfReady complete (134ms)
+[initSession:screenshot] pollHfReady complete (134ms)
+[initSession:screenshot] pollSubCompositionTimelines complete (ready) (135ms)
+[initSession:screenshot] applyVideoMetadataHints complete (136ms)
+[initSession:screenshot] pollSubCompositionTimelines complete (ready) (135ms)
+[initSession:screenshot] applyVideoMetadataHints complete (135ms)
+[initSession:screenshot] media + fonts + tailwind ready (137ms)
+[initSession:screenshot] media + fonts + tailwind ready (136ms)
+[initSession:screenshot] static-frame dedup: disabled (canvas/webgl) (140ms)
+[initSession:screenshot] static-frame dedup: disabled (canvas/webgl) (139ms)
+ ██████░░░░░░░░░░░░░░░░░░░ 27% Capturing frame 30/600 (2 workers)
+ ███████░░░░░░░░░░░░░░░░░░ 30% Capturing frame 60/600 (2 workers)
+ ████████░░░░░░░░░░░░░░░░░ 32% Capturing frame 90/600 (2 workers)
+ ████████░░░░░░░░░░░░░░░░░ 34% Capturing frame 120/600 (2 workers)
+ █████████░░░░░░░░░░░░░░░░ 36% Capturing frame 150/600 (2 workers)
+ █████████░░░░░░░░░░░░░░░░ 39% Capturing frame 180/600 (2 workers)
+ ██████████░░░░░░░░░░░░░░░ 41% Capturing frame 210/600 (2 workers)
+ ██████████░░░░░░░░░░░░░░░ 43% Capturing frame 240/600 (2 workers)
+ ███████████░░░░░░░░░░░░░░ 45% Capturing frame 270/600 (2 workers)
+ ████████████░░░░░░░░░░░░░ 48% Capturing frame 300/600 (2 workers)
+ ████████████░░░░░░░░░░░░░ 50% Capturing frame 330/600 (2 workers)
+ █████████████░░░░░░░░░░░░ 52% Capturing frame 360/600 (2 workers)
+ █████████████░░░░░░░░░░░░ 54% Capturing frame 390/600 (2 workers)
+ ██████████████░░░░░░░░░░░ 57% Capturing frame 420/600 (2 workers)
+ ██████████████░░░░░░░░░░░ 59% Capturing frame 450/600 (2 workers)
+ ███████████████░░░░░░░░░░ 61% Capturing frame 480/600 (2 workers)
+ ███████████████░░░░░░░░░░ 63% Capturing frame 510/600 (2 workers)
+ ████████████████░░░░░░░░░ 66% Capturing frame 540/600 (2 workers)
+ █████████████████░░░░░░░░ 68% Capturing frame 570/600 (2 workers)
+ █████████████████░░░░░░░░ 70% Capturing frame 600/600 (2 workers)
+ ██████████████████░░░░░░░ 75% Encoding video
+ ██████████████████████░░░ 90% Assembling final video
+ █████████████████████████ 100% Render complete
+
+◇ /Users/macstudio3/Projects/wallpaper-paint-antics/renders/03-great-wall-off.mp4
+ 14.7 MB · 20.0s video · rendered in 18.1s
+
+[INFO] [Render] Pipeline started {"renderJobId":"a58e12d2-7607-41b2-bedf-66eb8b530afb","platform":"darwin","arch":"arm64","nodeVersion":"v26.4.0","fps":{"num":30,"den":1},"format":"mp4","quality":"high","browserGpuMode":"auto","forceScreenshot":false,"protocolTimeout":300000,"browserTimeout":120000,"pageNavigationTimeout":60000,"playerReadyTimeout":45000}
+[INFO] [Render:trace] {"renderJobId":"a58e12d2-7607-41b2-bedf-66eb8b530afb","phase":"pipeline","status":"checkpoint","elapsedMs":1,"message":"started","format":"mp4","quality":"high","browserGpuMode":"auto","forceScreenshot":false,"protocolTimeoutMs":300000,"pageNavigationTimeoutMs":60000,"playerReadyTimeoutMs":45000,"requestedWorkers":2}
+[INFO] [Render:trace] {"renderJobId":"a58e12d2-7607-41b2-bedf-66eb8b530afb","phase":"compile","status":"start","elapsedMs":2,"needsAlpha":false}
+[INFO] [Compiler] Embedded local font file: assets/archivo.ttf (86 KB → data URI)
+[INFO] [Compiler] Embedded local font file: assets/space-mono.ttf (79 KB → data URI)
+[INFO] Compiled composition metadata {"renderJobId":"a58e12d2-7607-41b2-bedf-66eb8b530afb","entryFile":"episodes/03-great-wall-off.html","staticDuration":20,"width":1080,"height":1920,"videoCount":0,"audioCount":1,"renderModeHints":{"recommendScreenshot":false,"reasons":[]}}
+[INFO] [Render:trace] {"renderJobId":"a58e12d2-7607-41b2-bedf-66eb8b530afb","phase":"compile","status":"end","elapsedMs":71,"durationMs":69,"needsAlpha":false}
+[INFO] [Render:trace] {"renderJobId":"a58e12d2-7607-41b2-bedf-66eb8b530afb","phase":"compile","status":"checkpoint","elapsedMs":71,"message":"composition metadata resolved","width":1080,"height":1920,"videoCount":0,"audioCount":1,"imageCount":0,"deviceScaleFactor":1,"forceScreenshot":false,"compositionHash":"84633b9740d3998f"}
+[INFO] [Render:trace] {"renderJobId":"a58e12d2-7607-41b2-bedf-66eb8b530afb","phase":"browser_probe","status":"start","elapsedMs":71,"forceScreenshot":false,"stagePhase":"calibrating"}
+[INFO] [Render:trace] {"renderJobId":"a58e12d2-7607-41b2-bedf-66eb8b530afb","phase":"browser_probe","status":"end","elapsedMs":73,"durationMs":2,"forceScreenshot":false,"stagePhase":"calibrating"}
+[INFO] [Render:trace] {"renderJobId":"a58e12d2-7607-41b2-bedf-66eb8b530afb","phase":"browser_probe","status":"checkpoint","elapsedMs":74,"message":"duration resolved","durationSeconds":20,"totalFrames":600,"compositionHash":"84633b9740d3998f","beginFrameStalled":false}
+[INFO] [Render:trace] {"renderJobId":"a58e12d2-7607-41b2-bedf-66eb8b530afb","phase":"video_extract","status":"start","elapsedMs":74,"videoCount":0}
+[INFO] [Render:trace] {"renderJobId":"a58e12d2-7607-41b2-bedf-66eb8b530afb","phase":"video_extract","status":"end","elapsedMs":74,"durationMs":0,"videoCount":0}
+[INFO] [Render:trace] {"renderJobId":"a58e12d2-7607-41b2-bedf-66eb8b530afb","phase":"video_extract","status":"checkpoint","elapsedMs":74,"message":"frames resolved","videoCount":0,"extractedVideoCount":0,"totalFramesExtracted":0,"maxFramesPerVideo":0,"avgFramesPerExtractedVideo":null,"vfrPreflightCount":null,"vfrPreflightMs":null,"cacheHits":null,"cacheMisses":null,"transientRetries":null,"minVideoFrameCoverageRatio":null,"authoredTimedClipCount":3}
+[INFO] [Render] No HDR sources detected — rendering SDR {"renderJobId":"a58e12d2-7607-41b2-bedf-66eb8b530afb"}
+[INFO] [Render:trace] {"renderJobId":"a58e12d2-7607-41b2-bedf-66eb8b530afb","phase":"hdr_detection","status":"checkpoint","elapsedMs":74,"message":"resolved","requestedHdrMode":"auto","effectiveHdr":"sdr","nativeHdrVideoCount":0,"nativeHdrImageCount":0}
+[INFO] [Render:trace] {"renderJobId":"a58e12d2-7607-41b2-bedf-66eb8b530afb","phase":"audio_process","status":"start","elapsedMs":74,"audioCount":1}
+[INFO] [Render:trace] {"renderJobId":"a58e12d2-7607-41b2-bedf-66eb8b530afb","phase":"audio_process","status":"end","elapsedMs":660,"durationMs":586,"audioCount":1}
+[INFO] [Render:trace] {"renderJobId":"a58e12d2-7607-41b2-bedf-66eb8b530afb","phase":"file_server","status":"start","elapsedMs":660,"reused":false}
+[INFO] [Render:trace] {"renderJobId":"a58e12d2-7607-41b2-bedf-66eb8b530afb","phase":"file_server","status":"end","elapsedMs":666,"durationMs":6}
+[hyperframes] browserGpuMode probe → hardware (WebGL renderer vendor="Google Inc. (Apple)" renderer="ANGLE (Apple, ANGLE Metal Renderer: Apple M3 Ultra, Unspecified Version)")
+[INFO] [Render:trace] {"renderJobId":"a58e12d2-7607-41b2-bedf-66eb8b530afb","phase":"capture_calibration","status":"checkpoint","elapsedMs":849,"message":"skipped","requestedWorkers":2,"totalFrames":600,"htmlInCanvasDetected":false,"lowMemoryMode":false,"deInversionEligible":false,"deParallelRouterEligible":false}
+[INFO] [Render:trace] {"renderJobId":"a58e12d2-7607-41b2-bedf-66eb8b530afb","phase":"worker_resolution","status":"checkpoint","elapsedMs":850,"message":"resolved","workerCount":2}
+[INFO] streaming-encode gate {"renderJobId":"a58e12d2-7607-41b2-bedf-66eb8b530afb","enabled":false,"configFlag":true,"outputFormat":"mp4","workerCount":2,"durationSeconds":20,"maxDurationSeconds":240}
+[INFO] [Render] Fast capture: default-on drawElement disabled for this render — parallel capture has no runtime self-verification. Set PRODUCER_EXPERIMENTAL_FAST_CAPTURE=true to override. {"renderJobId":"a58e12d2-7607-41b2-bedf-66eb8b530afb"}
+[INFO] [Render:trace] {"renderJobId":"a58e12d2-7607-41b2-bedf-66eb8b530afb","phase":"capture_strategy","status":"checkpoint","elapsedMs":850,"message":"resolved","workerCount":2,"forceScreenshot":false,"captureBeyondViewport":null,"useStreamingEncode":false,"useLayeredComposite":false,"usePageSideCompositing":false,"hasHdrContent":false,"hasShaderTransitions":false,"isPngSequence":false}
+[INFO] [Render:trace] {"renderJobId":"a58e12d2-7607-41b2-bedf-66eb8b530afb","phase":"capture_disk","status":"start","elapsedMs":850,"stagePhase":"capturing","needsAlpha":false,"workerCount":2,"forceScreenshot":false,"totalFrames":600,"framesCompleted":0,"captureMode":"beginframe","captureOperation":"beginFrame"}
+[INFO] [Render:trace] {"renderJobId":"a58e12d2-7607-41b2-bedf-66eb8b530afb","phase":"capture_disk","status":"end","elapsedMs":14536,"durationMs":13686,"stagePhase":"capturing","needsAlpha":false,"workerCount":2,"forceScreenshot":false,"totalFrames":600,"framesCompleted":600,"captureMode":"beginframe","captureOperation":"encode"}
+[INFO] [Render:trace] {"renderJobId":"a58e12d2-7607-41b2-bedf-66eb8b530afb","phase":"encode","status":"start","elapsedMs":14536,"stagePhase":"capturing","hasAudio":true,"isPngSequence":false,"isGif":false,"chunkedEncode":false,"workerCount":2,"forceScreenshot":false,"totalFrames":600,"framesCompleted":600,"captureMode":"beginframe","captureOperation":"encode"}
+[INFO] [Render:trace] {"renderJobId":"a58e12d2-7607-41b2-bedf-66eb8b530afb","phase":"encode","status":"end","elapsedMs":17392,"durationMs":2856,"stagePhase":"capturing","hasAudio":true,"isPngSequence":false,"isGif":false,"chunkedEncode":false,"workerCount":2,"forceScreenshot":false,"totalFrames":600,"framesCompleted":600,"captureMode":"beginframe","captureOperation":"encode"}
+[INFO] [Render:trace] {"renderJobId":"a58e12d2-7607-41b2-bedf-66eb8b530afb","phase":"assemble","status":"start","elapsedMs":17392,"stagePhase":"capturing","hasAudio":true,"workerCount":2,"forceScreenshot":false,"totalFrames":600,"framesCompleted":600,"captureMode":"beginframe","captureOperation":"encode"}
+[INFO] [Render:trace] {"renderJobId":"a58e12d2-7607-41b2-bedf-66eb8b530afb","phase":"assemble","status":"end","elapsedMs":18011,"durationMs":619,"stagePhase":"capturing","hasAudio":true,"workerCount":2,"forceScreenshot":false,"totalFrames":600,"framesCompleted":600,"captureMode":"beginframe","captureOperation":"encode"}
+[INFO] [Render:trace] {"renderJobId":"a58e12d2-7607-41b2-bedf-66eb8b530afb","phase":"pipeline","status":"checkpoint","elapsedMs":18050,"message":"artifact validated","totalElapsedMs":18046}
← 66ed536 Build and verify Wally and Pippa character animation
·
back to Wallpaper Paint Antics
·
Verify three finished shorts and export characters through C 5b8c104 →