RFC-0003:Certificate Assurance、Checker Registry 与 Diagnostic vNext
状态:Proposed — 契约面已于 2026-09-08 退役,见 §0
文档版本:0.1.0
日期:2026-08-31
上位路线:Aira 长期架构计划 §3.6
机器证据:Certificate Assurance v0.1
0. 实施状态(2026-09-08 修订)
Section titled “0. 实施状态(2026-09-08 修订)”本 RFC 的设计仍然是 Aira 想要的边界划分,但它从未被实现,其提前写好的契约面已删除。
packages/aira-contracts 里的 certificate-assurance.schema.json、由它生成的类型、手写的
certificate-assurance.ts(702 行)与 diagnostic-sarif.ts(156 行)构成一座孤岛:四者互相引用,
包外零消费者。它们不是“暂时没接线”——从写下到删除,没有任何产品路径调用过 checker registry、
assurance 级别或 SARIF 投影。
删除的理由不是“没用到”,而是一份没人跑的契约会在无人察觉的情况下与真实行为漂移: 它不会失败,因为没有东西执行它;等到真要实现时,读它的人无法分辨哪些条款仍然成立。 设计记录(本文余下部分)保留,实现时按当时的事实重新落契约。
§2 的 Checker Registry、§3 的 precondition DAG 与 Diagnostic vNext 因此全部为未实现。
Aira 将“几何结果”“检查结论”和“指标可否发布”拆成三个边界:
- production adapter 产生事实与 witness;
- 带版本的 checker 对具名 claim 给出
pass | fail | unknown | notApplicable; - precondition DAG 决定指标是
available | qualified | suppressed。
Certificate Assurance 是绑定现有 Certificate 的内容寻址 sidecar,不替代 AMIR、Revision、ArtifactGraph 或
Geometry Certificate,也不进入它们的权威身份。当前 Geometry Certificate 0.2.0 保持不变;后续版本
治理再决定是否把 sidecar 合并进新的 Certificate major/minor 版本。
2. Checker Registry
Section titled “2. Checker Registry”每个 checker 必须锁定:
checkerId与checkerVersion;implementationClass = productionAdapter | independent;- execution target、determinism、最大 assurance;
- 支持的 claim kind 与固定
unknownPolicy = propagate。
调用节点必须精确匹配 registry 中的 ID 和版本。productionAdapter 的最大 assurance 只能是
kernelDerived;只有登记为 independent 的实现才能发出 independentlyVerified。registry snapshot 自身
带 canonical hash,因此 replay 不依赖运行时“当前安装的是哪个 checker”。
3. Precondition DAG 与指标发布
Section titled “3. Precondition DAG 与指标发布”检查节点只能依赖其他检查节点,依赖必须存在且图必须无环。非 passing 前置条件必须向下传播:后继检查
只能成为 unknown/notApplicable,依赖它的指标必须 suppressed 且不得携带数值。
所有前置条件通过后:
available只允许用于independentlyVerified指标;- kernel/adapter 自产指标必须标记
qualified; suppressed不得保留 value;- scalar 使用 canonical decimal,count 使用安全整数,bounds 使用 canonical decimal 三元组。
这条规则禁止“Manifold 返回 NoError,所以 volume 就是独立验证事实”一类自签。Certificate 的
decision 与 assuranceProfile 都由图导出,调用方不能任意填写。
4. Diagnostic vNext
Section titled “4. Diagnostic vNext”Diagnostic vNext 使用稳定 code/message key,而非自由错误字符串,并包含:
- cause category、phase、subjects 与 typed locations;
- typed
expected/actual; - 可计算的有限 candidates;
- repair capability、bindings、effect scope、用户批准边界;
machineApplicable | maybeIncorrect | hasPlaceholders | unspecifiedapplicability。
userHead 或 external repair 必须显式 requiresUserApproval = true。Diagnostic 只描述可用修复,不能
签发 grant,也不能绕过 Meta-operation Contract。
5. SARIF profile
Section titled “5. SARIF profile”projectDiagnosticsToSarif 提供确定性的 SARIF 2.1.0 投影。Aira code 成为 SARIF rule ID,message key
保留为可本地化标识,candidates、repairs、typed values 和权限字段原样进入 Aira property bag。SARIF 是
互操作视图,不是执行协议;导入 SARIF 不能授予 repair 权限。
6. 当前产品映射
Section titled “6. 当前产品映射”浏览器 Manifold worker 现登记 aira.manifold-browser.kernel-status-metrics@0.1.0:
- 3 个检查节点:valid solid、manifold、watertight;
- 6 个指标节点:bounds、surface area、tolerance、triangle count、vertex count、volume;
- 所有指标依赖上述三个检查并以
qualified/kernelDerived发布; - assurance sidecar 通过 worker response 进入浏览器 session,cache 命中时从冻结 Certificate 确定性重建。
这不是 independent checker。field spike checkers 仍未注册到 production registry, 也没有因此启用 ExactSolid、Field、GPU 或 provider。
7. 版本与接受条件
Section titled “7. 版本与接受条件”v0.1 的 schema、registry、graph、Diagnostic 和 SARIF profile 分别独立版本化;所有 hash 使用严格
canonical JSON,拒绝非有限数、-0、非安全整数和 lone surrogate。
本 RFC 进入 Accepted 前至少还需:
- 版本命名空间治理完成,并裁决 sidecar 与下一版 Certificate 的关系;
- 至少一个工业高风险 claim 接入真正独立 checker,并通过 fault/mutation corpus;
- Query Compiler 与 export RFC 使用同一 checker/precondition 语义;
- browser/server replay fixture 证明 registry snapshot、DAG 与 SARIF 投影跨环境一致。
当前 v0.1 工程 Gate 已验证,但 RFC 整体仍为 Proposed。