Skip to content

driver-turso 的 remote transport 自带一套 where/分页编译器,却不跑 FILTER_LOGIC / PAGINATION 共享 case-set —— 迁回本仓即入矩阵,实测 3 个 DEBT 格 #5590

Description

@os-zhuang

发现于#4645 Phase A(把 @objectstack/driver-turso 从 cloud 迁回 packages/drivers/driver-turso)。迁入落盘的那一刻 scripts/check-driver-conformance.mjs 就把它收进矩阵,实测 3 个格子 MISSING。Phase A 的 PR 按 gate 规则记了 3 条 measured DEBT 条目让 CI 绿,这个单是清掉那 3 条 DEBT 的工作项

实测(objectstack 81087877e + #4645 Phase A 分支)

driver conformance matrix (5 drivers x 5 case-sets)

  driver              FILTER_LOGIC  TEMPORAL  TEMPORAL_TIME  PAGINATION  PAGINATION_UNORDERED
  driver-memory       ok            ok        ok             ok          ok
  driver-mongodb      ok            ok        ok             ok          ok
  driver-sql          ok            ok        ok             ok          ok
  driver-sqlite-wasm  ok            ok        ok             ok          ok
  driver-turso        MISSING       ok        ok             MISSING     MISSING

TEMPORAL / TEMPORAL_TIME 两格是真绿:turso-temporal-conformance.test.tsturso-remote-temporal-conformance.test.ts 双面(local 与 remote)都驱动了共享 case-set。

为什么这三格不是"继承 SqlDriver 所以没问题"

TursoDriver双传输的。local / replica 面确实继承 SqlDriver,但 remote 面完全不走 Knex:packages/drivers/driver-turso/src/remote-transport.ts(1,726 行)自带

这正是 #3774(filter 组合语义)和 #4363 / objectui#3106(有序与无序分页读都是一个 partition)设这两组共享 case-set 要压住的东西:独立实现的第 N 个后端。"继承所以没问题"恰恰是这些套件存在来证伪的假设 —— driver-sqlite-wasm 当初也是按这个理由记的 DEBT,最后是用套件清掉的,不是用理由清掉的。

完成标准

packages/drivers/driver-turso/src/ 下补套件,从 @objectstack/spec/data 导入并驱动:

  • FILTER_LOGIC_CASES
  • PAGINATION_CASES
  • PAGINATION_UNORDERED_CASES

双面覆盖(参照同包 temporal 两个套件的形状):local 面走 :memory:,remote 面走 libsql-sqlite-stub.testkit.ts 的 sqlite stub —— 两面都 hermetic,默认 CI 可跑,不需要网络或凭据。套件落地后,在同一个 PR 里删掉 scripts/check-driver-conformance.mjs 里对应的 3 条 LEDGER 条目(留着会判 RECONCILED 红)。

边界

  • ⛔ 不在这个单里改 gate 的判定逻辑。
  • ⛔ 不顺手修 remote transport 的语义缺陷:套件如果跑红,说明是真分叉,另开单,不要在这个单里边写套件边改实现(那样等于自己给自己发准考证)。

Blocked-by#4645 Phase A 的 PR(packages/drivers/driver-turso 落盘)。

Activity

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

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions