Files
KDL_WORK/working2/03-推进台账.md
2026-06-28 20:58:18 +08:00

184 lines
12 KiB
Markdown
Raw Permalink 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.
# 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`,程序总数为 19coverage 章节 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 个程序的 jobmissingSections 为空。
### 当前边界
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 个程序的 jobmissingSections 为空。
4. `npm run verify:virtual-controller` 通过;桌面/移动截图均无横向溢出,`Run` 后状态为 `running`DI wait 为 `satisfied`
5. `npm run demo:verify -- <final zip>` 通过,`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 使用不校验证书的发布验证路径。