⛔ 阻塞中,勿认领:依赖 ADR-0120 17.x 波前两块(#5030 的 driver 侧 D3+D4、#4986 的 spec 词汇 + lint)的 PR 合入。两者落地后本单解除阻塞。不入 pm:queue,由维护者安排。
ADR-0120(docs/adr/0120-unique-scope-vocabulary-and-null-safe-tenant-uniqueness.md,已 Accepted)17.x 波的第三块,范围:
D5e — isolated 安装期姿态硬门
D6 — 剩余成文契约扫荡(前两块未覆盖部分)
content/docs/data-modeling/indexing.mdx §Two ways to say "unique" 全节按新词汇重写(含 os:check 代码块);
content/docs/references/** 走 gen:schema && gen:docs 再生成,不手改;
packages/plugins/driver-sql/src/sql-driver.ts syncDeclaredIndexes 文档块的「VERBATIM」表述收窄到 'global';
- 全仓 grep 清掉与旧契约相悖的残留表述。
三姿态 conformance(ADR §Acceptance tests)
- 同一 fixture app 在
single | group | isolated 三姿态启动,逐 S 行断言 enforcement;
- 姿态翻转本身零 drift op 的 smoke 断言;
- D5e 门演练:带
'global' 业务唯一的 fixture app 装进 isolated 环境 → 硬停、留痕、不复问;pre-gate 存量走 advisory 的断言;
scripts/adr-anchors.json 补 ADR-0120 锚点,pnpm check:adr-anchors 绿。
关联
⛔ 阻塞中,勿认领:依赖 ADR-0120 17.x 波前两块(#5030 的 driver 侧 D3+D4、#4986 的 spec 词汇 + lint)的 PR 合入。两者落地后本单解除阻塞。不入 pm:queue,由维护者安排。
ADR-0120(
docs/adr/0120-unique-scope-vocabulary-and-null-safe-tenant-uniqueness.md,已 Accepted)17.x 波的第三块,范围:D5e — isolated 安装期姿态硬门
isolated姿态环境时,枚举其非sys对象上的'global'唯一(字段级与声明索引),逐索引硬停确认:「确认真平台级 / 改写为'organization'」;os doctor/os migrate plan保留 advisory 形态,只兜两类门够不到的存量:门禁上线前的安装、装后姿态变更的环境;D6 — 剩余成文契约扫荡(前两块未覆盖部分)
content/docs/data-modeling/indexing.mdx§Two ways to say "unique" 全节按新词汇重写(含os:check代码块);content/docs/references/**走gen:schema && gen:docs再生成,不手改;packages/plugins/driver-sql/src/sql-driver.tssyncDeclaredIndexes文档块的「VERBATIM」表述收窄到'global';三姿态 conformance(ADR §Acceptance tests)
single | group | isolated三姿态启动,逐 S 行断言 enforcement;'global'业务唯一的 fixture app 装进isolated环境 → 硬停、留痕、不复问;pre-gate 存量走 advisory 的断言;scripts/adr-anchors.json补 ADR-0120 锚点,pnpm check:adr-anchors绿。关联
{ fields, unique: true }在 tenant-scoped 对象上落成平台级 UNIQUE —— normalizeDeclaredIndex 不补租户列(#4698 实例 2 移交) #4986 / driver-sql: 单租户栈上 organization_id 恒为 NULL,#3696 的 (tenant, col) 复合 UNIQUE 因 NULL-distinct 而完全不生效 —— 字段级 unique: true 静默零约束 #5030(前两块);docs(adr): ADR-0120 — explicit unique-scope vocabulary (organization/global) and NULL-safe per-organization uniqueness (#4986, #5030) #5054(ADR PR)