Shipped workflow roster and slot contracts #17
Labels
No labels
bug
duplicate
enhancement
help wanted
invalid
needs-info
needs-triage
question
ready-for-agent
ready-for-human
wayfinder:grilling
wayfinder:map
wayfinder:prototype
wayfinder:research
wayfinder:task
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
crowmaki/ai-studio#17
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Part of #1
Blocked by: #13, #14, #15, #9, #20
Question
Which ComfyUI workflows does the app ship (reference t2i, board t2i, H3 draft, H3 Promotion, H3 single-pass final…)? What are each one's named inputs and outputs, model/LoRA selection points and versioning, and what does preflight check for each?
Input from Rust core vs TypeScript frontend split: Renditions are played in WebView2, which only plays H.264/AAC (no ProRes). Either the shipped workflows encode playable Renditions, or the bundled LGPL ffmpeg sidecar makes proxies. ffmpeg is never used to encode Renditions, which stays in ComfyUI.
From "Board paint tool and Notation" (#6): reducing t2i output to 3 tones is opt-in, so the board t2i workflow's output is used as generated. Its prompting therefore has to keep Boards rough and non-photoreal by itself. Boards are sent at native canvas size (short side 180 px, Project aspect ratio), with no upscaling.
From "Verify latent round trip and refine-pass cost" (#20):
LTXVSeparateAVLatent→ 2×SaveLatent. Promotion = 2×LoadLatent "<subfolder>/<file> [output]"→ upscaler → concat → 2nd pass, with conditioning rebuilt. Read the saved file names from historyoutputs[<node>].latents.SetLatentNoiseMaskevery time, not only for forced audio.From "Reference slot budget" (#10), slot contracts: at most 9 image + 3 audio slots are used, and video slots are unused in the slice. Derived inputs the job builder must produce: Atlases (already specified), a packed Prop image (the Prop Lock snapshot's Tiles side by side in uniform cells on mid-grey, identified by content), a tiled Board (or one slot per Panel), and a joined Voice reference (a Character's snapshot clips concatenated with short gaps into one audio slot).
Resolution
h3.draft: first pass at draft size. Writes an H.264 MP4, a lossless WAV and the split AV latent (LTXVSeparateAVLatent→ 2×SaveLatent).h3.promotion: 2×LoadLatent … [output]→ latent upscaler 3D → concat → refine pass at final size, with the conditioning rebuilt.h3.final(Single-pass final): generates directly at final size in one pass, with no draft, no upscaler and no refine. It looks different from (and usually better than) a promoted draft with the same seed. It does not save a latent.image.t2i: reference Tiles, Wardrobe mannequins, location angles, Prop Tiles and Keyframes.image.board: Boards. It is a separate workflow with its own fixed style prompt, so that it can drift apart fromimage.t2i./api/models/*:ResolutionSelectorin shipped graphs. Promotion and single-pass finals use the same final size.minimax_h3_video_vae_int8_convrot, audio fp32), upscaler weights, sampler and schedulers, refine denoise, BlockSparseAttention and the low-VRAM settings.prompt,seed,width,height,length, model files…) asnode_id.input.LoadImage/LoadAudioper filled slot and wires each into theMiniMaxH3ReferenceToVideoAutogrow ports in slot order.LoraLoaderModelOnlynodes at a named model point.jobrow records the id, version and content hash. These feed the Workflow Stale reason, which stays informational only.h3.promotion. The saved latent is the contract between the two jobs./system_stats)..movmaster written by the workflow, plus an H.264 proxy made by the LGPL ffmpeg sidecar (NVENC/OpenH264) for in-app playback.SaveImage, pulled through/viewand stored as blobs.h3.promotionalways freezes the draft's audio with a 0SetLatentNoiseMask, with no toggle. A promoted final's audio equals its draft's, so Line marks stay valid.VAEEncodeAudio→ 0 mask) and as thefully_copyaudio slot.Glossary: added Single-pass final and Generation profile, and extended Promotion (frozen audio, re-promotion in place).
Out of scope: SeedVR2 and NVIDIA upscaling as later drop-in finishing plugins.