观察类(finding,无 pm:queue):今天没有用户会撞到,记录的是一处已经存在的重复,以及它未来漂移的方向。
事实
@objectstack/driver-turso 是可选安装,两处各自动态 import 并包成 IDatasourceDriverFactory:
两份的 create() 句柄形状、缺包响亮失败、"不回退 SQLite"的措辞都是刻意对齐的 —— 也就是说,它们现在一致,靠的是人工对齐而不是结构。#3741 → #3758 记过同一类账:同一决策的两份实现,修了一份漏了另一份,漏了三个月。
为什么当时没有合并
依赖方向只允许 cli → runtime,不允许反向;而 #5602 的文件面是 CLI 单侧,#5820 的文件面是 runtime 单侧,两单都没有权限动对面。所以重复不是疏忽,是两次窄口径裁决的合成结果。
建议方向(未裁)
把 owner 定在 runtime(turso-driver-factory.ts),CLI 侧 loadTursoDriverFactory 改为 re-export 或薄委托,MissingDriverPackageError 同理 —— 注意 serve.ts 用 instanceof 判它,收敛时必须是同一个类而不是同名两个类,否则 fatal 分支会静默失效。CLI 的 UnsupportedDriverError(选了 turso 但没给 URL)是 CLI 独有语义,不必下沉。
收敛动作本身需要同时改 packages/cli 与 packages/runtime 两个文件面,并会触碰 #5602 刚落地的表面,因此建议作为独立一单排期,而不是搭在任何一侧的车上。
⚠️ 未认领。
观察类(
finding,无pm:queue):今天没有用户会撞到,记录的是一处已经存在的重复,以及它未来漂移的方向。事实
@objectstack/driver-turso是可选安装,两处各自动态 import 并包成IDatasourceDriverFactory:packages/cli/src/utils/storage-driver.ts—loadTursoDriverFactory()/MissingDriverPackageError/TURSO_DRIVER_INSTALL_COMMAND(turso 迁回本仓后,CLI 的 URL→driver 解析仍对libsql://抛 UnsupportedDriverError —— runtime 的 provisioning 却把 turso 排在偏好第一位,两处口径相反 #5602,PR feat(cli):libsql://接进 URL 推断 —— 可选包 + 动态 import 构造 TursoDriver (#5602) #5819,os serve/os start路径);packages/runtime/src/turso-driver-factory.ts— 同名同形(runtime(standalone-stack):detectDriverFromUrl()对libsql://抛「Unsupported database URL scheme」——os migrate因此在 CLI 已能启动的同一个 URL 上硬失败;同文件 docstring 仍称 driver-turso「ships separately in the Cloud distribution」 #5820,PR 见 linked,os migrate/createStandaloneStack/ 嵌入宿主路径)。两份的
create()句柄形状、缺包响亮失败、"不回退 SQLite"的措辞都是刻意对齐的 —— 也就是说,它们现在一致,靠的是人工对齐而不是结构。#3741 → #3758 记过同一类账:同一决策的两份实现,修了一份漏了另一份,漏了三个月。为什么当时没有合并
依赖方向只允许 cli → runtime,不允许反向;而 #5602 的文件面是 CLI 单侧,#5820 的文件面是 runtime 单侧,两单都没有权限动对面。所以重复不是疏忽,是两次窄口径裁决的合成结果。
建议方向(未裁)
把 owner 定在 runtime(
turso-driver-factory.ts),CLI 侧loadTursoDriverFactory改为 re-export 或薄委托,MissingDriverPackageError同理 —— 注意serve.ts用instanceof判它,收敛时必须是同一个类而不是同名两个类,否则 fatal 分支会静默失效。CLI 的UnsupportedDriverError(选了 turso 但没给 URL)是 CLI 独有语义,不必下沉。收敛动作本身需要同时改
packages/cli与packages/runtime两个文件面,并会触碰 #5602 刚落地的表面,因此建议作为独立一单排期,而不是搭在任何一侧的车上。