跳转到内容

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

本 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 将“几何结果”“检查结论”和“指标可否发布”拆成三个边界:

  1. production adapter 产生事实与 witness;
  2. 带版本的 checker 对具名 claim 给出 pass | fail | unknown | notApplicable;
  3. precondition DAG 决定指标是 available | qualified | suppressed。

Certificate Assurance 是绑定现有 Certificate 的内容寻址 sidecar,不替代 AMIR、Revision、ArtifactGraph 或 Geometry Certificate,也不进入它们的权威身份。当前 Geometry Certificate 0.2.0 保持不变;后续版本 治理再决定是否把 sidecar 合并进新的 Certificate major/minor 版本。

每个 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”。

检查节点只能依赖其他检查节点,依赖必须存在且图必须无环。非 passing 前置条件必须向下传播:后继检查 只能成为 unknown/notApplicable,依赖它的指标必须 suppressed 且不得携带数值。

所有前置条件通过后:

  • available 只允许用于 independentlyVerified 指标;
  • kernel/adapter 自产指标必须标记 qualified;
  • suppressed 不得保留 value;
  • scalar 使用 canonical decimal,count 使用安全整数,bounds 使用 canonical decimal 三元组。

这条规则禁止“Manifold 返回 NoError,所以 volume 就是独立验证事实”一类自签。Certificate 的 decision 与 assuranceProfile 都由图导出,调用方不能任意填写。

Diagnostic vNext 使用稳定 code/message key,而非自由错误字符串,并包含:

  • cause category、phase、subjects 与 typed locations;
  • typed expected/actual;
  • 可计算的有限 candidates;
  • repair capability、bindings、effect scope、用户批准边界;
  • machineApplicable | maybeIncorrect | hasPlaceholders | unspecified applicability。

userHead 或 external repair 必须显式 requiresUserApproval = true。Diagnostic 只描述可用修复,不能 签发 grant,也不能绕过 Meta-operation Contract。

projectDiagnosticsToSarif 提供确定性的 SARIF 2.1.0 投影。Aira code 成为 SARIF rule ID,message key 保留为可本地化标识,candidates、repairs、typed values 和权限字段原样进入 Aira property bag。SARIF 是 互操作视图,不是执行协议;导入 SARIF 不能授予 repair 权限。

浏览器 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。

v0.1 的 schema、registry、graph、Diagnostic 和 SARIF profile 分别独立版本化;所有 hash 使用严格 canonical JSON,拒绝非有限数、-0、非安全整数和 lone surrogate。

本 RFC 进入 Accepted 前至少还需:

  1. 版本命名空间治理完成,并裁决 sidecar 与下一版 Certificate 的关系;
  2. 至少一个工业高风险 claim 接入真正独立 checker,并通过 fault/mutation corpus;
  3. Query Compiler 与 export RFC 使用同一 checker/precondition 语义;
  4. browser/server replay fixture 证明 registry snapshot、DAG 与 SARIF 投影跨环境一致。

当前 v0.1 工程 Gate 已验证,但 RFC 整体仍为 Proposed。