Wayfinder: AI Studio end-to-end slice spec #1
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#1
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?
Destination
A PRD issue on Forgejo, split into build issues, for a thin end-to-end slice: OSF script → entities → locked references → atlases → setups/shots with boards and keyframes → takes (drafts, promotion, single-pass final) → animatic → Resolve FCPXML edit package. Source plan:
scratch/scratch-plan.md(local, gitignored).Notes
CONTEXT.mdfirst and use its terms (Take, Rendition, Promotion, Reference set, Tile, Lock snapshot, Look, Wardrobe item, Preservation, Atlas, Board, Keyframe, Performance, Lighting…). ADRs indocs/adr/.grilling+domain-modeling; prototypes callprototype; research callsresearch.scratch/minimaxH3SEEDHUNTERLatent_v25.jsonis a technique reference, not a runtime dependency..studio= SQLite project file, with Renditions in a sibling media folder (ADR-0001).urn:drafter:1dialect; scene headings carryd:id;<lists>are ignored). Scenes and lines get stable IDs.Decisions so far
/api/promptwith our own prompt_id; a 200 with node_errors counts as a failure. The app must save results right away because ComfyUI history is in-memory only. Preflight uses/api/object_info, and pickers use/api/models/*. Notes: branchresearch/comfyui-api.research/finishing-pass.LTXVSeparateAVLatent, use twoSaveLatentnodes in the draft job, and twoLoadLatentnodes in the Promotion job, which then upscales and re-concats. Saving the joint latent directly fails because it is a NestedTensor. Files are about 14–41 MB at 768p. The Promotion job must rebuild conditioning and re-apply the audio noise mask. Not yet checked by running it in ComfyUI. Notes: branchresearch/h3-latent-reuse.12A-3.movfile names. Circled status and notes go through a metadata CSV into Resolve's Good Take, Comments and Scene/Shot/Take fields. The OTIO FCPXML adapter is not viable, but native.otiois a candidate. Not yet tested in a real Resolve. Notes: branchresearch/resolve-fcpxml.d:id. Shots cover whole Lines only. Characters come from cues only and can be merged. Cue extensions are stored on the Line, and SUBTITLE Lines get hand-entered spoken language and text. Headings split into Location (INT and EXT kept separate, auto-grouped into Location folders) and a slug that maps to Lighting through an editable table. Dual dialogue gets a shared simultaneous marker. Scene numbers are frozen at import, and omitted Scenes stay as placeholders. Import is lenient and ends with a summary of warnings.studio-corecrate (no Tauri) owns the domain, SQLite, worker, ComfyUI, ffmpeg (an LGPL sidecar), all derived pixels and export, with a thinsrc-tauriadapter. Svelte is a view:taurpccommands with adapter DTOs, coarse invalidation events, and Channels for job progress. Onestudio:scheme serves blobs and Renditions by id. Undo is an in-memory Rust command log for authored edits only. One Project per process. ADR-0003.prototype/crop-sheet.prototype/board-paint.prototype/dailies.research/h3-latent-reuse.Start TC/End TC(timecode matching is on by default); UTF-8 is fine. Circled status goes in theTagcolumn (1= Good Take,2= Rejected), not the free-textGood Takecolumn. Native.otiokeeps marker names and colours. Test kit: localscratch/resolve-test/.<Subject N>and Props<Prop N>, both built from structured fields with no names; the Location is<Environment>plus a lighting note; slots are<Picture N>/<Audio N>, numbered after the budget. Preservation goes in retention_analysis (fully/partially_preserved, attribute_transfer for Wardrobe items, weak_reference for the Board, Keyframes with timestamps, Performance fully_copy, which drops Voice references). The action text carries dialogue chips in script order, with parentheticals as inline tags. Notation becomes plain sentences, and the storyboard is never named. The soundscape is the Location's Ambience plus a Scene addition; music is always N/A. A Shot can hold a hand-edited prompt override, with a quiet stale marker and reconcile on demand.take_inputFK rows, the exact job as a blob, andtake_linkedges for the chain. Ajobtable holds one row per ComfyUI submission, and the media folder is ID-named. Rows a Take consumed are soft-deleted (ADR-0004). Aspect ratio can change, with per-Shot overrides; Panels and Keyframes keep their pixels and are barred at send time. Keyframes can be taken from a Take's frame (in the slice). Performances are versioned, and WAL is used only while the file is open.h3.draft(an MP4 plus a saved latent),h3.promotion(upscale + refine, with the draft's audio always frozen),h3.final(a Single-pass final generated directly at final size), andimage.t2iandimage.board(both Qwen-Image 2.1). Each is a JSON template with a manifest, and Rust splices in the slot loaders and the LoRA chain. The Generation profile picks the model and encoder files, LoRAs, a Distilled/Full speed mode, and the draft/final short sides (768/1120). Versions are hand-bumped integers, and Promotion always uses the current one. Preflight runs per workflow, and jobs for a Not-ready workflow wait. Finals are a ProRes master plus an H.264 proxy, and every H3 job writes a WAV. A Performance is both forced into the latent and sent as a slot. Lengths round up to 5 + 17k frames. Re-promotion uses a new refine seed and replaces the final in place..movper Take that isn't NG (optionally circled only): a hard-linked ProRes master, or else the draft remuxed with PCM. Clips carry TC01:00:00:00, and segments are named12B_1-3. Timelines are per Scene plus the whole film, as FCPXML (no markers) and.otio(markers), with burned-in captions and a.srt. Metadata goes intakes.csv(Tag=1for circled) and provenance inmanifest.json. Dropped clips move to_Removed/. The proxy uses NVENC, falling back to OpenH264._Removed/folders. Suggestions only select items. Compact is a manual VACUUM. Each Rendition keeps a poster frame, so purged Takes still show.Not yet specified
Nothing at the moment.
Out of scope
Beyond the slice; returns only as a fresh effort:
[Shot 2]blocks, intercuts): Shots stay aligned with real-world shots; intercuts are a separate effort. From Prompt composer phrasing.Tickets
Destination reached: the spec for the end-to-end slice is #24 (#24), labelled ready-for-agent. It combines all 22 closed child tickets, CONTEXT.md and ADRs 0001–0005. The next step is splitting it into build issues.