#4410 给 datasource.config 装上了 per-driver 的 zod 门禁,作者侧现在只有一种拼写。但
createDefaultDatasourceDriverFactory 里仍留着几处未声明的读取侧 ?? 回退——它们不是
契约的一部分,任何文档、表单、示例都没写过,纯粹是"读的人比较宽容"才碰巧能用:
| 位置 |
容错的拼写 |
契约里的键 |
buildSqlConnection(sqlite 分支) |
cfg.file / cfg.database |
filename |
buildSqlConnection(pg 分支) |
cfg.connectionString |
url |
buildSqlConnection / buildMysqlConnection |
cfg.user |
username |
buildMongoUrl |
cfg.uri |
url |
这正是 AGENTS.md Prime Directive #12 点名的债:"When you must tolerate an alias at all,
declare it as a conversion-layer entry (never a bare ??), so it is declared, loud, tested,
and removable on a schedule." filters → filter、object → objectName 已经按这条路
毕业了(flow-node-crud-filter-alias 等),这四处是同一形状。
#4410 为什么没有顺手删掉。 删了会静默改变已持久化的运行时数据源的行为:一条早先通过
API 存进 sys_metadata、config 里写着 file 的记录,删回退之后会落到 :memory:——
数据位置无声改变,比现在的容错更糟。正确做法是 ADR-0087 D2 的转换条目:在加载时把旧键改写
成规范键(applyConversionsToStoredItem 会对存量数据重放整条链,#3903),然后回退就可以
真的删除,而不是继续留在 reader 里。
建议做法
- 加一条
datasource-config-driver-key-aliases 转换条目(含 fixture),覆盖上表四组映射;
需要一个 mapDatasources walker(conversions/walk.ts 目前没有)。
- 转换落地后删除工厂里的四处
??,并把 sqlite.zod.ts / mongo.zod.ts 里"工厂仍容忍
存量记录"的注释一并删掉——那两段注释是专门为这个中间状态写的。
spec-changes / upgrade-guide 按常规重新生成。
关联:#4410(本 issue 的来源)、#3796(同类 alias 毕业)、ADR-0087 D2、ADR-0078。
#4410 给
datasource.config装上了 per-driver 的 zod 门禁,作者侧现在只有一种拼写。但createDefaultDatasourceDriverFactory里仍留着几处未声明的读取侧??回退——它们不是契约的一部分,任何文档、表单、示例都没写过,纯粹是"读的人比较宽容"才碰巧能用:
buildSqlConnection(sqlite 分支)cfg.file/cfg.databasefilenamebuildSqlConnection(pg 分支)cfg.connectionStringurlbuildSqlConnection/buildMysqlConnectioncfg.userusernamebuildMongoUrlcfg.uriurl这正是 AGENTS.md Prime Directive #12 点名的债:"When you must tolerate an alias at all,
declare it as a conversion-layer entry (never a bare
??), so it is declared, loud, tested,and removable on a schedule."
filters→filter、object→objectName已经按这条路毕业了(
flow-node-crud-filter-alias等),这四处是同一形状。#4410 为什么没有顺手删掉。 删了会静默改变已持久化的运行时数据源的行为:一条早先通过
API 存进
sys_metadata、config里写着file的记录,删回退之后会落到:memory:——数据位置无声改变,比现在的容错更糟。正确做法是 ADR-0087 D2 的转换条目:在加载时把旧键改写
成规范键(
applyConversionsToStoredItem会对存量数据重放整条链,#3903),然后回退就可以真的删除,而不是继续留在 reader 里。
建议做法
datasource-config-driver-key-aliases转换条目(含 fixture),覆盖上表四组映射;需要一个
mapDatasourceswalker(conversions/walk.ts目前没有)。??,并把sqlite.zod.ts/mongo.zod.ts里"工厂仍容忍存量记录"的注释一并删掉——那两段注释是专门为这个中间状态写的。
spec-changes/upgrade-guide按常规重新生成。关联:#4410(本 issue 的来源)、#3796(同类 alias 毕业)、ADR-0087 D2、ADR-0078。