/-!
# Prelude —— System 层共享标识符

平台层反复引用一组标识符(项目、run、session、principal)。其内部表示从未被决策
(UUID / 复合键、principal 子类型学),也非分歧点,故收口成 opaque 载体
`Identifiers`,System 各模块在其上参数化——契约谈得了"锁 owner 是哪个 run"这类
**关系**,却不对标识符表示作承诺。
-/

namespace Spec.System

/-- System 层标识符载体(关系结构 `PINNED`;各字段表示 `OPEN`)。 -/
structure Identifiers where
  /-- 课程项目标识(`OPEN` 表示;聚合根,likec4 `Project`)。 -/
  ProjectId : Type
  /-- 一次 Claude 任务的标识(`OPEN` 表示;锁的 owner、审计主体,`AgentRun`)。 -/
  RunId : Type
  /-- 长生命周期 Claude 会话标识(`OPEN` 表示;跨多 run 复用,ADR-0002)。 -/
  SessionId : Type
  /-- 权限主体标识(`OPEN` 表示及其子类型学;ADR-0004 的 user/chat/department/…
      子类型学未定且非本层分歧点,纯 plumbing,故只留 opaque 键)。 -/
  Principal : Type

end Spec.System
