[object Object]

← 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

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 →