makepad/libs/flow/recipes/GAPS.md

70 lines
4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Recipe mapping gaps
Lane F18 closes the creator-template and advertised-domain gaps that can be
expressed as a finite flow graph. The shipped registry now contains every
linear/looped Asset UI pipeline shape and at least one template for every
domain advertised by `libs/ai/hub/registry.json`.
## Filled in F18
- Structure-guided image generation is represented by
`image-control.splash` (DA3 depth → FLUX depth control) and
`image-control-canny.splash` (a supplied image → FLUX Canny control).
- Video post-processing has separate intent-level templates:
`video-enhance.splash` uses the creator defaults (`upscale=2`,
`interpolate=2`, `flow_map=true`), while `video-tween.splash` asks only for
interpolation (`upscale=1`, `interpolate=2`, `flow_map=false`). Both route
through the real `enhance` domain; no fictitious tween domain was added.
- The creator's direct, expanded, keyframed, looped, edit, sprite, mesh, PBR,
splat, world, and playable-character pipeline variants now have templates.
Image stages use 512×512 and model-default steps, video stages use
640×352/39 frames/30 steps, music uses 180 seconds, and the quality-model
pins match the preset definitions.
- The previously uncovered advertised domains now have typed prototypes and
templates: `body` (`body-pose`), `segment` (`segment` and
`prompt-to-segment`), `stt` (`speech-to-text`), `beats` (`audio-beats`),
`stems` (`audio-stems`), and `notes` (`audio-notes`).
- Completed values use `Publish` whenever the asset-library type supports
them. Companion opaque values such as MIDI and a stem bundle remain typed
`Output` values because `Publish` deliberately does not accept `bytes`.
## Remaining language gap
The two Asset UI fan-out presets—`fleet images → choose → video` and
`expand → fleet images → choose → video`—remain the sole creator pipeline
shape without an exact template. They require a language-level `Map`/fan-out
operator plus a run-time choice gate over the generated candidates. A linear
template would hide the selection step and would not be parity, so the
closest reusable pieces remain `prompt-to-video-keyframe.splash` and
`expanded-prompt-to-video.splash` after a candidate has been selected.
## Intentional semantic adaptations
- There is no `image.enhance` kind. The creator's sprite-enhance pipeline is
an `edit` request pinned to `flux2-dev`, so `sprite-enhance.splash` uses
`ImageEdit` rather than inventing a routing domain.
- OCR is an advertised hub domain but not an Asset UI generation kind.
`ocr.splash` therefore keeps the inline `Gen{domain: "ocr"}` idiom and
carries the backend's HTML result as typed `text`.
- `text.expand` is a queued hub domain, while authored recipes intentionally
use `Llm` so the system instruction is visible and editable. This does not
expose the creator job's `target_domain`, `identity_anchor`, `style`, and
`variants` fields as a dedicated node.
- `annotate.asset` mutates an existing asset annotation record rather than
publishing a normal artifact. `annotate.splash` performs the value-producing
portion (vision plus strict JSON parsing); the store mutation remains an
application operation, not a hidden graph side effect.
## Parameter and post-processing boundaries
- The base `Image` prototype remains 1024×1024/8 steps for language
compatibility. Creator-parity templates explicitly select 512×512 and omit
`steps`, preserving the creator's model-default setting.
- `Upscale.factor=4` is translated to the hub request's `upscale` field, and
`Image.negative` is translated to `negative_prompt` by the executor.
- Paired image dimensions and video `(frames, steps)` choices are coupled UI
presets. A generic inspector must not turn them into a Cartesian product.
- Resize, thumbnail derivation, GLB inspection, media probing, catalog
dressing, provenance, and rights processing remain importer/store work.
Templates make generation and publication explicit without pretending those
application steps are hub domains.