Skip to content

[verify] 端到端验证从构造上绕开了挂起 run 的持久化路径(harness 写死 suspendedRunStore: 'memory') #4470

Description

@os-zhuang

#4420 的后续 —— 关于"为什么这个 bug 能一路发版"。

问题

packages/verify/src/harness.ts 挂载自动化插件时写死了 suspendedRunStore: 'memory'。也就是说 dogfood / e2e 这一层从构造上就不可能碰到 DB-backed 的挂起 run 存储:被验证的永远是内存路径。

结果是覆盖率上有一条整齐的缝:

  • 单测覆盖了引擎侧的持久化(suspended-run-store.test.ts 用假表跑 suspend → restart → resume);
  • e2e 覆盖了业务侧的审批链路(但全程单进程、纯内存);
  • 而两者中间的装配——对象有没有注册、表有没有建、store 有没有真的接上——没有任何一层真正跑过。

#4420 恰好就长在这条缝里:store 挂在一张没建的表上,每次写盘失败都被吞进一条 warn,挂起照常"成功",直到下次重启才暴露。#4460 补了针对装配的单测,但 e2e 这一层的盲区还在。

期望

至少一条走 durable store 的端到端验证,把"挂起真的落库了"变成可断言的事实,而不是靠日志推断。最小形态:

  • 用真实驱动跑一个含 approval(或任意可挂起节点)的流程,让它挂起;
  • 断言 sys_automation_run 里确实出现了对应的 paused 行(不是断言"没报错");
  • 冷启动一个新 kernel,resume 能继续走对分支。

注意 #4460 之后 hasSuspendedRun() 可以直接用来做这个断言。

另外值得顺带确认的是:harness 当初写死 'memory' 是为了跑得快、还是因为持久化在那个环境跑不通。如果是后者,那本身就是这个 issue 更值得修的部分。

参考

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions