#4535 C 组第四簇(C4)。同一个名字在两个入口解析到不同声明,消费者拿到哪个类型只取决于 import 路径(#4411 陷阱)。合并后 packages/spec/dual-source-exports.baseline.json 恰好 24 → 22 (删除下列 2 行,只减不增):
Session — [./api (type)] ≠ [./identity (type)]
SessionSchema — [./api (const)] ≠ [./identity (const)]
先判真源 :import 语句级扫描三仓(本仓 + cloud + objectui),裸名从哪个入口被真实 import、有没有 runtime 读取(接进父 schema / 校验路径 / 会话签发与校验 / REST 响应)。不要用名字出现次数。
提示:会话是跨层概念 —— ./identity 侧大概率是认证域的会话记录(登录态、过期、设备),./api 侧可能是 REST 会话响应体。若两侧都活,优先收敛 + re-export (MetadataManagerConfig 模式);若确属两个概念,按 C1 的 OpenApiWebhookEvent 先例改名一侧,命名可争议时报 needs_decision。
零消费方一侧 ⇒ 死删 (v17 rc 是 major 窗口)。
收敛 ≠ 无行为变化:存活形状比被删侧窄/宽时,在 changeset 里写清消费方类型如何变。
导出类型,非可作者化 metadata key,一般不需要 tombstone / ADR-0087。
验收
基线恰好 −2(24 → 22),check:dual-source-exports 绿(stale 分支点名的行即删行凭证)
务必跑全 packages/spec 的源码审计 ,不止 check:generated:check:liveness、check:strictness-ledger、check:empty-state、check:variant-docs、check:exported-any、check:skill-examples。C3(feat(spec)!: 双源 C3 收敛 — 通知语汇归 ./api,./ui 与 ./system 侧死删 (#4610) #4638 )就是栽在 check:strictness-ledger 上 —— 删掉 zod 形状会让 docs/audits/2026-07-unknown-key-strictness-ledger.md 里该文件的站点数与章节总计过期,必须同步更新
若涉及导出名增删,build-docs 的 import-surface 基线(fix(#4570): reference 页的 import 示例改由真实导出面生成,并加只减不增的棘轮兜底 #4595 ratchet)按 shrink-only 处理
changeset:@objectstack/spec major,写明 FROM→TO 导出面变化
⛔ 不碰 content/docs/releases/
回归 pin:编译期条件类型优先(C1 先例,不吃 vitest 超时)
关联:#4535 (主账本)、#4610 → PR #4638 (C3 先例)、#4587 → PR #4603 (C2)、#4572 → PR #4581 (C1)、ADR-0049
#4535 C 组第四簇(C4)。同一个名字在两个入口解析到不同声明,消费者拿到哪个类型只取决于 import 路径(#4411 陷阱)。合并后
packages/spec/dual-source-exports.baseline.json恰好 24 → 22(删除下列 2 行,只减不增):处置手册(#4411 先例;#4535 正文有完整版)
cloud+objectui),裸名从哪个入口被真实 import、有没有 runtime 读取(接进父 schema / 校验路径 / 会话签发与校验 / REST 响应)。不要用名字出现次数。./identity侧大概率是认证域的会话记录(登录态、过期、设备),./api侧可能是 REST 会话响应体。若两侧都活,优先收敛 + re-export(MetadataManagerConfig模式);若确属两个概念,按 C1 的OpenApiWebhookEvent先例改名一侧,命名可争议时报needs_decision。验收
check:dual-source-exports绿(stale 分支点名的行即删行凭证)packages/spec的源码审计,不止check:generated:check:liveness、check:strictness-ledger、check:empty-state、check:variant-docs、check:exported-any、check:skill-examples。C3(feat(spec)!: 双源 C3 收敛 — 通知语汇归 ./api,./ui 与 ./system 侧死删 (#4610) #4638)就是栽在check:strictness-ledger上 —— 删掉 zod 形状会让docs/audits/2026-07-unknown-key-strictness-ledger.md里该文件的站点数与章节总计过期,必须同步更新build-docs的 import-surface 基线(fix(#4570): reference 页的 import 示例改由真实导出面生成,并加只减不增的棘轮兜底 #4595 ratchet)按 shrink-only 处理@objectstack/specmajor,写明 FROM→TO 导出面变化content/docs/releases/关联:#4535(主账本)、#4610 → PR #4638(C3 先例)、#4587 → PR #4603(C2)、#4572 → PR #4581(C1)、ADR-0049