Pre-alpha 文档
编译一个确定性 Graph。
使用 StateKnot 已实现的 Graph Compiler 校验有界拓扑,并冻结 Schema、Reducer、Limit 与 Canonical Digest。
运行持续维护的示例
Workspace 的 All-targets 门禁会编译这个示例。它声明 validate → finish,编译 Descriptor,并输出 Canonical Definition 的 SHA-256 Digest。
cargo run -p stateknot-core --example compiled_graph --locked
完整 Apache-2.0 示例位于
compiled_graph.rs。
编译会冻结哪些内容
-
Owner-qualified Identity
Graph Name 只在精确 Issuer/Subject Owner 和 Semantic Version 下唯一。Definition 发生任何变化都必须发布新版本。
-
Schema 与 Reducer Reference
Input、State、Update、Output 与 Reducer Implementation 都由 Digest 固定;运行时绝不会只根据名字猜测可执行代码。
-
有界拓扑
Entry Node、Successor、Route、最大并行度与最大 Superstep 都属于不可变 Definition。
-
Canonical Identity
Node 与 Route 按稳定顺序排列,序列化为 Canonical JSON 后计算摘要;Checkpoint 保存这个精确引用。
非法 Graph 会在 Admission 前失败
Compiler 会拒绝包括以下情况在内的无效定义:
- 重复 Node 或 Route Identity;
- 缺失的 Entry 或 Successor Node;
- 无法从任何 Entry 到达的 Node;
- 无法到达 Wait 或 Terminal Boundary 的路径;
- 超过 Graph Parallelism Limit 的 Ready Set;
- 超过 Node、Route 或 2 MiB Byte Ceiling 的 Definition。
只注册一次,按精确 Reference 恢复
Migration 13 使用 Tenant 加 Owner/Name/Version Key 保存 Canonical Compiled Definition。相同 Bytes 重复注册是幂等的;同一版本绑定另一 Digest 会产生冲突。恢复时会重新编译 Bytes,并在 Live Fence 下验证 Checkpoint Binding。
let registered = store
.register_graph_definition(tenant_id, graph)
.await?;
let pinned = recovery.load_pinned_graph().await?; Graph Evidence 缺失、被修改、跨 Tenant 或与 Checkpoint 不匹配时都会 Fail Closed。在 Claimed Recovery 中,完整性失败会进入与损坏 Checkpoint/Journal 相同的 Fence-bound Quarantine 路径。
从 Definition 进入执行
Pure Barrier Planner 已能验证完整 Result Coverage,以稳定 NodeId 顺序把 Update 交给精确固定的 Reducer,解析 Continue/Route/Wait/Terminal Control,并生成
Successor Checkpoint Intent。Runtime 现已把该 Definition 绑定到离线 Schema/Reducer/Node
可执行闭包,并驱动可恢复 Root Path。接下来阅读可恢复 Graph Runtime 指南,再阅读可恢复 Agent Loop 指南。有界
Journal-isolated Sibling 已能重叠执行并保持 Canonical
Commit;Loop、Subgraph 与稳定 Public Agent API 属于后续里程碑。