立项依据 :#5499 裁决原文「driver-memory 是早期为测试便利设计的组件,方向已定为 sqlite 内存模式 替代……替代迁移若立项,在本单登记排期」+ 维护者 2026-08-06 在 PM 会话确认(「driver-memory 在项目内的测试应该被替换为 sqlite 的内存模式」)。完成即触发 #5499 的 memory 侧重启条件:名下 5 张挂起缺陷单(#5433 /#5440 /#5442 /#5444 /#5354 )整批关闭(not planned),包本体的退役决策另行交维护者。
mongodb 侧不在本单 :维护者同日确认 mongodb 维持暂停。
实测消费面(origin/main @ 2026-08-06 01:2x Z)
测试文件引用 driver-memory / MemoryDriver(外部,共 41 个文件 / 9 包) :
包
文件数
备注
packages/objectql
22
主力面。⚠️ 实测无共享工厂 :各文件自带 makeMemoryDriver() 本地定义(22 处),其中部分是手写同形 stub (如注释 "same shape driver-memory uses, small enough to assert against"),并非全部真依赖包 — 逐文件分诊是第一步
packages/runtime
5
packages/rest
3
packages/plugins/plugin-approvals
3
packages/spec
2
packages/services/service-datasource
2
packages/cli
2
packages/triggers/trigger-record-change
1
packages/qa/dogfood
1
package.json 依赖声明 :cli、plugin-dev、qa/dogfood、runtime、service-datasource、examples/embed-objectql(+包自身)。
⛔ 明确不在本单范围 (它们不是「测试」,归包退役决策):runtime provisioning 偏好序里的 memory 注册名回退(http-dispatcher)、plugin-dev 的开发默认后端、examples/embed-objectql(该示例的主题就是内嵌 memory driver)、driver-memory 自己的 15 个测试文件。
替代目标
@objectstack/driver-sql + better-sqlite3 :memory:(examples/app-crm、app-showcase 与 cli db clean 已采用的同款形态,#5499 事实核查确认)。
阶段结构
Survey(先行,单独一单) :41 个文件逐个分诊为三类 —— ① 真依赖包、直接可换 sqlite;② 本地手写 stub、与包无关(只需摘 import 或原样保留);③ 断言了 memory 特有语义的 pin(换后端会红 — 每处红都是真语义分叉,按「以 SQL 族语义为准」定向改写断言,拿不准的单独列出)。产出逐文件处置表,作为后续各包迁移单的输入。
按包迁移 sub-issue (file-disjoint,可并行;domain:* 按落点包由分诊补):objectql 一单(最重),runtime+rest 一单,其余小包合批或独立由 survey 结果定。
收口 :41 文件清零后回 [裁决] driver-memory / driver-mongodb 投入冻结 —— 维护者 2026-08-05 口径(跨单锚点) #5499 执行重启条件(5 张 on-hold 批量关闭 + 请维护者裁包本体退役)。
风险如实声明
排期登记与本单互链见 #5499 评论。
立项依据:#5499 裁决原文「driver-memory 是早期为测试便利设计的组件,方向已定为 sqlite 内存模式替代……替代迁移若立项,在本单登记排期」+ 维护者 2026-08-06 在 PM 会话确认(「driver-memory 在项目内的测试应该被替换为 sqlite 的内存模式」)。完成即触发 #5499 的 memory 侧重启条件:名下 5 张挂起缺陷单(#5433/#5440/#5442/#5444/#5354)整批关闭(not planned),包本体的退役决策另行交维护者。
mongodb 侧不在本单:维护者同日确认 mongodb 维持暂停。
实测消费面(origin/main @ 2026-08-06 01:2x Z)
测试文件引用 driver-memory / MemoryDriver(外部,共 41 个文件 / 9 包):
packages/objectqlmakeMemoryDriver()本地定义(22 处),其中部分是手写同形 stub(如注释 "same shape driver-memory uses, small enough to assert against"),并非全部真依赖包 — 逐文件分诊是第一步packages/runtimepackages/restpackages/plugins/plugin-approvalspackages/specpackages/services/service-datasourcepackages/clipackages/triggers/trigger-record-changepackages/qa/dogfoodpackage.json 依赖声明:cli、plugin-dev、qa/dogfood、runtime、service-datasource、examples/embed-objectql(+包自身)。
⛔ 明确不在本单范围(它们不是「测试」,归包退役决策):runtime provisioning 偏好序里的
memory注册名回退(http-dispatcher)、plugin-dev 的开发默认后端、examples/embed-objectql(该示例的主题就是内嵌 memory driver)、driver-memory 自己的 15 个测试文件。替代目标
@objectstack/driver-sql+better-sqlite3:memory:(examples/app-crm、app-showcase 与cli db clean已采用的同款形态,#5499 事实核查确认)。阶段结构
domain:*按落点包由分诊补):objectql 一单(最重),runtime+rest 一单,其余小包合批或独立由 survey 结果定。风险如实声明
{f: /re/}(正则)与{f: ['x']}(数组)各差一个方向 —— 实测 #5354/$exists的比较值不是布尔时,三个后端面给出三个答案,driver-memory 自己的两个面在'yes'上就已分叉 —— 实测,$null(#5347)的同族另一轴 #5369/非否定路径上的$ne/$nin/$notContains:driver-sql 排除 NULL 行,driver-memory / formula 返回它们(#5146 只裁定了$not) #5298/driver-memory 与 formula 对「字段没有值」给出三处不同答案:$notContains(null 值)、$exists(键在值为 null)、$nin(缺键) #5299 一族正是此类)— 这是设计内收益(测试从此压真语义),但意味着迁移单不是纯机械改,每个红都要有处置记录。domain:engine-core车道(现空缺),是吞吐瓶颈 — 执行模型待分诊/维护者定(车道逐单 vs epic 委托)。排期登记与本单互链见 #5499 评论。