Mastra 胶合层:FlowRuntime 的第二实现 —— run ↔ 实例,发号权留在主工程
编译器只管推图,胶合层管一单一单的账(createMastraRuntime): - **发号权在主工程**:实例号 nextInstanceNumber 算、sys.node_instance 落笔; Mastra 不发实例号也不发任务号(spike 实测) - **run ↔ 实例**:runId = <workflowId>#<seq>,重开 = 新 run(seq+1),旧 run 冻结; 当前 run 的入口记在 vars.__runEntry —— 重开后从回边目标那份变体起步 - **迟到 / 重复回调不甩给 Mastra**:先在实例表定位、确认是当前 open 的那个, 不是就发 stale-callback 丢弃(spike 实测:错投的 resume 会打坏 run, 嵌套下甚至不可恢复) - **失败走向不进 Mastra**:改道/升审批/容忍都当「从目标节点重新入场」, 起一个以它为入口的新 run —— 绕开 .parallel() 那套「任一失败即整体失败」 - **状态仍是聚合投影**:refreshState 读 sys.node_instance,不读 Mastra 快照 (run 只有 running/suspended/success/failed,没有「收敛未到终点=abnormal」) - MastraRunner 是 Mastra 侧的最小口子(startRun/resumeRun),换版本只改它 四闸过。**尚欠**:MastraRunner 的真实现(Mastra 实例 + PostgresStore 挂 mastra schema)与接线开关 —— 编译器与胶合层都有单测但没在真库上跑过整条流, 转正前自持实现仍是唯一在跑的路径;已如实记进 debt M5-1。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KeDBx2PHLavbURXB8LJJ7m
This commit is contained in:
+11
-6
@@ -35,8 +35,8 @@ ADR-011 的「绑定先于策略」随岗位一起退场 —— 工作组快照
|
||||
|---|---|---|
|
||||
| 0 | loop 三修(提交放行发验收卡 / 事件只记不跑 / 轨迹喂回叙事面) | ✅ 已落 |
|
||||
| 1 | 抽 `FlowRuntime` 端口:执行面成可替换切面,usecase 成薄壳 | ✅ 已落(八例 E2E 为等价性护栏) |
|
||||
| 2 | reopen 回边 spike:`.dowhile` 子图 vs 外部胶合新 run | 进行中(`spike/mastra-reopen/`) |
|
||||
| 3 | Mastra 编译器 = `FlowRuntime` 第二实现 | 待 spike 结论 |
|
||||
| 2 | reopen 回边 spike:`.dowhile` 子图 vs 外部胶合新 run | ✅ 已定案:**路线 B**(`spike/mastra-reopen/FINDINGS.md`) |
|
||||
| 3 | Mastra 编译器 = `FlowRuntime` 第二实现 | ✅ 编译器 + 胶合层已落(路线 B);**尚欠 `MastraRunner` 的真实现与接线开关** —— 见下 |
|
||||
| 4 | Agent 开环:Mastra `Agent` + 工具总线 | ✅ 已落(`JCAI_AGENT_OPEN_LOOP=1` 开启,缺省仍单拍) |
|
||||
|
||||
**解耦本身已达成**(不依赖阶段 3):编排层对活动只有两个触点(`TaskGateway.start`
|
||||
@@ -44,10 +44,15 @@ ADR-011 的「绑定先于策略」随岗位一起退场 —— 工作组快照
|
||||
`new-package-flow.it.test.ts`:从零建一条新流(建包 → 链接已装载的活动 →
|
||||
双判据激活 → 起单 → 走完),全程没碰活动一行代码。
|
||||
|
||||
阶段 3 的已知语义冲突(编译器必须绕,详见 process/CONTRACT.md):
|
||||
回边 reopen 无原语、`.parallel()` 任一失败即整体失败(与「局部失败不连坐」相反)、
|
||||
三态聚合投影(`abnormal` 防假成功,Mastra run 无此态)、`node_instance`
|
||||
投影表必须照写(治理台按行查)。
|
||||
**阶段 3 的剩余欠账**:`MastraRunner`(startRun / resumeRun 的真实现,需要
|
||||
`Mastra` 实例 + `PostgresStore` 挂 `mastra` schema)与接线开关未做 ——
|
||||
编译器与胶合层都已落且有单测,但**没有在真库上跑过一整条流**;
|
||||
转正之前自持实现仍是唯一在跑的路径。真跑时要验的两条(spike 已点名):
|
||||
跨进程 `createRun({ runId })` 取句柄再 resume、Postgres 下的快照并发写。
|
||||
|
||||
已绕过的语义冲突(详见 process/CONTRACT.md):回边 reopen(路线 B 解决)、
|
||||
`.parallel()` 任一失败即整体失败(失败走向不进 Mastra)、三态聚合投影
|
||||
(读实例表不读 run 状态)、`node_instance` 投影表照写(发号权在主工程)。
|
||||
|
||||
## 鉴权(ADR-010 落地后的已知欠账)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user