Skip to content

Build a cinematic shot layer for video storyboards#65

Open
isaacsight wants to merge 4 commits into
mainfrom
feat/cinematic-video-system
Open

Build a cinematic shot layer for video storyboards#65
isaacsight wants to merge 4 commits into
mainfrom
feat/cinematic-video-system

Conversation

@isaacsight

@isaacsight isaacsight commented Jul 22, 2026

Copy link
Copy Markdown
Owner

What changed

  • defines a shot-first production contract and executable cinematic lint gate
  • compiles storyboards into model-routed shot plans with continuity locks, four intentional candidates, cost estimates, and a 100-point review rubric
  • compiles shot plans into Creative Canvas graphs: approved keyframe → paid candidate batch → blind critic → selected take → master
  • preserves typed lineage, rejected alternatives, approvals, costs, sound direction, and a mandatory production receipt
  • audits graph cycles, dangling links, missing provenance, incomplete batches, and receipt policy

Evidence

ai-group-chat@0.0.0 test:cinematic
npx vitest run tools/cinematic-storyboard.test.mjs tools/shot-compiler.test.mjs tools/creative-graph-compiler.test.mjs

RUN v4.1.0 /Users/isaachernandez/blog-design-cinematic-video-system

Test Files 3 passed (3)
Tests 14 passed (14)
Start at 17:02:49
Duration 446ms (transform 95ms, setup 130ms, import 93ms, tests 11ms, environment 868ms) — 14 tests passed

  • example storyboard — 3/4 frames cinematic or hybrid; gate passes
  • shot plan — 4 shots, 12 candidates, .76 estimated batch, no spend
  • creative graph — 26 nodes, 68 links, 3 candidate batches, full lineage, receipt required
  • — clean

ai-group-chat@0.0.0 build
tsc && vite build

vite v6.4.3 building for production...
transforming...
✓ 1067 modules transformed.
rendering chunks...
computing gzip size...
dist/registerSW.js 0.13 kB
dist/manifest.webmanifest 0.56 kB
dist/index.html 7.76 kB │ gzip: 2.86 kB
dist/assets/ArchivePage-BaqYQAw_.css 0.98 kB │ gzip: 0.44 kB
dist/assets/LandingPage-BtT1Lei4.css 1.07 kB │ gzip: 0.47 kB
dist/assets/AboutPage-jkO8yuYT.css 1.16 kB │ gzip: 0.48 kB
dist/assets/LaunchPage-DHPA9tRd.css 1.51 kB │ gzip: 0.58 kB
dist/assets/PopPathText-B9GkQ83L.css 2.19 kB │ gzip: 0.63 kB
dist/assets/FigmaPage-C3SrSgiO.css 2.62 kB │ gzip: 0.78 kB
dist/assets/IssueDetailPage-CzwW4KTa.css 3.73 kB │ gzip: 0.97 kB
dist/assets/IssuesPage-CiVjD1C9.css 3.88 kB │ gzip: 1.13 kB
dist/assets/index-B_7OvIfn.css 3.99 kB │ gzip: 1.26 kB
dist/assets/MagazineFrame-BYh43KrD.css 4.06 kB │ gzip: 1.15 kB
dist/assets/AtelierPage-mZtd7vwU.css 5.56 kB │ gzip: 1.23 kB
dist/assets/PalmierSuitePage-BevtY4_3.css 5.92 kB │ gzip: 1.80 kB
dist/assets/PrototypePage-Ca0ggWfv.css 6.63 kB │ gzip: 1.61 kB
dist/assets/PressroomPage-DUmLdjcM.css 7.90 kB │ gzip: 1.71 kB
dist/assets/MotionSheetPage-DqlPtl3y.css 18.68 kB │ gzip: 4.67 kB
dist/assets/CreativeCanvasPage-Y1_A8TrF.css 22.39 kB │ gzip: 5.34 kB
dist/assets/LandingPage-CuB7a1we.css 26.82 kB │ gzip: 5.29 kB
dist/assets/IssueCredits-DRDRlPYi.css 168.83 kB │ gzip: 21.46 kB
dist/assets/index-BVF8dbiG.css 544.59 kB │ gzip: 74.95 kB
dist/assets/vendor-analytics-DyCIL1cD.js 0.04 kB │ gzip: 0.06 kB
dist/assets/issue-D43PMP0F.js 0.07 kB │ gzip: 0.08 kB
dist/assets/RefusalsPage-C9xo-Mej.js 0.78 kB │ gzip: 0.46 kB
dist/assets/LaunchPage-CgzU3Hxd.js 1.32 kB │ gzip: 0.64 kB
dist/assets/KernelAgentChat-C5mdCwif.js 1.85 kB │ gzip: 0.83 kB
dist/assets/accents-Fpvll4lF.js 2.13 kB │ gzip: 1.14 kB
dist/assets/LandingPage-GB0mwMCA.js 2.14 kB │ gzip: 0.95 kB
dist/assets/ArchivePage-C6yvuzuM.js 2.47 kB │ gzip: 1.31 kB
dist/assets/MagazineRefusals-2I6wmmT2.js 2.61 kB │ gzip: 1.09 kB
dist/assets/MagazineFrame-Z8d_YZ7Z.js 2.73 kB │ gzip: 0.93 kB
dist/assets/AboutPage-BEQWFsRF.js 3.22 kB │ gzip: 1.57 kB
dist/assets/IssueBackCoverPage-CF31aBmE.js 3.25 kB │ gzip: 1.23 kB
dist/assets/PopPathText-CYwQe5SE.js 3.26 kB │ gzip: 1.10 kB
dist/assets/IssuesPage-DBjqSAYe.js 3.69 kB │ gzip: 1.50 kB
dist/assets/IssueDetailPage-TLhhdnSQ.js 4.10 kB │ gzip: 1.46 kB
dist/assets/vendor-zustand-DrdR_9Xs.js 4.21 kB │ gzip: 2.03 kB
dist/assets/KernelAgentGate-BbZdgpBB.js 4.43 kB │ gzip: 1.41 kB
dist/assets/registry-zn3Wd_FX.js 4.69 kB │ gzip: 1.76 kB
dist/assets/KernelAgentControls-C1Bcfc_g.js 4.96 kB │ gzip: 1.41 kB
dist/assets/kernel-ubst-qf5.js 5.33 kB │ gzip: 2.65 kB
dist/assets/KernelAgentObserver-DwGJ9SaI.js 5.92 kB │ gzip: 1.55 kB
dist/assets/AgenticWorkflow-CQCQHrnX.js 7.40 kB │ gzip: 3.22 kB
dist/assets/PrototypePage-CfD8IyYs.js 8.11 kB │ gzip: 3.02 kB
dist/assets/swarm-CTsS5uaJ.js 8.37 kB │ gzip: 3.25 kB
dist/assets/FigmaPage-DW_16mpX.js 8.72 kB │ gzip: 2.74 kB
dist/assets/PressroomPage-BNDJ_7Lj.js 9.09 kB │ gzip: 3.19 kB
dist/assets/ClaudeClient-BANVQQkv.js 9.45 kB │ gzip: 2.60 kB
dist/assets/AtelierPage-CqN52YH9.js 10.74 kB │ gzip: 3.98 kB
dist/assets/LandingPage-DBEemcq6.js 11.01 kB │ gzip: 3.22 kB
dist/assets/browser-ponyfill-kZy0pKft.js 11.03 kB │ gzip: 3.85 kB
dist/assets/MotionSheetPage-BvLmyyrV.js 13.01 kB │ gzip: 4.81 kB
dist/assets/PalmierSuitePage-BOizn5VO.js 13.74 kB │ gzip: 4.62 kB
dist/assets/TermsPage-DmbH4hxw.js 14.34 kB │ gzip: 5.15 kB
dist/assets/LoginGate-BFBhko_U.js 22.20 kB │ gzip: 7.53 kB
dist/assets/PrivacyPage-CJ20YOjv.js 30.15 kB │ gzip: 8.93 kB
dist/assets/CreativeCanvasPage-D9wTH35e.js 57.28 kB │ gzip: 19.51 kB
dist/assets/vendor-i18n-B79kVa-N.js 71.67 kB │ gzip: 23.35 kB
dist/assets/AIEngine-DRHBIM9i.js 114.13 kB │ gzip: 42.44 kB
dist/assets/vendor-ui-BT2yB7AK.js 126.67 kB │ gzip: 41.72 kB
dist/assets/IssueCredits-DfIMPFvd.js 151.90 kB │ gzip: 32.54 kB
dist/assets/vendor-supabase-kPbh7bwL.js 215.54 kB │ gzip: 55.86 kB
dist/assets/vendor-react-CkQ6k9z1.js 286.78 kB │ gzip: 91.79 kB
dist/assets/index-C7k3P51I.js 688.07 kB │ gzip: 236.32 kB
dist/assets/Scene-3rq_9VuM.js 877.72 kB │ gzip: 237.83 kB
✓ built in 2.44s

PWA v1.2.0
Building src/sw.ts service worker ("es" format)...
vite v6.4.3 building for production...
transforming...
✓ 77 modules transformed.
rendering chunks...
computing gzip size...
dist/sw.mjs 27.28 kB │ gzip: 8.96 kB
✓ built in 72ms

PWA v1.2.0
mode injectManifest
format: es
precache 74 entries (231.07 KiB)
files generated
dist/sw.js — clean

ai-group-chat@0.0.0 lint:adherence
node scripts/check-adherence.mjs

adherence: clean — 32 files scanned, 0 raw hex colours. — clean

ai-group-chat@0.0.0 lint:editorial
node scripts/check-editorial.mjs

editorial: clean — 68 issues scanned; artifact-first, POPEYE-naming, and emoji all pass. — clean

Your Name added 4 commits July 22, 2026 16:51
Add a storyboard gate for action, camera, depth, transformation, and surprise. Enforce a 50% cinematic/hybrid floor so poster-only sequences fail before production spend.
Route each shot by motion needs, carry five continuity locks across the film, and score four intentional candidates with a 100-point rubric before any paid generation.
Compile shot plans into keyframe, batch, blind-critic, selection, sound, and master stages. Audit all 68 links for cycles, provenance, approvals, and receipt completeness.
Record provider roles, six implementation phases, objective Blender checks, and activation conditions while explicitly authorizing no integration or spend.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant