Archived
判据 ⑥ 解锁:容忍分支推得动汇合,汇合不再等一个永不到来的网关
三处修: ① `joinReady` 把**网关直连汇合的直通道**也算作一票要等的分支。 网关不是责任单元、永远不会有实例,于是汇合永远等不齐,整条流卡死。 改为:来源是网关的入边不参与等待 —— 分叉一发生它就算过了。 (统一报价图里这条直通道就是 TYPE-A 快路。)加了回归守卫测试。 ② 容忍(tolerate)只把实例标成「已消化」就收手,不往下推 —— `joinReady` 认 tolerated,可没人再去问一次汇合够不够齐。改为标完即续推。 ③ 蒸馏钩子失败会把已落定的终态掀翻(治理台终止返回 500,任务卡在中间态)。 蒸馏是进化管线的入口、不是终态的一部分:失败就失败,终态照落。 失败也不再往任务记忆里追加 —— 此刻记忆已封卷,那个守卫拒得对。 结果:A1 released → G2 分叉 → A3 / A2 两个 loop 起在正确工位 → 按声明容忍收束 → **汇合回齐 → A4 成本定价起到冯兵工位**。 gates: tsc / eslint / depcruise / 397 测试 全绿 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KeDBx2PHLavbURXB8LJJ7m
This commit is contained in:
@@ -266,12 +266,23 @@ export function createTaskService(deps: TaskServiceDeps): TaskService {
|
||||
|
||||
// 终态封卷 → 归档 → 蒸馏钩子产出活动记忆候选条目
|
||||
await deps.memory.seal(taskId);
|
||||
await deps.memory.distill({
|
||||
taskId,
|
||||
activityId: task.activityId,
|
||||
trigger: 'terminal',
|
||||
prompt: `任务「${task.title}」以 ${terminal} 收场(${reason})。归纳可复用的事实、模式、裁决与例外。`,
|
||||
});
|
||||
try {
|
||||
await deps.memory.distill({
|
||||
taskId,
|
||||
activityId: task.activityId,
|
||||
trigger: 'terminal',
|
||||
prompt: `任务「${task.title}」以 ${terminal} 收场(${reason})。归纳可复用的事实、模式、裁决与例外。`,
|
||||
});
|
||||
} catch {
|
||||
/*
|
||||
* 蒸馏是**进化管线**的入口,不是终态的一部分:它产出的是待回放待放行的候选增量。
|
||||
* 它失败(模型不可达等)绝不能把已经落定的终态掀翻 —— 那会让任务卡在
|
||||
* 「实际已终、状态却没落」的中间态,治理台也看不到。
|
||||
*
|
||||
* 也不能把失败记进任务记忆:此刻记忆**已封卷**,追加会被只追加不改的守卫拒掉
|
||||
* (那正是它该做的)。蒸馏的成败属于进化管线的账,不属于这一单的过程留痕。
|
||||
*/
|
||||
}
|
||||
|
||||
return updated;
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user