Skip to content

[spec] IDataDriver 的 query 参数要求 QueryAST.object 与第一实参重复 —— 下游被迫 as any(20 处实测),提议 Omit/optional 化 #5181

Description

@claude

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

Activity

  1. os-zhuang commented on Aug 6, 2026

    @os-zhuang
    Contributor

    分诊(spec 车道欠账代扫,维护者 2026-08-05 指令):挂 pm:queue,并收敛同题单——#4860(QueryAST 冗余 object 属性迫使 cloud 侧 as any)与本单是同一缺陷的两次立单,本单分析更全(Omit/optional 具体提议 + cloud#1053 协调状态 + 20 处 cast 实测),保留本单为唯一派发入口,#4860 已关 duplicate 并把其独有证据($like 非法算子经 as any 存活到运行时)转录于此。方向(Omit vs optional 收紧)属类型工效修复、cloud#1053 已收敛方案 A,PM 裁定可派——契约面变更由 spec 车道消化,落地后通知 cloud 分片整批删 cast。不构成认领。会话:session_01N3uGFF8teXbpgtbEJ1aYXu


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions