用途:在 relay-ready 与 relay-plan 已产出叶子工件后,进行多叶子编排。它只扇出已分解好的叶子契约,不负责拆分原始或含糊请求;需先经 relay-ready 处理。
输入:通过 --leaves-file 传入含非空 leaves[] 的 JSON。每个叶子需含 leaf_ref、issue_number、branch、prompt_file、rubric_file、done_criteria_file、ownership(sprint、track、component)。所有叶子必须带同一归一化 owner,track 须等于 sprint 去掉 .md 后的文件名;入场前路径、track、component 须与可信 schema-v2 sprint-state.js --track 结果完全一致,且路径指向 backlog/sprints/ 下存在的常规文件。可选字段 executor、model、network_access、timeout、reasoning、copy 会透传给 dispatch.js。
主要能力:按叶子调用 relay-dispatch/scripts/dispatch.js,传入 --fleet-id 与 --ownership-json;子任务匹配需不可变父 id、分支、Done Criteria 哈希、ownership 摘要全一致。--review 可驱动待评审子任务并串行完成待合并子任务;子任务仍是自身生命周期的唯一所有者。--status 为只读聚合状态,从不可变 cohort 字节、子记录和规范检查派生,不写文件、不改记录。
使用方式:主命令 node "${RELAY_SKILL_ROOT:-skills}/relay-fleet/scripts/relay-fleet.js" --repo . --fleet-id fleet-481 --leaves-file /tmp/fleet-481-leaves.json --parallel 4。只读状态加 --status。干跑加 --dry-run --json,会校验叶子文件并对每叶子调用 dispatch.js --dry-run,不写 cohort。cohort 以独占方式写入;完全相同的归一化叶子重复执行幂等,任何字节差异则失败关闭。
限制:没有守护进程,仅当 relay-fleet 运行时舰队才推进;暂停即杀进程,恢复用相同 --fleet-id(及可行时相同 --leaves-file)重跑,会重新派生动作并跳过等待中子任务。舰队仅当所有派生子任务合并后才关闭;escalated、合并阻塞、漂移、重复匹配、孤儿父任务需人工处理。不支持依赖调度:依赖工作应在先决舰队终止后于下一波提交。叶子选择不支持的 executor 或不可用的模型提供者时,应暂停该叶子并纠正显式输入再恢复。缺失、畸形、矛盾、未解析、过期或混轨 ownership 会在 cohort 或子调度前被拒。设计理由、非目标与路线图见 references/design.md;dev-backlog 冲刺批处理见 references/sprint-to-leaves.md;长期舰队 /goal 持久化见 references/goal-persistence.md。缺失事实暂未提供。