Files
KDL_WORK/working2/06-决策记录.md
2026-06-28 20:58:18 +08:00

185 lines
6.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 06-决策记录
版本0.1
日期2026-06-28
## ADR-W2-001working2 以当前语法规范作为覆盖源
状态Accepted
日期2026-06-28
关联任务:`W2-SPEC-001`
### 背景
用户要求对标 `通用机器人编程语法规范.md` 创建机器人程序集,并全面完成虚拟控制器执行情况。`working1` 已经覆盖 ABB120 基础测试和虚拟控制器,但不是逐章按最新语法规范做覆盖矩阵。
### 决策
`working2``work/doc/通用机器人编程语法规范.md` 为唯一覆盖源。任何程序或测试是否“覆盖”,必须能追溯到规范章节、语法项和验收证据。
### 后果
1. 覆盖结论可审计。
2. 语法规范更新后可以重新生成缺口清单。
3. 不再用“已有测试通过”替代规范覆盖证明。
## ADR-W2-002ABB120 基准继续使用仓库内稳定 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 导出,不能静默替换机器人模型。
### 后果
1. working2 结果与 existing KDL/virtual controller 测试一致。
2. FK/IK/limit snapshot 可复用。
3. 外部 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 执行的语义。如果强行要求所有语法都运行,会混淆实现边界。
### 决策
覆盖分三层:
1. Runtime虚拟控制器必须执行并输出 trace。
2. Staticparser/semantic 必须诊断或验证。
3. Post后处理、导入回读和报告必须覆盖。
### 后果
1. happy path 稳定。
2. P1/P2 语义不会被误报为已完整执行。
3. 覆盖矩阵能清楚说明每项语法的验证方式。
## ADR-W2-004虚拟控制器验收以证据包为准
状态Accepted
日期2026-06-28
关联任务:`W2-RUN-001``W2-RUN-060`
### 背景
“执行情况”不能只看单元测试通过。虚拟控制器需要证明状态机、程序指针、motion queue、IO/wait、报警、source map 和轨迹结果都正确。
### 决策
每次 suite 运行生成 `W2-JOB-*` 证据包,至少包含:
1. `job.json`
2. `compile.json`
3. `controller.json`
4. `motion-queue.json`
5. `trace.json`
6. `io.json`
7. `trajectory.json`
8. `report.json/html`
### 后果
1. 运行结果可回放和审计。
2. HTML 虚拟控制器可以消费同一证据。
3. CI 失败时能定位到具体程序、source range 和 controller 状态。
## ADR-W2-005working2 不改写 working1 完成记录
状态Accepted
日期2026-06-28
关联任务:`W2-SPEC-000`
### 背景
`working1` 已记录已完成的 ABB120 基础测试、表达式功能和虚拟控制器验收。用户要求任务整合到 `working2` 并参考 `working1`,不是要求重写历史记录。
### 决策
`working2` 新建独立任务包,状态从 `Todo` 开始。`working1` 仅作为参考和可复用资产来源。
### 后果
1. 避免把旧验收直接当作新目标完成。
2. working2 可以独立追踪新增覆盖缺口。
3. 后续实现可以逐项把 Todo 推进到 Done。
## ADR-W2-006W2 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 测试承担。
### 后果
1. W2 证据包生成快速、稳定、可在普通 Node/Vitest 环境执行。
2. Motion queue、source map、IO/wait/alarm 和 post/roundtrip 证据可稳定归档。
3. 若后续要求 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 完整执行。
### 后果
1. `W2_90_ExceptionAlarm.grl` 可以稳定 parse、compile、load 并输出异常语义证据。
2. P1 语义不会被误报为完整 runtime 支持。
3. 后续实现 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。
### 决策
服务器发布采用静态演示包模式:
1. 本地先执行 typecheck、test、suite 和截图验证。
2. 将虚拟控制器页面、19 个 GRL 程序、最新 `W2-JOB-*`、截图、Word 文档和 `demo-manifest.json` 打成 zip。
3. 服务器仅负责 HTTPS 静态托管。
4. 远程验收通过 `demo-manifest.json``report.json`、程序源码、截图和页面入口验证。
5. 服务器保留 release 目录和 `current` 链接,支持回滚。
### 后果
1. 发布包可离线审计,不依赖服务器 Node 环境。
2. 演示内容与本地测试证据一致,避免远程环境差异导致结论不稳定。
3. 后续如需在线编辑和动态运行,可在当前静态包基础上增加 API 服务,不影响现有验收链路。
4. 凭据不进入仓库文档,降低泄露风险。