Skip to content

spec 双源清账 C4:Session / SessionSchema(./api ≠ ./identity)—— 2 条 #4641

Description

@os-zhuang

#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)]

处置手册(#4411 先例;#4535 正文有完整版)

  1. 先判真源:import 语句级扫描三仓(本仓 + cloud + objectui),裸名从哪个入口被真实 import、有没有 runtime 读取(接进父 schema / 校验路径 / 会话签发与校验 / REST 响应)。不要用名字出现次数。
    • 提示:会话是跨层概念 —— ./identity 侧大概率是认证域的会话记录(登录态、过期、设备),./api 侧可能是 REST 会话响应体。若两侧都活,优先收敛 + re-export(MetadataManagerConfig 模式);若确属两个概念,按 C1 的 OpenApiWebhookEvent 先例改名一侧,命名可争议时报 needs_decision
  2. 零消费方一侧 ⇒ 死删(v17 rc 是 major 窗口)。
  3. 收敛 ≠ 无行为变化:存活形状比被删侧窄/宽时,在 changeset 里写清消费方类型如何变。
  4. 导出类型,非可作者化 metadata key,一般不需要 tombstone / ADR-0087。

验收

关联:#4535(主账本)、#4610 → PR #4638(C3 先例)、#4587 → PR #4603(C2)、#4572 → PR #4581(C1)、ADR-0049

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions