85453da49f
regression / regression-shards (style-16-prod style-9-prod style-17-prod iframe-render-compat variables-prod mp4-h265-sdr, shard-4) (push) Has been cancelled
regression / regression-shards (style-4-prod style-11-prod style-2-prod animejs-adapter typegpu-adapter parallel-capture-regression, shard-5) (push) Has been cancelled
regression / regression-shards (style-7-prod style-8-prod style-10-prod css-spinner-render-compat webm-transparency mp4-h264-sdr webm-vp9, shard-3) (push) Has been cancelled
regression / regression-shards (sub-composition-video style-18-prod raf-ball-render-compat font-variant-numeric sub-comp-t0 sub-comp-id-selector, shard-7) (push) Has been cancelled
Windows render verification / Detect changes (push) Has been cancelled
Windows render verification / Preflight (lint + format) (push) Has been cancelled
Windows render verification / Render on windows-latest (push) Has been cancelled
Windows render verification / Tests on windows-latest (push) Has been cancelled
CI / Detect changes (push) Has been cancelled
CI / Build (push) Has been cancelled
CI / Lint (push) Has been cancelled
CI / Fallow audit (push) Has been cancelled
CI / Format (push) Has been cancelled
CI / Typecheck (push) Has been cancelled
CI / Test (push) Has been cancelled
CI / Producer: integration tests (push) Has been cancelled
CI / Producer: unit tests (push) Has been cancelled
CI / File size check (push) Has been cancelled
CI / Test: skills (push) Has been cancelled
CI / Skills: manifest in sync (push) Has been cancelled
CI / CLI: npx shim (macos-latest) (push) Has been cancelled
CI / CLI: npx shim (ubuntu-latest) (push) Has been cancelled
CI / CLI: npx shim (windows-latest) (push) Has been cancelled
CI / SDK: unit + contract + smoke (push) Has been cancelled
CI / Test: runtime contract (push) Has been cancelled
CI / Studio: load smoke (push) Has been cancelled
CI / Smoke: global install (push) Has been cancelled
CI / CLI smoke (required) (push) Has been cancelled
CI / Semantic PR title (push) Has been cancelled
Player perf / Detect changes (push) Has been cancelled
Player perf / Preflight (lint + format) (push) Has been cancelled
Player perf / player-perf (push) Has been cancelled
Player perf / Perf: drift (push) Has been cancelled
Player perf / Perf: fps (push) Has been cancelled
Player perf / Perf: parity (push) Has been cancelled
Player perf / Perf: scrub (push) Has been cancelled
Player perf / Perf: load (push) Has been cancelled
preview-regression / Detect changes (push) Has been cancelled
preview-regression / Preflight (lint + format) (push) Has been cancelled
preview-regression / Preview parity (push) Has been cancelled
preview-regression / preview-regression (push) Has been cancelled
regression / regression (push) Has been cancelled
regression / Detect changes (push) Has been cancelled
regression / Preflight (lint + format) (push) Has been cancelled
regression / regression-shards (hdr-regression style-5-prod style-3-prod mov-prores, shard-1) (push) Has been cancelled
regression / regression-shards (overlay-montage-prod style-12-prod chat missing-host-comp-id png-sequence portrait-edge-bleed, shard-6) (push) Has been cancelled
regression / regression-shards (style-13-prod style-6-prod vignelli-stacking gsap-letters-render-compat audio-mux-parity, shard-8) (push) Has been cancelled
regression / regression-shards (style-15-prod hdr-hlg-regression style-1-prod many-cuts vfr-screen-recording render-symlinked-assets, shard-2) (push) Has been cancelled
CodeQL / Analyze (actions) (push) Has been cancelled
CodeQL / Analyze (javascript-typescript) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Docs / Validate docs (push) Has been cancelled
Sync skills to ClawHub / Publish changed skills (push) Has been cancelled
7.9 KiB
7.9 KiB
Subagent dispatch — harness adapter
The video workflows (product-launch-video / faceless-explainer / pr-to-video / motion-graphics / general-video) describe subagent dispatch in harness-neutral verbs. This file maps those verbs to the primitives of whatever agent harness you are running on. Read it once per run, before the first dispatch; everything else in the workflows (dispatch packets, file artifacts, exit-code gates, Resume tables) is harness-independent and needs no translation.
The contract (identical on every harness)
- DISPATCH(role_file, dispatch_context) — start one child agent whose prompt is the full contents of the named
agents/<role>.mdfile followed by the## Dispatch contextblock from the workflow, copied verbatim (never digested or paraphrased). Every harness below accepts arbitrary task text, so this works everywhere; never rely on the child seeing your conversation, memory, or skills — the prompt and the files on disk are its entire world. - Parallel fan-out — when a step says "start N workers in parallel", the workers are mutually independent (no ordering, no shared state beyond the filesystem). Run as many concurrently as your harness allows.
- WAIT — a step's completion criterion is always the expected artifact existing on disk (e.g.
compositions/<scene-id>.html), never the harness's completion notification (some harnesses deliver results best-effort). After waiting, verify the artifacts; a missing artifact means that child failed — re-dispatch it once with the same prompt before surfacing an error.
Concurrency cap → batching rule (cap never changes scope)
A harness concurrency limit reduces parallelism, not work: every scene still gets built, one scene per dispatch, with the available slots chewing through the full list.
- Harness queues excess children internally (Claude Code; Hermes
delegate_taskbeyondmax_concurrent_children) → submit all N at once and let the queue drain. - Harness hard-caps active children (e.g. OpenClaw
maxChildrenPerAgent) → dispatch in waves of the cap size: startcapworkers, wait for their artifacts, start the next wave, until all N scenes exist. Example: 9 scenes on a cap-3 harness = 3 waves of 3 — never drop scenes, never merge scenes into one worker to fit the cap.
Primitive map
| Verb in the workflows | Claude Code | Codex CLI | OpenClaw | Hermes Agent |
|---|---|---|---|---|
| DISPATCH | Agent tool, subagent_type: "general-purpose" |
spawn_agent (built-in worker role; prompt carries the role file) |
sessions_spawn (role file rides in task; child only auto-loads AGENTS.md/TOOLS.md) |
delegate_task — put role file + context into each task's context (child system prompt is not customizable) |
| parallel fan-out | multiple Agent calls in one message, each run_in_background: true |
multiple spawn_agent calls (async by design) or spawn_agents_on_csv for uniform batches |
repeated sessions_spawn (always non-blocking) |
one delegate_task(tasks=[...]) batch call |
| WAIT | background-task completion notifications arrive automatically | wait_agent with all child IDs |
sessions_yield (never poll session lists) |
delegate_task returns when all tasks finish (blocking the turn is normal) |
| default concurrency | min(16, cores − 2), excess queues | 6 (agents.max_threads) |
5 active per session, 8 global | 3 (delegation.max_concurrent_children) |
| re-dispatch after a gate failure | new Agent call, same prompt + the error/## Repair context |
new spawn_agent, same prompt + the error |
new sessions_spawn, same task + the error |
new delegate_task, same context + the error |
Harness-specific notes:
- Codex: children inherit the parent cwd and cannot change it — exactly what these pipelines need (shared
PROJECT_DIR). Prefer prompt-carried roles over.codex/agents/*.tomlregistration; the workflows already deliver roles in the prompt. Codex policy-gates spawning on the user explicitly requesting delegation — a skill instruction alone does not satisfy it, and you will be tempted to skip the tool without even trying. Do not silently degrade: on Codex, if the user has not granted delegation this session, ask one line — "OK to run this workflow's workers as parallel subagents?" — folded into the workflow's first existing user pause (e.g. the API-key question) so the run pauses only once; at the latest, before the first dispatch step. An affirmative — or a standing grant in the workspaceAGENTS.mdor the kickoff prompt — unlocks native dispatch for the whole session. Only without a grant: prefer ladder rung 1 below (headlesscodex execchildren) for the scene fan-out; inline serial is the last resort. - OpenClaw: result announcement is best-effort (lost on gateway restart) — the artifact-on-disk WAIT rule above is the source of truth, not the announce message.
- Hermes: children get a fresh conversation and only see what you put in
context, and only the final summary returns — both already match the workflows' design (dispatch packets carry everything; results land on disk). Requires a local execution backend (the pipelines exchange data throughPROJECT_DIRand packet files on the shared filesystem; Docker/remote backends break that). - Any other harness, or subagents unavailable/disabled — degrade down this ladder:
- Headless CLI children: write each child prompt to a file, start the CLI per worker as a background shell process (redirect stdin from /dev/null, output to a log), then collect artifacts from disk.
- Inline serial execution: do each role yourself, one at a time — read the role file, follow it with the dispatch context as if you were the child, finish, then return to the runbook. Load only one role's resources at a time (a scene's role file + its packet), and still run every per-role self-check before moving on.
Vocabulary mapping (older phrasing you may meet in agent prompts)
- "in the same message" /
run_in_background: true— Claude Code idioms for "concurrently / as a background child"; apply your harness's equivalent from the table. - "Skill
X" / "loaded with the Skill tool" — load skill X; on harnesses without a skill-loading tool, read<skills-root>/X/SKILL.mddirectly (the skills root is the directory containing this skill family; derive it fromSKILL_DIRin your dispatch context). Read/Write/Edit/Bash— capability names (read file / write file / edit in place / run shell); map to your harness's tools.