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

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

namespace Spec.System

/-- System 层标识符载体(关系结构 `PINNED`;各字段表示 `OPEN`)。 -/
structure Identifiers where
  /-- 课程项目标识(`OPEN` 表示;聚合根,likec4 `Project`)。 -/
  ProjectId : Type
  /-- SaaS 租户/组织标识(`OPEN` 表示;ADR-0020 tenant root)。 -/
  OrganizationId : Type
  /-- 租户层用户标识(`OPEN` 表示;独立实体,非飞书身份派生;见 `Hierarchy.User`)。 -/
  UserId : Type
  /-- 飞书用户 open_id(`OPEN` 表示;单应用作用域内唯一)。 -/
  FeishuOpenId : Type
  /-- 飞书 user_id(`OPEN` 表示;租户内唯一,换 app 不变)。 -/
  FeishuUserId : Type
  /-- 飞书企业应用 app_id(`OPEN` 表示)。 -/
  FeishuAppId : Type
  /-- 飞书 app_secret 信封引用(`OPEN` 表示;ADR-0024)。 -/
  FeishuAppSecretRef : Type
  /-- Hub teacher team 标识(`OPEN` 表示;ADR-0020 org-scoped team)。 -/
  TeamId : Type
  /-- Project explorer folder 标识(`OPEN` 表示;ADR-0021 透明组织节点,非权限资源)。 -/
  FolderId : Type
  /-- 一次 agent 任务的标识(`OPEN` 表示;锁的 owner、审计主体,`AgentRun`。provider 无关,
  ADR-0017;`@bot` 仅为触发品牌,不承诺 provider)。 -/
  RunId : Type
  /-- 长生命周期 agent 会话标识(`OPEN` 表示;**provider/model 绑定, ADR-0017**——一次
  session 不跨 provider/model;切 model 即新 session,跨 session 连续性由 ADR-0003 项目
  记忆/锚点重建,不由 session 自带。同 provider/model 内可跨多 run 复用, ADR-0002)。 -/
  SessionId : Type
  /-- Organization-scoped Agent role 标识(`OPEN` 表示, ADR-0017);role 是动态运行配置,
  不是 slash command 枚举。 -/
  AgentRoleId : Type
  /-- 权限主体标识(`OPEN` 表示及其子类型学;ADR-0004 的 user/chat/department/…
      子类型学未定且非分歧点,故只留 opaque 键)。 -/
  Principal : Type
  /-- 飞书项目群 chat 标识(`OPEN` 表示;ADR-0001 协作空间、ADR-0003 锚点引用、
      ADR-0004 `feishu_chat` principal 三处共用同一实体。独立成载体而非 `Principal` 子
      类型——principal 子类型学 OPEN,这里不预设"chat 是 principal 的哪种子型")。 -/
  ChatId : Type
  /-- 平台管理员身份标识(`OPEN` 表示;ADR-0023,不复用客户 `User` 标识)。 -/
  PlatformIdentityId : Type
  /-- 平台自有飞书应用标识(`OPEN` 表示;ADR-0023,与各 org 客户应用分离)。 -/
  PlatformFeishuApplicationId : Type
  /-- 平台应用所验证的外部飞书用户标识(`OPEN` 表示;ADR-0023,其具体 open_id/user_id
      表示与迁移方式不在本层固定)。 -/
  PlatformExternalUserId : Type
  /-- 可撤销 Platform Session 标识(`OPEN` 表示;ADR-0023)。 -/
  PlatformSessionId : Type
  /-- Platform Administrator invitation 标识(`OPEN` 表示;ADR-0023)。 -/
  PlatformInvitationId : Type
  /-- 一次平台控制面 mutation 标识(`OPEN` 表示;ADR-0023)。 -/
  PlatformMutationId : Type
  /-- 独立 Platform Audit Entry 标识(`OPEN` 表示;ADR-0023)。 -/
  PlatformAuditEntryId : Type
  /-- 平台离线恢复所声明的 incident 标识(`OPEN` 表示;ADR-0023)。 -/
  PlatformIncidentId : Type

end Spec.System
