架构
本文描述的是开发预览版架构,不是已发布产品。当前认知包输入只有 manifest v3、catalog v3、receipt v6、plan v4、host protocol v6、managed scope v2 和 manager tools v5。
Host protocol v6 独立绑定 User/Workspace kind 与 textual scope ID,并将 package observation 与精确 operation observation、revision-based watch、显式用户 pre-admission cancellation 分开。这些 projection 只使用 Use 持有的持久化证据, 不会建立第二套 lifecycle state machine。
A1 验收矩阵让 User 与 Workspace manager 在同一个 Artifact Store 和相同文本 scope ID 上并存。同一个已签名 OKF package 在两个安装中分别完成 apply、restart、 精确 snapshot、leased query、upgrade、uninstall 与终态重放。任一操作都保持另一 安装的 cursor 不变,并确保其已接纳 generation lease 仍可调用:共享不可变字节只是 优化,绝不是 lifecycle 或 invocation authority。
Use 已在该 Host protocol 之上实现类型化 PluginManagerService。标准 MCP
adapter 只暴露冻结的 13 个 v5 tool,并把每个 operation 委托给同一 service。
Apply 与 cancellation 会重开持久证据,再向注入的可信 host provider 请求已有
confirmation;Agent tool call 不会被当成用户确认。standalone CLI 中由 Registry 驱动的
install、upgrade 与 uninstall 已改用该 service,并在保留现有 JSON 字段的同时
返回精确 Host plan/apply result。standalone plugin CLI 已把 13 个 manager
operation 全部映射到同一 service,直接返回精确 typed result,planning 保持
只读,apply 与 cancellation 必须同时提供持久 operation ID、plan digest 与显式
--yes。普通
CLI 或 Agent 调用不会隐含 confirmation。A3S Code TUI 与 Code 侧 manager MCP
组合现已复用同一个 service,因此 CLI、TUI 与 manager endpoint 共享同一套
operation identity 和 confirmation 边界。
manager MCP adapter 还会在边界处把内部 UseError 投影为不含 secret 的公开
错误契约(PR #197)。跨边界只保留
经过校验的 use.* code 与有界公开 message;路径、URL、suggestion、details、
provider 私有标识及 package 自带诊断会被移除,或收敛为通用 code。PR
#199 增加了 embedding Gateway
路径:它会获取精确的 CapabilitySnapshotLease,并在 server clone 与 call
期间持续持有该 lease。PR #200 将
catalog 的 publication generation 与 descriptor 所属 package lifecycle
generation 分离,使同一个 immutable publication 可以安全包含独立升级的
package,同时禁止同一 surface 的两个 lifecycle incarnation。PR
#202 为 Gateway call 和标准
Streamable HTTP /mcp 增加由宿主配置的有界 admission。PR
#203 又增加 constant-time bearer
credential、重复 header 拒绝、可选的精确 Origin 检查(原生 client 可以省略
Origin)、WWW-Authenticate/Retry-After 响应,以及真正的 rmcp 独立
client discovery/invocation 测试。HTTP transport 不负责 TLS;宿主必须绑定
loopback 或放在可信 TLS reverse proxy 后。CapabilityGatewayHttpConfig::for_principals
现在支持最多 64 项、不可变的 token→principal 映射;认证会扫描完整集合而不提前
退出,拒绝重复 token,只把选中的类型化 principal 传给 provider hook。该值不会
序列化到 MCP discovery 或 result。live-host reference resolution、CLI 接线及独立
client/recovery 矩阵仍未完成。
注入的 invocation provider 同时也是 authorization seam。它的必需
authorize hook 会在已校验发布的 input schema 之后、任何 provider effect
之前运行;拒绝时只返回有界的
use.plugin.capability_gateway_forbidden,不会调用 invoke。宿主应将一个
provider 实例绑定到已认证 principal,并把 principal、Grant 和 scope policy
保留在 provider 内部。不存在隐式 allow;即使是 contract-only provider 也
必须显式声明策略。该 hook 不替代生产 receipt/Runtime/Grant 组合。
live resolver seam 现在是显式的:CapabilityGatewayInvocationResolver 将一个
catalog descriptor 映射为私有 CapabilityGatewayInvocationLease,而
CapabilityGatewayResolvedProvider 校验精确 opaque reference,只授权一次,并在
调用期间保留该 handle。生产宿主仍需组合 receipt、Runtime、Grant 与多 principal
authority;这个 seam 本身不会授予访问权限。
Embedding host 现在可以通过一个 immutable CapabilityRegistrySnapshot 生成
Gateway catalog,使用 CapabilityRegistrySnapshot::capability_gateway_catalog
在组装前重新校验 snapshot cursor、package/manifest digest、已审核的 publication
evidence、selected surface 以及 ready/enabled binding。宿主可以针对每个消费者只暴露
获授权的 subset,但该辅助方法不会凭空创建不在已审核 publication 中的 package 或
surface。签名验证和 opaque reference 解析仍由宿主负责;对应的
CapabilityGatewayMcpServer::from_registry_snapshot 只在 projection 成功后获取匹配的
RAII lease,如果 publication 已变化或 package 正在 draining 则不提供 server。
对于已经完成签名 description 验证的 live host,推荐使用
CapabilityGatewayMcpServer::from_verified_registry_snapshot_with_factory_and_options。
它从同一个 snapshot 生成 verified catalog,将 resolver 绑定到同一 cursor,获取
精确的 server lease,并一起保留 consumer negotiation 与有界 admission policy。
如果 publication 在获取期间发生竞争则返回空结果。注入的 factory 仍负责 receipt、
Runtime、Grant、principal 与 scope authorization。
Embedding 边界现在也会保留类型化 consumer 决策。CapabilityConsumerProfile
区分默认 generic-mcp client 与显式 a3s client;
CapabilityConsumerNegotiation 在宿主不支持请求的 Flow、Knowledge 或 UI label
时直接拒绝,不会静默丢弃。canonical negotiation 与 digest 会在 Gateway clone
和 snapshot lease 中保持一致。这些 label 是 metadata 而不是 grant:当前标准 MCP
adapter 仍只发布通过 schema 校验的 Tool,profile-aware resource/prompt 与生产宿主
组合仍未完成。
目标架构把包管理、工作负载调度与宿主渲染分开。最重要的约束是:CLI、TUI 和 Agent 管理 MCP 必须调用同一个 Plugin Manager,不得各自实现生命周期。
所有权
单一事实来源
当前实现应复用下列现有模块:
a3s-use-core:canonical package/plugin、dependency resolver/lock、catalog、plan、permission、grant、release 和 OKF bundle contract;a3s-use-extension:ACL manifest、package-graph Registry resolution/download、TUF catalog、package store、receipt、lease 和 workspace grant;src/plugin_lifecycle:canonical package 与 package-graph intent、依赖顺序、durable journal、coordinator,以及类型化 Tool/MCP/OKF/Flow/Skill/UI host;src/plugin_runtime:Runtime selection、binding、receipt、invocation 与 observation;src/surface_reconciler+src/capability_registry:依赖 readiness 和 capability publication;src/plugin_manager:production Host Manager 之上的共享类型化 application service 与标准 manager MCP adapter;standalone Registry compatibility mutation、完整 13-operationpluginCLI、A3S Code TUI 与 Code 侧 manager MCP 组合均使用该 service。adapter 只投影有界且不含 secret 的 manager 错误 契约;host lifecycle lease 与 endpoint authorization 仍保持独立。
不得新增第二个 manager、grant store、Runtime selector、capability registry 或 generic execution protocol。
UsePaths 持有唯一的进程级 Artifact Store。已验证的 archive、executable
planning target、presentation media 与 expanded package tree 都按 SHA-256
分片存放,不携带 Registry source 或 installation authority。Registry datastore
只保留 canonical source observation 与 resumable partial;installation snapshot
保留 selection 与 lifecycle authority。Source prune 与 scoped uninstall 永不删除
全局字节。Runtime plan payload 会在安装级 maintenance fence 与 plan-store lock 下解码,
其引用的 Blob 会继续计入 reachability。跨 source reachability、hard quota admission 与无路径只读 digest audit
已覆盖两个物理层。Exact-plan 逻辑隔离会重新审计完整 mismatch,发布 canonical
no-clobber marker,保留原始字节并阻止新的普通访问;隔离 marker 本身不授予恢复
或删除权限。Verified rehydration 现通过 ArtifactStoreMaintenance 独立执行:同一
collection guard 覆盖新的全局零持久引用证明、独立候选验证、精确无路径审查、
quota-aware staging 与 prepared/completed 崩溃恢复。完成态的精确重放是只读的,
不再依赖外部候选,也不要求完成后新增的引用再次退出。Confirmed GC 已作为另一项
ArtifactStoreMaintenance 操作实现。其有界策略只显式列出精确 Blob 或
expanded-package digest,不存在自动 sweep。规划与非终态 apply 在同一个全局
collection guard 下完成新的全 owner 零引用证明和精确物理/lifecycle 审查;apply
必须匹配已确认的 canonical plan digest,先持久化 admission 栅栏,再在同一分片
原子退休容器,并且只删除通过有界 no-link 校验的 tombstone。中断状态会阻止新引用,
并只恢复原目标集合;完成态重放只读,predecessor 链会区分后来复用同一 digest 的对象。
包依赖边界
Schema-v3 package 只声明 package ID 与 SemVer range;enabled 具名 Registry set 归宿主持有。standalone host 把它持久化为 canonical ACL,authority change 必须 针对 reviewed revision 做 compare-and-swap,并按精确 source identity 隔离 TUF/cache state。解析过程有界且确定,遇到跨 Registry 歧义会拒绝,并生成 canonical lock,绑定精确版本、内容摘要、宿主兼容性、Registry URL/trust root 与 TUF role version。
Operation plan 绑定该 lock。Apply 在下载 payload 前重验完整闭包,然后先准备依赖、后准备依赖者。只有已在当前 snapshot 可见的精确 locked generation 才能作为 retained dependency 复用。所有变更包通过一个 immutable snapshot 一次切换;卸载按反向顺序执行,并拒绝移除仍有已安装依赖者的包。
Host-owned Runtime Broker
包可以声明 workload 需求,但不能选择 provider。宿主提供显式 RuntimeClientRegistry 和 assignment,Planner 执行两次确定性选择:
- 在下载 archive 前,用签名 planning target 检查是否存在兼容 provider。
- grant proposal 固定后,用相同 provider/build/capability evidence 完成最终语义选择。
任何阶段没有满足要求的 provider 都 fail closed,不得回退到 native execution 或另一个 provider。该边界已由 ADR-001 冻结。
为什么使用 Saga
包存储、workspace grant、Runtime、Gateway、projection 和 capability publication 不共享数据库事务。因此完整 apply 是 durable、idempotent 的 parent saga:
每个 checkpoint 的 idempotency key 都绑定 plan、精确 installation、package generation、action、sequence、kind 与 surface;同一 graph 的不同 package,以及不同 scope kind 下相同文本 ID 都不会发生别名。崩溃恢复从 durable intent 和最后成功 checkpoint 继续;重复 apply 返回同一 terminal result,不重复副作用。
当前 crate 内基础已在每个 package-owned surface graph 之上实现 package-lock graph:
Runtime Tool/MCP、immutable Flow/Skill/UI evidence 与 OKF Knowledge adapter 已实现。standalone host 还提供 bundled SQLite/FTS5 后端,具备完整 User/Workspace 隔离、事务化 generation cutover、精确 projection 授权搜索,以及 concept/source-digest citation。P0 schema-v3 package/capability host 可把已验证 generation 提交为 installed-disabled,发布或隐藏 exact-generation snapshot,排空 generation lease,并只移除 receipt-owned root。依赖基础又增加了精确 retained-node 校验、crash-safe 原子图发布、durable admission/lock record,以及 partial install/uninstall 后的 journal recovery;signed remote standalone CLI 已使用该图。A3S Code 的 Plugin Manager 现已通过 public lifecycle factory 组合 executable Tool Task、stdio MCP、真实 A3S Flow preflight host、Skill 与 UI;CLI 与 TUI 共用一个 watcher 并热插拔精确 generation。A3S Code 托管的 Knowledge Workspace/session carrier、Runtime Service/Gateway 组合、持久 Flow run routing 与旧 Runtime generation 退休仍在进行,因此该基础不代表完整 production saga 已交付。
Embedding host 实现 CognitivePackageLifecycleFactory,提供精确的 Runtime、Gateway、A3S Flow、Skill/UI 与 A3S Knowledge adapter,并复用 Use 的 resolver、graph journal 和 capability cutover,而不是创建另一个 package manager。standalone factory 支持 executable Task、stdio MCP、immutable Skill/UI projection 与本地 SQLite/FTS5 OKF Knowledge;必需的 Service、HTTP MCP 或 Flow owner 未注入时,会在发布前失败。Code 会显式注入 Flow host,但这不会为其他 embedding 创建 fallback。
ADR-002 冻结了该生命周期边界。
ADR-003 冻结了下一阶段的 Control Store 边界:每个安装只有一个可变权威,不允许 JSON/SQLite 双写,并通过 outbox 隔离无法加入本地事务的 provider 副作用。
未启用的 schema-v11 内核现已从 reviewed Plan 与已提交 generation 推导完整 outbox
inventory:依赖 surface 先于 dependant 准备,只切换一次 capability,随后排空已接受调用,
再通过类型化 owner 反向退休 surface。Tool 与 MCP effect 绑定精确的 reviewed Runtime
selection;package state、Grant、lifecycle identity 与 provider selection 继续留在聚合事务内,
不会成为重复 effect。Applied outcome 会持久化规范化、owner-specific 的 Capability Index 及其不可变 Agent catalog 绑定、
invocation lease、Runtime Task/不透明 Service readiness、Flow artifact、Knowledge projection
或 Skill/UI content evidence。记录 applied cutover observation 的事务会在 drain 之前原子推进
publication 及 catalog 身份;之后的必需 effect 失败会保留为使用相同 key 显式 reconciliation 的 pending 状态,
而不会回滚已可见 generation。未启用的单 effect dispatcher 现在会在 claim → owner I/O → observation
全过程持有 installation 级共享 maintenance fence,然后提交 claim,并在 owner I/O 前释放 SQLite 事务与有界
executor,再把精确 identity 路由到彼此独立的 Capability Index、invocation lease、
Runtime、Flow、Knowledge、Skill 或 UI 端口,并在之后记录 applied、deferred、rejected 或 unknown observation。
Deferred 只用于 owner 已证明未接受任何 effect 的结果;有界、持久化的 not-before 时间会阻止提前 claim,
并在到期后允许自动复用原 key。Provider timeout 必须在 claim lease 内保留固定的 observation 预算并作为 unknown evidence。
超时或调用方取消只会停止等待,不会取消可能已被接受的 owner task;该 task 会继续持有同一个共享
maintenance guard,直到自身真正结束。可能已产生 effect 后的进程退出、过期 claim 与含糊结果都必须显式重放已提交 key。生产 lifecycle
仍不会构造它。首个真实的 post-commit adapter 现已覆盖 immutable Skill/UI preparation:它会从
owner-shaped committed request 重新派生 typed owner 与原始 idempotency key,通过 verified Artifact
Store lease 获取精确 package,在不暴露 package root 的情况下读取一个 named surface,并在读取后
重新验证完整 package。它生成的无路径 receipt 不受重试 attempt/deadline 影响;contention 会成为可自动
复用同一 key 的安全 deferred,篡改、缺失或 authority 替换会成为已证明无副作用的 rejected,这个
只读 adapter 不会产生 unknown acceptance。Static stop/remove 仅生成与路径无关的 projection receipt。
第二个真实 adapter 现已覆盖 OKF Knowledge。首次 prepare 只读取经过完整验证的无路径 Artifact 字节,
先持久化 staged receipt 再 promote,并在报告 applied 前持久化 promoted evidence;已有 promoted receipt
无需再次访问 Artifact。外部 effect 前的 contention 可安全 deferred;authority 或字节漂移会 rejected;
stage、promote、remove 或 effect 后 receipt 写入的歧义都保持 unknown,并要求显式复用同一 key 进行
reconciliation。Stop 不修改 Knowledge payload,remove 只使用保留 receipt。真实 SQLite 组合测试已覆盖
已提交 claim、dispatcher、Knowledge materialization 与持久化 Control observation。独立 Artifact admission
具备幂等性,不创建 lifecycle authority,并让 reference guard 跨越单独的 Control commit。Capability Index
与 invocation lease 现在由第三个真实的 Capability Plane adapter 共同实现。它先调用 host-owned 的纯 Agent catalog projector,拒绝不属于 enabled 且已准备 surface incarnation 的 descriptor,再根据已提交
candidate 与精确的终态 surface evidence 生成包含 catalog 身份的规范、内容寻址 Index document,不增加第二个 SQLite 或
mutable current 文件;Control 中 applied cutover observation 是唯一 publication cursor,并在同一事务绑定 catalog 身份。Admission 会在取得
每个精确 package lifecycle incarnation 的共享锁前后各读取一次该 cursor;drain 仅允许已经不再发布的旧
incarnation 取得排他锁,并在 accepted call 仍活跃时安全 deferred。No-follow、no-replace 发布与精确 staging
重放保护 immutable catalog/Index。Index 与 lease 文件都是不进入备份的派生 operational state;coordinated legacy inventory 现在会把 catalog 与 descriptor-snapshot 记录作为一个严格的 CapabilityPayloads family 做规范与内容寻址校验。生产 owner-registry cutover、clean-target activation 与 retention coordination 仍是独立 gate。该边界的严格 descriptor projector 只接受经过 host 验证的
CapabilityDescriptionProof 与 package-scoped signer allowlist,并在派生 opaque route identity 前核对精确 catalog provenance、dependency closure、prepared owner evidence、active Grant 与 reviewed Tool/MCP shape。
它是无副作用的 subset projection;key custody 仍是独立的 activation gate。安装级 durable
descriptor snapshot store 现在会把精确规范化 proof set 与 signer policy 绑定到 Control candidate
identity,以 snapshot canonical bytes 做内容寻址,使用有界 no-follow staging、no-clobber 发布和
重启时的 canonical/digest 复验。缺失证据会安全 deferred,替换、重复 key 或篡改会 fail closed。
coordinated backup 会校验并归档该 canonical record,但该 store 仍是面向生产 Control wiring 的未激活 external owner;Runtime Tool release 的
schema 现在会沿未激活 Runtime/Control 路径携带规范化 digest attestation;key custody、owner-native clean-target restore/retention 与生产
Control/Runtime wiring 仍未完成。真实组合测试已经覆盖 Knowledge、Skill、catalog/Index cutover、stale admission 与
同一 key 的 drain 重试。非激活 Runtime owner 现在已完成 release-backed Tool Task/Service 与 Streamable
HTTP MCP 验收。首次 prepare 只消费无路径、已验证的 release payload,把完整 plan semantics 绑定到已提交
provider evidence,持久化单调 Runtime/Gateway recovery state,并在不依赖 Artifact 路径的情况下重放或退休
精确最终 receipt。外部或持久化 effect 后的任何歧义都保持 unknown。Runtime 现在提供有界、规范化的
RuntimeSurfacePlan payload 与重启安全 resolver,可以从已提交 semantics digest 重建完整计划并重新校验
精确 provider evidence。安装级、宿主拥有的 RuntimeSurfacePlanStore 现已作为该 payload 的验收来源:
它使用规范 digest 寻址、有界批量发布、no-clobber 写入、可重启读取,并在篡改时 fail closed。
它只拥有 payload 字节,不拥有 desired state;生命周期转换必须先发布精确的新 plan,再提交引用这些 plan
的 Control effect。Runtime/Flow 生产 composition 仍必须把该 source 与原子的 dispatcher 绑定到 committed
Control authority;验收使用的进程内 Runtime selection 不是生产权威。当前资格组合还提供唯一的
reviewed-operation-only 内部入口:Control 从持久化 operation 投影 graph、Grant、provider、capability
和 effect 字段,校验精确的 Runtime prepare 覆盖与 reviewed Grant proposal digest,然后在同一个安装级
共享 maintenance fence 下先发布 immutable plan 字节,再提交投影后的 generation。这只是 cutover
验证,不是 public API,也尚未接入生产 lifecycle。
私有的无路径 registry 还冻结了六个外部 payload owner ID 与精确
ACL backup policy:全局 Artifact Store 被明确排除,另外五个 owner 必须生成完整、绑定 generation、
且具有 schema、digest 与计数上限的规范 receipt 集。私有 snapshot session 现在会在同一个排他
maintenance fence 下冻结规范 Control export 及其 digest,同时不会让数据库事务跨越 owner I/O。
Knowledge owner 是首个已验收 adapter:它可以生成并离线复验有界 OKF SQLite/FTS5 archive 与规范的
binding/selection inventory;数据库缺失时则记录零文件 manifest,且不创建 live state。实时 snapshot
创建与离线验证都会要求 binding 指定的精确 Control export。每个保留的 Knowledge incarnation 必须关联
其原始 prepare intent 与已提交 OKF bundle;applied observation/projection evidence 必须一致,而已删除或
缺失的 applied payload 必须存在对应 remove effect。Deferred outcome 只保留为 safe-no-effect 调度证据;
claimed 与 unknown outcome 只保留为 reconciliation evidence,三者都不能选择 desired state。Runtime plan
owner 是第五个被快照的 owner:它捕获安装级不可变 plan envelope,验证完整 key/plan 绑定,在 Host
projection 激活前恢复 plan,并把引用的 Runtime blob digest 纳入 installation artifact reachability。
离线验证通过的 Knowledge snapshot 现在可以把精确数据库暂存到
clean target 的 state root 下,且不修改 live payload。激活必须持有该 target 的排他 maintenance fence,
重新审计数据库与 inventory,拒绝非 owner、已有或含糊状态,并通过一次原子 rename 发布无路径结果;
仅在保留同一个 staged attempt 与 fence 时,重试才是幂等的。planning-and-diagnostic observation owner
是第二个具体 snapshot adapter。它复用各认知 store 自己的 validator,只归档终态 diagnostic history 与
终态 resolution attempt。活跃 resolution/download attempt 与 lock 不进入 restore authority,但其规范化
数量和 path/digest inventory 仍绑定在 manifest 中。有界 no-follow 遍历、重复检查、发布前二次扫描、
no-clobber 发布与离线验证会拒绝漂移、替换、外来记录、未知布局和尾随字节。其无路径 receipt 绑定精确
Control export。通过离线验证的 archive 现在可以暂存到 target state root 下,而不触碰 live owner path。
首次激活必须持有精确的排他 maintenance fence,并面对干净的 record inventory;随后先原子标记 archive
为 activating,再逐条 no-clobber 发布。以 digest 命名的确定性 partial 支持中断恢复;激活开始后只接受
snapshot 的精确子集,结果仍不包含路径。Host protocol projection 是第三个具体 snapshot 与 clean-target
restore adapter。其 owner-native scanner 只归档不可变的 request-to-plan record、可选 outcome 和规范
cancellation。Operation alias 与 latest-enablement diagnostic 是派生 index:它们必须与源 request 一致,
但永不进入 archive。有界 no-follow 遍历、发布前二次扫描、no-clobber 发布与离线 owner decoding 会拒绝
漂移和替换。发布前,Host Plan、完成/取消证据、desired package state、所选 surface,以及
package/capability generation 必须与精确绑定的 Control export 一致;Host receipt 与 health 字段仍然只是
observation。无路径 manifest 也会保留 no-change request,而不会虚构 operation。通过离线验证的 snapshot
可以暂存一份私有 archive 副本,并用精确源字节与重新推导的规范 index 构造完整的 target-local Host root;
legacy alias 与 lock 不会被恢复。激活要求精确的排他 maintenance fence 且 live owner root 不存在,持久化
绑定 snapshot 的 marker,重新验证完整树与 owner-native 语义扫描,再通过一次原子 no-clobber directory
move 发布整个 root。确定性的 archive、record 与 marker partial,加上发布后的精确 replay,覆盖每个本地
崩溃边界。Restore Coordinator 现在是第四个具体 snapshot owner。其 owner-native journal decoder 只归档
属于绑定 installation、规范编码且已完成的 operation。Active marker 与对应 operation 不进入 payload
authority,但两者的有界数量和 digest inventory 会绑定到 manifest,marker-only handoff 也会被精确表达。
孤儿 nonterminal operation、pruning 或 temporary 残留、未知布局、link、外来 installation history 与
path/record rebinding 都会 fail closed。No-clobber 发布前会执行第二次扫描;流式离线 verifier 把精确终态
字节和无路径 receipt 绑定到 Control export。空历史或仅 active 的历史不会创建 archive。其 self-hosted
restore adapter 要求精确的排他 fence 与 active marker,保留该 marker 和可能存在的当前 operation,只替换
终态历史,并在持久化 activation evidence 中绑定精确 before/source/target inventory。Replay 允许被保留
operation 的状态前进,但会拒绝 marker、candidate、retired record 或 publication partial 漂移。达到原生
64-record 上限时,legacy whole-installation marker 会预留一个未来终态槽位;typed complete-set marker 没有
对应 operation,因此保留全部 64 条源记录。
私有 complete-set snapshot coordinator 现在会在同一个 maintenance fence 和 timestamp 下捕获规范 Control
export 与全部五个已注册 owner snapshot。一个无路径的规范 manifest 绑定固定 owner registry、receipt、schema、
digest 和字节账目。Coordinator 按固定协议顺序把内容流式写入位于所有 Use data/state root 之外的单文件
archive,复用每个 owner-native offline verifier,并仅以 no-clobber 方式发布通过完整审计的文件。Absent owner
不会增加虚构 payload 字节,全局 Artifact Store 继续排除在外。这些路径仍是未启用的 qualification code。
通过验证的聚合现在可以保留目标的精确排他 fence,并在固定 .control-installation-restore 目录下暂存
Control 数据库和全部五个 owner candidate。无路径 descriptor 会先绑定 snapshot、installation、owner
registry、Knowledge policy 与固定六组件 set。Control 会被 checkpoint 为单一文件,按规范 export
往返复验并绑定物理摘要;外部 candidate 在同一 guard 下复用 owner-native 校验。整个过程不修改任何 live
authority 路径。精确重试和中断的 Control 构建可以恢复;被污染的 target、link、未知 entry、重绑定与
candidate 漂移都会 fail closed。完整激活会在持久化顶层 intent 前预检全部 owner。不可变 attempt 仍是
restore identity;activation.json 是唯一可变的有序 journal,typed 全局 .maintenance.restore.json
marker 绑定同一个不可变 operation,并持续阻止普通共享访问。固定 owner 顺序是 Control Store、Runtime
plans、Host projection、Knowledge、observations、Restore Coordinator;每一步都遵循 journal、marker、owner effect、
checkpoint。每个 checkpoint 通过字节数与 domain-separated digest 绑定规范的无路径结果;Coordinator owner
还会在修改历史前验证精确 marker 字节、长度与摘要。Reopen 会重新取得精确 fence,绑定相同 verified
snapshot、attempt、registry 与 policy,并重建或验证每个 candidate/live 边界。Journal/marker partial、六个
effect 后 checkpoint 前边界、marker 退休前的最终 checkpoint,以及 marker 删除和六个暂存树按固定顺序
退休后的进程退出都能收敛。只有完整六 checkpoint journal 才允许 marker 缺失;乱序 live root、含糊
marker、link、重绑定和 evidence 漂移都会 fail closed。完成态 replay 不再执行 owner effect,只能恢复六个
无 link 暂存树的有界固定顺序退休。21 个真实子进程退出边界覆盖顶层协议和每个退休边界。最终保留的规范
attempt.json 与完整 activation.json 构成精确绑定 installation 的终态收据。旧 backup 和 artifact
reachability 只排除这两个文件;不完整、扩展、含 link 或被篡改的 evidence 都会 fail closed。生产
backup/restore 接线与所有消费者的协调权威切换完成前,该内核仍保持禁用。
运行时可见性
Surface Reconciler 观察 desired state、generation receipt、grant、binding、Runtime/Gateway health、A3S Flow observation,以及 Skill/UI/OKF projection。OKF 使用独立的 Knowledge-host owner:缺失为 pending,staged 不发布,只有精确 promoted evidence 才是 healthy。只有完整 evidence 对同一 publication generation 一致时,Capability Registry 才发布新 snapshot。常驻宿主可通过 publication generation + revision long-poll watch 热更新,无需重启;每个 descriptor 仍携带其所属 package lifecycle generation。
Flow 只有一个引擎身份。Native TypeScript 是执行适配器,flow.json 是可视化设计/部署文档,Code 是本地宿主,OS 是远程目标。这些路径不能创建并行 package receipt 或 lifecycle journal。
OKF 的宿主边界与 Runtime 不同:它不运行进程。Use 验证并记录精确 package generation;Knowledge host 负责合规检查后的原子 promotion、索引与带引用检索。失败的新 OKF generation 不得替换最后一个可搜索 generation。新发布 snapshot 选择 N+1,正在运行且持有精确 N projection 的 session 可继续查询,直到 receipt-owned retirement 移除 N。
详细设计见 Plugin Platform Architecture。