跳转到内容

Aira 开源底座与自研实现重叠审计:统一图执行后的复审

主文档与完整目录。本分篇保留原调查日期的依据与实测记录;其中的当前状态、建议和授权仅属于历史快照,不是执行队列。

21. 第一性原理方向复审:统一图执行之后(2026-09-03)

Section titled “21. 第一性原理方向复审:统一图执行之后(2026-09-03)”

本节基线为 4f7a762(统一 Exact 图执行并退役专用管线)。§1–20 保留原调查时点, 其中“Candidate 组合尚未接通”不再是当前问题;最新交付范围见工作台进度。本轮只审查并补充 研究记录,没有修改运行时、调用付费模型、部署或 Git 提交。原有本机环境报告改动未触碰; 审查期间另一个已有研究文件出现并行更新,本轮亦未改写该文件。

判断:目标有价值、应继续验证;整体实现路线尚未获得充分对照证据。 统一执行/事务、 复用 OCCT/PlaneGCS 和保留可编辑模型是有依据的收敛。最大的路线风险是尚未证明当前 AI 能够独立持续建模,就继续扩大通用平台职责。不能由“架构完整”推断“AI 好用”,也不能由 尚未完成推断整个方向错误。

从最高原则推导,必须具备:AI 取得完整操作知识和模型事实,表达可组合修改,得到正确几何 与可行动失败信息,保存设计并继续修改。成功率、人工干预和总成本都要测,不能只测错误拒绝。 Exact 工业几何、浏览器优先、共享 AI/UI 权威与历史兼容是已选择的产品约束,本轮遵守; AMIR 内部组织、全部证书分层、多表示同时推进、完整图形编辑器则不能只凭存在就视为必要。

在受查宪法、C1/上线计划和评测记录中,未找到足以确定首批用户、完整交付任务、替代工作流 成本和付费意愿的直接证据。这些是未知,不据此断言没有需求或项目没有做过仓库外验证。

F-01 / P1:默认工作台 Agent 接线尚不能执行完整 Exact 建模。

LiveWorkbenchApp.tsx 只由 agentDryRun 创建 deterministic runtime,当前仅 Fillet 分支注入。 ExactAgentDiscoveryInvoker.ts 只放行 catalog.search,连 model.read 也拒绝。 WorkbenchAgentTaskCoordinator.ts:141 在出现 search 后即可结束决策,随后 :174 调用 previewCandidate();原 intent 仍由 Candidate coordinator 交给 driver 的 parseIntent。 壳体 driver 的 :32 以正则提取宽度。换上真实 provider 本身不会补齐读取、组合特征和修复 Patch。

完整原生 dispatcher 已在 exact-graph-native-interface-v0.4.ts,共享图也已经可执行。 所缺是复用现有受控 Agent、完整原生接口和 Session 的产品接线;不应重写执行器,也不应 把 actor 标为 AI 或 Agent loop 运行成功当作建模能力完成。

F-02 / P1:Exact 接口没有完整传递 AI 所需的契约与诊断。

catalog.describe 返回 canonical module,但 Fillet 等模块的 nodeSchema/schemaDependencies 是 schemaId/hash 引用,响应未携带这些正文;manifest 的通用 metaOperations 是名字列表,当前 dispatcher 没有 schema 解析操作。schemaId 是标识符,不能假定 AI 可以联网取回依赖。 新 Candidate read profile 已能内联自己的 schema,这是已有进步,但不证明全部建模契约闭合。 因此尚未证明冷启动客户端只靠所交付接口即可取得合法 Patch/node 的完整资料;若外部工具 schema 或公开 SDK 补足这部分,应在真实接线中验证,不能依赖测试作者的源码知识。

更明确的缺陷是诊断丢失:Rust StaticDiagnostic 原有 severity/phase/at.jsonPointer/details, core-error.ts 的 AiraCoreError.payload 保留这些信息,但 exact-operation-native-interface-v0.4.ts:515 的归一化只返回 code/message。 图错误已有 nodeId,该归一化也不传递它。隔离真实 dispatcher 的探针注入如下错误类型:

AiraCoreError("REFERENCE_NOT_FOUND", {
diagnostics: [{ code: "REFERENCE_NOT_FOUND", severity: "error", phase: "static",
at: { jsonPointer: "/nodes/n.test/inputs/solid" },
messageKey: "diagnostic.reference_not_found", details: { reference: "missing-node" } }]
})

实际接口只返回 error: {code: "REFERENCE_NOT_FOUND", message: "REFERENCE_NOT_FOUND"}。 位置和缺失对象被丢弃;多项 Core 错误还可能拼接成一个 code 字符串。此为错误投影实测, 不是几何故障或真实模型恢复率实测。模型被迫猜修复目标,与“可诊断、可恢复”直接冲突。 应复用现有 schema registry 和诊断结构补投影;公开响应变化需明确兼容,不另造诊断语言。

F-03 / P1:可执行图已成立,通用持续编辑与引用恢复尚未成立。

八类操作的共享编译/执行、Shell→Cut→收边及 40→48 mm 上游修改都有代码和测试支持。 但产品初始结构仍由预设 driver 创建,任意合法图的增删/重连与一般跨操作 scope 仍未交付。 exact-graph-semantic-read-v0.4.ts:47 明确要求单一 Extrude 来源,该 profile 不是通用多体 恢复;新的 Candidate 两面交边解决特定真实场景,也不能证明任意 split/merge/delete 后可编辑。 Fillet module 还明确限定 isolated、non-tangent、linear、convex 子集,操作名称不等于完整工业覆盖。

影响:首次生成成功不能证明修改后仍满足设计关系。需要在支持域内测不同依赖结构、相对尺寸 关系及歧义修改,并证明查询→重新绑定→再次提交能恢复合法任务。安全拒绝是正确行为, 但不能替代可用性。可视化节点编辑器和直接鼠标选边不是 AI 闭环的必要前置;原生编辑与查询才是。

F-04 / 条件性产品阻塞:Exact 零件尚未形成下游交付闭环。

默认工作台已有 .aira.json 备份/重开;本轮在 Exact 产品入口、OCCT 适配与 contracts 中未找到 已接入的 STEP exporter,长期计划也把 STEP/BREP 交换放在后续。其他表示的 3MF、内部 BREP 字节和交换规范不能证明当前 Exact 产品可交付给其他 CAD/CAM。 如果首个任务需要制造或交接,这会阻断用途;若只在 Aira 内继续编辑,则可后置。 应按实际任务选择一种最低必要交付格式,不先扩成全部 AP242/PMI/无损往返平台; STEP 几何交换也不等于完整参数历史交换。

21.3 路线风险:最重要的假设仍未测量

Section titled “21.3 路线风险:最重要的假设仍未测量”

旧 M3 确有真实模型参数修改、空白创建通过记录及失败轨迹,不能说从未跑过真实 AI。 但它们属于旧 Core/Manifold 任务,不能外推到当前 Exact 连续工业编辑。 该审计时 Exact preflight 先由样例 helper 生成答案,再经真实 dispatcher 执行(该生成器已于 2026-09-12 退役,样例现为 Graph 数据); 它证明执行接线,不能证明 AI 会构造答案。当前没有 examples,取消 B 是正确实验处理, 重复运行相同 A/B 不会产生方向证据。

在这个缺口关闭前,把主要增量继续投向更多表示、完整 GUI、复杂证书/版本组合或检索平台, 会延迟核心假设的反馈。这是优先级风险,不是对所有既有工作的否定:近期治理瘦身、后置研究 和退役专用管线已经发生。没有工时、运行成本和反事实实现数据,不能量化“多少工作白做了”。 同理,浏览器优先和 Aira 自有模型组织都需要用具体用户收益解释,不能由“为 AI 设计”直接推出。

建议将本地受控 AI 验证与公网发布分别排期,先核实本地任务,再完善公开准入。 费用授权、预算、隔离、验证与权限仍保持;本建议不授权 provider 调用,也不改写现有发布条件。

先选定一类真实用途,以支持域内的不同结构/尺寸预先冻结任务:未读源码、未装 Aira Skills 的 模型发现能力→创建带孔零件→查询实际几何→添加收边→改宽度并保持孔距指定基准边的关系→ 保存重开→处理一个无效参数和一个歧义引用→修复或明确弃权→交付结果。 不把未实现操作造成的失败归为模型不会用;不让私有 helper 替参与模型生成答案。

  1. 先核对接口充分性:schema 依赖、身份、权限上下文和错误位置能否从交付接口取得。
  2. 再按明确预算做真实模型任务,记录首试/最终完成、人工介入、恢复、错误引用/拒绝、全部 token/时间/费用。实际几何和相对尺寸检查评分,失败重试全计入,不使用模型自评。
  3. 同任务/模型/总预算对照当前 Aira 和成熟 CAD 底座加受限工具接口,显式计入宿主及安全差异。 小样本只定位缺口;未获得足以补偿复杂度的任务收益时,收缩职责或重审实现,再决定扩张。

沿用现有测试、Inspect 与任务记录;不新增治理 Gate,不在本轮运行这些付费实验。

真实需求 上游或现有设施 已证实差异 / 未知 决定与边界
AI 理解并修复建模 当前 AMIR 0.4/catalog 0.4.6、schema registry、Rust StaticDiagnostic、Agent/Session 诊断传递损失已测;完整冷启动资料/模型表现未证实 优先补现有资料和诊断投影及 Agent 接线,不新造几何/事务实现
连续编辑定位/重建 OCCT 8.0.1,锁定 b8f597c677811d1f9f4d8a97f5ae2825c0353a42;TNaming_Selector::Select/Solve、TFunction_Driver::Arguments/Results/MustExecute 头文件已复核;需要应用 history/driver,不自动保证意图;浏览器成本与恢复率未知 同一连续编辑样本有限对照,不预定自研/TNaming 胜出,不整体迁移 OCAF
参数零件与交付基线 既有研究锁定 CadQuery 2.7.0 源码;官方 QuickStart 提供参数建模/孔/收边/STEP 导出示例 成熟设施存在;Python/OCP 与当前 WASM 宿主不同;本轮未运行替代路径或证明净收益 作为受限工具对照候选,不向 AI 暴露任意 Python,不新增产品依赖

资料:CadQuery 官方示例、 OCCT 8.0.1 OCAF、 既有底座方案与锁定 API。

终端窗口
pnpm --filter @aira/web exec vitest run src/sketch/amir-v0.4-exact-feature-graph.test.ts src/workbench/ExactAgentDiscoveryInvoker.test.ts src/evals/exact-discovery-ablation.test.ts

3 文件、84/84 tests 通过,19.01 s。 图测试加载真实 Rust/WASM、58-binding OCCT 和 PlaneGCS, 用 fake-indexeddb 隔离存储;各用例的替身范围按原定义。这不是 Chrome、真实 IndexedDB 故障验证、 真实 AI 表现或发布认证,也没有覆盖上述所有新发现。

诊断探针用 Vite ssrLoadModule 加载真实 dispatcher 与 AiraCoreError,解析真实 0.4.6 catalog; 只替换 Session.proposePatch,使其抛出 §21.2 的 payload。发送空 operations 仅用于隔离错误投影, 不冒充合法 CAD 事务。随后读取 manifest/Fillet describe,确认 schema 引用和操作列表。 使用现有函数即可复现;探针没有修改真实项目或留下新的测试/执行管线。

本节是审查发现与待验证建议;运行时缺口尚未修复,替代收益、真实 AI 成功率与市场效用均未宣告完成。

21.6 下一阶段首批实施:契约发现与诊断传递(2026-09-03)

Section titled “21.6 下一阶段首批实施:契约发现与诊断传递(2026-09-03)”

按当时的 G-CAD 阶段目标 推进 F-02;本节接续审查时的缺口,不改写 §21.5 当时的验证结论。

  • catalog.describe 的 Operation Module 投影升级为 aira.capability.operation-module-projection/0.2, 增加 schemaBundle,提供真实节点 schema、直接依赖及相对 $ref 所需资源。资源来自原始 schema 文件和锁定 module binding,由既有生成流程产出资源目录;每份资源及整个 bundle 可独立核验哈希。
  • interface.manifest 增加 documentSchemas 和独立版本的 requestContract。新 exact-operation-requests-v0.4.schema.json 描述现有九个基础请求;Patch/Actor/单位/诊断及 receipt 定义继续引用原始 AMIR 0.4 schema,特殊 readProfile 继续使用自己的已发布契约。 请求 TypeScript 由该 schema 生成,dispatcher 通过 Ajv 使用同一份定义校验。新增的结构拒绝先于 Session effect;例如缺少 previewToken、额外未知属性、非整数/超界 search limit 返回 EXACT_INTERFACE_REQUEST_INVALID 与结构化 schemaErrors。合法建模仍由 Core 和几何验证决定。
  • 实际 Session 的 manifest/model.read 返回 writeContext:projectId、branchId、documentId 和 当前 baseRevision。历史读取仍返回所选旧文档,但写入上下文指向当前 head;这些是路由标识, 不是 actor grant 或可自行构造的授权 token。
  • Core 错误保留全部 diagnostics,包括 severity、phase、at.jsonPointer、messageKey 与 details; 主 code 取首项,不再把多个 code 拼成一个类别。图 Worker 和客户端沿同一错误投影保留已有 nodeId、details、schemaErrors/diagnostics;不转发堆栈或任意 Error 实例字段。

兼容边界: interfaceVersion、九个操作名、历史 AMIR/Core schema、Operation Module、catalog 0.4.0–0.4.6 和 Revision 身份不变。新请求契约独立版本为 aira.interface.exact-authoring-requests/0.1.0;Operation Module 投影版本显式从 0.1 升到 0.2, 依赖旧投影字面量的客户端须适配。更早的独立 Exact 0.2 接口没有被此 schema 替换。 新请求结构校验与业务状态错误分别报告,不把结构拒绝当作建模成功。

真实需求 锁定上游/现有设施 已证实差异 决定与边界
客户端取得可解析的完整输入资料 AMIR 0.4/node schemas、原始 module/catalog;Ajv 8.17.1 addSchema/getSchema;OperationModuleKit schemaAtSiblingId describe 之前只有 ID/hash,相对依赖只在内部注册 生成并投影同源资源,复用 Ajv 解析验证;不手写另一套节点输入或修改锁定身份
请求合同与类型保持一致 json-schema-to-typescript 16.0.0 compileFromFile / $refOptions;现有 generator 和 AMIR Patch/Actor 原生 0.4 基础请求只有手写 TS;旧 Agent 工具 schema 属于另一协议线 新增独立请求 profile,生成类型并在 dispatcher 接线;用解析库的 resolver 读取锁定本地资源,禁止为生成类型访问远端 schema
AI 根据真实失败定位修复 Rust StaticDiagnostic、AiraCoreError、共享 graph Worker/Session 两段 transport 曾截断到 code/message 薄诊断数据投影与现有 Worker 信封传递,不建立新诊断引擎;尚未赋予缺少上下文的 kernel 错误额外语义

验证使用现有图集成测试和补充的边界测试:实际 Rust/WASM 报告 n.missing 引用,客户端收到 /nodes/n.boolean.difference/inputs/base 及同次其他诊断,已提交 head 不变,修正后通过共享 OCCT/PlaneGCS 图提交;冷客户端仅从 manifest/describe 资料建立 Ajv registry,校验真实 Patch 和节点。 另验证 Worker 发信/收信保留诊断、错误后可继续请求、请求未通过 schema 时不调用 Session, 以及历史读取返回当前写入上下文。Worker 边界测试使用替身,不等同于本批真实浏览器 Worker 验收。

本批检查:契约包构建与 Web typecheck 通过;契约 3 文件 29 tests、Web 9 文件 107 tests 通过;定向回归 覆盖图 Session、原生 0.4 接口、Worker 生命周期和离线发现实验。原始 catalog 回归与 schema 哈希检查通过。 测试命令:

终端窗口
pnpm --filter @aira/contracts build
pnpm --filter @aira/contracts exec vitest run tests/exact-operation-schema-bundle.test.ts tests/operation-catalog-v0.4.test.ts
pnpm --filter @aira/web typecheck
pnpm --filter @aira/web exec vitest run src/core/operation-error.test.ts src/sketch/exact-operation-worker-client.test.ts src/sketch/exact-graph.worker.test.ts src/sketch/amir-v0.4-exact-feature-graph.test.ts src/interface/aira-interface-v0.4.test.ts src/interface/aira-interface-v0.4.1.test.ts src/interface/aira-interface-v0.4.2.test.ts src/workbench/ExactAgentDiscoveryInvoker.test.ts src/evals/exact-discovery-ablation.test.ts

F-02 仍未整体关闭:完整结果合同、actor/policy/grant 到 Agent 的实际绑定、所有建模引用构造资料与 冷启动连续任务还须接续验证。未运行本批 Chrome 或真实模型,未获得新成功率证据;未提交、推送或部署。

21.7 共享 Exact 的会话授权边界(2026-09-03)

Section titled “21.7 共享 Exact 的会话授权边界(2026-09-03)”

接续 F-02/F-01:共享图 dispatcher 可由可信宿主显式传入既有 SessionGrantRef。模型请求不能传入 或扩大 grant;manifest 返回独立副本,创建接口时校验原有 grant hash 并固定授权内容。hash 只证明内容 绑定,不是签名或授权凭证;授权来源仍是宿主。未传 access 的既有本地宿主调用保留原行为,不能据此 宣称默认 Agent 已受授权保护;后续完整 Agent 入口必须传入宿主授予的权限。

  • 读、建模/预览、验证、提交与回退分别检查既有 capability class 和有效期;有效的验证 token 不能 越过缺少 commit 权限或过期授权。旧 0.1/Exact 0.2 接口复用同一检查,保留错误 code/recoverable; 无法解析的有效期和非有限时钟明确拒绝,原 catalog/Core/Revision 身份不变。
  • Patch 与 revert 的 actor 必须匹配 grant.subject;预览、验证、提交与 Candidate 读取也检查 共享 Session 中候选的创建者。Session 仅保存 Core 返回 actor 的独立值,避免返回对象被改写后 改变授权判断;没有增加第二套候选事务或几何执行。没有候选身份读取能力的 Session 拒绝启用 access。
  • Core/Worker 错误投影补传已有 recoverable,与结构化 details 一起交给客户端;不由模型决定是否可 提交。检查发生在 Session 操作入口,已开始的原子提交继续由原事务路径完成,不新增中途撤销语义。
真实需求 锁定上游/现有设施 已证实差异 决定与边界
完整 Agent 请求遵守宿主授予的会话权限 原 0.1/0.2 SessionGrantRef、hashSessionGrantV02,两接口现有 expiry/class/actor guard;共享 Exact Session/Core Candidate 共享 0.4 dispatcher 未接这些检查;单靠 token 不能确认候选创建者 抽取并复用既有检查;共享 Session 提供窄 actor 读取,工厂接入显式 access;不建立新权限服务、不由客户端自授权

实际 Rust/WASM、OCCT/PlaneGCS 与隔离存储验证:合法壳体 Candidate 完成预览、候选面读取、验证; 错误 actor、无 commit 权限、过期 grant、伪造验证 token 均拒绝且 head/持久化 head 不动。可信宿主给 同一 actor 另一个含 commit 权限的 grant 后,同一真实 Candidate 提交成功并持久化;revert 同样绑定 actor。返回 actor 对象和 manifest 的修改不能扩大授权。该轨迹是工程测试,不是模型规划或 UI 审阅证明。

本批 Web typecheck 通过;下列定向回归 12 文件 / 126 tests 通过(19.08 s),包含既有接口、 Worker 生命周期、图 Session 和离线发现;graph 集成共 78 tests。变更代码 ESLint/Prettier 与 diff 检查通过; 清理局部变量后的四文件 21 tests 复查通过。未改变几何算法和锁定依赖,无须以 重跑全部基础设施测试代替下一项产品接线。

终端窗口
pnpm --filter @aira/web typecheck
pnpm --filter @aira/web exec vitest run src/interface/exact-operation-access.test.ts src/interface/aira-interface.test.ts src/interface/aira-interface-v0.2.test.ts src/interface/aira-interface-v0.4.test.ts src/interface/aira-interface-v0.4.1.test.ts src/interface/aira-interface-v0.4.2.test.ts src/sketch/amir-v0.4-exact-feature-graph.test.ts src/core/operation-error.test.ts src/sketch/exact-operation-worker-client.test.ts src/sketch/exact-graph.worker.test.ts src/workbench/ExactAgentDiscoveryInvoker.test.ts src/evals/exact-discovery-ablation.test.ts

仍待完成:可解析的完整 JSON 结果契约、完整 Agent/gateway/default UI 接线、宿主审批与 policy 绑定、 连续编辑和恢复、冷启动真实任务。未运行本批 Chrome、provider 或真实模型;未提交、推送或部署。

21.8 面向 Agent 的 JSON 结果契约与共享接口投影(2026-09-03)

Section titled “21.8 面向 Agent 的 JSON 结果契约与共享接口投影(2026-09-03)”

新增独立 aira.interface.exact-authoring-results/0.1.0 结果 profile,覆盖九个元操作的成功/失败信封、 文档读取、Candidate 面/交边、既有 SemanticRef/ExactEdge 结果。JSON schema 生成 TypeScript;依赖资源 沿现有 schema bundle 生成流程提供给客户端,锁定 AMIR、Operation Module、旧 read profile、grant 与 receipt 定义继续直接引用。新 createExactGraphJsonInterfaceV04 要求可信宿主传入有效 grant,并将每个 请求交给原共享 native dispatcher;没有自建几何、候选或提交执行器。原浏览器内部结果不被替换。

投影与边界:

  • manifest 增加 resultContract/resultSchemas。新 facade 的 Candidate 响应使用身份/诊断摘要; preview/commit/read evaluation 使用实际绑定、证书、图和 B-rep hash、输出节点、面数及尺寸包围盒。 渲染 Buffer、selection index 和全量内部求值对象留在浏览器,由同一个 Session 提供 UI 审阅。
  • 几何量显式给出 mm/mm³ 单位。仅操作原始结果记录了 OCCT 体积时返回 nativeVolume;显示网格体积 单独标为 meshVolume,不将 Shell/收边缺少的 native 体积凭空补齐。包围盒来自同次 native/显示 transfer 的源坐标数据,不由模型推断。Candidate 结果不携带已提交 Revision 身份。
  • Candidate 面记录移除观察器附带的内部父 artifactId,先核对它与外层 artifactId 一致,再保留规范 FaceSubEntityRecord;外层来源和 evidenceHash 不变。交边返回原有 selector/lineage definitions, 继续要求显式唯一意图,不编写第二套拓扑恢复规则。
  • 结果在返回前通过同源 Ajv 和已有 I-JSON 检查;Buffer、Error 实例、undefined、NaN 等拒绝而非静默 序列化丢失。验证器在 effect 前编译并复用;宿主 grant 也先按既有 schema 校验。
  • 若原子提交后投影失败,错误保留 details.committed=true 与实际 commit receipt;既有 ExactOperationCommittedReplayError 同样补结构化 committed/commit/recoveryOperation,防止客户端 将显示失败当成未提交再写入。没有改变持久化、CAS、候选消费或重放顺序。
真实需求 锁定上游/现有设施 已证实差异 决定与边界
模型取得可解析的建模结果并连续调用 原 Exact 0.2 的紧凑结果投影先例;AMIR 0.4 receipts、已有 read schemas、共享 Session/dispatcher;Ajv 8.17.1、json-schema-to-typescript 16.0.0、canonicalNfcJcsJson 共享 0.4 的内部 Preview/Commit 包含渲染对象,不能直接作为 JSON 模型工具结果;原 0.2 结果不适用于新 graph identity 独立新 profile,只投影已记录事实;复用原 schema、哈希和验证器,不修改旧协议或生成建模答案
结果失败后识别已提交状态 现有 persistAndReplayExactCommit 与 ExactOperationCommittedReplayError .commit 曾仅在异常实例,通用错误投影不能取得;JSON 投影还可能在提交之后失败 显式保留已有回执和恢复操作,不重提事务或回滚已持久化设计

实际工程轨迹加载 Rust/WASM、OCCT 和 PlaneGCS,隔离存储用 fake-indexeddb:测试客户端仅从 manifest 拿到结果 schema,并逐次独立校验 search/describe、propose、preview、面读取、两外壁交边及规范 selector、 validate、commit、read、revert 提案和重开。Core 缺失参数诊断仍可解析;预取消不会发起写入。 额外注入“真实提交成功后仅破坏返回的显示包围盒”故障,JSON 错误保留实际 Revision,持久化 head 保持 新 Revision,随后读取成功。已有真实重放失败用例也检查结构化 committed 状态。该测试的建模 Patch 仍由测试 fixture 构造,只证明产品 JSON 接线,不计入真实 AI 规划或完整冷启动任务成功。

契约 build、Web typecheck、变更 ESLint/Prettier 通过。契约定向 4 文件 / 32 tests,Web 定向 12 文件 / 127 tests(20.35 s) 通过;旧 catalog 身份回归保持。Web 命令沿 §21.7(包含增加的图用例); 结果契约验证已合入 §21.6 的 tests/exact-operation-schema-bundle.test.ts,沿用同一命令。 收紧 Candidate/Revision 的 revisionId 互斥后,重新生成与 typecheck 通过,契约 32 tests 和完整 JSON 轨迹复查通过;未降低 Ajv strict 校验以迁就条件 schema。

默认工作台/Agent/gateway 还没有消费新 facade,F-01 保持未完成。下一步将旧 Agent loop 的请求/事件 编解码按新 profile 接入,并保持预算、取消、审阅和权限保护。尚无本批 Chrome 或真实 provider 证据; 无 Git 提交、推送或部署。

同日收尾更新: 用户要求先收尾、重新关注底座问题,以上接线计划暂缓。未验证的 Agent loop/ gateway 类型改造已撤回,保留本节此前已验证的接口交付;收尾 Web typecheck 和契约 32 tests 复查通过。 后续执行顺序与未完成项在工作台进度 §5 维护;暂停不等于阶段验收通过,也没有进行新的提交或真实模型实验。