# 03-推进台账 版本:0.1 日期:2026-06-28 ## 轮次 001:创建 working2 任务整合包 ### 本轮目标 根据用户要求,将“对标 `通用机器人编程语法规范.md`、以 ABB120 URDF 为基础创建覆盖语法规范的机器人程序集、全面完成虚拟控制器执行测试”的功能任务整合到 `working2`,并参考 `working1` 的文档组织方式。 ### 已读取和确认 1. `working2` 原本只有 `README.md`,内容为“空任务集审计”。 2. `working1` 已有 ABB120 fixture、GRL 程序集、运算表达式、虚拟控制器、后处理、验收证据和决策记录的完整文档。 3. 当前语法规范已包含新增的 `## 7. 表达式与运算`,并顺延到 `## 26. 参考资料`。 4. 仓库中已有 `kdl-wasm/web/src/fixtures/abb120.ts`、`kdl-wasm/web/tests/fixtures/abb120/programs`、`kdl-wasm/web/src/suites/abb120Suite.ts`、`kdl-wasm/web/app/virtual-controller.html/css/js`。 ### 本轮产出 1. 重写 `working2/README.md`。 2. 新增 `working2/01-项目功能内容.md`。 3. 新增 `working2/02-项目程序开发详细步骤.md`。 4. 新增 `working2/04-任务矩阵.md`。 5. 新增 `working2/05-验收证据.md`。 6. 新增 `working2/06-决策记录.md`。 7. 新增 `working2/programs/manifest.md`。 ### 当前边界 1. 本轮只做任务整合和实施规范,不新增产品代码和 `.grl` 程序文件。 2. `working2` 的任务状态默认 `Todo`,不沿用 `working1` 的 `Done` 状态。 3. 已有 `working1` 实现可以作为依赖和参考,但 `working2` 必须按完整语法规范重新证明覆盖。 4. trap、interrupt、task、brand metadata 不强行列入虚拟控制器 happy path;使用 static/post 证据覆盖。 ### 下一步 1. 创建 `kdl-wasm/web/tests/fixtures/abb120/spec-programs` 目录和首批 `W2_*.grl`。 2. 实现 `runAbb120SpecSuite` 或扩展 `runAbb120Suite` 支持 working2 manifest。 3. 添加 coverage test,确保 `manifest.md` 中每个 spec section 有对应程序和证据。 4. 执行 `npm test -- grl abb120 virtual controller runtime post import` 并记录实际结果。 ## 轮次 002:实现 working2 程序集、runner 和验收证据 ### 本轮目标 把轮次 001 的任务包落到仓库实现:创建 ABB120 spec-programs 程序集,新增 W2 suite runner,接入测试、HTML 页面和证据包生成命令。 ### 本轮产出 1. 新增 `kdl-wasm/web/tests/fixtures/abb120/spec-programs/manifest.json`。 2. 新增 `runtime/W2_00` 到 `runtime/W2_90` 共 10 个 runtime 程序。 3. 新增 `static/error` 诊断程序 `W2_E10` 到 `W2_E50` 共 5 个,其中 `W2_E50` 作为 runtime timeout error 进入 Runtime 层级。 4. 新增 `post/W2_P10` 到 `post/W2_P30` 共 3 个 post/import 程序。 5. 新增 `kdl-wasm/web/src/suites/abb120SpecSuite.ts` 和 `kdl-wasm/web/scripts/run-abb120-spec-suite.ts`。 6. 新增 `kdl-wasm/web/tests/integration/abb120SpecSuite.test.ts`。 7. 更新 HTML 虚拟控制器显示 `working2-abb120-spec` 和 `W2-JOB-latest`。 8. 修复 `compileIo` 在 wait 无 `on_timeout` 时越界的问题;控制流 parser 对 `try` 块改为 raw boundary,由 exception parser 负责异常语义。 ### 验收摘要 1. `npm run suite:abb120-spec` 通过,生成 `W2-JOB-20260628013857-19b5a2c7`。 2. `npm run typecheck` 通过。 3. `npm test` 通过,41 个测试文件、155 个测试。 4. `npm run verify:virtual-controller` 通过,生成桌面和移动截图。 ### 当前边界 1. `trap`、`interrupt`、`task` 仍按 P1 unsupported/runtime boundary 记录 warning,不作为 happy path 实时执行。 2. `@brand.*` 语法尚未作为 lexer/parser 原生结构实现,本轮以后处理 `post_hint` 和 report 边界覆盖品牌扩展。 3. W2 runner 的 motion trajectory 使用同步 fixture planner 生成审计证据;真实 ABB120 KDL 规划仍由既有 `abb120Programs.test.ts` 覆盖。 ## 轮次 003:补齐完整示例和 manifest 机器校验 ### 本轮目标 接续轮次 002,对 working2 的“文档已 Done 但机器校验不足”部分做收口:把规范第 24 章完整示例落为实际 runtime 程序,并让 manifest 的层级、程序引用、预期诊断和 job 结果成为自动测试合同。 ### 本轮产出 1. 新增 `runtime/W2_99_FullSpecExample.grl`,覆盖完整示例的 tool/frame、path、operation、IO event、run_operation 和回 home。 2. 更新 `spec-programs/manifest.json`,程序总数为 19;coverage 章节 4 到 25 缺失为空;层级统计 Runtime 12、Static 4、Post 3。 3. 强化 `abb120SpecSuite.test.ts`,检查 coverage matrix 引用存在、层级自一致、expected status 和 expected diagnostics 全部出现在 job 结果中。 4. 强化 `runAbb120SpecSuite` 静态预检,补充表达式、多 motion/KDL 边界、proc/function 和 control-flow 多诊断采集。 5. 新增最新证据包 `W2-JOB-20260628022836-51484d62`。 ### 验收摘要 1. `npm test -- abb120SpecSuite` 通过。 2. `npm run typecheck` 通过。 3. `npm run suite:abb120-spec` 通过,生成 19 个程序的 job,missingSections 为空。 ### 当前边界 1. `@brand.*` 仍为后续 parser 原生语法扩展边界,当前通过 `post_hint` 和 post report 覆盖。 2. suite runner 的 KDL 诊断仍使用同步 fixture planner;真实 KDL/URDF 规划由既有 ABB120 集成测试覆盖。 ## 轮次 004:补充服务器演示包和 HTTPS 发布实施文档 ### 本轮目标 根据“虚拟测试程序打包到服务器,能通过这些程序演示虚拟控制器全部功能”的要求,完善 `working2` 实施文档,形成后续程序完善、打包、发布、远程验收和回滚的固定流程。 ### 本轮产出 1. 更新 `working2/README.md`,增加服务器演示包目标、文档入口和 `W2-DEPLOY-*` 任务范围。 2. 更新 `working2/01-项目功能内容.md`,增加服务器演示包功能要求、发布目标、包内容、演示能力清单和验收口径。 3. 更新 `working2/02-项目程序开发详细步骤.md`,增加阶段 7:演示包 manifest、文件收集、zip、上传、HTTPS 验证、远程 smoke test 和回滚。 4. 更新 `working2/04-任务矩阵.md`,新增 `W2-DEPLOY-001` 到 `W2-DEPLOY-060` 任务和子任务。 5. 更新 `working2/05-验收证据.md`,新增部署证据项、远程 smoke test 命令、发布记录模板和人工验收模板。 6. 新增 `working2/07-服务器发布与演示包实施方案.md`,作为发布实施主文档。 7. 更新 `working2/06-决策记录.md`,新增服务器发布包 ADR。 ### 当前边界 1. 本轮只完善项目实施文档,没有实际上传服务器。 2. 服务器凭据不写入仓库文档;文档只记录发布地址、端口、目录规范和验收要求。 3. 后续需要新增 `build-demo-package.mjs`、`verify-demo-package.mjs`、`deploy-demo-package.ps1` 等脚本,才能把 `W2-DEPLOY-*` 推进到 Done。 4. HTTPS 证书若为自签名,浏览器安全提示记录为环境说明;资源 404、JS 错误或 report fail 非 0 才视为发布失败。 ### 下一步 1. 实现演示包构建脚本,生成 `demo-manifest.json`、首页和 zip。 2. 实现本地 zip 校验脚本,检查 19 个程序、最新 job、截图和 Word 文档。 3. 上传到 `https://82.156.24.101:8095/` 对应服务器目录并执行远程 smoke test。 4. 将发布证据写入 `working2/05-验收证据.md`。 ## 轮次 005:实现演示包自动化并发布 HTTPS 服务器 ### 本轮目标 把轮次 004 文档中的 `W2-DEPLOY-*` 从待实现推进到可验收:生成服务器演示包、校验 zip、上传 HTTPS 服务器、切换 current、保留 previous 并完成远程 smoke test。 ### 本轮产出 1. 新增 `kdl-wasm/web/scripts/build-demo-package.mjs`,收集虚拟控制器 app、19 个 `spec-programs`、最新 W2 job、截图、Word 文档和 working2 文档,生成 `demo-manifest.json`、`index.html`、README 和 zip。 2. 新增 `kdl-wasm/web/scripts/verify-demo-package.mjs`,解压 zip 并校验 19 个 `.grl`、`report.json`、截图、2 份 Word 文档、相对 URL 和 `summary.fail=0`。 3. 新增 `kdl-wasm/web/scripts/deploy-demo-package.ps1`,提供上传 zip、远程解压、切换 current、保留 previous 和 HTTPS smoke test 的可复用发布脚本。 4. 更新 `package.json`,新增 `npm run demo:build`、`npm run demo:verify`、`npm run demo:deploy`。 5. 修正演示包 zip 生成为跨平台 `/` 路径条目,避免 Windows zip 在 Linux `unzip` 后出现反斜杠路径。 6. 发布 release `20260628-120601-W2-JOB-20260628024709-51484d62` 到 `https://82.156.24.101:8095/`。 ### 验收摘要 1. `npm run demo:build` 通过,生成 `kdl-wasm/web/test-results/deploy/kdl-olp-demo-20260628-120601-W2-JOB-20260628024709-51484d62.zip`。 2. `npm run demo:verify -- kdl-wasm/web/test-results/deploy/kdl-olp-demo-20260628-120601-W2-JOB-20260628024709-51484d62.zip` 通过,`program_count=19`、`.grl=19`、`summary.fail=0`。 3. 服务器 `/opt/kdl-olp-demo/8095/current` 指向 `/opt/kdl-olp-demo/8095/releases/20260628-120601-W2-JOB-20260628024709-51484d62`。 4. 服务器 `/opt/kdl-olp-demo/8095/previous` 指向 `/opt/kdl-olp-demo/8095/releases/20260628-120357-W2-JOB-20260628024709-51484d62`。 5. HTTPS smoke test 通过:`/`、`/demo-manifest.json`、`/spec-programs/manifest.json`、`/app/virtual-controller.html`、`report.json`、`report.html`、desktop/mobile png 全部返回 200。 ### 当前边界 1. 8095 服务使用服务器现有自签名证书,浏览器可能提示证书风险;资源访问和报告验证已通过。 2. 发布时使用本地凭据完成服务器操作,但凭据不写入仓库脚本或 working2 文档。 ## 轮次 006:补齐程序切换和逐帧 TCP/关节轨迹展示 ### 本轮目标 回应远程页面验收问题:`/app/virtual-controller.html` 不能只展示静态模拟状态,必须能切换 19 个 W2 程序,并显示程序实际执行产物中的每一帧 TCP 和 6 轴关节值。 ### 本轮产出 1. 更新 `runAbb120SpecSuite` 轨迹摘要,`trajectory.json` 新增 `frames[]`,每帧包含 `index`、`time`、`motion`、`segmentId/targetId`、`joints[6]`、`tcp.position[3]`、`tcp.quaternion[4]`、`sourceMap` 和 diagnostics。 2. 更新 `abb120SpecSuite.test.ts`,要求至少一个 Runtime 程序产出带 6 轴关节和 TCP 姿态的逐帧轨迹。 3. 重构 `virtual-controller.html/css/js`,页面从 `demo-manifest.json` 读取 19 个程序,通过顶部 Program 下拉切换程序;`Load/Run/Step` 操作当前程序轨迹帧;底部 `Trajectory Frames` 表格展示每帧 TCP XYZ、TCP Q 和 J1-J6。 4. 更新 `verify-demo-package.mjs`,新增 `runtime_trajectory_frames` 检查,防止发布包里的 Runtime 轨迹退化成只有摘要字段。 5. 修复 `deploy-demo-package.ps1`:函数调用顺序、远端命令拼接、服务重启、自签名 HTTPS smoke test 和 `previous` 回滚指针处理。 6. 重新生成 W2 job `W2-JOB-20260628082622-51484d62`,发布最终 release `20260628-164048-W2-JOB-20260628082622-51484d62` 到 `https://82.156.24.101:8095/`。 ### 验收摘要 1. `npm run typecheck` 通过。 2. `npm test -- kdl-wasm/web/tests/integration/abb120SpecSuite.test.ts kdl-wasm/web/tests/integration/abb120SuiteArtifacts.test.ts` 通过。 3. `npm run suite:abb120-spec` 通过,生成 19 个程序的 job,missingSections 为空。 4. `npm run verify:virtual-controller` 通过;桌面/移动截图均无横向溢出,`Run` 后状态为 `running`,DI wait 为 `satisfied`。 5. `npm run demo:verify -- ` 通过,`runtime_trajectory_frames=9/12`。 6. 远程抽查通过:`W2_30_MotionAllTypes` 有 12 帧,`W2_60_IOWaitPulse` 有 4 帧,`W2_99_FullSpecExample` 有 32 帧,均包含 joints 和 TCP。 ### 当前边界 1. 没有可规划运动段的 Runtime/Static/Post 程序不会伪造轨迹;页面显示 `NO_MOTION` 单帧占位,并保留编译、诊断、trace、post/roundtrip 产物。 2. 8095 HTTPS 仍使用现有自签名证书;自动 smoke test 使用不校验证书的发布验证路径。