跳转到内容

RAN 协议

RAN 协议 / RAN Protocol / Runtime Kernel 操作规范

《RAN 协议》定义 RAN Runtime Kernel 的通用命令、事件、状态迁移、权限、审计、回放和版本治理。它不是行业业务协议;应用通过 Adapter/Port 提供领域规则和外部系统能力。

Kernel 的正式核心对象是《RAN 模型》定义的九类对象:Entity 实体、Identity 身份、Relationship 关系、Interaction 互动、Fact 事实、Inference 推断、Source 来源、Evidence 证据和 Event 事件。旧的 RanCredentialRanTrustRanBondRanAuthority 仅作为 Profile 协议保留。

  • 命令与事件分离:命令是请求意图,事件是 Kernel 接受后的已发生事实。
  • 事件不可变:更正、撤回、失效通过新事件,不修改历史事件。
  • 显式状态:状态迁移必须有前置条件、目标状态、依据、版本和审计。
  • 可追溯:事实、推断、来源、证据和状态变化必须保留引用关系。
  • 确定结果:重复、冲突、非法迁移、权限拒绝和外部未确认有固定结果。
  • 版本固定:事件保存并在回放时使用记录时的 schema、rule 和 policy 版本。
  • 应用隔离:应用不能直接写 Kernel canonical state,也不能把行业对象加入核心。

每个命令至少包含:

字段 含义
command_id 本次请求标识
command_type 受支持的操作类型
actor_ref 发起主体
subject_refs 受影响资源引用
purpose 使用目的
idempotency_key 重试去重键
request_hash 规范化请求哈希
expected_version 乐观并发版本,可为空
payload 命令参数和应用受控扩展
schema_version 命令契约版本
policy_result allowdenymaskapproval_required
agent_control 智能体能力、工具、风险、审批和降级声明,可选

同一 idempotency_key 只能对应一个 request_hash。相同键和相同哈希返回等价原结果;相同键和不同哈希返回 conflictexpected_version 不等于当前版本也返回 conflict

Kernel 返回以下固定状态:

状态 语义 是否产生领域事件
completed Kernel 已原子提交状态、事件和审计
rejected 输入、权限、对象或状态约束失败
conflict 幂等哈希或预期版本冲突
pending_review 等待明确人工审批
accepted_async 受控异步任务已接收但结果未完成 仅任务接受记录
unknown 提交确认丢失,需幂等查询或对账 不得推测

失败不得留下部分状态。外部 Port 的投递失败不能把 rejected 或未确认写成 completed

Command 前置条件 Accepted Event 状态/结果
create_entity 标识未使用,版本为 0 EntityCreated 实体 active
declare_identity 实体存在,身份标识未使用 IdentityDeclared 身份进入声明状态
transition_identity 身份存在,目标状态迁移合法 IdentityStateChanged 身份进入目标状态
create_relationship 至少两个实体存在 RelationshipCreated 关系 proposed
transition_relationship 关系存在,目标迁移合法 RelationshipStateChanged 关系进入目标状态
record_interaction 当事方和来源存在 InteractionRecorded 追加互动,不自动成立关系
register_source 来源标识未使用 SourceRegistered 来源 active
record_evidence 来源存在且摘要存在 EvidenceRecorded 证据 active
record_fact 至少一个来源或证据存在 FactRecorded 事实 active
record_inference 至少一个事实或证据存在,规则版本明确 InferenceRecorded 推断 active
invalidate_fact 事实当前有效 FactInvalidated 事实 invalidated,依赖推断变 stale
invalidate_evidence 证据当前有效 EvidenceInvalidated 证据 invalidated,依赖推断变 stale
当前状态 允许目标状态
proposed activeunder_reviewclosed
active restrictedunder_reviewinactiveclosed
under_review activerestrictedclosed
inactive activeclosed
restricted under_reviewclosed

应用可以增加业务前置条件,但不能跳过 Kernel 的权限、版本、审计和事件门禁。关系状态不会因为一个推断失效而被隐式修改;应用必须发起显式重新评估或迁移命令。

每个接受事件至少包含:

event_idevent_typeoccurred_atproducersubject_refsschema_versioncausation_idcorrelation_idvisibilitypayloadresulting_versionrule_versionpolicy_version

事件 payload 必须足以恢复规范化状态,或明确引用一个兼容的历史转换器。事件是回放输入,不是命令的别名。

标准处理流程为:

Command
-> schema/object validation
-> Policy and Agent Control gate
-> expected_version and state transition check
-> atomic state + accepted Event + Kernel Audit commit
-> external outbox/message acknowledgement
Source -> Evidence -> Fact -> Inference
\-> explicit transition request

FactInferenceSourceEvidence 是独立对象。Inference 必须写入 basis_fact_refsevidence_refsrule_version、有效期和复核状态。证据更正、撤回或过期产生新事件;依赖推断变为 staleinvalidated,但不会覆盖事实、关系或历史。

Port Kernel 责任 Adapter/宿主责任
EventStorePort 追加不可变事件、提供分页回放输入 持久化、条件写、备份和对账
AuditPort 追加 Kernel 审计 审计查询授权、保留、脱敏和存储
PolicyPort 校验并执行结构化授权结果 身份、组织角色、用途和业务授权判断
MessagePort 在提交后发布事件或异步任务 投递、重试、去重、死信和补偿
ClockPort 提供可测试时间 生产时钟和同步

首版不使用分布式事务。Kernel 内部状态、事件和审计在同一提交边界;外部写入通过 outbox/受控任务、确认、重试、补偿和对账。

Adapter 可以把任意应用对象映射到 Kernel 引用和扩展,但不得把应用字段写成 Kernel 核心语义。Kernel 不读取应用共享数据库,也不拥有应用用户、组织、收费和产品工作流。

Policy 结果只能是 allowdenymaskapproval_required

  • allow:继续校验和提交;
  • deny:返回 rejected,不产生领域事件;
  • mask:只允许策略声明的脱敏读取或受限动作;
  • approval_required:返回 pending_review,等待明确责任人批准。

Agent Control 至少记录 agent_refcapabilitytool_refrisk_classcapability_versionapproval_ownerrequired_permissionsfallback。高风险调用没有有效 approval_ref 不得执行。拒绝、超时、降级和人工决定都要进入追加审计。非 Agent 命令也可以直接进入 approval_required,由应用 ReviewTask 提供责任人。

Kernel 审计至少包含 audit_idcommand_id、actor、purpose、resource、decision、policy_version、result、occurred_at 和关联事件引用。

回放必须使用事件自身记录的 schema_versionrule_versionpolicy_version,不得使用当前规则重算历史结论。回放接口应支持分页、最大事件数/深度、时间范围、内存预算和取消信号;首版内存实现只验证语义,不承诺生产吞吐。

kernel.v0.x 可以增加可选字段和 extensions。删除必填字段、改变状态语义或改变事件解释必须升级主版本;历史事件原文和兼容转换记录必须保留。

旧协议保留为 RAN 语义层 Profile:

  • RanCredential Protocol:围绕 IdentityEvidence 和核验事件组织身份 Profile;
  • RanTrust Protocol:围绕带依据、上下文和有效期的 Inference 组织信任判断;
  • RanBond Protocol:围绕 RelationshipInteraction 和状态事件组织关系 Profile;
  • RanAuthority Protocol:围绕贡献事实、推断和治理事件组织贡献 Profile。

这些 Profile 不得改变 Kernel 九类对象的最小接口。

Kernel 提供中立测试向量、合成 fixture 和 Adapter contract tests。两个独立 Adapter 使用不同的外部字段结构,但必须在创建实体、身份、关系、事实、推断、幂等、冲突、失效、回放、权限和 Agent Control 上得到相同 Kernel 语义。

可执行参考实现和向量见 docs/runtime-kernel/(内部材料未公开)。