Runtime Kernel 契约
RAN Runtime Kernel 权威契约
Section titled “RAN Runtime Kernel 权威契约”版本:
kernel.v0.1状态:首版可执行契约 实现边界:进程内可嵌入 Runtime + 可插拔 Adapter/Port
1. 目标与所有权
Section titled “1. 目标与所有权”Kernel 的权威范围是跨应用稳定存在的关系事实、证据、状态、事件和治理控制。应用领域对象和业务规则不进入 Kernel 核心;它们由 Adapter 映射为 Kernel 引用、命令和受控扩展。
Kernel 拥有:
- 规范化对象状态、接受事件、版本和 Kernel 审计;
- 命令校验、幂等、预期版本冲突和状态迁移;
Fact、Inference、Source、Evidence的可追溯引用;- 权限结果结构、Agent Control 闸门和回放输入。
Adapter 拥有:
- 应用领域字段、外部系统标识、应用工作流和业务规则;
- 身份提供方、组织角色、数据存储、消息系统和应用事务边界;
- 将 Kernel 事件、审计和权限结果投影回应用查询模型。
禁止应用共享数据库写旁路或直接修改 Kernel canonical state。
2. 九类核心对象
Section titled “2. 九类核心对象”所有对象都有稳定不可复用的 *_id、created_at 或 occurred_at、status(如适用)、version 和可保留但不由 Kernel 解释的 extensions。未知扩展必须被保留,不能改变核心字段语义。
| 对象 | 最小字段 | 核心不变量 |
|---|---|---|
Entity 实体 |
entity_id, entity_type, status, created_at, version, extensions |
标识不可复用;实体存在不代表身份已核验 |
Identity 身份 |
identity_id, entity_id, kind, verification_level, status, declared_at, version, extensions |
身份声明、凭证、核验状态和展示权限分离 |
Relationship 关系 |
relationship_id, participant_refs, relationship_type, context, state, created_at, version, extensions |
至少两个参与实体;状态变化必须有事件和依据 |
Interaction 互动 |
interaction_id, actor_ref, subject_refs, kind, occurred_at, source_ref, visibility, extensions |
记录行为或接触,不自动等于关系成立 |
Fact 事实 |
fact_id, subject_refs, predicate, value, source_refs, evidence_refs, observed_at, status, version, extensions |
可追溯;更正/撤回用显式事件,不覆盖历史 |
Inference 推断 |
inference_id, subject_refs, conclusion, basis_fact_refs, evidence_refs, rule_version, valid_until, status, version, extensions |
必须引用事实或证据;失效不自动改写事实或关系 |
Source 来源 |
source_id, source_type, source_ref, produced_at, status, version, extensions |
表示信息产生主体、系统或渠道,不等于证据内容 |
Evidence 证据 |
evidence_id, source_ref, subject_refs, evidence_type, content_digest, collected_at, status, version, extensions |
可支持复核;撤回/过期必须保留失效原因 |
Event 事件 |
event_id, event_type, occurred_at, producer, subject_refs, causation_id, correlation_id, schema_version, payload, resulting_version, rule_version, policy_version, visibility |
只表示 Kernel 已接受的已发生记录;不可变、可回放 |
Trust、Network 和 RanAuthority 不在九类最小对象中:信任判断属于带依据和有效期的 Inference;Network 是授权范围内关系结构的聚合视图;RanAuthority 是可复核的贡献/治理 Profile。
3. Command 与 Event
Section titled “3. Command 与 Event”Command 是请求意图,不能被当作已发生事实。只有命令通过对象校验、权限结果、版本约束和 Agent Control 后,Kernel 才原子地产生 Event、更新状态并写 Kernel 审计。
3.1 Command 最小结构
Section titled “3.1 Command 最小结构”{ "command_id": "cmd-001", "command_type": "create_entity", "actor_ref": "entity:operator", "subject_refs": ["entity:subject"], "purpose": "fixture", "idempotency_key": "idem-001", "request_hash": "sha256:...", "expected_version": 0, "payload": {}, "schema_version": "kernel.v0.1", "policy_result": {"decision": "allow", "policy_version": "policy.v0.1"}}request_hash 必须覆盖命令类型、主体、用途、预期版本、payload、schema 版本和 Agent Control;同一幂等键重用时,哈希不同必须返回冲突。
3.2 CommandResult
Section titled “3.2 CommandResult”结果状态固定为:
completed:已产生事件并完成 Kernel 原子提交;rejected:输入、权限、状态或对象约束失败;conflict:幂等键哈希不一致或expected_version过期;pending_review:需要人工审批,尚未产生领域事件;accepted_async:已接受受控异步任务,领域结果尚未完成;unknown:无法确认提交结果,调用方必须查询幂等键或对账,不得盲目重写。
3.3 Event 最小结构
Section titled “3.3 Event 最小结构”事件必须记录 causation_id、correlation_id、schema_version、rule_version、policy_version 和 resulting_version。事件 payload 应包含足以重建规范化状态的变更快照或明确的可重放变更。
4. 状态与迁移
Section titled “4. 状态与迁移”首版通用迁移表如下;应用可以在 Adapter 中增加业务前置条件,但不能绕过 Kernel 的版本、权限、审计和事件约束。
| 命令 | 前置 | 接受事件 | 结果状态 |
|---|---|---|---|
create_entity |
标识不存在,expected_version=0 |
EntityCreated |
实体 active 或 payload 指定状态 |
declare_identity |
entity_id 已存在 |
IdentityDeclared |
身份声明状态 |
transition_identity |
身份存在,目标状态迁移合法 | IdentityStateChanged |
身份进入目标状态 |
create_relationship |
至少两个已存在实体,标识不存在 | RelationshipCreated |
proposed 或 payload 指定状态 |
transition_relationship |
关系存在,目标状态在允许集合 | RelationshipStateChanged |
新关系状态 |
record_interaction |
actor 和 subject 引用存在,来源合法 | InteractionRecorded |
互动追加,不改变关系状态 |
record_fact |
来源/证据引用存在或由同一命令创建 | FactRecorded |
事实 active |
record_inference |
事实或证据引用存在,规则版本明确 | InferenceRecorded |
推断 active |
register_source |
来源标识不存在 | SourceRegistered |
来源 active |
record_evidence |
来源存在,摘要存在 | EvidenceRecorded |
证据 active |
invalidate_fact / invalidate_evidence |
对象存在且当前有效 | FactInvalidated / EvidenceInvalidated |
对象 invalidated |
允许的关系迁移:proposed -> active|under_review|closed、active -> restricted|under_review|inactive|closed、under_review -> active|restricted|closed、inactive -> active|closed。非法迁移不得产生部分写入。
事实或证据失效时,依赖它们的推断会被标记为 stale 或 invalidated,但关系状态不会被隐式改写;应用必须显式发起重新评估或状态迁移命令。
5. Fact、Inference、Source、Evidence
Section titled “5. Fact、Inference、Source、Evidence”原始事实、推断、来源和证据必须独立存储并可分别查询:
Source -> Evidence -> Fact -> Inference \-> Relationship transition requestInference 的 basis_fact_refs、evidence_refs、rule_version、有效期和复核状态是强制审计依据。模型输出、评分或推荐不能直接写成 Fact。
更正、撤回、过期和争议通过新命令产生新事件,历史事件不被编辑。读取失效推断时必须返回失效状态及触发事件引用。
6. Adapter / Port
Section titled “6. Adapter / Port”Adapter 是应用边界内的映射层;Port 是 Kernel 依赖的最小能力接口。首版 Port 不承诺分布式事务。
| Port | Kernel 使用 | Adapter/宿主责任 |
|---|---|---|
EventStorePort |
追加不可变事件、读取回放输入 | 持久化、并发条件写、备份和对账 |
AuditPort |
追加 Kernel 审计 | 审计存储、查询授权、保留与脱敏 |
PolicyPort |
获取结构化 allow/deny/mask/approval_required 结果 |
身份、组织角色、用途和应用授权判定 |
MessagePort |
发布已接受事件或受控异步任务 | 消息投递、重试、去重和死信处理 |
ClockPort |
提供可测试时间 | 生产时钟、时区和时间同步 |
提交顺序是 Kernel 内部原子状态、事件和 Kernel 审计;外部消息采用 outbox/受控任务、确认、重试、补偿和对账。外部失败不能伪装成已完成领域提交。
7. 权限、审计与 Agent Control
Section titled “7. 权限、审计与 Agent Control”权限结果由应用 PolicyPort 提供,Kernel 负责结构校验、绑定 actor_ref/purpose/资源范围、版本记录和执行门禁。结果只允许:
| decision | Kernel 行为 |
|---|---|
allow |
继续命令校验和提交 |
deny |
返回 rejected,不得写领域事件 |
mask |
仅允许策略声明的脱敏读取或受限动作 |
approval_required |
返回 pending_review,等待明确责任人批准 |
Agent Control 至少声明 agent_ref、capability、tool_ref、risk_class、capability_version、approval_owner、所需权限和降级动作。高风险工具没有有效批准不得执行;拒绝、超时和降级都必须审计。
每条审计至少记录 audit_id、command_id、actor、purpose、resource、decision、policy_version、result、occurred_at 和事件引用。审计只追加。
8. 幂等、冲突、回放与版本治理
Section titled “8. 幂等、冲突、回放与版本治理”- 同一
idempotency_key+ 同一request_hash:返回等价的原结果,不产生新事件; - 同一
idempotency_key+ 不同request_hash:返回conflict; expected_version与当前对象版本不一致:返回conflict;- 状态、事件、审计在同一 Kernel 提交边界中更新;失败不得留下半条记录;
unknown只表示提交确认丢失,必须通过幂等查询或对账恢复;- 事件使用记录时的
schema_version、rule_version和policy_version回放,不能用当前版本重算历史; - 旧事件只能在显式兼容转换器存在时迁移,原始版本和转换记录必须保留;
kernel.v0.x允许增加可选扩展,删除/改变必需字段或状态语义必须升级主版本。
性能边界:回放、证据遍历和批量处理必须支持页大小/事件深度、时间范围、内存预算和取消信号;首版内存实现仅作为参考实现,不宣称生产吞吐目标。
9. 双 Adapter 证明
Section titled “9. 双 Adapter 证明”一致性测试使用两个合成 Adapter:一个把扁平外部记录映射为 entity_key/state,另一个把嵌套记录映射为 record_key/lifecycle。测试只断言 Kernel 契约、事件、版本和审计,不读取任何应用业务字段。
合格标准:两个 Adapter 都能创建实体、声明身份、建立关系、登记事实和推断;同一组幂等、冲突、失效、回放、权限和 Agent Control 向量均得到相同 Kernel 语义。