# 03 推进台账

生成日期：2026-06-26

说明：本台账保留历史推进记录。早期条目中的“遗留问题”和“下一步”已由后续 W4-IMPL-002
和 W4-DOC-002 收口；当前状态以 `04-task-matrix.md` 和 `05-acceptance-evidence.md` 为准。

## 1. 台账规则

每轮结束必须追加一条记录，格式保持一致：

```text
轮次：
日期：
目标：
做了什么：
改了哪些文件：
验证了什么：
结果：
遗留问题：
下一步：
```

如果一轮只写文档，没有改代码，也必须明确写出“未改代码”。如果运行了测试，必须记录命令和结果。如果没有运行测试，必须说明原因。

## 2. 当前台账

### W4-DOC-001

日期：2026-06-26

目标：

使用 `working3` 资料，为 `web-rtcp-5axis-sim-plan` 下一阶段功能完善建立文档包。

做了什么：

- 梳理 `working3/gmoccapy_XYZAB_execution_analysis.md`，提取 gmoccapy_XYZAB native 启动顺序、NML command/status/error、HAL/postgui、G-code 运行互锁和按钮控制逻辑。
- 梳理 `working3/gmoccapy_button_icons/`，确认按钮清单、CSV、112 个图标资源和 211 行按钮/状态记录。
- 对照 `web-rtcp-5axis-sim-plan` 当前 README、docs、working_run、app/src、tests，确认已有 gmoccapy shell、xyzac/xyzbc profile、kinematics/interpreter/task-HAL runtime 和 RUN 验证。
- 建立 `working4` 文档集，覆盖功能内容、开发步骤、推进台账、任务矩阵、验收证据、决策记录。

改了哪些文件：

```text
/home/meswork/cnc_wams/work/working4/README.md
/home/meswork/cnc_wams/work/working4/01-function-content.md
/home/meswork/cnc_wams/work/working4/02-program-development-steps.md
/home/meswork/cnc_wams/work/working4/03-progress-ledger.md
/home/meswork/cnc_wams/work/working4/04-task-matrix.md
/home/meswork/cnc_wams/work/working4/05-acceptance-evidence.md
/home/meswork/cnc_wams/work/working4/06-decision-records.md
```

验证了什么：

- 验证 `working3` 输入文件存在。
- 验证 `working4` 起始为空，可作为本轮输出目录。
- 验证目标项目已有构建、Node smoke、browser smoke、QA evidence 目录和相关文档。
- 本轮以文档生成为主，未修改 `web-rtcp-5axis-sim-plan/app/src` 代码。

结果：

- 文档规划完成。
- 任务矩阵建立，后续实施可按任务编号推进，避免重复做。

遗留问题：

- 尚未把 `working3` 图标复制到 app assets。
- 尚未新增 `gmoccapy-xyzab` profile。
- 尚未新增图标 manifest、HAL diagnostics、XYZAB gate 测试和浏览器报告。

下一步：

从 `04-task-matrix.md` 的 `W4-A01` 开始，将资料和图标资产落库。

### W4-IMPL-001

日期：2026-06-26

目标：

按 `working4` 从 W4-A01 开始实施资料落库、gmoccapy_XYZAB reference profile、通信/HAL 诊断模型和 Node 验收。

做了什么：

- 新增 `docs/gmoccapy-xyzab-reference.md`，记录 native 启动顺序、NML command/status/error、HAL/postgui、互锁和图标资产边界。
- 将 `working3/gmoccapy_button_icons/button_icon_inventory.csv` 转成 `app/src/ui-reference/gmoccapy-button-icons.json`，保留 211 行清单。
- 将 `working3/gmoccapy_button_icons/files/` 的 112 个 PNG/SVG 图标复制到 `app/src/assets/gmoccapy-icons/`。
- 新增 `gmoccapy-xyzab` profile，坐标为 XYZAB，标记 `trivkins coordinates=xyzab`、`tcpCapable=false`、`rtcpProof=false`、`promotionAllowed=false`。
- 新增 gmoccapy communication model 和 HAL/postgui model。
- 在 UI/store 层阻止 `gmoccapy-xyzab` 这种 reference-only profile 被切到 TCP/RTCP。
- 修正 fallback RTCP frame 的 joint pose 轴映射，使 XYZAB 显示 B 轴而不是误用 C 轴。
- 新增并接入 Node 测试：XYZAB profile、icon manifest、communication model、HAL model。
- 更新 `docs/traceability-matrix.md`、`04-task-matrix.md`、`05-acceptance-evidence.md`。

改了哪些文件：

```text
/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/docs/gmoccapy-xyzab-reference.md
/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/docs/traceability-matrix.md
/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/app/package.json
/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/app/src/ui-reference/gmoccapy-button-icons.json
/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/app/src/assets/gmoccapy-icons/
/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/app/src/profiles/gmoccapy-xyzab.js
/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/app/src/profiles/index.js
/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/app/src/profiles/source-reference-map.js
/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/app/src/runtime/gmoccapy-communication-model.js
/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/app/src/runtime/gmoccapy-hal-model.js
/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/app/src/runtime/rtcp-frame.js
/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/app/src/state/store.js
/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/app/src/ui/gmoccapy-shell.js
/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/tests/node/verify_gmoccapy_xyzab_profile.mjs
/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/tests/node/verify_gmoccapy_icon_manifest.mjs
/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/tests/node/verify_gmoccapy_communication_model.mjs
/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/tests/node/verify_gmoccapy_hal_model.mjs
/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/tests/node/verify_profile_boundary.mjs
/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/tests/node/verify_rtcp_store.mjs
/home/meswork/cnc_wams/work/working4/03-progress-ledger.md
/home/meswork/cnc_wams/work/working4/04-task-matrix.md
/home/meswork/cnc_wams/work/working4/05-acceptance-evidence.md
```

验证了什么：

```bash
node web-rtcp-5axis-sim-plan/tests/node/verify_gmoccapy_xyzab_profile.mjs
node web-rtcp-5axis-sim-plan/tests/node/verify_gmoccapy_icon_manifest.mjs
node web-rtcp-5axis-sim-plan/tests/node/verify_gmoccapy_communication_model.mjs
node web-rtcp-5axis-sim-plan/tests/node/verify_gmoccapy_hal_model.mjs
node web-rtcp-5axis-sim-plan/tests/node/verify_profile_boundary.mjs
node web-rtcp-5axis-sim-plan/tests/node/verify_rtcp_store.mjs
npm --prefix web-rtcp-5axis-sim-plan/app run build
npm --prefix web-rtcp-5axis-sim-plan/app run smoke:node
bash web-rtcp-5axis-sim-plan/tests/browser/verify_gmoccapy_shell_browser.sh
bash web-rtcp-5axis-sim-plan/tests/browser/verify_gmoccapy_dist_browser.sh
git diff --check -- web-rtcp-5axis-sim-plan work/working4
```

结果：

- 新增 Node 测试全部通过。
- `npm run build` 通过。
- `npm run smoke:node` 通过。
- browser shell smoke 和 dist browser smoke 均通过。
- `git diff --check` 通过。

遗留问题：

- 尚未建立 icon registry，也未将图标接入实际按钮 DOM。
- communication/HAL model 已有数据和测试，但尚未接入信息面板页面。
- 尚未新增 gmoccapy_XYZAB gate 独立测试。
- 尚未生成 QA JSON/PDF/截图报告。

下一步：

继续 `W4-U01`，建立 `app/src/ui/gmoccapy-icon-registry.js`，并将 manifest 资产接入右侧栏、底部栏、Auto 栏、spindle/coolant 和 preview controls。

### W4-IMPL-002

日期：2026-06-26

目标：

继续 `working4` 的 UI/icon、gmoccapy_XYZAB gate、browser smoke 和 QA 报告任务。

做了什么：

- 新增 `gmoccapy-icon-registry.js`，为核心 gmoccapy 按钮提供 icon name、asset path、variant 和 fallback。
- 将右侧状态栏、底部控制栏、preview toolbar、spindle/coolant 控件接入 gmoccapy 图标，并保留 `aria-label`、`data-icon-name`、blocked reason。
- 将 gmoccapy communication model 和 HAL/postgui model 接入信息面板，显示 NML command/status、Web runtime path、postgui 顺序和 HAL pins/nets。
- 扩展 `linuxcnc-task-policy.js`，为 `gmoccapy-xyzab` RUN gate 增加 INI、machine-file、opened program、interp idle、task/HAL runtime ready 检查；补齐 MDI、JOG/HOME、spindle/coolant/override gate。
- 在 store 中新增 spindle direction 行为，并对 coolant/spindle/override 操作应用 gate。
- 新增 icon registry 和 gmoccapy_XYZAB gate Node 测试。
- 更新 browser smoke，断言核心按钮 icon 和 gmoccapy NML/HAL diagnostics。
- 新增 QA capture 脚本，生成 gmoccapy_XYZAB JSON/PDF 报告和 6 张截图。
- 更新 `04-task-matrix.md` 和 `05-acceptance-evidence.md`。

改了哪些文件：

```text
/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/app/package.json
/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/app/src/ui/gmoccapy-icon-registry.js
/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/app/src/ui/gmoccapy-shell.js
/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/app/src/styles/gmoccapy.css
/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/app/src/state/linuxcnc-task-policy.js
/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/app/src/state/store.js
/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/tests/node/verify_gmoccapy_icon_registry.mjs
/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/tests/node/verify_gmoccapy_xyzab_gates.mjs
/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/tests/browser/gmoccapy_shell_smoke.html
/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/capture-gmoccapy-xyzab-function-cases.mjs
/home/meswork/cnc_wams/work/working4/03-progress-ledger.md
/home/meswork/cnc_wams/work/working4/04-task-matrix.md
/home/meswork/cnc_wams/work/working4/05-acceptance-evidence.md
```

验证了什么：

```bash
node --check web-rtcp-5axis-sim-plan/app/src/ui/gmoccapy-shell.js
node --check web-rtcp-5axis-sim-plan/app/src/state/store.js
node --check web-rtcp-5axis-sim-plan/app/src/state/linuxcnc-task-policy.js
node --check qa/web-rtcp-5axis-site-test/capture-gmoccapy-xyzab-function-cases.mjs
node web-rtcp-5axis-sim-plan/tests/node/verify_gmoccapy_icon_registry.mjs
node web-rtcp-5axis-sim-plan/tests/node/verify_gmoccapy_xyzab_gates.mjs
node web-rtcp-5axis-sim-plan/tests/node/verify_rtcp_store.mjs
node web-rtcp-5axis-sim-plan/tests/node/verify_run_preconditions.mjs
npm --prefix web-rtcp-5axis-sim-plan/app run build
bash web-rtcp-5axis-sim-plan/tests/browser/verify_gmoccapy_shell_browser.sh
node qa/web-rtcp-5axis-site-test/capture-gmoccapy-xyzab-function-cases.mjs
```

结果：

- 新增 Node 测试全部通过。
- `verify_rtcp_store` 和 `verify_run_preconditions` 回归通过。
- 静态 build 通过。
- browser shell smoke 通过。
- QA capture 返回 `gmoccapy_xyzab_function_status=PASS`，最新 job_id 为 `xyzab-20260626190724-7b80b3aa`，生成 JSON、PDF 和 6 张截图。

遗留问题：

- `gmoccapy-xyzab` 仍为 `trivkins` reference-only profile，不提供 TCP/RTCP proof。
- 本轮 QA 证明 profile、图标、diagnostics 和 blocked gate，不证明 native `linuxcncsvr/milltask/HAL` 实机运行。

下一步：

完整 `npm --prefix web-rtcp-5axis-sim-plan/app run smoke:node`、build、browser smoke、dist browser smoke、QA capture 和 `git diff --check` 已作为本轮最终回归执行。

### W4-DOC-002

日期：2026-06-26

目标：

继续收口 `working4`，消除状态文档中仍停留在初始规划阶段的过期描述。

做了什么：

- 更新 `README.md`，明确 `working4` 当前是已实施、已验证、已归档状态，不再描述为仅生成规划文档。
- 更新 `01-function-content.md`，将 F-XYZAB-01 到 F-XYZAB-07 的状态对齐到当前完成情况，并保留 `gmoccapy-xyzab` reference-only 边界。
- 更新 `02-program-development-steps.md`，标明阶段 A 到 G 已收口，QA capture JSON/PDF 已生成。
- 更新 `02-program-development-steps.md` 的阶段文件清单措辞，从规划口径调整为已归档的主要新增/更新文件。
- 更新 `04-task-matrix.md`，新增 W4-D08 状态文档收口任务并标记 `done`。
- 更新 `05-acceptance-evidence.md`，修正“只创建文档、没有 job_id/report_id”的旧说明，并补充 W4-U01、W4-V04、W4-V05 证据行。

改了哪些文件：

```text
/home/meswork/cnc_wams/work/working4/README.md
/home/meswork/cnc_wams/work/working4/01-function-content.md
/home/meswork/cnc_wams/work/working4/02-program-development-steps.md
/home/meswork/cnc_wams/work/working4/03-progress-ledger.md
/home/meswork/cnc_wams/work/working4/04-task-matrix.md
/home/meswork/cnc_wams/work/working4/05-acceptance-evidence.md
```

验证了什么：

```bash
rg -n "\\| W4-[A-Z0-9-]+ \\| (todo|in_progress|blocked|deferred) \\|" work/working4/04-task-matrix.md
node -e "const r=JSON.parse(require('fs').readFileSync('qa/web-rtcp-5axis-site-test/output/gmoccapy-xyzab-function-report.json','utf8')); if(r.status!=='PASS') process.exit(1); console.log(r.status, r.steps.length, r.checks.length)"
git diff --check -- web-rtcp-5axis-sim-plan qa/web-rtcp-5axis-site-test work/working4
```

结果：

- `04-task-matrix.md` 未发现 `todo`、`in_progress`、`blocked` 或 `deferred` 的任务行。
- 过期状态扫描未发现当前 README、功能内容、开发步骤或验收证据中的待实施/待验证旧口径；命中项仅为状态词定义、README 的“当前没有待执行任务”说明，以及早期台账的历史遗留记录。
- QA JSON 保持 `PASS`，包含 6 个步骤和 10 个检查。
- `git diff --check -- web-rtcp-5axis-sim-plan qa/web-rtcp-5axis-site-test work/working4` 返回 0。

遗留问题：

- `gmoccapy-xyzab` 仍为 `trivkins` reference-only profile，不提供 TCP/RTCP proof。
- 本阶段不证明 native `linuxcncsvr/milltask/HAL` 实机运行。

下一步：

- `working4` 当前无剩余任务；后续新增工作需先在 `04-task-matrix.md` 新增任务编号。

### W4-DOC-003

日期：2026-06-26

目标：

继续完成 `working4` 收口，清理剩余会让读者误判为规划阶段的措辞。

做了什么：

- 更新 `README.md` 文档清单说明，将“要完善/应改”口径改为“已完善/已改”口径。
- 更新 `02-program-development-steps.md`，将各阶段“建议新增或更新文件”统一改为“主要新增或更新文件”。
- 更新 `03-progress-ledger.md` 说明，明确早期条目的“遗留问题/下一步”是历史记录，当前状态以矩阵和验收证据为准。
- 更新 `04-task-matrix.md`，将 W4-D01 验收标准改为后续维护入口，将 W4-T07 验收标准改为已输出 JSON、PDF 和截图。

改了哪些文件：

```text
/home/meswork/cnc_wams/work/working4/README.md
/home/meswork/cnc_wams/work/working4/02-program-development-steps.md
/home/meswork/cnc_wams/work/working4/03-progress-ledger.md
/home/meswork/cnc_wams/work/working4/04-task-matrix.md
```

验证了什么：

```bash
rg -n "\\| W4-[A-Z0-9-]+ \\| (todo|in_progress|blocked|deferred) \\|" work/working4/04-task-matrix.md
rg -n "待实施|待验证|待生成|PDF 任务保持 todo|本轮只创建文档|没有生成新的 job_id|后续新增：|建议新增|建议新增或更新|必要时输出 PDF|后续执行入口|拟完善功能包|TODO" work/working4/README.md work/working4/01-function-content.md work/working4/02-program-development-steps.md work/working4/04-task-matrix.md work/working4/05-acceptance-evidence.md
node -e "const r=JSON.parse(require('fs').readFileSync('qa/web-rtcp-5axis-site-test/output/gmoccapy-xyzab-function-report.json','utf8')); if(r.status!=='PASS') process.exit(1); console.log('qa_report_status='+r.status); console.log('qa_report_steps='+r.steps.length); console.log('qa_report_checks='+r.checks.length);"
git diff --check -- web-rtcp-5axis-sim-plan qa/web-rtcp-5axis-site-test work/working4
```

结果：

- 未发现未完成 W4 任务行。
- 当前状态文档未发现规划阶段残留关键词。
- QA JSON 保持 `PASS`，包含 6 个步骤和 10 个检查。
- `git diff --check` 返回 0。

遗留问题：

- 无新的 `working4` 剩余任务。
- 保留既定边界：`gmoccapy-xyzab` 是 `trivkins` reference-only profile，不证明 TCP/RTCP 或 native LinuxCNC realtime 执行。

下一步：

- 当前无需继续执行；后续新增需求先在 `04-task-matrix.md` 新增任务编号。

### W4-DOC-004

日期：2026-06-26

目标：

继续复核 `working4` 验收证据，确认 QA report 编号字段与归档表一致。

做了什么：

- 重新扫描 `04-task-matrix.md`，确认没有未完成 W4 任务行。
- 重新扫描当前状态文档，确认没有规划阶段残留关键词。
- 读取 `gmoccapy-xyzab-function-report.json`，确认报告字段为 `jobId` 和 `reportId`。
- 读取 QA capture 脚本，确认控制台输出为 `gmoccapy_xyzab_function_job_id` 和 `gmoccapy_xyzab_function_report_id`，来源是同一组 report 字段。
- 更新 `05-acceptance-evidence.md`，说明 JSON camelCase 字段与归档表 `job_id/report_id` 标签的对应关系。

改了哪些文件：

```text
/home/meswork/cnc_wams/work/working4/03-progress-ledger.md
/home/meswork/cnc_wams/work/working4/05-acceptance-evidence.md
```

验证了什么：

```bash
rg -n "\\| W4-[A-Z0-9-]+ \\| (todo|in_progress|blocked|deferred) \\|" work/working4/04-task-matrix.md
rg -n "待实施|待验证|待生成|PDF 任务保持 todo|本轮只创建文档|没有生成新的 job_id|后续新增：|建议新增|建议新增或更新|必要时输出 PDF|后续执行入口|拟完善功能包|TODO" work/working4/README.md work/working4/01-function-content.md work/working4/02-program-development-steps.md work/working4/04-task-matrix.md work/working4/05-acceptance-evidence.md
node -e "const r=JSON.parse(require('fs').readFileSync('qa/web-rtcp-5axis-site-test/output/gmoccapy-xyzab-function-report.json','utf8')); if(r.status!=='PASS') process.exit(1); console.log(r.jobId, r.reportId, r.status, r.steps.length, r.checks.length)"
git diff --check -- web-rtcp-5axis-sim-plan qa/web-rtcp-5axis-site-test work/working4
```

结果：

- 未发现未完成 W4 任务行。
- 当前状态文档未发现规划阶段残留关键词。
- QA JSON 保持 `PASS`，包含 `jobId=xyzab-20260626190724-7b80b3aa`、`reportId=report-xyzab-20260626190724-7b80b3aa`、6 个步骤和 10 个检查。
- `git diff --check` 返回 0。

遗留问题：

- 无新的 `working4` 剩余任务。
- 保留既定边界：`gmoccapy-xyzab` 是 `trivkins` reference-only profile，不证明 TCP/RTCP 或 native LinuxCNC realtime 执行。

下一步：

- 当前无需继续执行；后续新增需求先在 `04-task-matrix.md` 新增任务编号。

### W4-DOC-005

日期：2026-06-26

目标：

建立 `working4` 一眼可读的最终收口入口，避免完成状态分散在 README、任务矩阵、验收证据和台账中。

做了什么：

- 新增 `07-final-closure.md`，汇总收口结论、最终证据、QA identifiers、最终校验命令、保留边界和后续变更规则。
- 更新 `README.md`，将 `07-final-closure.md` 标为最终收口入口，并加入文档清单和后续维护步骤。
- 更新 `04-task-matrix.md`，新增 W4-D09 并标记 `done`。

改了哪些文件：

```text
/home/meswork/cnc_wams/work/working4/07-final-closure.md
/home/meswork/cnc_wams/work/working4/README.md
/home/meswork/cnc_wams/work/working4/03-progress-ledger.md
/home/meswork/cnc_wams/work/working4/04-task-matrix.md
```

验证了什么：

```bash
rg -n "\\| W4-[A-Z0-9-]+ \\| (todo|in_progress|blocked|deferred) \\|" work/working4/04-task-matrix.md
# stale wording scan command is recorded in 07-final-closure.md
node -e "const r=JSON.parse(require('fs').readFileSync('qa/web-rtcp-5axis-site-test/output/gmoccapy-xyzab-function-report.json','utf8')); if(r.status!=='PASS') process.exit(1); console.log(r.jobId, r.reportId, r.status, r.steps.length, r.checks.length)"
git diff --check -- web-rtcp-5axis-sim-plan qa/web-rtcp-5axis-site-test work/working4
```

结果：

- 未发现未完成 W4 任务行。
- 当前状态文档未发现规划阶段残留关键词；`07-final-closure.md` 中的示例扫描命令已使用 escaped pattern 和拆分 token，避免自命中。
- QA JSON 保持 `PASS`，包含 `jobId=xyzab-20260626190724-7b80b3aa`、`reportId=report-xyzab-20260626190724-7b80b3aa`、6 个步骤和 10 个检查。
- `git diff --check` 返回 0。

遗留问题：

- 无新的 `working4` 剩余任务。
- 保留既定边界：`gmoccapy-xyzab` 是 `trivkins` reference-only profile，不证明 TCP/RTCP 或 native LinuxCNC realtime 执行。

下一步：

- `working4` 已有最终收口入口；后续新增需求先在 `04-task-matrix.md` 新增任务编号，并同步更新 `07-final-closure.md`。

### W4-VERIFY-006

日期：2026-06-26

目标：

接续上一轮中断后的 `working4` 收口状态，重新运行关键验收链路，确认当前代码、报告和最终证据仍一致。

做了什么：

- 读取 `AGENTS.md` 和 `working4` README、任务矩阵、推进台账、最终收口说明，确认当前范围和日志规则。
- 扫描 `04-task-matrix.md`，确认没有未完成 W4 任务行。
- 扫描当前状态文档，确认没有规划阶段残留关键词。
- 重新运行 build、Node smoke、gmoccapy shell browser smoke、dist browser smoke 和 QA capture。
- QA capture 重新生成 `gmoccapy-xyzab-function-report.json`、`.pdf` 和截图目录内容。
- 更新 `05-acceptance-evidence.md` 和 `07-final-closure.md`，将当前最终证据编号对齐到最新 QA report。

改了哪些文件：

```text
/home/meswork/cnc_wams/work/working4/03-progress-ledger.md
/home/meswork/cnc_wams/work/working4/05-acceptance-evidence.md
/home/meswork/cnc_wams/work/working4/07-final-closure.md
```

验证了什么：

```bash
rg -n "\\| W4-[A-Z0-9-]+ \\| (todo|in_progress|blocked|deferred) \\|" work/working4/04-task-matrix.md
TD_WORD="$(printf '%s%s' TO DO)"; STALE_W4_PATTERN="$(printf '\\u5f85\\u5b9e\\u65bd|\\u5f85\\u9a8c\\u8bc1|\\u5f85\\u751f\\u6210|PDF \\u4efb\\u52a1\\u4fdd\\u6301 todo|\\u672c\\u8f6e\\u53ea\\u521b\\u5efa\\u6587\\u6863|\\u6ca1\\u6709\\u751f\\u6210\\u65b0\\u7684 job_id|\\u540e\\u7eed\\u65b0\\u589e\\uff1a|\\u5efa\\u8bae\\u65b0\\u589e|\\u5efa\\u8bae\\u65b0\\u589e\\u6216\\u66f4\\u65b0|\\u5fc5\\u8981\\u65f6\\u8f93\\u51fa PDF|\\u540e\\u7eed\\u6267\\u884c\\u5165\\u53e3|\\u62df\\u5b8c\\u5584\\u529f\\u80fd\\u5305|%s' "$TD_WORD")"; rg -n "$STALE_W4_PATTERN" work/working4/README.md work/working4/01-function-content.md work/working4/02-program-development-steps.md work/working4/04-task-matrix.md work/working4/05-acceptance-evidence.md work/working4/07-final-closure.md
node -e "const r=JSON.parse(require('fs').readFileSync('qa/web-rtcp-5axis-site-test/output/gmoccapy-xyzab-function-report.json','utf8')); if(r.status!=='PASS') process.exit(1); console.log(r.jobId, r.reportId, r.status, r.steps.length, r.checks.length)"
npm --prefix web-rtcp-5axis-sim-plan/app run build
npm --prefix web-rtcp-5axis-sim-plan/app run smoke:node
bash web-rtcp-5axis-sim-plan/tests/browser/verify_gmoccapy_shell_browser.sh
bash web-rtcp-5axis-sim-plan/tests/browser/verify_gmoccapy_dist_browser.sh
node qa/web-rtcp-5axis-site-test/capture-gmoccapy-xyzab-function-cases.mjs
git diff --check -- web-rtcp-5axis-sim-plan qa/web-rtcp-5axis-site-test work/working4
```

结果：

- 未发现未完成 W4 任务行。
- 当前状态文档未发现规划阶段残留关键词。
- `npm --prefix web-rtcp-5axis-sim-plan/app run build` 返回 0，输出 `gmoccapy_static_build=ok`。
- `npm --prefix web-rtcp-5axis-sim-plan/app run smoke:node` 返回 0，覆盖既有 smoke 和新增 gmoccapy_XYZAB profile/icon/communication/HAL/gate smoke。
- gmoccapy shell browser smoke 返回 `gmoccapy_shell_smoke=ok`。
- dist browser smoke 返回 `gmoccapy_dist_smoke=ok`。
- QA capture 返回 `gmoccapy_xyzab_function_status=PASS`，最新 `job_id=xyzab-20260626214346-f4b4aa36`，`report_id=report-xyzab-20260626214346-f4b4aa36`，生成 JSON、PDF 和 6 张截图。
- `git diff --check -- web-rtcp-5axis-sim-plan qa/web-rtcp-5axis-site-test work/working4` 返回 0。

遗留问题：

- 无新的 `working4` 剩余任务。
- 保留既定边界：`gmoccapy-xyzab` 是 `trivkins` reference-only profile，不证明 TCP/RTCP 或 native LinuxCNC realtime 执行。

下一步：

- 当前无需继续执行；后续新增需求先在 `04-task-matrix.md` 新增任务编号，并同步更新 `05-acceptance-evidence.md` 和 `07-final-closure.md`。

## 3. 后续追加模板

### W4-XXX

日期：

目标：

做了什么：

改了哪些文件：

```text

```

验证了什么：

```bash

```

结果：

遗留问题：

下一步：
