# 21 调度与拆分
平面:执行
governed_by:D-002、D-003、D-010、D-029、D-047、D-055
用途:决定把一件事切成几段、谁在什么顺序上做、卡住时按什么条件停下并把它交给谁。
## 1. 最小职责与接口
- **它必须做到的**
- 把交付切成端到端、可独立验收的小切片。
- 用可复核的判据决定一个阶段是否有资格独立存在。
- 在复杂度阶梯上双向移动,并为每次移动留下理由与证据。
- 定义返工的方向、它必须携带的信息、以及重试耗尽后的去向。
- 定义三类停机条件与重试纪律,触发后转入证据驱动的排查。
- 规定拆分与并行的合法条件、各单元的写范围与汇合时的缺失报告。
- 声明一次运行的**起点与类型**:起点取值含人、计划、外部事件,起点声明含本次唤醒的去重与抑制判据(同一唤醒重复到达、与在跑的运行重复时如何分流);自动起点受第六条不变量约束(见[架构确定 §5.3](架构确定.md#invariants)),且其判定器强度与该运行的能力面匹配,口径同[31 守卫与权限边界](31-守卫与权限边界.md) §2 P5——只影响模型所见的只读路径可降级,改变外部状态的写路径必须关闭。类型取值与出口见[00 总览 §3](00-总览.md#default-scope)。
- **从别的部件拿什么**:从[10 意图与验收](10-意图与验收.md)拿验收条目与切片边界;从[20 状态工件](20-状态工件.md)拿当前阶段、阻塞与活性信号;从[30 验证与测试](30-验证与测试.md)拿三态裁定与失败所在层;从[33 评估与演进](33-评估与演进.md)拿"哪些步骤同输入多次运行结果一致"的观测;从[40 人的检查点与授权](40-人的检查点与授权.md)拿升级、降级与停机后的决定。
- **给别的部件什么**:给[20 状态工件](20-状态工件.md)阶段划分、返工去向与停机结论;给[25 执行者与模型](25-执行者与模型.md)子任务合同与拆分是否合法的结论;给[31 守卫与权限边界](31-守卫与权限边界.md)并行期的写范围声明与同步点清单;给[32 证据与追踪](32-证据与追踪.md)每次尝试改变了哪个输入变量。
- **它自己维护什么**:一次运行的起点声明、阶段定义与每个阶段的"存在理由"标签、返工与重试计数、停机条件与预算、拆分方案与同步点清单。
- **未决**:"停滞型条件的轮数"作为项目参数,不在本规范内取值。原"触发与入口"待定节已由 D-047 裁决删除,纪律并入第六条不变量。
## 2. 原则
- **P1 默认交付单位是端到端小切片。** 一个切片自己走到验收,不靠后期集成才暴露理解分歧;只修改切片所需范围。|防的失败:模块各自堆积、并行依赖缠绕、回滚粒度过大 |删除条件:运行类型限定——只对交付型运行成立,事实型运行的出口是事实而不是验收,没有可独立验收的切片(见[00 总览 §3](00-总览.md#default-scope));此外集成与回滚成本可忽略时可放宽
- **P2 一个阶段独立存在须同时满足四项判据。** 它有与相邻阶段不同的失败模式、失败后的回退目标不同、有单一责任主体、退出条件可观察。每个阶段标注它为验证、责任还是人类交接而存在;为交接而存在的阶段按运行数据定期复审。状态机不向上游需求规划延伸。|防的失败:阶段过多产生隐式分支与重复副作用;阶段过少让不同失败共用一条回边 |删除条件:写不出(责任结构型:阶段划分决定失败时回退到谁那里,四项判据里的"单一责任主体"就是这条边界本身)
- **P3 复杂度阶梯是双向的。** 升级须在代表性任务上证明净收益,升级到多单元结构还须满足:重复频次足以摊销结构成本;预期跨会话或需中途审批且已有可恢复状态;单元之间的边只在下游消费上游数据处存在;每个单元声明失败去向;同步点只在某一步必须看到全集时设置;且已有一个跑稳的单一执行单元作为前置。降级同样有判据:同输入多次运行结果一致的步骤转为确定性程序。一个不需要人在场就能拒绝坏输出的判定器必须先于自动触发器就位。|防的失败:为一次性任务付多份固定开销;跳过可靠的单任务直接上多任务自动化;确定性步骤长期由模型执行 |删除条件:起始档——升级到多单元结构的五项判据自 L2 起才有对象、"判定器先于自动触发器就位"自 L3 起才有对象(L0/L1 只有一个执行单元,形态见 §3);降级一侧(同输入多次运行结果一致的步骤转为确定性程序)对一切档成立,写不出(责任结构型:把确定的事继续交给模型是一次成本与错误率的转嫁)
- **P4 返工定向到出错环节,并把驳回原因作为该环节下一轮的必需输入。** 返工不是全链路重跑,也不是让人重新解释一遍;返工时须撤销已失效的下游任务;每个执行单元事先声明重试耗尽后的去向。|防的失败:无上限返工回环;新旧结果并行覆盖;图在不可见处卡死 |删除条件:写不出(责任结构型:"重试耗尽之后去哪"是把无解情形交回给人的出口,出口的指派只能由人事先做)
- **P5 三类停机条件并存,任一触发即转阻塞并升级。** 证据型:同一报错、同一假设、同一类修复重复出现且没有产生新日志、最小复现、范围缩小或排除项。停滞型:连续多轮无新发现或指标无提升,"新"相对全部已见项(含已被否决项)判定。上限型:轮次或预算耗尽。触发时附已尝试记录;三类条件都不限制有信息增益的系统排查。|防的失败:发散耗尽预算;反复硬试同一条不通的路径 |删除条件:证据型与停滞型可删于执行者能自行识别无信息增益的循环并主动停机、且可从轨迹审计(能力补偿类);上限型写不出(责任结构型:预算上限是人侧的成本约束,不由被约束的一方自己设定)
- **P6 重试前须改变至少一个输入变量并记录,预算按失败所在层分配。** 换执行者、改指令或补上下文本身不自动构成新路径。被验对象错回实施,验证设计错回设计,只有验证执行错允许原地重试;同层修复后复发即视为误诊,下一轮换层。止损触发后转入证据驱动排查:可证伪假设清单 → 可识别且可机械清除的临时观测 → 复现由人或可信环境执行 → 定位执行链最早偏离层。|防的失败:同假设无变化循环;修复施加在错误层反复复发;临时观测残留成第二套日志 |删除条件:执行者能自行诊断失败原因、自动改变策略且可从轨迹审计时,指令形态可删,审计保留
- **P7 阶段结果与交接使用同一份与执行者无关的结构化三态裁定。** 字段见[25 执行者与模型](25-执行者与模型.md) §2 P2,缺字段即记未定并拒收;上游只消费裁定,不解析自由文本;"未执行、证据缺失、无法核验"永不计入通过,也不折算为分数。|防的失败:未跑的检查被聚合成一个可放行的总分;下游从叙述里猜结论 |删除条件:写不出(责任结构型:上游只交裁定、下游只消费裁定是一条责任边界;把"从自由文本里解释结论"的责任推给下游即取消该边界)
- **P8 验证者分离是默认允许的拆分,其余拆分须举证。** 验证者只需要工件与验收标准,不需要生成过程,因此这一刀总是合法。其它按工作类型的拆分须证明:子任务相对独立、输入输出与完成条件清楚、上下文可真正隔离且隔离有收益、有独立验收、汇总者能核查来源与冲突、并行收益大于协调与合并成本。高度耦合的取舍、同一热点的竞争修改、边界不清、没有合并验收的场景不适合拆。|防的失败:作者在同一上下文里自审几乎必过;按职业名分身只增加协调成本 |删除条件:写不出(责任结构型:举证责任的分配——谁必须证明这一刀合理——不随模型能力变化)
- **P9 并行单元只写自身局部空间,总状态由收口阶段的单一执行者更新。** 每类工件只有一个可写角色,下游对上游工件的异议只能以阻塞项回流;共享入口与全局契约、存储变更不进入并行期。|防的失败:多单元同改总状态或入口互相覆盖;下游顺手改写验收标准 |删除条件:载体提供事务化多写者合并时,局部写限制可放宽,单一可写角色不变
- **P10 汇合必须显式报告预期、实收与缺失。** 缺失的分支及其原因出现在汇合产物里;不允许静默少一路,也不允许用已收到的部分冒充全集。|防的失败:扇入静默吞掉失败分支 |删除条件:起始档——汇合自并行单元出现时(L2)才有对象,L0/L1 无扇入(形态见 §3);作用域内写不出(责任结构型:用已收到的部分冒充全集是一次范围主张的越界)
## 3. 从 L0 到 L3
| 档 | 形态 |
|---|---|
| L0 一人一工具 | 一个人按几步固定流程走;阶段判据用来决定"这一步值不值得单列",停机条件写在纸上。 |
| L1 一人多会话 | 一次会话一个切片;返工定向到出错的那一段,重试计数与已见项跨会话保留。 |
| L2 团队 | 阶段有具名责任主体与声明的失败去向;验证者与生成者分离;并行单元各写各的局部空间,收口由单一执行者合并。 |
| L3 无人值守 | 停机条件与重试预算是运行前提;判定器先于自动触发器就位;汇合的缺失报告与停机升级是自动运行能被允许的条件。 |
## 4. 追溯
本章的写作期内容——它解决什么问题、源章节与主题综合的映射、每条原则的证据强度——在[追溯账本](追溯账本.md#ch-21),效力为零。