Author a cinematic recipe pack
Slopcamera's extension surface is declarative: coding agents extend behavior by
authoring bounded JSON documents, never by registering code. The operation
registry is closed, and the cinematic-world workflow composes only registered
operations. A recipe pack is the complete input contract for that loop.
Documents an agent authors
- Scene (
slopcamera.spatial-scene, schemaVersion 1) — the admitted world. Usually already admitted throughslopcamera scenecommands; the pack binds it by digest, it is never embedded twice. - Direction (
slopcamera.spatial-direction, schemaVersion 1) — semantic beats, actions, camera coverage, and look intents.projectDigestmust equal the scene's canonical SHA-256. Character and subject references are semantic ids (hero), which compile againstentity_hero-style scene entities. - Recipe pack (
slopcamera.spatial-recipe-pack, schemaVersion 1) — the inert plan document:
json{ "kind": "slopcamera.spatial-recipe-pack", "schemaVersion": 1, "packId": "recipe_<slug>", "sceneSha256": "<canonical scene sha-256>", "direction": { "<the direction document>" }, "cameraId": "camera_main", "axes": ["camera", "lighting"], "previews": [{ "name": "reel", "request": { "cameraId": "camera_main", "mode": { "kind": "beauty" }, "selection": { "kind": "frame", "timeUs": 0 } } }], "effects": { "renderPlan": { "kind": "slopcamera.spatial-render-plan", "schemaVersion": 1, "quality": { "outputBytes": 8000000, "particleCount": 0, "pixelBudget": 2073600, "simulationSteps": 0, "texturePixelBudget": 2073600, "tier": "preview" } }, "particleSystems": [], "simulationBakes": [] }, "temporalAudit": { "timesUs": [0, 2000000, 4000000] } }
Boundaries the pack enforces
axes— 1 to 6 unique values fromperformance | camera | lighting | materials | effects | sequence.previews— at most 4 named render requests; eachrequestis revalidated against the spatial render-request schema at workflow admission.effects— optional; when present it requiresrenderPlan(a declarativeslopcamera.spatial-render-plandocument with a quality tier and optional post-process stack) plus boundedparticleSystems/simulationBakes. Each preview render first plans an integrity-bound effects document (scene.effects.plan) and renders with it.temporalAudit— optional; requirescameraId;timesUsbounds to 64 samples.packId—recipe_prefix, at most 64 slug characters.
Invoking the workflow
The workflow input is { "pack": <pack>, "scene": <scene>, "source": { "path": "<repo-relative scene path>" } }.
pack.sceneSha256 must equal the canonical scene digest, so compute it first:
shslopcamera scene inspect <scene.json> --json # read sceneSha256
Plan is effect-free — it compiles the graph and reports requirements only:
shslopcamera workflows plan cinematic-world --input input.json --json
Run executes the graph: inspection, direction check, compilation, one gallery plan per axis, per-preview effects binding and render, and the temporal audit.
shslopcamera workflows run cinematic-world --input input.json --json
What the workflow never does
- It never selects or promotes a candidate.
spatial.project.select-candidateanditeration.selectare separate explicit operations a caller invokes after reviewing the plan outputs. - Compiled direction stays
verified: false; it is a proposal document, not applied state. - Planning and graph compilation execute no operations, read no credentials, contact no providers, and mutate no project state.


