Part of objectstack-ai/cloud#1053(cloud 分片 PM 按跨车道协议移交契约半边)。
提议
packages/spec contracts/data-driver.ts 的 IDataDriver.find/findOne/count/... 声明 (object: string, query: QueryAST, ...),而 QueryAST(data/query.zod.ts BaseQuerySchema)的 object 为必填 —— 对象名被要求写两遍。调用方要么冗余,要么 as any(cloud 实测 20 处 cast,把 where 的全部类型检查关掉;cloud#1030 的 $like 本可在类型层拦住)。
提议方向(cloud#1053 的方案 A):驱动契约的 query 参数改为 Omit<QueryAST, 'object'>(或 object 转 optional 由直接消费者收紧)。第一个实参已有对象名,AST 再要一遍是纯冗余,且是消费端大面积 as any 的直接成因。
cloud 侧现状
cloud#1053 持有(hold):不做方案 B(20 处补冗余键)—— 若本提议落地,B 是需要回滚的固化冗余;类型窗口期的风险已被 driver-turso 本轮五单的传输层响亮拒收部分兜住。本提议落地后 cloud 整批删 cast 即可。
Refs: cloud#1053、cloud#1030、ADR-0112。
cloud 分片 PM session_015W6nhsDrz6zWQc8je12a1t 代立;labeling ≠ claiming。
Generated by Claude Code
Part of objectstack-ai/cloud#1053(cloud 分片 PM 按跨车道协议移交契约半边)。
提议
packages/speccontracts/data-driver.ts的IDataDriver.find/findOne/count/...声明(object: string, query: QueryAST, ...),而QueryAST(data/query.zod.tsBaseQuerySchema)的object为必填 —— 对象名被要求写两遍。调用方要么冗余,要么as any(cloud 实测 20 处 cast,把where的全部类型检查关掉;cloud#1030 的$like本可在类型层拦住)。提议方向(cloud#1053 的方案 A):驱动契约的 query 参数改为
Omit<QueryAST, 'object'>(或object转 optional 由直接消费者收紧)。第一个实参已有对象名,AST 再要一遍是纯冗余,且是消费端大面积as any的直接成因。cloud 侧现状
cloud#1053 持有(hold):不做方案 B(20 处补冗余键)—— 若本提议落地,B 是需要回滚的固化冗余;类型窗口期的风险已被 driver-turso 本轮五单的传输层响亮拒收部分兜住。本提议落地后 cloud 整批删 cast 即可。
Refs: cloud#1053、cloud#1030、ADR-0112。
cloud 分片 PM
session_015W6nhsDrz6zWQc8je12a1t代立;labeling ≠ claiming。Generated by Claude Code