用途:maestro-merge 负责把会话(session)工作树中的分支成果合并回主分支(main)。它属于 maestro-flow 工作流中的收尾环节,强调在合并过程中保护主分支状态完整。
主要能力:命令提供 --session、--force、--dry-run、--no-cleanup、--continue 等标志;合并序列、制品同步细节与冲突处理定义在工作流文件 merge.md 中。合并被划分为三个强制且阻塞性的关卡:GATE 1 合并前健康检查与变基,要求注册表健康检查完成、工作树变基到最新 main、工作树 state.json 架构版本与主分支一致;GATE 2 要求 Git 合并无冲突完成;GATE 3 要求所有 Run 制品同步到主分支 sessions/{session_id}/runs/、制品注册表完成合并、工作树被清理或带 --no-cleanup。任何关卡未通过都会阻止后续步骤,避免主分支出现不完整状态。
使用方式:通常在主工作树而非工作树内部执行,需通过 --session 指定会话 ID。--dry-run 只执行 GATE 1 并显示合并预览(将变更的文件、制品同步计划),随后在变基/合并前退出;--force 仅跳过对未完成阶段制品的用户确认,不影响冲突解决和变基;--continue 用于合并出现冲突后继续。合并成功后可通过 request_user_input 询问是否用 maestro-spec add 记录经验教训。
适用场景:适用于以工作树方式隔离开发、完成后需要把会话成果安全并回主分支的流程,特别是需要制品同步与注册表一致的场景。
限制与错误:在 worktree 内运行会报 E001;没有工作树注册表报 E002;--continue 但无合并状态报 E003;未提供会话 ID 报 E004。W003 提示需先在工作树内解决冲突;W004 提示架构版本不匹配,建议先在工作树运行 maestro-update。--force 不能跳过冲突解决或变基。其余细节资料未提供。