@lemoncat7/dsh-partner 2.4.2 → 2.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -0
- package/docs/THIRD_PARTY_LICENSES.md +13 -0
- package/docs/attachment-storage.md +18 -0
- package/docs/director-skills.md +24 -0
- package/docs/long-task-continuation.md +51 -0
- package/docs/releases/2.5.0.md +13 -0
- package/docs/releases/2.6.0.md +11 -0
- package/docs/releases/2.7.0.md +21 -0
- package/lib/agent-runtime.d.ts +9 -1
- package/lib/agent-runtime.d.ts.map +1 -1
- package/lib/agent-runtime.js +117 -17
- package/lib/agent-runtime.js.map +1 -1
- package/lib/api/features/attachments-api.d.ts.map +1 -1
- package/lib/api/features/attachments-api.js +31 -1
- package/lib/api/features/attachments-api.js.map +1 -1
- package/lib/api.d.ts +1 -1
- package/lib/api.d.ts.map +1 -1
- package/lib/api.js +1 -1
- package/lib/api.js.map +1 -1
- package/lib/attachments/grouped-storage.d.ts +5 -0
- package/lib/attachments/grouped-storage.d.ts.map +1 -0
- package/lib/attachments/grouped-storage.js +47 -0
- package/lib/attachments/grouped-storage.js.map +1 -0
- package/lib/attachments/service.d.ts +17 -0
- package/lib/attachments/service.d.ts.map +1 -1
- package/lib/attachments/service.js +100 -8
- package/lib/attachments/service.js.map +1 -1
- package/lib/attachments/shared-storage.d.ts +7 -0
- package/lib/attachments/shared-storage.d.ts.map +1 -0
- package/lib/attachments/shared-storage.js +44 -0
- package/lib/attachments/shared-storage.js.map +1 -0
- package/lib/attachments/storage-admin.d.ts +6 -0
- package/lib/attachments/storage-admin.d.ts.map +1 -0
- package/lib/attachments/storage-admin.js +43 -0
- package/lib/attachments/storage-admin.js.map +1 -0
- package/lib/attachments/storage-types.d.ts +33 -0
- package/lib/attachments/storage-types.d.ts.map +1 -0
- package/lib/attachments/storage-types.js +2 -0
- package/lib/attachments/storage-types.js.map +1 -0
- package/lib/attachments/tool.d.ts.map +1 -1
- package/lib/attachments/tool.js +16 -5
- package/lib/attachments/tool.js.map +1 -1
- package/lib/channels/delivery-policy.d.ts.map +1 -1
- package/lib/channels/delivery-policy.js +7 -4
- package/lib/channels/delivery-policy.js.map +1 -1
- package/lib/channels/direct/message-format.js +418 -281
- package/lib/channels/direct/message-format.js.map +4 -4
- package/lib/channels/manager.d.ts +7 -3
- package/lib/channels/manager.d.ts.map +1 -1
- package/lib/channels/manager.js +73 -38
- package/lib/channels/manager.js.map +1 -1
- package/lib/channels/weixin/api.d.ts.map +1 -1
- package/lib/channels/weixin/api.js +7 -2
- package/lib/channels/weixin/api.js.map +1 -1
- package/lib/channels/weixin/errors.d.ts +14 -0
- package/lib/channels/weixin/errors.d.ts.map +1 -0
- package/lib/channels/weixin/errors.js +29 -0
- package/lib/channels/weixin/errors.js.map +1 -0
- package/lib/channels/weixin/poll.d.ts +14 -0
- package/lib/channels/weixin/poll.d.ts.map +1 -0
- package/lib/channels/weixin/poll.js +50 -0
- package/lib/channels/weixin/poll.js.map +1 -0
- package/lib/client-api.d.ts +1 -23
- package/lib/client-api.d.ts.map +1 -1
- package/lib/client-api.js.map +1 -1
- package/lib/client-controller.d.ts.map +1 -1
- package/lib/client-controller.js +3 -3
- package/lib/client-controller.js.map +1 -1
- package/lib/client.d.ts.map +1 -1
- package/lib/client.js +1078 -679
- package/lib/client.js.map +4 -4
- package/lib/collaboration/composition.d.ts.map +1 -1
- package/lib/collaboration/composition.js +32 -8
- package/lib/collaboration/composition.js.map +1 -1
- package/lib/collaboration/domain.d.ts +8 -0
- package/lib/collaboration/domain.d.ts.map +1 -1
- package/lib/collaboration/domain.js.map +1 -1
- package/lib/collaboration/service.d.ts.map +1 -1
- package/lib/collaboration/service.js +38 -5
- package/lib/collaboration/service.js.map +1 -1
- package/lib/concern-notification.d.ts.map +1 -1
- package/lib/concern-notification.js +2 -1
- package/lib/concern-notification.js.map +1 -1
- package/lib/concern-tool.js +1 -1
- package/lib/concern-tool.js.map +1 -1
- package/lib/execution/reply-progress.d.ts.map +1 -1
- package/lib/execution/reply-progress.js +4 -2
- package/lib/execution/reply-progress.js.map +1 -1
- package/lib/execution/service.d.ts +1 -1
- package/lib/execution/service.d.ts.map +1 -1
- package/lib/execution/service.js +4 -7
- package/lib/execution/service.js.map +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +7 -1
- package/lib/index.js.map +1 -1
- package/lib/memory-reflection.js +2 -2
- package/lib/memory-reflection.js.map +1 -1
- package/lib/message-source.d.ts +25 -0
- package/lib/message-source.d.ts.map +1 -0
- package/lib/message-source.js +8 -0
- package/lib/message-source.js.map +1 -0
- package/lib/observation-loop.js +4 -4
- package/lib/observation-loop.js.map +1 -1
- package/lib/pendant/reader.js +1 -1
- package/lib/pendant/reader.js.map +1 -1
- package/lib/pendant/settings-panel.js +1 -1
- package/lib/pendant/settings-panel.js.map +1 -1
- package/lib/persona/service.js +1 -1
- package/lib/persona/service.js.map +1 -1
- package/lib/requirements/attachments.d.ts +7 -0
- package/lib/requirements/attachments.d.ts.map +1 -0
- package/lib/requirements/attachments.js +26 -0
- package/lib/requirements/attachments.js.map +1 -0
- package/lib/requirements/domain.d.ts +1 -1
- package/lib/requirements/domain.d.ts.map +1 -1
- package/lib/requirements/service.d.ts.map +1 -1
- package/lib/requirements/service.js +4 -1
- package/lib/requirements/service.js.map +1 -1
- package/lib/scheduler/channel-origin.d.ts +7 -0
- package/lib/scheduler/channel-origin.d.ts.map +1 -0
- package/lib/scheduler/channel-origin.js +27 -0
- package/lib/scheduler/channel-origin.js.map +1 -0
- package/lib/scheduler/continuations.d.ts +29 -0
- package/lib/scheduler/continuations.d.ts.map +1 -0
- package/lib/scheduler/continuations.js +286 -0
- package/lib/scheduler/continuations.js.map +1 -0
- package/lib/scheduler/domain.d.ts +40 -0
- package/lib/scheduler/domain.d.ts.map +1 -1
- package/lib/scheduler/final-reply.d.ts +13 -0
- package/lib/scheduler/final-reply.d.ts.map +1 -0
- package/lib/scheduler/final-reply.js +21 -0
- package/lib/scheduler/final-reply.js.map +1 -0
- package/lib/scheduler/service.d.ts +2 -0
- package/lib/scheduler/service.d.ts.map +1 -1
- package/lib/scheduler/service.js +30 -1
- package/lib/scheduler/service.js.map +1 -1
- package/lib/scheduler/wakeup-context.d.ts +7 -0
- package/lib/scheduler/wakeup-context.d.ts.map +1 -0
- package/lib/scheduler/wakeup-context.js +14 -0
- package/lib/scheduler/wakeup-context.js.map +1 -0
- package/lib/scheduler/wakeup.d.ts +11 -0
- package/lib/scheduler/wakeup.d.ts.map +1 -0
- package/lib/scheduler/wakeup.js +52 -0
- package/lib/scheduler/wakeup.js.map +1 -0
- package/lib/skills/builtin-resources.d.ts +6 -0
- package/lib/skills/builtin-resources.d.ts.map +1 -0
- package/lib/skills/builtin-resources.js +47 -0
- package/lib/skills/builtin-resources.js.map +1 -0
- package/lib/skills/builtin.d.ts +2 -5
- package/lib/skills/builtin.d.ts.map +1 -1
- package/lib/skills/builtin.js +11 -0
- package/lib/skills/builtin.js.map +1 -1
- package/lib/skills/director-builtins.d.ts +8 -0
- package/lib/skills/director-builtins.d.ts.map +1 -0
- package/lib/skills/director-builtins.js +65 -0
- package/lib/skills/director-builtins.js.map +1 -0
- package/lib/skills/drama-builtin.d.ts +3 -0
- package/lib/skills/drama-builtin.d.ts.map +1 -0
- package/lib/skills/drama-builtin.js +49 -0
- package/lib/skills/drama-builtin.js.map +1 -0
- package/lib/skills/long-task-continuation.d.ts +4 -0
- package/lib/skills/long-task-continuation.d.ts.map +1 -0
- package/lib/skills/long-task-continuation.js +43 -0
- package/lib/skills/long-task-continuation.js.map +1 -0
- package/lib/skills/service.d.ts.map +1 -1
- package/lib/skills/service.js +8 -3
- package/lib/skills/service.js.map +1 -1
- package/lib/skills/viora-canvas-builtin.d.ts +3 -0
- package/lib/skills/viora-canvas-builtin.d.ts.map +1 -0
- package/lib/skills/viora-canvas-builtin.js +19 -0
- package/lib/skills/viora-canvas-builtin.js.map +1 -0
- package/lib/storage/migrate-layout.d.ts.map +1 -1
- package/lib/storage/migrate-layout.js +13 -4
- package/lib/storage/migrate-layout.js.map +1 -1
- package/lib/store.d.ts.map +1 -1
- package/lib/store.js +2 -0
- package/lib/store.js.map +1 -1
- package/lib/tasks/context.js +1 -0
- package/lib/tasks/context.js.map +1 -1
- package/lib/tasks/continuation-yield.d.ts +4 -0
- package/lib/tasks/continuation-yield.d.ts.map +1 -0
- package/lib/tasks/continuation-yield.js +27 -0
- package/lib/tasks/continuation-yield.js.map +1 -0
- package/lib/tasks/continuation.d.ts +13 -0
- package/lib/tasks/continuation.d.ts.map +1 -0
- package/lib/tasks/continuation.js +106 -0
- package/lib/tasks/continuation.js.map +1 -0
- package/lib/tasks/domain.d.ts +2 -0
- package/lib/tasks/domain.d.ts.map +1 -1
- package/lib/tasks/scheduling.d.ts.map +1 -1
- package/lib/tasks/scheduling.js +7 -0
- package/lib/tasks/scheduling.js.map +1 -1
- package/lib/tasks/service.d.ts +2 -1
- package/lib/tasks/service.d.ts.map +1 -1
- package/lib/tasks/service.js +19 -1
- package/lib/tasks/service.js.map +1 -1
- package/lib/ui/attachment-storage.d.ts +2 -0
- package/lib/ui/attachment-storage.d.ts.map +1 -0
- package/lib/ui/attachment-storage.js +59 -0
- package/lib/ui/attachment-storage.js.map +1 -0
- package/lib/ui/capability-editor.js +1 -1
- package/lib/ui/capability-editor.js.map +1 -1
- package/lib/ui/companion-access-panel.js +1 -1
- package/lib/ui/companion-access-panel.js.map +1 -1
- package/lib/ui/companion-create.js +1 -1
- package/lib/ui/companion-create.js.map +1 -1
- package/lib/ui/companion-picker.js +1 -1
- package/lib/ui/companion-picker.js.map +1 -1
- package/lib/ui/identity-editor.js +1 -1
- package/lib/ui/identity-editor.js.map +1 -1
- package/lib/ui/mcp-capabilities.js +1 -1
- package/lib/ui/mcp-capabilities.js.map +1 -1
- package/lib/ui/mcp-panel.js +1 -1
- package/lib/ui/mcp-panel.js.map +1 -1
- package/lib/ui/memory/concern-board.js +2 -2
- package/lib/ui/memory/concern-board.js.map +1 -1
- package/lib/ui/memory/concern-deletion.d.ts +1 -1
- package/lib/ui/memory/concern-deletion.d.ts.map +1 -1
- package/lib/ui/memory/concern-deletion.js +9 -4
- package/lib/ui/memory/concern-deletion.js.map +1 -1
- package/lib/ui/memory/concern-panel.js +1 -1
- package/lib/ui/memory/concern-panel.js.map +1 -1
- package/lib/ui/memory/memory-library.js +1 -1
- package/lib/ui/memory/memory-library.js.map +1 -1
- package/lib/ui/memory/memory-panel.js +1 -1
- package/lib/ui/memory/memory-panel.js.map +1 -1
- package/lib/ui/partner-components.js +1 -1
- package/lib/ui/partner-components.js.map +1 -1
- package/lib/ui/requirement-board.js +1 -1
- package/lib/ui/requirement-board.js.map +1 -1
- package/lib/ui/requirement-dialog.js +1 -1
- package/lib/ui/requirement-dialog.js.map +1 -1
- package/lib/ui/requirement-tasks-panel.js +1 -1
- package/lib/ui/requirement-tasks-panel.js.map +1 -1
- package/lib/ui/schedule-panel.d.ts.map +1 -1
- package/lib/ui/schedule-panel.js +20 -4
- package/lib/ui/schedule-panel.js.map +1 -1
- package/lib/ui/skills-panel.js +1 -1
- package/lib/ui/skills-panel.js.map +1 -1
- package/lib/ui/storage-settings.d.ts.map +1 -1
- package/lib/ui/storage-settings.js +2 -1
- package/lib/ui/storage-settings.js.map +1 -1
- package/lib/ui/task-board-stage.js +1 -1
- package/lib/ui/task-board-stage.js.map +1 -1
- package/lib/ui/workspace-components.js +1 -1
- package/lib/ui/workspace-components.js.map +1 -1
- package/lib/ui/workspace-navigation.d.ts +16 -16
- package/lib/ui/workspace-navigation.js +1 -1
- package/lib/ui/workspace-navigation.js.map +1 -1
- package/package.json +55 -41
- package/resources/skills/cinematic-director/manifest.json +205 -0
- package/resources/skills/cinematic-director/upstream/CHANGELOG.md +213 -0
- package/resources/skills/cinematic-director/upstream/CONTRIBUTING.md +316 -0
- package/resources/skills/cinematic-director/upstream/LICENSE +21 -0
- package/resources/skills/cinematic-director/upstream/README.md +507 -0
- package/resources/skills/cinematic-director/upstream/SKILL.md +420 -0
- package/resources/skills/cinematic-director/upstream/assets/beat-sheet-template.md +97 -0
- package/resources/skills/cinematic-director/upstream/assets/director-book-template.md +254 -0
- package/resources/skills/cinematic-director/upstream/assets/edit-timeline-template.md +147 -0
- package/resources/skills/cinematic-director/upstream/assets/keyframe-prompt-template.md +334 -0
- package/resources/skills/cinematic-director/upstream/assets/qc-checklist.md +153 -0
- package/resources/skills/cinematic-director/upstream/assets/shot-plan-template.md +95 -0
- package/resources/skills/cinematic-director/upstream/assets/sound-plan-template.md +181 -0
- package/resources/skills/cinematic-director/upstream/assets/video-prompt-template.md +305 -0
- package/resources/skills/cinematic-director/upstream/evals/run.md +69 -0
- package/resources/skills/cinematic-director/upstream/references/ai-video-tool-adapters.md +527 -0
- package/resources/skills/cinematic-director/upstream/references/blocking-and-staging.md +424 -0
- package/resources/skills/cinematic-director/upstream/references/cinematic-language.md +595 -0
- package/resources/skills/cinematic-director/upstream/references/continuity-bible.md +410 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/01_spielberg.md +192 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/02_hitchcock.md +193 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/03_kubrick.md +196 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/04_kurosawa.md +196 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/05_scorsese.md +195 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/06_fellini.md +197 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/07_bergman.md +197 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/08_tarkovsky.md +184 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/09_wong_kar_wai.md +189 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/10_nolan.md +185 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/11_villeneuve.md +188 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/12_fincher.md +185 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/13_refn.md +186 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/14_bi_gan.md +188 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/15_zhang_yimou.md +192 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/16_hou_hsiao_hsien.md +192 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/17_park_chan_wook.md +192 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/18_malick.md +191 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/19_michael_mann.md +192 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/20_coen_brothers.md +194 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/README.md +89 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/example_comparisons.md +140 -0
- package/resources/skills/cinematic-director/upstream/references/editing-and-assembly.md +263 -0
- package/resources/skills/cinematic-director/upstream/references/failure-modes.md +594 -0
- package/resources/skills/cinematic-director/upstream/references/genre-playbooks.md +407 -0
- package/resources/skills/cinematic-director/upstream/references/image-model-adapters.md +290 -0
- package/resources/skills/cinematic-director/upstream/references/lighting-and-color.md +349 -0
- package/resources/skills/cinematic-director/upstream/references/product-and-macro.md +207 -0
- package/resources/skills/cinematic-director/upstream/references/production-workflow.md +238 -0
- package/resources/skills/cinematic-director/upstream/references/prompt-lexicon.md +602 -0
- package/resources/skills/cinematic-director/upstream/references/sound-and-dialogue.md +364 -0
- package/resources/skills/director-skills/manifest.json +541 -0
- package/resources/skills/director-skills/upstream/CHANGELOG.md +32 -0
- package/resources/skills/director-skills/upstream/LICENSE +21 -0
- package/resources/skills/director-skills/upstream/MANIFEST.md +366 -0
- package/resources/skills/director-skills/upstream/README.md +251 -0
- package/resources/skills/director-skills/upstream/RESEARCH_PROVENANCE.md +37 -0
- package/resources/skills/director-skills/upstream/SKILL.md +114 -0
- package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/SKILL.md +81 -0
- package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/checklists/continuity_checklist.md +8 -0
- package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/examples/character_continuity_update.md +9 -0
- package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/examples/location_continuity_update.md +9 -0
- package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/references/continuity_system.md +21 -0
- package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/references/golden_image_workflow.md +29 -0
- package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/references/identity_anchors.md +14 -0
- package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/references/visual_bible_system.md +15 -0
- package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/templates/character_profile.md +15 -0
- package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/templates/continuity_checklist.md +11 -0
- package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/templates/costume_profile.md +12 -0
- package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/templates/location_profile.md +14 -0
- package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/templates/prop_profile.md +13 -0
- package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/templates/visual_style_bible.md +15 -0
- package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/tests/continuity_tests.md +6 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/SKILL.md +80 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/checklists/image_prompt_quality_checklist.md +10 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/examples/shot_list_to_image_prompts.md +4 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/references/image_prompt_components.md +22 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/references/lighting_and_photorealism.md +19 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/references/negative_prompt_patterns.md +18 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/references/prompt_anatomy.md +18 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/templates/character_reference_sheet_prompt.md +5 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/templates/cinematic_still_prompt.md +3 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/templates/keyframe_prompt.md +6 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/templates/location_reference_prompt.md +3 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/templates/prop_prompt.md +3 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/tests/image_prompt_completeness_tests.md +5 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/SKILL.md +84 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/checklists/video_prompt_quality_checklist.md +9 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/examples/image_prompt_to_video_prompt.md +3 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/references/ai_film_production_pipeline.md +21 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/references/audio_motion_timing.md +16 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/references/camera_lens_movement.md +26 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/references/negative_prompt_patterns.md +18 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/references/prompt_anatomy.md +18 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/references/video_prompt_components.md +25 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/templates/image_to_video_prompt.md +5 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/templates/text_to_video_prompt.md +5 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/templates/video_beat_prompt.md +9 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/tests/video_prompt_completeness_tests.md +5 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/SKILL.md +82 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/checklists/model_export_checklist.md +9 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/examples/failed_model_transfer_diagnosis.md +5 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/examples/image_prompt_translation.md +10 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/examples/same_scene_across_models.md +9 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/examples/universal_prompt_to_model_specific_exports.md +14 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/examples/video_prompt_translation.md +9 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/references/failure_modes_by_model.md +13 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/references/image_model_profiles.md +226 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/references/model_capability_matrix.md +24 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/references/model_update_protocol.md +10 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/references/parameter_compatibility.md +20 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/references/prompt_translation_rules.md +18 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/references/video_model_profiles.md +251 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/templates/model_comparison_table.md +4 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/templates/model_specific_prompt_export.md +21 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/templates/multi_model_export_package.md +18 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/templates/prompt_translation_report.md +13 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/templates/universal_prompt_brief.md +25 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/tests/model_routing_tests.md +8 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/tests/prompt_translation_tests.md +7 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/tests/research_provenance_tests.md +6 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/tests/unknown_capability_tests.md +7 -0
- package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/SKILL.md +82 -0
- package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/checklists/diagnostic_checklist.md +8 -0
- package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/checklists/release_quality_checklist.md +9 -0
- package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/examples/failed_output_to_revised_prompt.md +10 -0
- package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/examples/final_prompt_package_export.md +10 -0
- package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/references/failure_modes.md +13 -0
- package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/references/iteration_diagnostics.md +17 -0
- package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/references/revision_loops.md +17 -0
- package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/references/story_voice_release_qc.md +30 -0
- package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/templates/failed_output_intake.md +13 -0
- package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/templates/final_production_package.md +11 -0
- package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/templates/prompt_revision_report.md +17 -0
- package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/tests/prompt_quality_checklist_tests.md +6 -0
- package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/SKILL.md +81 -0
- package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/checklists/scene_quality_checklist.md +8 -0
- package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/examples/scene_to_screenplay_excerpt.md +18 -0
- package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/references/dialogue_and_subtext.md +15 -0
- package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/references/fountain_workflow.md +29 -0
- package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/references/scene_construction.md +20 -0
- package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/references/screenplay_format.md +18 -0
- package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/templates/beat_sheet.md +6 -0
- package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/templates/dialogue_pass.md +9 -0
- package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/templates/fountain_scene.md +25 -0
- package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/templates/screenplay_scene.md +19 -0
- package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/tests/screenplay_scene_tests.md +6 -0
- package/resources/skills/director-skills/upstream/skills/short-film-development/SKILL.md +83 -0
- package/resources/skills/director-skills/upstream/skills/short-film-development/checklists/concept_quality_checklist.md +8 -0
- package/resources/skills/director-skills/upstream/skills/short-film-development/examples/idea_to_logline.md +13 -0
- package/resources/skills/director-skills/upstream/skills/short-film-development/examples/logline_to_outline.md +10 -0
- package/resources/skills/director-skills/upstream/skills/short-film-development/references/ai_storytelling_workflow.md +46 -0
- package/resources/skills/director-skills/upstream/skills/short-film-development/references/continuity_handoff.md +8 -0
- package/resources/skills/director-skills/upstream/skills/short-film-development/references/screenplay_structure.md +19 -0
- package/resources/skills/director-skills/upstream/skills/short-film-development/references/story_development_workflow.md +23 -0
- package/resources/skills/director-skills/upstream/skills/short-film-development/templates/beat_sheet.md +7 -0
- package/resources/skills/director-skills/upstream/skills/short-film-development/templates/idea_intake.md +16 -0
- package/resources/skills/director-skills/upstream/skills/short-film-development/templates/logline.md +10 -0
- package/resources/skills/director-skills/upstream/skills/short-film-development/templates/short_film_treatment.md +23 -0
- package/resources/skills/director-skills/upstream/skills/short-film-development/templates/short_story_plan.md +22 -0
- package/resources/skills/director-skills/upstream/skills/short-film-development/templates/story_premise.md +19 -0
- package/resources/skills/director-skills/upstream/skills/short-film-development/templates/story_revision_audit.md +22 -0
- package/resources/skills/director-skills/upstream/skills/short-film-development/tests/output_format_tests.md +3 -0
- package/resources/skills/director-skills/upstream/skills/short-film-development/tests/routing_tests.md +7 -0
- package/resources/skills/director-skills/upstream/skills/shotlist-and-visual-breakdown/SKILL.md +77 -0
- package/resources/skills/director-skills/upstream/skills/shotlist-and-visual-breakdown/checklists/shotlist_quality_checklist.md +8 -0
- package/resources/skills/director-skills/upstream/skills/shotlist-and-visual-breakdown/examples/screenplay_scene_to_shot_list.md +8 -0
- package/resources/skills/director-skills/upstream/skills/shotlist-and-visual-breakdown/references/camera_plan.md +11 -0
- package/resources/skills/director-skills/upstream/skills/shotlist-and-visual-breakdown/references/production_breakdown.md +11 -0
- package/resources/skills/director-skills/upstream/skills/shotlist-and-visual-breakdown/references/shotlist_schema.md +21 -0
- package/resources/skills/director-skills/upstream/skills/shotlist-and-visual-breakdown/templates/asset_list.md +7 -0
- package/resources/skills/director-skills/upstream/skills/shotlist-and-visual-breakdown/templates/camera_plan.md +10 -0
- package/resources/skills/director-skills/upstream/skills/shotlist-and-visual-breakdown/templates/scene_breakdown.md +16 -0
- package/resources/skills/director-skills/upstream/skills/shotlist-and-visual-breakdown/templates/shot_list.md +5 -0
- package/resources/skills/director-skills/upstream/skills/shotlist-and-visual-breakdown/tests/screenplay_to_shotlist_tests.md +5 -0
- package/resources/skills/director-skills/upstream/skills/style-cinematography-director/SKILL.md +77 -0
- package/resources/skills/director-skills/upstream/skills/style-cinematography-director/checklists/style_quality_checklist.md +8 -0
- package/resources/skills/director-skills/upstream/skills/style-cinematography-director/examples/genre_to_visual_direction.md +15 -0
- package/resources/skills/director-skills/upstream/skills/style-cinematography-director/references/camera_lens_movement.md +26 -0
- package/resources/skills/director-skills/upstream/skills/style-cinematography-director/references/cinematic_language.md +32 -0
- package/resources/skills/director-skills/upstream/skills/style-cinematography-director/references/genre_style_tone.md +17 -0
- package/resources/skills/director-skills/upstream/skills/style-cinematography-director/references/lighting_and_photorealism.md +19 -0
- package/resources/skills/director-skills/upstream/skills/style-cinematography-director/templates/visual_style_bible.md +33 -0
- package/resources/skills/director-skills/upstream/skills/style-cinematography-director/tests/style_translation_tests.md +5 -0
- package/resources/skills/director-skills/upstream/tests/master_router_tests.md +80 -0
- package/resources/skills/drama-production/manifest.json +933 -0
- package/resources/skills/drama-production/upstream/LICENSE +21 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/SKILL.md +153 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/agents/openai.yaml +4 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/assets/creator-decision.example.jsonl +4 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/assets/dashboard/app.js +1263 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/assets/dashboard/index.html +114 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/assets/dashboard/styles.css +297 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/assets/production-observation.example.jsonl +2 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/assets/project-template/short-drama.json +36 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/assets/reference-observation.example.jsonl +2 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/references/audience-reveal.md +21 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/references/contract-and-ownership.md +45 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/references/creator-documents.md +230 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/references/creator-workflow.md +98 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/references/form-cards/Q/347/211/210/350/241/250/350/276/276.md +73 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/references/form-cards//344/272/214/347/273/264/345/212/250/346/200/201/346/274/253.md +74 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/references/form-cards//345/233/275/346/274/253/344/272/214/346/254/241/345/205/203.md +79 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/references/form-cards//345/256/236/346/213/215.md +75 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/references/form-cards//346/260/264/345/242/250/347/254/224/350/247/246.md +85 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/references/form-cards//351/243/216/346/240/274/345/214/226/344/270/211/347/273/264.md +72 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/references/knowhow-index.md +85 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/references/look-development.md +51 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/references/pickup-and-alternate.md +24 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/references/production-form-profiles.md +126 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/references/reference-roles.md +53 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/references/runtime-preflight.md +24 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/scripts/creator_markdown_check.py +1413 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/scripts/dashboard_server.py +1798 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/scripts/project_tool.py +2454 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/scripts/selftest.py +287 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/SKILL.md +76 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/agents/openai.yaml +4 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/assets/character-look.example.jsonl +3 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/assets/continuity.example.jsonl +4 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/assets/decisions.example.jsonl +5 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/assets/location-view.example.jsonl +3 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/assets/occurrences.example.jsonl +5 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/assets/prop-state.example.jsonl +3 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/examples/minimal/characters.jsonl +2 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/examples/minimal/looks.jsonl +2 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/references/asset-review-checklist.md +82 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/references/character-and-look.md +190 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/references/continuity-delta.md +120 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/references/continuity-lock.md +122 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/references/identity-vs-variant.md +140 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/references/location-and-view.md +84 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/references/occurrence-extraction.md +108 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/references/prop-and-state.md +126 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/references/stage-contract.md +43 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/references/voice-direction.md +179 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/scripts/asset_check.py +267 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/scripts/selftest.py +89 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/SKILL.md +157 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/agents/openai.yaml +4 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/assets/adaptation-map.example.jsonl +1 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/assets/creative-brief.md +120 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/assets/episode-map.jsonl +1 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/assets/story-engine.md +181 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/adaptation-craft.md +219 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/creative-reference-intake.md +57 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/director-brief-craft.md +113 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/episode-design.md +509 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-and-hook-playbook.md +240 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//344/272/262/345/255/220/351/232/220/347/247/230.md +112 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//344/273/231/344/276/240/344/277/256/347/234/237.md +51 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//345/212/250/344/275/234/344/273/273/345/212/241.md +51 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//345/217/244/350/243/205/346/235/203/350/260/213.md +51 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//345/244/215/344/273/207/346/211/223/350/204/270.md +51 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//345/256/266/345/272/255/345/205/263/347/263/273.md +51 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//346/202/254/347/226/221/350/247/204/345/210/231.md +51 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//347/224/237/346/264/273/346/265/201.md +51 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//347/240/264/351/225/234/351/207/215/345/234/206.md +109 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//350/201/214/345/234/272/345/226/234/345/211/247.md +51 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//350/261/252/351/227/250/345/251/232/346/201/213.md +51 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//350/272/253/344/273/275/351/224/231/344/275/215.md +51 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards.md +92 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/mechanism-loop.md +282 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/multi-episode-intake.md +128 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/premise-devices.md +211 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/reveal-reversal-payoff.md +99 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/serial-character-and-memory.md +293 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/stage-contract.md +88 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/story-craft.md +359 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/scripts/episode_intake.py +699 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/scripts/selftest.py +47 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-edit/SKILL.md +146 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-edit/agents/openai.yaml +4 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-edit/assets/remotion/README.md +60 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-edit/assets/remotion/package.json +15 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-edit/assets/remotion/remotion.config.ts +6 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-edit/assets/remotion/src/Root.tsx +26 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-edit/assets/remotion/src/Subtitles.tsx +88 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-edit/assets/remotion/src/font.ts +46 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-edit/assets/remotion/src/index.ts +4 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-edit/assets/remotion/src/schema.ts +32 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-edit/assets/remotion/tsconfig.json +13 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-edit/assets//345/211/252/350/276/221/345/215/225.md +43 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-edit/references/cut-craft.md +38 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-edit/references/delivery-verify.md +29 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-edit/references/generated-footage.md +54 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-edit/references/sound-and-subtitles.md +60 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-edit/references/stage-contract.md +51 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-edit/scripts/edit_tool.py +1156 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-edit/scripts/selftest.py +520 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/SKILL.md +73 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/agents/openai.yaml +4 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/assets/image-prompt-spec.jsonl.md +187 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/assets/image-prompts.md +42 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/assets/lookdev-frame-spec.jsonl.md +128 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/assets/lookdev-prompts.md +34 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/examples/minimal-image-prompt-specs.jsonl +2 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/references/character-and-look.md +153 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/references/common-recipe.md +241 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/references/edit-and-revision.md +110 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/references/location-plate.md +151 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/references/look-and-state-variant.md +97 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/references/lookdev-frame.md +34 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/references/production-sheet-recipes.md +177 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/references/prop-plate.md +137 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/references/review-and-fixtures.md +92 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/references/stage-contract.md +32 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/scripts/image_prompt_check.py +443 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/scripts/selftest.py +95 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-novel-analyze/SKILL.md +245 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-novel-analyze/agents/openai.yaml +4 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-novel-analyze/assets/episode-candidate.example.jsonl +3 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-novel-analyze/references/adaptation-triage.md +116 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-novel-analyze/references/adaptation-value.md +124 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-novel-analyze/references/aggregation-and-entities.md +155 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-novel-analyze/references/chapter-extraction.md +144 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-novel-analyze/references/stage-contract.md +67 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-novel-analyze/scripts/novel_index.py +651 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-novel-analyze/scripts/selftest.py +51 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-produce/SKILL.md +183 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-produce/agents/openai.yaml +4 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-produce/references/adapter-contract.md +219 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-produce/references/providers/gpt-image-2.md +24 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-produce/references/providers/minimax-h3-video.md +86 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-produce/references/providers/minimax-music.md +25 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-produce/references/providers/minimax-speech.md +41 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-produce/references/providers/seedance.md +64 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-produce/scripts/fixture_adapter.py +77 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-produce/scripts/production_tool.py +2205 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-produce/scripts/provider_adapters.py +1747 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-produce/scripts/selftest.py +135 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-review/SKILL.md +118 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-review/agents/openai.yaml +4 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-review/assets/finding-template.jsonl +2 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-review/assets/supersession-decision.example.json +42 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-review/assets/verdict-template.json +32 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-review/examples/minimal-findings.jsonl +2 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-review/examples/minimal-verdict.json +34 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-review/references/anti-template-repair.md +109 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-review/references/production-quality-gates.md +276 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-review/references/project-calibration.md +83 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-review/references/review-method.md +81 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-review/references/rubric-assets-prompts.md +111 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-review/references/rubric-source-analysis.md +108 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-review/references/rubric-story-script.md +264 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-review/references/rubric-visual-motion.md +184 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-review/references/stage-contract.md +28 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-review/scripts/review_check.py +325 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-review/scripts/selftest.py +87 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/SKILL.md +175 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/agents/openai.yaml +4 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/assets/coverage-audition.example.jsonl +2 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/assets/coverage-template.json +49 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/assets/keyframe-prompts.md +36 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/assets/keyframe-template.jsonl +2 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/assets/revision-lineage.fragment.json +12 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/assets/scene-visual-plan.example.jsonl +2 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/assets/shot-template.jsonl +2 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/blocking-playbooks.md +216 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/comic-keyframe-lexicon.md +156 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/coverage-audition.md +34 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/keyframe-craft.md +174 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/lighting-craft.md +39 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/production-shot-grammar.md +279 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/review-and-fixtures.md +36 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/scene-visual-plan.md +30 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/screenplay-to-keyframe-example.md +155 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/shot-craft.md +266 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/shot-revision-identity.md +25 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/stage-contract.md +57 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/scripts/selftest.py +191 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/scripts/storyboard_check.py +824 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/SKILL.md +154 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/agents/openai.yaml +4 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/assets/coverage-scope.fragment.json +21 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/assets/delivery-container.jsonl.md +101 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/assets/motion-spec.jsonl.md +217 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/assets/motion-terminal.example.jsonl +2 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/assets/music-spec.jsonl.md +31 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/assets/performance.fragment.json +38 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/assets/video-prompts.md +67 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/examples/minimal-music-specs.jsonl +2 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/camera-audio-continuity.md +259 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/delivery-profile.md +273 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/generability.md +93 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/minimax-h3.md +253 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/motion-recipe.md +315 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/performance-action-timing.md +209 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/production-prompt-grammar.md +304 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/review-and-fixtures.md +139 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/seedance-2.0.md +50 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/seedance-2.5.md +122 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/stage-contract.md +60 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/target-model-profile.md +116 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/scripts/container_check.py +329 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/scripts/motion_timing_check.py +450 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/scripts/music_spec_check.py +327 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/scripts/selftest.py +82 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-write/SKILL.md +99 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-write/agents/openai.yaml +4 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-write/assets/beats.jsonl +2 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-write/assets/episode-card-standalone.json +120 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-write/assets/episode-card.json +55 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-write/assets/screenplay.md +36 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-write/assets/voice-record-sheet.jsonl.md +89 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-write/references/dialogue-craft.md +526 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-write/references/production-format-dialect.md +273 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-write/references/scene-handoff-capsule.md +25 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-write/references/scene-sound-dramaturgy.md +43 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-write/references/screenplay-format.md +266 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-write/references/script-craft.md +745 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-write/references/stage-contract.md +36 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-write/references/substitutable-realization.md +107 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-write/scripts/duration_estimate.py +309 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-write/scripts/screenplay_index.py +1091 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-write/scripts/selftest.py +229 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-write/scripts/voice_sheet_check.py +416 -0
- package/resources/skills/viora-canvas-production/manifest.json +23 -0
- package/resources/skills/viora-canvas-production/references/canvas-contract.md +50 -0
- package/resources/skills/viora-canvas-production/references/creative-production.md +50 -0
- package/resources/skills/viora-canvas-production/references/generation-delivery.md +36 -0
- package/resources/skills/viora-canvas-production/references/production-ledger.md +25 -0
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
# Image Model Adapters (Keyframes and Stills)
|
|
2
|
+
|
|
3
|
+
Load this file when the task produces stills — keyframes(关键帧), storyboard panels, first/last-frame pairs(首尾帧), character or location reference sheets — or when generated stills drift in face, wardrobe, set, or light. This is Step 8 (Keyframe strategy) of the pipeline and the engine behind Mode E, whose emittable form is [keyframe-prompt-template.md](../assets/keyframe-prompt-template.md).
|
|
4
|
+
|
|
5
|
+
**Staleness warning, before anything else.** The control-surface matrix in §2 describes capability *classes as of writing*, not a live feature list. Vendors ship, rename, and remove controls constantly, a family's base model and its editing model behave nothing alike, and the same model exposes different knobs in a web UI, an app, and an API. Nothing in that table is a fact you can quote to a client — verify against current documentation before you promise a user a control. **Capability snapshot: 2026-08.** Anything older than about two release cycles is a prior, not a fact — confirm on the panel before you rely on it.
|
|
6
|
+
|
|
7
|
+
## 1. The keyframe is the control point
|
|
8
|
+
|
|
9
|
+
A video model does not invent your film. Given an input image it mostly re-renders what the still already decided: identity, wardrobe, set dressing, light direction and quality, lens perspective, palette, composition, screen direction. What the text prompt adds on top is motion, camera behavior, timing, and end state — see [ai-video-tool-adapters.md](ai-video-tool-adapters.md). So every attribute you failed to nail in the still is an attribute the video model will guess at, and it will guess differently on every retry. A director who is unhappy with a clip and rewrites the motion prompt for the fourth time is usually fixing the wrong document.
|
|
10
|
+
|
|
11
|
+
The credit argument is blunt. Across the platforms this file covers, a video generation costs substantially more per attempt than a still and comes back in minutes rather than seconds. Treat that direction as the stable part and the multiple as something to re-check against current pricing for the tools you actually use. Attempt counts are owned by the retry budget in [production-workflow.md](production-workflow.md), and every number there is planning guidance for sizing a schedule, not a measured success rate. Quoting its bands: with the keyframe locked, budget 2–4 clip generations per approved shot on a Green shot, 3–6 on an Amber one, and 6–15 per half on a Red one after splitting — which on a 20-shot Amber-heavy scene is 60–120 clip generations before you count the Red shots. Without a locked keyframe, none of those bands hold and neither do their stop rules, because you are re-rolling identity and motion inside the same generation and cannot tell which one failed. Against that, the stills the same table budgets for keyframe approval — 1–3 on a Green shot, 3–8 on an Amber one — are cheap, and faster in wall-clock time too: you iterate on a still while looking at it, not while waiting for a queue. Rule: never spend a video credit on a still that has not passed the QC gate in §9.
|
|
12
|
+
|
|
13
|
+
## 2. Control-surface matrix
|
|
14
|
+
|
|
15
|
+
This matrix describes **capability classes as of writing, not a live feature list.** Vendors ship, rename, and remove controls constantly; a family's base model and its editing model behave nothing alike; and the same model exposes different knobs in a web UI, an app, and an API. Verify against current documentation before you promise a user a control. Where a control is absent, your workaround is §4–§6, not a retry.
|
|
16
|
+
|
|
17
|
+
Legend, one grade finer than the video matrix in [ai-video-tool-adapters.md](ai-video-tool-adapters.md): `best` first-class and precise, `yes` present and workable, `part` partial, indirect, or setup-dependent, `no` absent or unreliable on the surfaces we looked at — read it as "check", not as "impossible" — and `varies` where surface, tier, and release differ often enough that only the docs can answer.
|
|
18
|
+
|
|
19
|
+
| Control surface | MJ | Flux | NanoBanana / Gemini-image | Seedream / 即梦 | Qwen-Image | SDXL + ControlNet | Ideogram | Recraft | Chat-surfaced |
|
|
20
|
+
|---|---|---|---|---|---|---|---|---|---|
|
|
21
|
+
| Text prompt fidelity (literal adherence) | part | best | best | yes | best | part | yes | yes | yes |
|
|
22
|
+
| Image reference / img2img(图生图)with strength dial | yes | best | yes | best | yes | best | yes | yes | part |
|
|
23
|
+
| Character reference (identity binding) | yes | part | best | yes | part | best | part | varies | part |
|
|
24
|
+
| Style reference | best | yes | part | yes | part | best | yes | best | part |
|
|
25
|
+
| Inpainting, masked region(局部重绘) | yes | best | part | best | yes | best | yes | yes | varies |
|
|
26
|
+
| Outpainting / extend canvas | yes | best | part | yes | part | best | yes | yes | part |
|
|
27
|
+
| Instruction editing ("change only X") | part | best | best | yes | best | part | part | part | yes |
|
|
28
|
+
| Multi-image composition (2+ inputs fused) | part | yes | best | yes | yes | yes | varies | varies | yes |
|
|
29
|
+
| Aspect ratio parameter | best | best | part | best | best | best | best | best | part |
|
|
30
|
+
| Seed control (reproducible) | part | best | varies | yes | best | best | yes | part | no |
|
|
31
|
+
| Negative prompt | yes | part | varies | yes | yes | best | yes | part | no |
|
|
32
|
+
| Text rendering inside the image | part | yes | yes | yes | best | no | best | best | varies |
|
|
33
|
+
| Upscale / detail pass | best | yes | part | yes | part | best | yes | yes | part |
|
|
34
|
+
|
|
35
|
+
Routing rules that fall out of the matrix:
|
|
36
|
+
|
|
37
|
+
- Need one face to survive 20 shots: work in the `best` character-reference column (NanoBanana/Gemini-class, or SDXL with a trained LoRA / IP-Adapter). Everything else needs the identity string in §4 doing the heavy lifting.
|
|
38
|
+
- Need "same frame, one thing moved" — i.e. first/last pairs: work in the `best` instruction-editing column (Flux edit-class, NanoBanana/Gemini-class, Qwen edit-class). This is the highest-leverage control in the matrix for film work.
|
|
39
|
+
- Need reproducibility for A/B testing one prompt word: you need `best` seed. Conversational/chat-surfaced models generally do not give you this; accept it and A/B with reference images instead.
|
|
40
|
+
- Need on-screen signage, a period newspaper, a Chinese title card: Ideogram, Recraft, or Qwen-Image. Do not fight a model that cannot spell.
|
|
41
|
+
- On some models — fast and distilled variants especially — negatives have no visible effect at all. If yours seem to be doing nothing, test it on one frame and assume they are doing nothing until proven otherwise; then move the exclusion into a positive statement ("bare plaster wall, nothing mounted on it" instead of "no posters"). Vocabulary for both directions lives in [prompt-lexicon.md](prompt-lexicon.md).
|
|
42
|
+
- The `Chat-surfaced` column is a class, not a product: any image model you reach through a conversational assistant behaves this way. Instruction editing is its native mode and the numeric surfaces are generally absent — assume nothing to seed and nothing to negate until the surface proves otherwise, and the ratio asked for in words rather than set, so check the delivery ratio on every output. Keep it for edits you can judge by eye.
|
|
43
|
+
|
|
44
|
+
### Three families, in the same shape as the video blocks
|
|
45
|
+
|
|
46
|
+
Short blocks for the three classes that carry most stills work in this pipeline, written in the shape the per-tool blocks in [ai-video-tool-adapters.md](ai-video-tool-adapters.md) use. Same caveat as the matrix, and the same decoupling that file states once: each heading names a capability class, and the product carrying it can be renamed, retiered, or withdrawn — confirm it is still offered on the surface the user has before you plan around it, and if it is gone, find whichever product now exposes the same surfaces and read the block against that.
|
|
47
|
+
|
|
48
|
+
#### Midjourney family
|
|
49
|
+
|
|
50
|
+
- Surfaces to exploit — `--ar` for the delivery ratio, `--sref` for a look carried across a scene, `--cref` and its weight for a face carried across shots, `--no` for exclusions, and a style-strength control. Parameters, not adjectives.
|
|
51
|
+
- Rules — set the ratio with `--ar` and generate native; never crop into the delivery ratio (§8). One `--sref` per scene, pinned early and reused verbatim, or the look re-rolls shot to shot. `--cref` binds a face *family*, which is why the matrix reads `yes` and not `best` — it does not retire the identity string in slot 3 or its checkable landmark. Exclusions go in `--no` as instances, never categories, and the positive prompt stays free of the word "no". Prompt fidelity is `part` here: a long literal slot list gets averaged, so spend words on slots 2–4 and let the flags carry the look.
|
|
52
|
+
- Typical failure and fix — the look is beautiful and the shot is wrong; the frame ignores the size, angle, and lens you stated. Fix: cut the prompt back to the slots that decide geometry, move the look onto `--sref`, and stop paying for it in words.
|
|
53
|
+
|
|
54
|
+
#### NanoBanana / Gemini-image class
|
|
55
|
+
|
|
56
|
+
- Surfaces to exploit — instruction editing on an uploaded image, multi-image composition, character reference. The highest-leverage column in the matrix for film work.
|
|
57
|
+
- Rules — phrase every edit as hold-plus-change with the holds named (§4); this is the class §6 assumes when it says derive the last frame rather than write it. Aspect is `part`: the output tends to inherit the input image's shape, so the delivery ratio is decided in the file you upload, not in a parameter. Seed is `varies`, so do not run single-word A/B tests here — A/B with reference images instead. Chain at most 2–3 edits from one master.
|
|
58
|
+
- Typical failure and fix — it re-generated instead of editing, background objects shifted, and you no longer have a pair. Fix: flip between the two files to catch it, restate the holds as a list of nameable objects rather than "same everything", and go back to the master instead of editing the edit.
|
|
59
|
+
|
|
60
|
+
#### Seedream / 即梦 class
|
|
61
|
+
|
|
62
|
+
- Surfaces to exploit — 图生图 with a strength dial, 局部重绘, reference images, 负向提示, seed, and stills for the 首尾帧 path on the video side.
|
|
63
|
+
- Rules — write the whole prompt in Chinese, craft terms included; the culturally specific nouns in [prompt-lexicon.md](prompt-lexicon.md) are the reason this class beats an English-first model on period-Chinese subject matter, and they only resolve in Chinese. Check which way the strength dial points before trusting a number (§6). Exclusions go in 负向提示 as a comma-separated list; keep 不 and 没有 out of the positive prompt.
|
|
64
|
+
- Typical failure and fix — the costume is right and the room came back contemporary. Fix: name three period objects and one period light source as positive facts instead of banning a category — F8 in [failure-modes.md](failure-modes.md).
|
|
65
|
+
|
|
66
|
+
## 3. Keyframe prompt anatomy: nine slots, then constraints
|
|
67
|
+
|
|
68
|
+
| # | Slot | What it locks | Example fragment |
|
|
69
|
+
|---|---|---|---|
|
|
70
|
+
| 1 | Shot ID | Your own traceability; ties the still to the shot list and continuity bible | `SC03_SH02.` |
|
|
71
|
+
| 2 | Size, angle, lens | Perspective and subject scale — the hardest thing to fix later | `Medium close-up, 85mm equivalent, eye level, slightly camera-right of his centerline.` |
|
|
72
|
+
| 3 | Subject identity string | The face. Verbatim, unchanged, every time (§4) | `A 34-year-old Han Chinese man, narrow jaw, deep-set eyes, …` |
|
|
73
|
+
| 4 | Pose implying action | Turns a portrait into a frame (§7) | `Half-risen from a wooden stool, weight on the front foot, head already turned to the door.` |
|
|
74
|
+
| 5 | Wardrobe and props | Continuity's most common failure after face | `Grey padded cotton jacket, top two frogging buttons undone, chipped white enamel mug in his left hand.` |
|
|
75
|
+
| 6 | Location and era | Set, materials, period lock | `Interior of a 1937 Shanghai lilong ground-floor room, whitewashed plaster, dark wood transom.` |
|
|
76
|
+
| 7 | Light source and direction | Named source, its side, its ratio — never a mood word | `Single kerosene lamp on the table camera-left, 45° off his nose; 4:1 lit side to shadow side, shadow side clearly darker but still holding detail, fill only from the whitewashed wall camera-right.` |
|
|
77
|
+
| 8 | Composition rule | Where he sits in frame and what the frame says | `Frame within frame: doorway occupies the right third; negative space above his head.` |
|
|
78
|
+
| 9 | Texture / medium | Grain, halation, palette — the "look" layer | `35mm still photograph, moderate grain, gentle halation on the lamp, warm ochre against cold grey.` |
|
|
79
|
+
| — | Constraints | Ratio and exclusions, named as instances | `16:9. No rendered text, no watermark, no plastic, no printed logos, no extra people.` |
|
|
80
|
+
|
|
81
|
+
Why this order and not another: many models weight early tokens more heavily, and in every model each slot constrains the slots after it. Framing and lens decide how much of the body is visible, which decides how much wardrobe detail matters. Identity must precede pose, because a pose stated first invites the model to build a body and then hang a generic face on it. Pose must precede wardrobe, because clothing renders as drapery over a posture. Light must come after location, because a lamp is only in the room once the room exists. Texture goes last so it modifies everything rather than competing for the subject slot. Constraints go last because in most models they are cleanup, not composition — an exclusion cannot rescue a prompt whose first thirty words already described the wrong shot. And every exclusion names an instance, never a category: "no modern objects" is not resolvable into anything a model can decline to draw, which is the mechanism behind F8 in [failure-modes.md](failure-modes.md), while "no plastic, no printed logos, no rubber soles, no wristwatch" is a list of things it can.
|
|
82
|
+
|
|
83
|
+
Two hard rules for slot 3: no emotion words and no attractiveness words. "Anxious", "haunted", "beautiful" in the identity slot change the face geometry from generation to generation. Expression belongs to slot 4, described physically ("jaw set, eyes narrowed slightly, mouth closed"). Shot size, angle, and lens vocabulary for slot 2 is owned by [cinematic-language.md](cinematic-language.md); the ratio ladder and quality vocabulary for slot 7 by [lighting-and-color.md](lighting-and-color.md) — use its rungs (1:1, 2:1, 4:1, 8:1, 16:1) and follow its rule of always writing the ratio in words as well as in numbers — in practice the worded version survives generation and the bare colon often does not.
|
|
84
|
+
|
|
85
|
+
## 4. Character consistency playbook, cheapest first
|
|
86
|
+
|
|
87
|
+
| Rung | Cost | Holds | Use when |
|
|
88
|
+
|---|---|---|---|
|
|
89
|
+
| Identity string | free | face family, build, hair, one landmark | always, on every prompt, in every tool |
|
|
90
|
+
| Character sheet | ~4 stills once | a ground truth to compare against and to feed as reference | any character in more than 3 shots |
|
|
91
|
+
| Reference-image binding | per-generation | face and often wardrobe | tool exposes character reference |
|
|
92
|
+
| Seed lock | free | everything, only when nothing else changes | A/B testing one prompt word |
|
|
93
|
+
| Instruction editing | 1 generation | everything except the one named change | first/last pairs, wardrobe changes, expression changes |
|
|
94
|
+
| Face inpaint | 1–3 generations | repairs one bad frame | a keeper frame with a wrong face |
|
|
95
|
+
| Cut around it | free | nothing — it hides the problem | the drift is unfixable and the shot is short or wide |
|
|
96
|
+
|
|
97
|
+
### Identity string
|
|
98
|
+
|
|
99
|
+
The spec is not here. Length, the fixed physical facts, the single wardrobe anchor, the banned words, and the worked good/bad pair are owned by the identity string contract in [continuity-bible.md](continuity-bible.md) — read them there, store the string in the character record under that file's `CHAR-slug` grammar, and version it there. What this file adds is only how the string meets the nine slots:
|
|
100
|
+
|
|
101
|
+
- Paste it **verbatim** into slot 3, every prompt, every tool. Change one word and you have a new person, so it is never paraphrased and never shortened for a close-up.
|
|
102
|
+
- Scope. The full string is face plus one wardrobe anchor. Where wardrobe is carried separately in slot 5, slot 3 takes the face-only opening of that same string, unchanged and in the same order — the opening words, not a fresh clause written for this shot.
|
|
103
|
+
- The two hard rules for slot 3 above still bind: no emotion words, no attractiveness words. Expression is physical, and it lives in slot 4.
|
|
104
|
+
- Insist on at least one checkable landmark — a scar, a mole, a chipped tooth. It is the only clause that proves drift rather than merely suggesting it, and check 1 of the QC gate in §9 is looking for it.
|
|
105
|
+
|
|
106
|
+
### Character sheet
|
|
107
|
+
|
|
108
|
+
Generate once, before any shot keyframe:
|
|
109
|
+
|
|
110
|
+
```text
|
|
111
|
+
Character sheet, CHAR-shen. Four views of the same person, evenly spaced left to right: front, three-quarter
|
|
112
|
+
left, full profile left, full body front.
|
|
113
|
+
[IDENTITY STRING, verbatim]
|
|
114
|
+
Neutral expression, relaxed shoulders, arms at sides, no props.
|
|
115
|
+
Wardrobe: [garment list exactly as recorded in the continuity bible].
|
|
116
|
+
Flat even lighting, no shadow direction, no rim light. Plain mid-grey seamless background.
|
|
117
|
+
No lens distortion; each view stands on the same ground line and fills 80% of the canvas height.
|
|
118
|
+
16:9. No text, no labels, no watermark, no extra people.
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
Use a wide canvas, not a square one: four views side by side on a 1:1 canvas gives each figure a sliver about a quarter of the canvas width, and the face resolution that comes back is too low to crop as a reference. Honest note: many models drift *between panels on one canvas*. If the four views disagree with each other, generate them as four separate images instead, reusing the same seed and the same reference, and compose the sheet yourself. Then use it three ways: crop the three-quarter head as the reference image for close and medium shots, the full body for wides (a head crop makes the model guess the build), and keep the sheet open as the ground truth for the QC gate. Neutral light and plain background are not aesthetics — they stop the reference from dragging the shot's lighting and set into the new frame.
|
|
122
|
+
|
|
123
|
+
### Reference-image binding, seed lock, instruction editing
|
|
124
|
+
|
|
125
|
+
Where a character-reference control exists, feed the sheet crop and start mid-scale on whatever dial the tool exposes, then tune by symptom in one direction only: if the new frame inherits the sheet's flat frontal light or its neutral pose, lower it one step; if the face reads as a relative rather than the same person, raise it one step. Two steps in each direction is the whole search. Log the value you settle on next to the character record so every later shot uses it. Reference binding constrains the face, not the wardrobe or the era — keep slots 5 and 6 written out.
|
|
126
|
+
|
|
127
|
+
Seed lock reproduces an image only when every other input is byte-identical: same model version, same prompt string down to the comma, same sampler and steps and dimensions. Change one word and the seed hands you a different person, which is the opposite of what people expect. So seeds are a tool for isolating one variable ("does adding *rain-darkened collar* change the composition?"), not a consistency mechanism. Record them anyway — the continuity bible has a field.
|
|
128
|
+
|
|
129
|
+
Instruction editing is the highest-leverage control on the matrix. Phrase it as hold-plus-change, and name the holds explicitly:
|
|
130
|
+
|
|
131
|
+
```text
|
|
132
|
+
Keep everything identical: same face, same grey padded jacket, same room, same lamp position, same framing,
|
|
133
|
+
same grain. Change only this: his head is turned 30° toward camera-left and his eyes are open, looking down.
|
|
134
|
+
Do not change the background, the composition, or the lighting.
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
中文 UI variant of the same template, for 即梦 / Seedream-class tools:
|
|
138
|
+
|
|
139
|
+
```text
|
|
140
|
+
保持完全不变:同一张脸、同一件灰色棉袄、同一个房间、煤油灯位置不变、构图不变、颗粒感不变。
|
|
141
|
+
只改这一处:他的头向左转 30 度,眼睛睁开,视线向下。
|
|
142
|
+
不要改动背景、构图或光线。
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
Verify it actually edited rather than re-generated: flip between the two images. If a background object shifted, the model re-rendered the world and you do not have a pair. Edit passes commonly accumulate a small crop or scale drift that is invisible in one hop and obvious in four, so chain at most 2–3 edits from one master before regenerating from the master.
|
|
146
|
+
|
|
147
|
+
### Face inpaint, and when to stop
|
|
148
|
+
|
|
149
|
+
Face inpaint(局部重绘)is repair, not production. Mask the head with a generous feather, supply the identity string alone plus the light direction, and run at low denoise — roughly 0.25–0.4 where the tool exposes a 0–1 dial, enough to rebuild features without repainting the skull. Two things go wrong: the repaired face is sharper than the rest of the frame (match grain and add the same halation), and the repaired face is lit from the wrong side (restate slot 7 in the inpaint prompt, every time).
|
|
150
|
+
|
|
151
|
+
When to accept drift: measure the head, not the shot name. A standing figure runs about seven and a half head-heights, so a head occupying under roughly 10% of frame height means the figure is full-length or wider, and at that size the audience is reading silhouette and wardrobe, not features. Accept the drift there, and accept it on any face on screen under about 1.5 seconds. Inside that — anything from a medium-wide in, where the head is 15% of frame height or more — drift is visible and must be fixed. When it is visible and you cannot fix it, cut around it: restage as an over-the-shoulder, a profile, a silhouette against the practical, a shot from behind, or a hands-and-prop insert that carries the same story beat. See [blocking-and-staging.md](blocking-and-staging.md) for restaging options and [failure-modes.md](failure-modes.md) for the symptom-to-fix table.
|
|
152
|
+
|
|
153
|
+
## 5. Location consistency playbook
|
|
154
|
+
|
|
155
|
+
- Location plate(场景底板). Before any shot with people in it, generate the empty set at the master angle and approve it. No characters, no action. The plate is now the truth for materials, wall color, furniture positions, and light. Every other frame in that location is derived from the plate by editing or img2img, never written from scratch. Store it under the `LOC-slug` / `plate-wide` names defined in [continuity-bible.md](continuity-bible.md).
|
|
156
|
+
- Location sheet, three angles. Master (the widest useful view), reverse (roughly 180° opposite, which will show the wall behind camera in the master), and a profile or 90° cross-angle. Generate the reverse and cross-angle *from the master plate* via instruction editing where the tool allows it, so shared surfaces carry over.
|
|
157
|
+
- Light direction in room coordinates, not camera coordinates. This is the technique that makes multi-angle work. Write the source once as a fact about the room — "the single window is on the east wall; mid-morning sun enters hard at 30° elevation" — then translate it per angle instead of restating it. In a master shooting toward the south wall, the east window falls on the camera's left and shadows run camera-right. In the 180° reverse, now shooting toward the north wall, that same window is on the camera's right — not its left — and shadows run camera-left; the side flips because the camera turned, the window never moved. Only in the cross-angle from the east side looking west is the source behind camera, giving frontal light with shadows falling away from lens. Writing "key from camera-left" in both the master and its reverse is the single most common multi-angle error: it silently moves the window across the room, the reverse reads as a different room at a different hour, and no video model will reconcile them. Same discipline as screen direction, which is owned by [cinematic-language.md](cinematic-language.md).
|
|
158
|
+
- Adding a character into a plate. Inpaint or instruction-edit them in; do not re-prompt the room. State three things the model routinely drops: the light on them ("lit by the same kerosene lamp camera-left, 4:1 lit side to shadow side, shadow side clearly darker but still holding detail"), the contact ("boots flat on the floorboards, shadow falling to camera-right"), and the occlusion ("he occludes the lower half of the doorway"). Missing contact is why composited figures look pasted.
|
|
159
|
+
- Era lock. Carry a matched positive and negative clause per period location, stored with the location record:
|
|
160
|
+
|
|
161
|
+
```text
|
|
162
|
+
Positive: 1937 Shanghai lilong interior — whitewashed plaster, dark stained wood transom, enamel basin,
|
|
163
|
+
kerosene lamp, hand-painted paper calendar.
|
|
164
|
+
Negative: no moulded plastic, no electric light fixtures, no printed logos or modern typography,
|
|
165
|
+
no stainless steel, no aluminium or vinyl frames.
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
Five items, inside the four-to-six negative budget in [prompt-lexicon.md](prompt-lexicon.md) — a longer list dilutes rather than tightens. An era negative that names *materials and manufacturing processes* holds up better than one that names objects ("no phones"), because the anachronisms that actually arrive are the ones you did not think to name; a material class catches all of them at once.
|
|
169
|
+
|
|
170
|
+
## 6. First/last frame pairs
|
|
171
|
+
|
|
172
|
+
The rule: generate the first frame properly, approve it, then **derive** the last frame from the approved file. Use instruction editing where available; otherwise img2img with the same prompt and only slot 4 rewritten, at roughly 0.25–0.4 on a 0–1 denoise dial — enough to move a head or a hand, low enough to leave the room alone. Check which way the dial points before trusting the number: some UIs label it "denoise" (higher means more change) and others label the same control "image strength" or 参考强度 with the sense inverted (higher means less change). Move it on one test frame and see which direction the room drifts.
|
|
173
|
+
|
|
174
|
+
Why writing the last frame from scratch usually fails: it starts from different noise, so it re-rolls every variable you did not state — the microstructure of the face, the fold pattern of fabric, the exact placement of background objects, the falloff of the lamp, the grain. The video model then has to invent a transition between two subtly different worlds. It does this in one of three ugly ways: a cross-dissolve, a face that morphs mid-clip, or a background that breathes. A 2% shift in a background object's position reads on screen as a camera bump.
|
|
175
|
+
|
|
176
|
+
Second rule, the pair-scope test: if more than one of {one body part moved, one object moved, one light changed} differs between A and B, you do not have a pair — you have two shots. Split them.
|
|
177
|
+
|
|
178
|
+
Worked pair — SC05_SH03, a man on a night bus registers something outside the window.
|
|
179
|
+
|
|
180
|
+
```text
|
|
181
|
+
Frame A (generated fresh, all nine slots):
|
|
182
|
+
SC05_SH03. Medium shot, 50mm equivalent, eye level, from the aisle seat opposite.
|
|
183
|
+
[IDENTITY STRING]. He sits slumped against the window, temple resting on the cold glass, both hands in his
|
|
184
|
+
lap, eyes open and unfocused. Dark wool overcoat, collar up, a folded paper ticket between two fingers.
|
|
185
|
+
Interior of a city bus at night, moulded plastic seatbacks, wet window glass. Sole light is the strip of
|
|
186
|
+
ceiling fluorescent above and slightly behind him, plus intermittent orange sodium streetlight raking in from
|
|
187
|
+
camera-left through the window. Off-center left third, empty seats receding to the right. 35mm photograph,
|
|
188
|
+
heavy shadow, cool cyan against sodium orange. 16:9. No text, no watermark, no extra people.
|
|
189
|
+
|
|
190
|
+
Frame B (instruction edit of Frame A — never re-prompted):
|
|
191
|
+
Keep everything identical: same face, same overcoat and collar, same ticket, same bus interior, same seat
|
|
192
|
+
positions, same ceiling fluorescent, same window reflections, same grain and color. Change only this: his
|
|
193
|
+
head has lifted 15° off the glass and turned toward the window, and his eyes are focused. Do not change the
|
|
194
|
+
framing, the background, or the lighting.
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
That pair gives a video model exactly one thing to interpolate — a head lift — which is the amount of change a 3–4 second clip can absorb without inventing anything. Hand the same tool two independently generated frames of the same idea and you will get a morph.
|
|
198
|
+
|
|
199
|
+
## 7. Storyboard panel rules
|
|
200
|
+
|
|
201
|
+
A panel earns its place only if it does one of five jobs: implies a motion about to begin, shows a motion just completed, delivers a reveal, states a power relationship, or plants a clue. If you cannot name which one, the panel is a portrait and it will animate into a slideshow. Name the job in your shot notes; the video prompt then has something to continue.
|
|
202
|
+
|
|
203
|
+
Prompt-side techniques for making a still imply motion — each is a physical fact, not an adjective:
|
|
204
|
+
|
|
205
|
+
| Technique | Prompt fragment |
|
|
206
|
+
|---|---|
|
|
207
|
+
| Weight shift | `weight fully on the back foot, front heel lifted off the floor` |
|
|
208
|
+
| Mid-stride | `caught mid-stride, rear foot at toe-off, neither foot flat` |
|
|
209
|
+
| Garment lag | `coat hem swung 20° behind her direction of travel, scarf trailing` |
|
|
210
|
+
| Gaze off-frame | `looking at something just outside the right edge of frame, head not yet turned` |
|
|
211
|
+
| Object in flight | `the cup has left her fingers, 10cm above the table, not yet tipped` |
|
|
212
|
+
| Unstable contact | `the ladder's left foot lifted 3cm off the floor, tilting` |
|
|
213
|
+
| Interrupted reach | `his hand 5cm from the door handle, fingers already spread` |
|
|
214
|
+
| Residue of past motion | `the curtain still displaced, the door 15° open and swinging inward` |
|
|
215
|
+
|
|
216
|
+
Weak panel prompt: `a woman walking down a hotel hallway, cinematic, dramatic lighting`. Strong: `a woman mid-stride down a hotel hallway, rear foot at toe-off, coat hem swung behind her, gaze fixed on a doorway just outside the right frame edge; sole light from wall sconces every 3m, hard falloff between them`. The second one has a next frame implied in it; the first does not.
|
|
217
|
+
|
|
218
|
+
## 8. Aspect ratio and framing parameters
|
|
219
|
+
|
|
220
|
+
Generate native to the delivery ratio. Models condition on canvas shape: the same words at 9:16 produce a tighter body crop, more headroom compression, and different background scale than at 16:9. A frame composed for 16:9 has its horizon, headroom, and lead room placed for 16:9, and cropping destroys exactly those decisions. Ratio-as-meaning is owned by [cinematic-language.md](cinematic-language.md); this section is only about the parameter.
|
|
221
|
+
|
|
222
|
+
The arithmetic that people get wrong: a 9:16 crop taken from a 16:9 frame keeps only 31.6% of the frame width — call it the central third. Symmetrically, a 16:9 crop from a 9:16 frame keeps 31.6% of the height. In pixels, center-cropping a 1920x1080 still to 9:16 yields 607x1080, which then needs a 1.78x upscale to reach 1080x1920. That upscale lands on the face.
|
|
223
|
+
|
|
224
|
+
If you genuinely must deliver two ratios from one generation, do it deliberately: generate at the wider ratio, and put the safe zone in slot 8 of the prompt — `subject and their eyeline both inside the central third of the frame width; nothing story-critical outside it`. Then check the crop before generating video, not after. The better answer for most projects is two native generations sharing an identity string and a location plate: same character, same set, two compositions, both correctly framed. Also confirm your still resolution meets or exceeds what the target video tool ingests — feeding an upscaled still to a video model reproduces the upscaling artifacts in motion, where they shimmer.
|
|
225
|
+
|
|
226
|
+
## 9. Keyframe QC gate
|
|
227
|
+
|
|
228
|
+
Run this before spending any video credit on a still. This is the reasoned form, kept here for why each check exists. The form you actually emit to a user about to generate is the tick-box gate in [keyframe-prompt-template.md](../assets/keyframe-prompt-template.md), and clip-level and sequence-level gates are in [qc-checklist.md](../assets/qc-checklist.md) — do not re-derive either here, and where the two lists have drifted apart, the tick-box gate is the one that ships.
|
|
229
|
+
|
|
230
|
+
```markdown
|
|
231
|
+
Keyframe QC gate — 12 checks. Any FAIL means regenerate or edit the still, not the video prompt.
|
|
232
|
+
|
|
233
|
+
1. Identity string appears verbatim, and the character's unique landmark is visible and correct.
|
|
234
|
+
2. No emotion or attractiveness words in the identity slot; expression is described physically in the pose slot.
|
|
235
|
+
3. Every named garment and prop is present, correct in color, and in the correct state (buttoned, wet, torn).
|
|
236
|
+
4. The light source is named and its direction matches the location plate; shadows fall on the opposite side.
|
|
237
|
+
5. Light quality and ratio match the other approved keyframes in this scene.
|
|
238
|
+
6. Apparent perspective matches the stated focal length (no wide-angle nose on an 85mm close-up).
|
|
239
|
+
7. Eyeline and screen direction agree with the shot list; subject sits inside the delivery-ratio safe zone.
|
|
240
|
+
8. The frame performs one of the five panel jobs — name it: begin / completed / reveal / power / clue.
|
|
241
|
+
9. Anatomy sweep: finger count, pupils and eyelines, and hands in real contact with props, not through them.
|
|
242
|
+
10. Era sweep: no forbidden material, fixture, logo, or text anywhere in frame, including reflections.
|
|
243
|
+
11. Generated native to the delivery aspect ratio, at or above the video tool's ingest resolution — not cropped.
|
|
244
|
+
12. If this is a first/last pair: flip between the two frames; only the intended element differs.
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
Failures 4, 6, and 9 are the ones that survive into video and cannot be repaired there. Symptom-to-cause routing for anything that slips through is in [failure-modes.md](failure-modes.md); retry budgets and versioning in [production-workflow.md](production-workflow.md).
|
|
248
|
+
|
|
249
|
+
## 10. Before / after keyframe prompts
|
|
250
|
+
|
|
251
|
+
Pair 1 — identity that survives twenty shots.
|
|
252
|
+
|
|
253
|
+
```text
|
|
254
|
+
Before: close-up of a beautiful young woman looking worried in a dark room, cinematic, moody, 8K
|
|
255
|
+
After: SC02_SH07. Close-up, 85mm equivalent, eye level. A 26-year-old woman, broad cheekbones, round chin,
|
|
256
|
+
heavy-lidded grey eyes, a small mole below the right eye, dark brown hair pinned back with two
|
|
257
|
+
loose strands. Brow drawn together, jaw set, mouth closed. Grey wool cardigan, top button missing.
|
|
258
|
+
Single candle on the table camera-right, 30° below eye level; 8:1 lit side to shadow side, shadow
|
|
259
|
+
side nearly black with only the edge of the cheek catching light, no bounce card. Negative space
|
|
260
|
+
camera-left. 35mm photograph, fine grain. 16:9. No rendered text, no watermark.
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
Changed: the impression ("beautiful", "worried") became the face-only opening of an identity recipe, with a checkable landmark — the mole — plus a physically-described expression. The mood adjectives that were re-rolling the face are gone, and the light is a named source at a stated angle, on a rung of the ratio ladder, written in words as well as numbers.
|
|
264
|
+
|
|
265
|
+
Pair 2 — a portrait becomes a frame.
|
|
266
|
+
|
|
267
|
+
```text
|
|
268
|
+
Before: a man standing at the top of a staircase looking down, tense atmosphere
|
|
269
|
+
After: SC04_SH01. Wide shot, 28mm equivalent, low angle from three floors below, camera looking straight
|
|
270
|
+
up the stairwell. [IDENTITY STRING]. His weight is on the back foot, the front foot already
|
|
271
|
+
extended over the top tread with the heel raised, right hand still on the newel post but the
|
|
272
|
+
fingers loosening; head angled down over the rail, past the lens. Sole light is a landing window
|
|
273
|
+
above him, hard, raking down the well. He is on the upper-right third; the receding spiral of
|
|
274
|
+
rails fills the frame between him and camera. 16:9. No text, no watermark, no extra people.
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
Changed: "standing... looking down" is a resting pose with nowhere to go, so the clip holds it and calls that a shot. Weight on the back foot, a lifted heel, and a loosening grip are a descent that has already started; the model has somewhere to go.
|
|
278
|
+
|
|
279
|
+
Pair 3 — a last frame that is actually a pair.
|
|
280
|
+
|
|
281
|
+
```text
|
|
282
|
+
Before (written from scratch): the same woman now standing by the window, having got up from the chair,
|
|
283
|
+
same room, same style, cinematic continuity
|
|
284
|
+
After (edited from the approved first frame): Keep everything identical: same face, same grey cardigan
|
|
285
|
+
with the missing button, same room, same candle position and intensity, same framing, same grain.
|
|
286
|
+
Change only this: her head has turned 25° to camera-right and her chin lifted slightly. Do not
|
|
287
|
+
change the background, the composition, or the lighting.
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
Changed: two things at once. The move shrank from "crossed the room and changed pose" (two shots, not a pair) to a single head turn, and the frame is now derived from the approved file instead of re-rolled from noise — so nothing in the background can drift.
|