GearScope hyperframes functional-verification log (asserting on actual output) Date: 2026-08-17 | Host: macOS 26.5.2 aarch64 | Node v24.13.1 | FFmpeg 8.0.1 ASSERT 1 — rendered artifact is a real 1080p30 H.264 MP4 of the right length $ ffprobe -v error -show_entries format=duration,size:stream=codec_name,width,height,r_frame_rate -of default=noprint_wrappers=1 renders/demo-video_2026-08-17_12-04-47.mp4 codec_name=h264 width=1920 height=1080 r_frame_rate=30/1 duration=4.000000 size=170120 ✅ PASS — input HTML declared 1920x1080, 4s; output matches exactly ASSERT 2 — determinism claim: same input renders byte-identical video $ npx -y hyperframes@0.7.109 render # second run, same input EXIT: 0 $ md5 -q renders/demo-video_2026-08-17_12-04-47.mp4 renders/demo-video_2026-08-17_12-04-*.mp4 b66813f0cdc07aff2c9d77e6584bb747 170120 (run 1) b66813f0cdc07aff2c9d77e6584bb747 170120 (run 2) cmp -s → BYTE-IDENTICAL ✅ PASS — two independent renders produce the same md5; the README's "same input, same frames, same output" claim held in this environment ASSERT 3 — negative case: broken timeline registration is caught with a fix $ python3 - < check.log 2>&1; echo $? 1 ✗ timeline_id_mismatch: Timeline registered as "other" but no element has data-composition-id="other". The runtime cannot auto-nest this timeline. Fix: Change window.__timelines["other"] to match the data-composition-id attribute, or vice versa. ✅ PASS — exit 1, error names the rule, the file, the element, and the fix OBSERVATION (not counted) — a clip whose data-start/duration extend past the composition end (sub clip ends at 4s in a 2s composition) passes check with 0 issues; the engine appears to tolerate/clamp overhanging clips silently. Functional verdict: 3 of 3 asserts pass. The core claims (deterministic local HTML-to-MP4 rendering, lint that catches real authoring errors) are verified end to end without any paid service.