== positive: validate committed demo breakdown, 15 gates == ✅ Timeline is continuous ✅ Durations add up ✅ Shot numbering ✅ Shot size vocabulary ✅ Category vocabulary ✅ Camera vocabulary ✅ Transition vocabulary ✅ Frame description is checkable ✅ No duplicate descriptions ✅ Subjects reconcile with cast ✅ Categories carry evidence ✅ Camera vs. measured motion ✅ Boundaries come from detection ✅ Keyframes present ✅ Rhythm annotation is checkable Hints (not blocking): · S46: annotated "static" but the measured frame change is 12.3 — fine if the subject is moving, but if the camera moved the annotation needs fixing · S48–S53: 6 shots in a row are all "close" — the rhythm flattens here, and that is where viewers leave 53 shots / 202.9s / 3.83s average / 15.7 cuts per minute validate exit: 0 (expect 0) == negative battery: 6 planted violations, each must fail naming its gate == [mutate] wrote neg_seconds.json PASS[seconds] exit=1 | ❌ Durations add up [mutate] lowest-motion shot: S48 motion=0 camera=static -> camera='push-in' [mutate] wrote neg_camera.json PASS[camera] exit=1 | ❌ Camera vs. measured motion [mutate] wrote neg_frame.json PASS[frame] exit=1 | ❌ Frame description is checkable [mutate] wrote neg_boundary.json PASS[boundary] exit=1 | ❌ Boundaries come from detection [mutate] wrote neg_vocab.json PASS[vocab] exit=1 | ❌ Shot size vocabulary [mutate] stripped audio on S04 [mutate] wrote neg_evidence.json PASS[evidence] exit=1 | ❌ Categories carry evidence ---- negative-case results: 6 PASS / 0 FAIL of 6 == render determinism (md + html, two runs each) == 16690 render/a.md 92829 render/a.html 109519 total MD5 (render/a.md) = 515f486ed2fe917ac3a9cb3bd6abdce4 MD5 (render/b.md) = 515f486ed2fe917ac3a9cb3bd6abdce4 MD5 (render/a.html) = 9d20cf0e74aeb91ab33ef9284b92d7ae MD5 (render/b.html) = 9d20cf0e74aeb91ab33ef9284b92d7ae external URLs in generated report: 0 (0 = self-contained) diff vs committed demo-report: 20 diff lines == video-sync end to end: panels (headless Chrome) + compose on 30s demo == panels exit: 0 ; files: layout.json list-dim.png list-lit.png motion.cmd panel.html static.png compose exit: 0 stream,h264,1280,1296 stream,aac format,30.144000 committed reference: stream,1280,1296 stream, format,30.144000 == source fidelity vs raw.githubusercontent.com main == IDENTICAL skills/video-shots/SKILL.md (13614 bytes) IDENTICAL skills/video-shots/references/taxonomy.md (11939 bytes) IDENTICAL skills/video-shots/references/schema.md (5372 bytes) IDENTICAL skills/video-shots/references/analysis-pass.md (5624 bytes) IDENTICAL skills/video-shots/references/report-style.md (5579 bytes) IDENTICAL skills/video-shots/scripts/video-shots.mjs (76911 bytes) IDENTICAL skills/video-sync/SKILL.md (7284 bytes) ---- fidelity: 7 identical / 0 differ ---- external dependency probe in generated report ---- (url count: 0)