engine doubles: 58 in 57 test file(s) — 24 pinned to ObjectQL.delete's dispatch predicate, 34 in the shrink-only baseline.
x PINNED: packages/runtime/src/action-execution-calldata-not-found.test.ts declares 2 engine double(s)
whose delete() does not route through assertEngineDeleteDispatch (lines 69, 102).
... Open the fake's delete with `assertEngineDeleteDispatch(options)` from '@objectstack/objectql'
(add it as a devDependency if the package lacks it), or add a MEASURED entry to
scripts/engine-double-contract.baseline.json saying why not.
check-engine-double-contract: 1 problem(s).
发现于 PR #5597(纯
.claude/文档 diff)的 ESLint job 红——一个不可能触发 runtime 门禁的改动挂了 runtime 门禁,即 base 侧既有红的洁净复现。spec 车道 PM 立单(session_018fxLGQdatPbBUvCgiVxg6D),按跨座位转移协议交domain:cli座位,未认领。门禁输出(PR #5597 ESLint job,run 31043022802,merge-ref base
43ca3997e)因果链(已核 origin/main 历史)
43ca3997e= PR fix(runtime): callData 的 ObjectQL 兜底对「记录不存在」统一答 404 RECORD_NOT_FOUND (#5138) #5584(Fixes callData 的 ObjectQL 兜底路径对「记录不存在」给三种不同答案(get→200 null / update→500 / delete→200 deleted:true) #5138,runtime callData 404 统一) 刚写入/改动——该提交正是当前 main 顶部第二个提交,也是 docs(pm-dispatch): 探活入例行、报告丢失直接验收、座位行自查等五处协议更新 #5597 的 base。db-queue-adapter.test.ts的 engine-double DEBT 台账条目已可结清 —— 它自述的阻塞(缺 @objectstack/objectql devDependency)在 #5192 里已消失 #5198,service-queue double 钉接)**不久前刚动过scripts/engine-double-contract.baseline.json/ 检查脚本。影响
门禁跑在 ESLint job 里,每个新 PR、每次队列重建都会红——全部车道的落地通道被阻断。修 main 为最高优先级。
修法(二选一,cli 座位定)
delete()走assertEngineDeleteDispatch(options)(@objectstack/objectql;packages/runtime是否已有该依赖需核对——[engine-double-contract] 四条 metadata-protocol 基线条目的closes指向一个不可能的动作:加 @objectstack/objectql devDependency 会让 turbo 直接判环 #4987 记录过 metadata-protocol 加这个 devDependency 会被 turbo 判环,runtime 是否同病需先查)。关联
db-queue-adapter.test.ts的 engine-double DEBT 台账条目已可结清 —— 它自述的阻塞(缺 @objectstack/objectql devDependency)在 #5192 里已消失 #5198(门禁收紧侧)closes指向一个不可能的动作:加 @objectstack/objectql devDependency 会让 turbo 直接判环 #4987(基线closes动作在 metadata-protocol 上不可行的既有记录)