6.7 KiB
06-决策记录
版本:0.1 日期:2026-06-28
ADR-W2-001:working2 以当前语法规范作为覆盖源
状态:Accepted
日期:2026-06-28
关联任务:W2-SPEC-001
背景
用户要求对标 通用机器人编程语法规范.md 创建机器人程序集,并全面完成虚拟控制器执行情况。working1 已经覆盖 ABB120 基础测试和虚拟控制器,但不是逐章按最新语法规范做覆盖矩阵。
决策
working2 以 work/doc/通用机器人编程语法规范.md 为唯一覆盖源。任何程序或测试是否“覆盖”,必须能追溯到规范章节、语法项和验收证据。
后果
- 覆盖结论可审计。
- 语法规范更新后可以重新生成缺口清单。
- 不再用“已有测试通过”替代规范覆盖证明。
ADR-W2-002:ABB120 基准继续使用仓库内稳定 fixture
状态:Accepted
日期:2026-06-28
关联任务:W2-PROG-010、W2-RUN-020
背景
仓库已有 kdl-wasm/web/src/fixtures/abb120.ts 和测试导出 abbIrb120.ts,其中包含 ABB IRB120 3/58 URDF、load options 和标准关节位。重新引入外部 URDF 会增加模型差异和验证成本。
决策
working2 继续使用仓库内 ABB120 fixture。若未来需要独立 .urdf 文件,只能从当前 fixture 导出,不能静默替换机器人模型。
后果
- working2 结果与 existing KDL/virtual controller 测试一致。
- FK/IK/limit snapshot 可复用。
- 外部 mesh/inertial 完整模型另列任务。
ADR-W2-003:语法覆盖分为 Runtime、Static、Post 三层
状态:Accepted
日期:2026-06-28
关联任务:W2-SPEC-002
背景
语法规范包含流程控制、运动、IO,也包含 trap、interrupt、task、brand metadata、post_hint 等不适合全部作为虚拟控制器 happy path 执行的语义。如果强行要求所有语法都运行,会混淆实现边界。
决策
覆盖分三层:
- Runtime:虚拟控制器必须执行并输出 trace。
- Static:parser/semantic 必须诊断或验证。
- Post:后处理、导入回读和报告必须覆盖。
后果
- happy path 稳定。
- P1/P2 语义不会被误报为已完整执行。
- 覆盖矩阵能清楚说明每项语法的验证方式。
ADR-W2-004:虚拟控制器验收以证据包为准
状态:Accepted
日期:2026-06-28
关联任务:W2-RUN-001 到 W2-RUN-060
背景
“执行情况”不能只看单元测试通过。虚拟控制器需要证明状态机、程序指针、motion queue、IO/wait、报警、source map 和轨迹结果都正确。
决策
每次 suite 运行生成 W2-JOB-* 证据包,至少包含:
job.jsoncompile.jsoncontroller.jsonmotion-queue.jsontrace.jsonio.jsontrajectory.jsonreport.json/html
后果
- 运行结果可回放和审计。
- HTML 虚拟控制器可以消费同一证据。
- CI 失败时能定位到具体程序、source range 和 controller 状态。
ADR-W2-005:working2 不改写 working1 完成记录
状态:Accepted
日期:2026-06-28
关联任务:W2-SPEC-000
背景
working1 已记录已完成的 ABB120 基础测试、表达式功能和虚拟控制器验收。用户要求任务整合到 working2 并参考 working1,不是要求重写历史记录。
决策
working2 新建独立任务包,状态从 Todo 开始。working1 仅作为参考和可复用资产来源。
后果
- 避免把旧验收直接当作新目标完成。
- working2 可以独立追踪新增覆盖缺口。
- 后续实现可以逐项把 Todo 推进到 Done。
ADR-W2-006:W2 runner 使用同步 fixture planner 生成审计轨迹
状态:Accepted
日期:2026-06-28
关联任务:W2-RUN-020、W2-RUN-040
背景
working2 的核心目标是逐章覆盖 GRL 语法规范,并为每个程序输出稳定、可审计的 controller、motion queue、trace、IO 和 trajectory 证据。仓库已有 ABB120 KDL 集成测试负责真实 URDF FK/IK/planPath 验证。
决策
runAbb120SpecSuite 在 W2 job 中使用同步 fixture planner 生成稳定 trajectory 和 planner diagnostic;真实 ABB120 URDF/KDL 检查继续由既有 abb120Programs.test.ts 和 KDL 测试承担。
后果
- W2 证据包生成快速、稳定、可在普通 Node/Vitest 环境执行。
- Motion queue、source map、IO/wait/alarm 和 post/roundtrip 证据可稳定归档。
- 若后续要求 job 内嵌真实 KDL 轨迹,可在 runner 中增加 async KDL planner 模式。
ADR-W2-007:异常和 P1 语义采用 runtime/static 边界组合
状态:Accepted
日期:2026-06-28
关联任务:W2-RUN-060、W2-PROG-010.10
背景
当前语法规范定义 try/catch/finally、trap、interrupt、task。现有 parser/semantic 已有异常分析器,但控制流分析器不应把 try 当普通控制流执行;trap/task 仍是 P1 runtime 边界。
决策
控制流分析器将 try 块保留为 raw boundary,由 exception semantic 负责 alarm/raise/try/catch/finally 分析。trap/task/interrupt 输出 GRL_P1_UNIMPLEMENTED warning 或 unsupported runtime trace,不作为 happy path 完整执行。
后果
W2_90_ExceptionAlarm.grl可以稳定 parse、compile、load 并输出异常语义证据。- P1 语义不会被误报为完整 runtime 支持。
- 后续实现 trap/interrupt/task 时可替换 raw boundary,不影响 W2 manifest 结构。
ADR-W2-008:服务器演示采用静态发布包加证据包模式
状态:Accepted
日期:2026-06-28
关联任务:W2-DEPLOY-001 到 W2-DEPLOY-060
背景
用户要求把虚拟测试程序打包到服务器,并能通过这些程序演示虚拟控制器全部功能。当前虚拟控制器页面、GRL 程序、suite job、截图和 Word 文档都可以作为静态文件发布;远程演示的重点是可访问、可审计、可重复,而不是在服务器上重新执行 Node/Vitest。
决策
服务器发布采用静态演示包模式:
- 本地先执行 typecheck、test、suite 和截图验证。
- 将虚拟控制器页面、19 个 GRL 程序、最新
W2-JOB-*、截图、Word 文档和demo-manifest.json打成 zip。 - 服务器仅负责 HTTPS 静态托管。
- 远程验收通过
demo-manifest.json、report.json、程序源码、截图和页面入口验证。 - 服务器保留 release 目录和
current链接,支持回滚。
后果
- 发布包可离线审计,不依赖服务器 Node 环境。
- 演示内容与本地测试证据一致,避免远程环境差异导致结论不稳定。
- 后续如需在线编辑和动态运行,可在当前静态包基础上增加 API 服务,不影响现有验收链路。
- 凭据不进入仓库文档,降低泄露风险。