跳转到内容

AMIR 现状审计:规范声称什么、实现承担什么、差在哪

状态:Research Note 版本:0.1.0 日期:2026-09-08 研究问题:AMIR v0.1 规范逐节声称的能力,在当前实现里有多少真在承担?落差在哪?每一项该保留、该补、该在规范里降级,还是该合并删除? 起因:标准件 MVP 暴露出参数系统缺可变符号类型(整合基底 §11),追问之下需要一份对全规范的实证核对。 证据来源:packages/aira-contracts/schema、fixtures、crates/aira-core/src、third_party/maintained/replicad/src/aira、apps/web/src;全部为当前工作树实测,不依赖文档自述。 后续处置(2026-09-08):0.1–0.3 兼容线、0.1/0.2 接口线与 13 版目录历史已全部删除,0.4 schema 不再由 0.2 派生; 详见提交 be4a15c、9106b3a、c50735e、7501281。§7 表中合并或删一项已完成。 处置:§7 的判定已于 2026-09-08 写入规范(定位 §0、状态标记、§5.1.1、§6.1 计划、§10.3、§18–§20),README 与宪法定义同步。本文保留为证据,不再是待办。 后续收敛:表中的 Field 两版实现已合并至 field-ir.ts 与 field-artifact-graph.ts,旧 Lane F 样例目录已删除;表内路径保留为审计时证据,当前实现及验收见工作进度 §7.1。 后续收敛:当前事务内核已删除 RevisionMigrationRecord、迁移 actor、单实现版本泛型与测试提交通道;修订身份仅由七项当前字段生成,旧修订格式明确拒绝。§4.5 的迁移槽位是历史发现,不是当前能力或待实现目标;规范 §14–§16 已同步当前边界。 后续收敛:§5.1 的兼容占位保留建议已被用户明确否决;文档级三个恒空字段及其 modelHash 槽、无人调用的旧版 model hash 入口已删除。约束和语义引用继续由现行节点负责;本文原判断仅保留为历史证据。

  1. AMIR 的核心职责在工作,而且是实打实的:身份(canonical hash)、事务(10 态状态机 + 幂等 + CAS)、 选择稳定性(SemanticRef 选择器)、编辑守恒(affects 声明 + 实测拒绝)。这四件事 Replicad 与 AI 都给不了, 也是“连续编辑”能成立的全部前提。[实测]
  2. 规范与实现版本已脱节三个 minor:规范停在 0.1.4(2026-08-30,Draft),实现 amirVersion 常量是 0.4.0, exact 能力目录已迭代到 0.4.12。docs/specs 下五份规范全部还是 v0.1。[实测]
  3. 规范 §18 的 39 个 operation 里,产品路径真正执行的是 10 个(exact 8 + sketch 2)。Mesh 5 个只存在于 休眠目录与夹具;Field 3 个 + 转换 1 个只有契约与验证器,没有执行器;Assembly 2 个连 schema 都没有。[实测]
  4. 文档级 expressions / constraints / semanticRefs 三个槽是必填的空对象(additionalProperties: false), 永远装不进东西。§6.2 表达式整体未实现;约束与语义引用实际活在节点内部与独立读 schema 里。[实测]
  5. 存在两套算子目录 → 已处置(2026-09-08):0.4 目录的 13 个历史版本收敛为当前的 0.4.12 一个, 八个目录常量、三个语义引用 schema 与 Rust 注册表全部指向它;amir.ops-v0.3.0.json 作为 Lane F 的休眠目录保留, 不再与 live 目录并列为当前支持什么的第二权威。
  6. 参数系统是唯一真正卡住当前目标的硬缺口:Parameter.type 只有 7 种数值/布尔类型,range 只能表达连续区间; 而 ConstAtom 已有 13 种含 3 个符号枚举。缺的是“可变 × 符号”这一格。[实测]
  7. §14.2 的确定性等级(bitwise / topologyStable / geometricWithinTolerance)零实现,只在规范里。 这直接影响 §11.3 内容寻址缓存能否安全命中。[实测]
  8. 判定:职责保留,规范瘦身,缺口只补一个。 规范应升版到 0.4 并把 Field / Mesh / Assembly / 表达式 / Source Map / 确定性等级 / 迁移 明确标为“未实现或休眠”,把两套目录合并或归档,然后集中补参数系统的符号类型。
  • 规范侧以 AMIR-v0.1.md §3–§20 的条目为准,§18 按表格行计数(39 行)。
  • 实现侧以 schema 的 $defs、fixtures 目录、Rust 模块与 TS 解释器的 switch (node.operation) 分支为准。
  • “实现”分四档:执行(产品路径会跑)、验证(Rust 校验器认识但不执行)、契约(只有 schema/类型)、无。
  • [待验证] 本文未逐条验证 extensions envelope 的运行时执行、kernelHints 的消费、以及 amir-query 30 个查询定义的实际接线程度。
工件 版本 备注
docs/specs/AMIR-v0.1.md 0.1.4,Draft,2026-08-30 另四份规范(ArtifactGraph、Field IR、Representation Translation、SemanticRef)同为 v0.1
amir-core-v0.4.schema.json amirVersion: 0.4.0 同时保留 v0.2、v0.3 schema 与生成类型
exact 能力目录 exact-phase1-v0.4.0 → v0.4.12,13 个版本 目录版本化是活的,每版带 lock
休眠算子目录 amir.ops-v0.3.0.json origin: retained-0.1 / phase1-exact / lane-f-field

规范从未跟上实现。任何人按规范读 AMIR,读到的是一个不存在的系统;按实现读,又找不到对应的规范条目。

实现档次:执行 / 验证 / 契约 / 无。判定:保留 / 补 / 降级(规范标未实现)/ 合并或删。

规范条目 规范声称 实现现状 落差 判定
§3 Document / Revision / 标识符 Document、Revision、StableId、RevisionId、Evaluation identity 执行:AmirDocument、RevisionManifest、RevisionId、StableId、CommitReceipt 齐全;canonical.rs 883 行 无 保留
§4.1 类型系统 标量含 String、BytesHash;量纲 7 种;空间值 13 种;集合与 EntitySet 执行:ConstAtom 13 种类型(7 数值 + Anchor3D/Axis3D/Transform3D + 3 个符号枚举);ListValue、Value Parameter.type 仅 7 种,无 String、无枚举;EntitySet 以选择器形式存在于节点输入 补(参数符号类型)
§4.2–4.3 单位与 decimal grammar 数值字面量为规范字符串,禁止 JSON number 执行:ConstAtom 描述原文即“JSON numbers are never canonical AMIR scalars” 无 保留
§5.1–5.3 Node / Port / Feature DAG 节点带 op、opVersion、contractHash、inputs/outputs;DAG 无环 执行:ModuleNode 必填 operationContractHash;validate.rs 环检测 无 保留
§5.5 Body registry 权威表示登记 执行:Body、BodyPut/Remove、roots 至少一个 无 保留
§5.6 Operation descriptor 每个 op 独立 descriptor 与 schema 执行:exact 每个 op 一个 *-node-v*.schema.json + 目录模块(moduleHash、capabilityId、evaluatorProfile) 与 §18 的“最小能力建议”脱节 保留
§6.1 Parameter 类型化、带 range、可变 执行:Parameter{type,value,range,mutable};parameter.put/setValue/remove range 只有 {min,max} 连续区间,无有限论域 补
§6.2 Expression 参数表达式与依赖 无:schema 无 Expression 定义;文档级 expressions 为强制空对象 整节未实现 降级

4.2 约束、引用、断言(§7–§8、§18.4)

Section titled “4.2 约束、引用、断言(§7–§8、§18.4)”
规范条目 规范声称 实现现状 落差 判定
§7.1 Sketch Constraint 14 种约束,文档级 constraints 映射,sketch.solve 报告 DOF/ConflictSet 执行(节点内):sketch.constrainedProfile@1.0.0 模块 + sketch_constrained_profile.rs(519 行)+ PlaneGCS 适配器;支持 9 种:coincident、horizontal、vertical、parallel、perpendicular、tangent、distance、angle、radius;文档级 constraints 为强制空对象 缺 equalLength、equalRadius、distanceX/Y、diameter、midpoint、fix;无独立 sketch.solve 保留,规范改为节点内约束
§8 SemanticRef 与 cardinality 文档级 semanticRefs,基数断言 执行(节点内):exact-face-selector / exact-edge-selector schema + Rust 选择器;semantic-ref.schema.json 与 semantic-ref-read 独立读 schema;文档级 semanticRefs 为强制空对象 位置与规范不同,能力在 保留,规范改为节点内引用
§7.2 / §18.4 Assertion 9 种断言,severity 与 onUnknown 可配 执行:3 种(validSolid、watertight、manifold),severity 常量 error,onUnknown 常量 fail 缺 6 种;volumeBetween、boundingBoxWithin 是家族级证书要用的 补(按需)

4.3 表示、转换与执行(§9、§18.1–18.3)

Section titled “4.3 表示、转换与执行(§9、§18.1–18.3)”
规范条目 规范声称 实现现状 落差 判定
§18.1 Sketch(8 op) empty/line/circle/arc/rectangle/solve/profile/boolean 执行 2:sketch.rectangle、sketch.constrainedProfile 6 个缺;constrainedProfile 覆盖了 solve+profile 的职责 降级其余
§18.2 Exact(10 op) box/cylinder/extrude/revolve/union/intersection/difference/transform/fillet/chamfer 执行 6:extrude、revolve、difference、fillet、chamfer + shell(规范列为 v0.2);另有规范未列的 exact.program@4.0.0、exact.importedBRep@2.0.0 box/cylinder/union/intersection/transform 缺;exact.program 是实际主节点却不在规范里 规范补 program/importedBRep,降级其余
§18.3 Mesh(8 op) box/cylinder/import/validateSolid/union/intersection/difference/transform 验证 + 契约:amir.ops-v0.3.0 登记 5 个(origin: retained-0.1),validate.rs 认识;产品代码只在 m2-fixture.ts 与 legacy-*-evidence.ts 无产品执行器 降级为休眠
§18.3 Field(8 op) sphere/box/union/intersection/difference/smoothUnion/gyroid/rigidTransform 契约 + 验证:目录登记 gyroid、beamLattice、smoothUnion(origin: lane-f-field);field-ir-v0.2.ts、lane-f-catalog.ts、field-artifact-graph-v0.2.ts;validate.rs 认识 无执行器;docs/plans 下无 Lane F 计划或进度文档 降级,标 Lane F 待启动
§18.3 转换(3 op) exactToMesh / fieldToMesh / meshToField 执行 1:exact-to-mesh-translation.ts 带证书;契约 1:convert.fieldToMesh 在目录 meshToField 无 保留 exactToMesh,降级其余
§18.3 Assembly(2 op) compose / transformInstance 无:schema 0 命中,代码 0 命中 整节未实现 降级
§9.2 误差合同 转换必须带显式误差预算 执行:representation-translation.schema.json、field-to-mesh-translation.schema.json 仅 exact→mesh 真跑 保留
§9.3 kernelRequirements / hints 内核要求进 hash,hints 不进 [待验证] schema 有字段,消费未核 — 待验证

4.4 事务、诊断、证据(§10–§14)

Section titled “4.4 事务、诊断、证据(§10–§14)”
规范条目 规范声称 实现现状 落差 判定
§10 Transaction Patch 与状态机 Patch envelope、10 态状态机、preview/validation token、CAS、幂等 执行:PatchEnvelope、TransactionState 10 态与规范一致;transaction.rs 1550 行,幂等 16 处、revision.equals CAS;Preview/Validation/CommitReceipt 无 保留
§11 Diagnostics code/severity/phase/location 执行:Diagnostic schema 6 个 phase 与规范一致;Rust 42 个诊断码 无 保留
§12 ArtifactGraph 每次求值产出工件图 执行:artifact-graph.schema.json、exact-artifact-graph.ts、field-artifact-graph-v0.2.ts 无 保留
§12 Source Map 工件回溯到 Node/Port/源 无:TS/Rust 产品代码 0 命中 未实现 降级
§13 Geometry Certificate 每个 Artifact 的不可变检查记录 执行(部分):exact→mesh 转换证书;exact 会话的 geometry evidence / receipts;Lane R 的 smooth-implicit 证书只有契约 证书未带确定性等级 保留,补等级字段
§14.1 Canonical JSON 与 hash JCS + SHA-256,跨语言 fixtures,需第三个独立实现 执行:canonical.rs;fixtures/model-hash 16 个、revision-hash 2 个;Rust + TS oracle 规范自述第三实现未闭合 保留
§14.2 执行确定性 ExecutionManifest;四级确定性等级 执行 ExecutionManifest(amir-transaction-adapter.ts 等);无 确定性等级(determinismClass/bitwise/topologyStable 0 命中) 等级整套缺 补(缓存安全前置)
§14.3 Provenance Revision 保留 PatchId/actor/intent/authoringLockHash 执行:RevisionManifest 字段齐全 无 保留

4.5 版本、迁移、符合性(§15、§20)

Section titled “4.5 版本、迁移、符合性(§15、§20)”
规范条目 规范声称 实现现状 落差 判定
§15 SemVer 与拒绝策略 不认识的 major 拒绝;minor 只增不改 [待验证] amirVersion 为 const,v0.2/0.3/0.4 并存说明有读多版本的能力 — 待验证
§15 extensions envelope {version, semantic, payload} 固定信封 契约:ModuleNode.extensions 必填 运行时是否拒绝未知 semantic 扩展未核 待验证
§15 Migration 纯确定性转换、migration record、dry-run 契约:RevisionMigrationRecord schema 完整;patch.rs:343 永远写 "migrationRecords": [];无迁移工具 只有槽位 降级
§20 符合性级别 1–4 Reader / Structural / Semantic / Transaction Store 执行:全部在 Rust core(8181 行,无几何) 无 保留
§20 级别 5 Representation Executor 列出支持的 Exact/Mesh/Field/Sketch/Assembly 执行:仅 Exact + Sketch,在 TS(exact-feature-graph.ts)+ 浏览器 OCCT Mesh/Field/Assembly 无 规范按实改
§20 级别 6 Observatory ArtifactGraph、Source Map、Diagnostics、Certificate 执行 3/4,Source Map 缺 — 规范按实改

AmirDocument 要求 expressions、constraints、semanticRefs 三个键必填,而它们的 schema 都是 {"type": "object", "additionalProperties": false}——只能是空对象。它们同时进入 modelHash 的语义投影。

这意味着:规范 §6.2、§7.1、§8 描述的文档级机制从未落地,而实现把约束与语义引用放进了节点内部 (sketch.constrainedProfile 的输入、exact-*-selector 的输入)。能力在,但位置和规范写的不一样。

不能直接删这三个键:它们在 canonical JSON 里,删掉会改变所有既有文档的 modelHash,属于 major 变更。 正确做法是规范按实改——写明约束与引用是节点内构造,文档级三个槽保留为兼容占位。

目录 内容 状态
amir.ops-v0.3.0.json 11 个:mesh 5、sketch.rectangle、exact.linearExtrude、field 3、convert.fieldToMesh 休眠;mesh 无执行器,field 无执行器
exact-phase1-v0.4.12.catalog.json 10 个模块:exact 8 + sketch 2,每个带 moduleHash、capabilityId、nodeSchema、evaluatorProfile live,与 exact-feature-graph.ts 的 8 个 case 逐一对应

两套目录只在两个 op 上重叠,结构也不同(前者 operations[],后者 modules[])。这是一处真实冗余: 同一个概念(“当前运行时支持哪些 operation”)有两个权威。RFC-0002 的能力发现应该只有一个答案。

判定:合并或归档。若 mesh/field 确定休眠,v0.3.0 目录应归档到 fixtures 并从发现路径移除; 若要保留为“已登记未执行”,也应并入 v0.4 目录并带 evaluatorProfile: none 之类的显式状态,而不是另存一份。

  • AI SDK 工具 2 个:aira_compile_exact_plan、aira_library_reference。
  • amir-query 原 30 个定义中,artifact.lineage / metrics / topology、impact.downstream、model.parameters 五种 QueryKind 在全仓没有任何处理器,已于 2026-09-08 连同各自的 Query/Selector 定义删除(30 → 20 个定义); 剩余的 semantic-ref.resolve(-across) 与 Request/Plan/Receipt 线由 semantic-ref-read 与边选择器实际消费。
  • 能力目录 exact-phase1-v0.4.x 13 个版本,每版带 lock——目录版本化是活的。
判定 条目
保留(在工作) Document/Revision/Id、类型与 decimal grammar、Node/Port/DAG、Body registry、Operation descriptor、Transaction 状态机、Diagnostics、ArtifactGraph、canonical hash、ExecutionManifest、Provenance、exact→mesh 证书、符合性级别 1–4
补(卡当前目标) ① Parameter 增符号类型与有限论域(choices),程序沙箱 p 放宽为带类型值;② 确定性等级(§11.3 缓存安全前置);③ 断言 volumeBetween/boundingBoxWithin(按需)
降级(规范标未实现/休眠) 表达式 §6.2、Mesh §18.3、Field §18.3、Assembly §18.3、meshToField、Source Map §12、Migration §15、§18.1 其余 6 个 sketch op、§18.2 其余 5 个 exact op
规范按实改 版本升到 0.4;exact.program 与 exact.importedBRep 写入规范;约束与语义引用改为节点内构造;文档级三个空槽标为兼容占位;§20 级别 5/6 按实际范围重写
合并或删 两套算子目录合一

补的顺序:①是唯一卡标准件与“可编辑”主张的硬缺口;②在做内容寻址缓存之前必须有;③按家族级证书需求触发。

  1. [待验证] kernelRequirements / kernelHints 是否被任何执行器消费。
  2. [待验证] 未知 semantic: true 扩展是否真的被 authoritative evaluation 拒绝。
  3. amir-query 30 个定义中有多少已接到接口 → 已核:五种 QueryKind 零处理器,已删除(见 §6)。
  4. 多版本读取 → 已处置:软件未发布、无需打开的旧文档,0.1–0.3 读取线(Rust 引擎/解码/校验、TS 生成类型、legacy 证据读取器、旧 fixture 语料)已于 2026-09-08 删除;旧 schema 文件因 0.4 schema 仍由其派生而暂留,接口上下文仍钉 0.2 目录,两者是下一轮的重构对象。
  5. 本文计数可复现:schema $defs 47 个、§18 表格行 39、live 目录模块 10、解释器分支 8、Rust 8181 行、诊断码 42、hash fixtures 16 + 2。