完善 gmoccapy XYZAB 参考功能
This commit is contained in:
98
work/working4/01-function-content.md
Normal file
98
work/working4/01-function-content.md
Normal file
@@ -0,0 +1,98 @@
|
||||
# 01 功能内容
|
||||
|
||||
生成日期:2026-06-26
|
||||
|
||||
## 1. 目标
|
||||
|
||||
使用 `working3` 中的 gmoccapy_XYZAB 执行链路分析和按钮图标资料,完善
|
||||
`web-rtcp-5axis-sim-plan` 的 gmoccapy 风格 Web 五轴仿真功能。
|
||||
|
||||
本阶段目标不是把 LinuxCNC GTK/gmoccapy 原程序移植到浏览器,也不是让浏览器直接运行
|
||||
LinuxCNC native NML/HAL 进程。目标是把 gmoccapy_XYZAB 的运行条件、按钮语义、NML/HAL
|
||||
通信模型和图标资产转化为 Web 仿真项目可实施、可验证、可追溯的功能包。
|
||||
|
||||
## 2. 当前项目现状
|
||||
|
||||
`web-rtcp-5axis-sim-plan` 已具备这些基础能力:
|
||||
|
||||
- gmoccapy 风格 Web shell:标题栏、预览区、DRO、G-code 面板、右侧模式栏、信息面板、override、主轴/冷却、底部控制栏。
|
||||
- 五轴 profile:当前已有 `xyzac-trt`、`xyzbc-trt`。
|
||||
- LinuxCNC source-derived runtime:已有 kinematics、interpreter、task/HAL runtime 接入和 worker fallback。
|
||||
- machine-file staging:可加载 LinuxCNC vendored 源程序。
|
||||
- RUN 主链路验证:已有 run preconditions、feedback loop、linear unit、browser evidence 等测试文档和证据。
|
||||
- 已有追溯矩阵:`docs/traceability-matrix.md` 记录了 Web 实现和 LinuxCNC 来源的边界。
|
||||
|
||||
## 3. working3 新增价值
|
||||
|
||||
`working3` 提供了两类资料,本阶段已将其转化为项目内 profile、runtime model、UI 图标、
|
||||
task gate、测试和 QA 证据:
|
||||
|
||||
### 3.1 gmoccapy_XYZAB 执行与通信链路
|
||||
|
||||
输入文件:
|
||||
|
||||
```text
|
||||
/home/meswork/cnc_wams/work/working3/gmoccapy_XYZAB_execution_analysis.md
|
||||
```
|
||||
|
||||
可转化为 Web 功能的关键点:
|
||||
|
||||
- `gmoccapy_XYZAB.ini` 是 LinuxCNC 运行配置,不是单独程序。
|
||||
- 启动链路包括 `linuxcncsvr`、realtime/RTAPI/HAL、`milltask`、`halui`、HALFILE、`halcmd start`、`gmoccapy -ini`。
|
||||
- GUI 主要通过 `linuxcnc.command()`、`linuxcnc.stat()`、`linuxcnc.error_channel()` 与 `milltask` 通信。
|
||||
- HAL 侧通过 `gmoccapy.*` pins、`POSTGUI_HALFILE`、`halui`、`iocontrol`、`motmod`、`spindle_sim` 等连接状态和外部控制。
|
||||
- 当前 XYZAB 配置为 `trivkins coordinates=xyzab`,`JOINTS=5`,属于仿真回环机,不是 TCP/RTCP 运动学。
|
||||
- `NO_FORCE_HOMING = 0`,自动运行和 MDI 必须经过急停复位、上电、回零、模式切换、解释器空闲等互锁。
|
||||
|
||||
### 3.2 gmoccapy 按钮图标和控制清单
|
||||
|
||||
输入文件:
|
||||
|
||||
```text
|
||||
/home/meswork/cnc_wams/work/working3/gmoccapy_button_icons/button_icon_inventory.md
|
||||
/home/meswork/cnc_wams/work/working3/gmoccapy_button_icons/button_icon_inventory.csv
|
||||
/home/meswork/cnc_wams/work/working3/gmoccapy_button_icons/files/
|
||||
```
|
||||
|
||||
清单规模:
|
||||
|
||||
- 清单行总数:211。
|
||||
- 有图标或图像的按钮/状态:116。
|
||||
- 纯文字或无图标按钮/状态:95。
|
||||
- 已复制图标文件:112 个。
|
||||
- 覆盖右侧主状态栏、底部主按钮栏、Auto 程序运行栏、MDI/宏、回零、Touch Off、Jog、主轴冷却、预览、编辑页、刀具页、文件选择页、内嵌 ToolEdit/OffsetPage、设置页控件。
|
||||
|
||||
## 4. 本阶段功能包状态
|
||||
|
||||
| 功能包 | 内容 | 当前状态 | 完成后效果 |
|
||||
| --- | --- | --- | --- |
|
||||
| F-XYZAB-01 gmoccapy_XYZAB 参考 profile | 把 `gmoccapy_XYZAB.ini` 的坐标、HALFILE、POSTGUI_HALFILE、`trivkins xyzab`、回零策略整理为 Web profile/source map。 | 已完成 | Web UI 可切换到 XYZAB 参考配置,并清楚标注其为 trivkins 仿真 profile。 |
|
||||
| F-XYZAB-02 启动链路和通信诊断 | 在信息面板展示 LinuxCNC native 启动阶段、NML command/status/error、HAL/postgui 通信边界。 | 已完成 | 用户能看到 Web 仿真与 native gmoccapy 的通信差异,不把 UI 行为误认为真实 NML/HAL 进程。 |
|
||||
| F-XYZAB-03 G-code 执行互锁强化 | 按 gmoccapy_XYZAB 的三层保护补齐 RUN/MDI/JOG/HOME/SPINDLE/COOLANT gate 说明和测试。 | 已完成 | RUN/MDI 等按钮 disabled 原因可解释,Node/browser 测试覆盖典型非法状态。 |
|
||||
| F-XYZAB-04 按钮语义和图标资产映射 | 从 CSV 生成 Web 可消费按钮 manifest,并把核心 icon 接入右侧栏、底部栏、Auto 栏、预览栏、文件栏。 | 已完成 | UI 从文字按钮升级为 gmoccapy 风格图标按钮,active/inactive 状态可验证。 |
|
||||
| F-XYZAB-05 HAL pin 与 postgui 状态面板 | 展示 `gmoccapy.*` pins、spindle feedback、tool offset、program progress、HALUI 等诊断状态。 | 已完成 | 信息面板可解释哪些是 NML 状态,哪些是 HAL pin 状态,哪些是 Web 仿真状态。 |
|
||||
| F-XYZAB-06 宏/MDI/Tool/Touch 工作流 | 参考 gmoccapy 宏和工具页按钮逻辑,补齐 Web 侧宏按钮、MDI 历史、Tool/Touch 操作互锁。 | 边界内完成 | W4 验收覆盖 MDI gate、home/tool/touch 图标和互锁;宏编辑和 MDI 历史扩展未作为本阶段新增验收项。 |
|
||||
| F-XYZAB-07 验收证据自动化 | 为新增 profile、按钮、互锁、图标、HAL 诊断补 Node/browser/PDF/截图证据。 | 已完成 | 每个功能都有命令、页面、JSON、截图或 PDF 证据。 |
|
||||
|
||||
## 5. 不做事项
|
||||
|
||||
本阶段不做:
|
||||
|
||||
- 不移植 GTK、Glade、Python gmoccapy runtime。
|
||||
- 不启动 native `linuxcncsvr`、`milltask`、`halui`、`motmod` 作为浏览器运行依赖。
|
||||
- 不把 `gmoccapy_XYZAB` 的 `trivkins` profile 声称为 RTCP/TCP 运动学 proof。
|
||||
- 不用 JavaScript 自行发明 G-code 解释器、刀补、REMAP 或运动规划语义。
|
||||
- 不把 icon 清单复制到 UI 后就认定控制语义完成,按钮仍必须通过 task policy 和 runtime 证据验收。
|
||||
|
||||
## 6. 已满足的成功定义
|
||||
|
||||
本阶段收口时满足:
|
||||
|
||||
- 代码中有 `gmoccapy-xyzab` 或等价 reference profile,并显示 `XYZAB`、`trivkins`、HALFILE、POSTGUI_HALFILE、`NO_FORCE_HOMING=0` 等来源信息。
|
||||
- UI 核心按钮使用 `working3` 清单中的图标或 manifest,且 active/inactive 状态可被浏览器测试识别。
|
||||
- RUN、MDI、JOG、HOME、ESTOP、POWER、SPINDLE、COOLANT 的 gate 与 gmoccapy_XYZAB 文档一致。
|
||||
- HAL/postgui 诊断能区分 NML 命令、NML 状态、HAL pin、Web task/HAL simulation status。
|
||||
- `npm --prefix web-rtcp-5axis-sim-plan/app run build` 通过。
|
||||
- `npm --prefix web-rtcp-5axis-sim-plan/app run smoke:node` 通过。
|
||||
- 浏览器 smoke 覆盖 profile 切换、按钮 active 图标、canvas 非空、RUN blocked reason 和 HAL diagnostics;source-derived RTCP 运行证据仍由既有 `xyzac-trt`、`xyzbc-trt` 验收链路承担。
|
||||
- `05-acceptance-evidence.md` 已追加实际 JSON、截图、PDF 和报告路径。
|
||||
316
work/working4/02-program-development-steps.md
Normal file
316
work/working4/02-program-development-steps.md
Normal file
@@ -0,0 +1,316 @@
|
||||
# 02 程序开发详细步骤
|
||||
|
||||
生成日期:2026-06-26
|
||||
|
||||
## 1. 开发原则
|
||||
|
||||
- 先复用现有 `app/src` 架构:`profiles`、`runtime`、`state`、`ui`、`visualization`、`tests`。
|
||||
- 不引入 React/Vue 等 UI 框架。
|
||||
- 不把 gmoccapy native Python/GTK 代码作为浏览器依赖。
|
||||
- 图标资产可以使用 `working3/gmoccapy_button_icons/files/`,但按钮控制语义必须由现有 store/task policy/runtime 驱动。
|
||||
- 每个阶段必须同步更新 `04-task-matrix.md` 和 `03-progress-ledger.md`。
|
||||
|
||||
当前状态:阶段 A 到 G 已按 `04-task-matrix.md` 收口为 `done`。本文件保留为复现步骤和后续变更清单。
|
||||
|
||||
## 2. 阶段 A:资料和资产落库
|
||||
|
||||
目标:把 `working3` 资料变成项目内可追溯输入,而不是散落引用。
|
||||
|
||||
主要新增或更新文件:
|
||||
|
||||
```text
|
||||
web-rtcp-5axis-sim-plan/docs/gmoccapy-xyzab-reference.md
|
||||
web-rtcp-5axis-sim-plan/app/src/ui-reference/gmoccapy-button-icons.json
|
||||
web-rtcp-5axis-sim-plan/app/src/assets/gmoccapy-icons/
|
||||
web-rtcp-5axis-sim-plan/docs/traceability-matrix.md
|
||||
```
|
||||
|
||||
实施步骤:
|
||||
|
||||
1. 新建 `docs/gmoccapy-xyzab-reference.md`,摘要吸收 `gmoccapy_XYZAB_execution_analysis.md`。
|
||||
2. 将 `button_icon_inventory.csv` 转换为 JSON manifest,保留字段:分类、button_id、label、tooltip、icon_name、requested_size、source_type、copied_file、signals、notes。
|
||||
3. 将核心按钮图标复制到 `app/src/assets/gmoccapy-icons/`,至少覆盖:estop、power、manual、mdi、auto、settings、home、tool、touch、open、run、stop、pause、step、reload、fullscreen、spindle、coolant、view/zoom。
|
||||
4. 在 manifest 中记录原始来源和 `working3` 复制文件路径。
|
||||
5. 更新 `docs/traceability-matrix.md`,新增 gmoccapy_XYZAB 和按钮 icon 追溯记录。
|
||||
|
||||
验收命令:
|
||||
|
||||
```bash
|
||||
find web-rtcp-5axis-sim-plan/app/src/assets/gmoccapy-icons -maxdepth 1 -type f | wc -l
|
||||
node -e "JSON.parse(require('fs').readFileSync('web-rtcp-5axis-sim-plan/app/src/ui-reference/gmoccapy-button-icons.json','utf8')); console.log('icon_manifest_json=ok')"
|
||||
git diff --check -- web-rtcp-5axis-sim-plan
|
||||
```
|
||||
|
||||
验收标准:
|
||||
|
||||
- JSON manifest 可解析。
|
||||
- 图标文件存在,文件名稳定,不依赖 `working3` 运行时路径。
|
||||
- 文档明确图标只证明 UI 资产来源,不证明按钮控制语义。
|
||||
|
||||
## 3. 阶段 B:新增 gmoccapy_XYZAB reference profile
|
||||
|
||||
目标:在 Web 项目中建立 XYZAB/gmoccapy 参考 profile,表达 native INI/HAL 拓扑。
|
||||
|
||||
主要新增或更新文件:
|
||||
|
||||
```text
|
||||
web-rtcp-5axis-sim-plan/app/src/profiles/gmoccapy-xyzab.js
|
||||
web-rtcp-5axis-sim-plan/app/src/profiles/index.js
|
||||
web-rtcp-5axis-sim-plan/app/src/profiles/source-reference-map.js
|
||||
web-rtcp-5axis-sim-plan/tests/node/verify_gmoccapy_xyzab_profile.mjs
|
||||
```
|
||||
|
||||
实施步骤:
|
||||
|
||||
1. 新增 profile id:`gmoccapy-xyzab`。
|
||||
2. 设置坐标:`["X", "Y", "Z", "A", "B"]`。
|
||||
3. 设置 kinematics:`trivkins coordinates=xyzab`,并标记 `tcpCapable=false`、`rtcpProof=false`。
|
||||
4. 记录 INI 来源:`linuxcnc/configs/sim/gmoccapy/gmoccapy_XYZAB.ini`。
|
||||
5. 记录 HALFILE:`core_sim_XYZAB.hal`、`spindle_sim.hal`、`simulated_home.hal`。
|
||||
6. 记录 POSTGUI_HALFILE:`gmoccapy_postgui.hal`。
|
||||
7. 记录 `TASK=milltask`、`EMCMOT=motmod`、`HALUI=halui`、`CYCLE_TIME=100`、`SERVO_PERIOD=1000000`。
|
||||
8. 加入 `fiveAxisProfiles` 列表,但 UI 文案必须显示它是 gmoccapy/trivkins 参考机型。
|
||||
9. Node 测试断言 profile 坐标、joint 数、HAL files、postgui、no-force-homing gate、semantic boundary。
|
||||
|
||||
验收命令:
|
||||
|
||||
```bash
|
||||
node web-rtcp-5axis-sim-plan/tests/node/verify_gmoccapy_xyzab_profile.mjs
|
||||
npm --prefix web-rtcp-5axis-sim-plan/app run build
|
||||
```
|
||||
|
||||
验收标准:
|
||||
|
||||
- `gmoccapy-xyzab` 可通过 profile selector 选择。
|
||||
- 信息面板显示 `XYZAB`、`trivkins`、`gmoccapy_XYZAB.ini`、HALFILE、POSTGUI_HALFILE。
|
||||
- 不显示 `RTCP proof ready`,除非后续接入真实 source-derived TCP 运动学。
|
||||
|
||||
## 4. 阶段 C:NML/HAL 通信边界诊断
|
||||
|
||||
目标:让 Web UI 能解释 gmoccapy native 与 Web 仿真的通信差异。
|
||||
|
||||
主要新增或更新文件:
|
||||
|
||||
```text
|
||||
web-rtcp-5axis-sim-plan/app/src/runtime/gmoccapy-communication-model.js
|
||||
web-rtcp-5axis-sim-plan/app/src/ui/gmoccapy-shell.js
|
||||
web-rtcp-5axis-sim-plan/app/src/styles/gmoccapy.css
|
||||
web-rtcp-5axis-sim-plan/tests/node/verify_gmoccapy_communication_model.mjs
|
||||
```
|
||||
|
||||
实施步骤:
|
||||
|
||||
1. 建立 communication model 数据结构:
|
||||
- native command path:`gmoccapy -> linuxcnc.command -> NML emcCommand -> milltask`。
|
||||
- native status path:`milltask -> NML emcStatus/emcError -> stat/error poll`。
|
||||
- native HAL path:`gmoccapy.* pins <-> HAL shared memory`。
|
||||
- Web path:`button -> store dispatch -> task policy/runtime -> status snapshot -> UI/Three.js`。
|
||||
2. 在 info tabs 中新增 `gmoccapy comms` 或合并到 RTCP diagnostics。
|
||||
3. 对每个 action 显示 native equivalent command,例如 `STATE_ON`、`MODE_AUTO`、`AUTO_RUN`、`JOG_CONTINUOUS`。
|
||||
4. 显示 postgui 顺序:`halcomp.ready()` 后才能执行 POSTGUI_HALFILE。
|
||||
5. Node 测试断言主要命令链路和 HAL/postgui 说明存在。
|
||||
|
||||
验收命令:
|
||||
|
||||
```bash
|
||||
node web-rtcp-5axis-sim-plan/tests/node/verify_gmoccapy_communication_model.mjs
|
||||
```
|
||||
|
||||
验收标准:
|
||||
|
||||
- UI 能区分 NML command、NML status/error、HAL pin、Web runtime feedback。
|
||||
- 文案不暗示浏览器直接连接 native NML buffer 或 HAL shared memory。
|
||||
|
||||
## 5. 阶段 D:按钮图标和语义映射
|
||||
|
||||
目标:将当前文字按钮升级为 gmoccapy 风格 icon button,同时保持 task policy gate。
|
||||
|
||||
主要新增或更新文件:
|
||||
|
||||
```text
|
||||
web-rtcp-5axis-sim-plan/app/src/ui/gmoccapy-icon-registry.js
|
||||
web-rtcp-5axis-sim-plan/app/src/ui/gmoccapy-shell.js
|
||||
web-rtcp-5axis-sim-plan/app/src/styles/gmoccapy.css
|
||||
web-rtcp-5axis-sim-plan/tests/node/verify_gmoccapy_icon_manifest.mjs
|
||||
web-rtcp-5axis-sim-plan/tests/browser/gmoccapy_shell_smoke.html
|
||||
```
|
||||
|
||||
实施步骤:
|
||||
|
||||
1. 从 JSON manifest 建立 `getGmoccapyIcon(buttonId, stateVariant)`。
|
||||
2. 右侧主状态栏接入:
|
||||
- `tbtn_estop`:`main_switch_on/off`。
|
||||
- `tbtn_on`:`power_off/on`。
|
||||
- `rbt_manual`、`rbt_mdi`、`rbt_auto`:inactive/active 图标。
|
||||
- `tbtn_setup`、`tbtn_user_tabs`。
|
||||
3. 底部栏接入:
|
||||
- exit、homing、tool、touch、fullscreen、open、reload、run、stop、pause、step。
|
||||
4. Spindle/Coolant 接入:
|
||||
- spindle forward/reverse/stop active 状态。
|
||||
- flood/mist active/inactive 状态。
|
||||
5. Preview toolbar 接入:
|
||||
- view x/y/z/p、zoom in/out、toolpath、dimensions。
|
||||
6. 保留按钮 `aria-label`、title 和 disabled reason,不能只显示图标。
|
||||
7. browser smoke 增加断言:核心按钮存在 `data-icon-name`、active variant 和 disabled reason。
|
||||
|
||||
验收命令:
|
||||
|
||||
```bash
|
||||
node web-rtcp-5axis-sim-plan/tests/node/verify_gmoccapy_icon_manifest.mjs
|
||||
npm --prefix web-rtcp-5axis-sim-plan/app run build
|
||||
bash web-rtcp-5axis-sim-plan/tests/browser/verify_gmoccapy_shell_browser.sh
|
||||
```
|
||||
|
||||
验收标准:
|
||||
|
||||
- 核心按钮有图标、tooltip 或 aria-label。
|
||||
- active/inactive 状态随 store 状态变化。
|
||||
- RUN disabled 时仍显示 blocked reason。
|
||||
- 图标未加载时有稳定文本 fallback。
|
||||
|
||||
## 6. 阶段 E:G-code 执行互锁和按钮 gate 扩展
|
||||
|
||||
目标:按 gmoccapy_XYZAB 的执行条件补齐 Web gate 和测试。
|
||||
|
||||
主要新增或更新文件:
|
||||
|
||||
```text
|
||||
web-rtcp-5axis-sim-plan/app/src/state/linuxcnc-task-policy.js
|
||||
web-rtcp-5axis-sim-plan/app/src/state/store.js
|
||||
web-rtcp-5axis-sim-plan/tests/node/verify_gmoccapy_xyzab_gates.mjs
|
||||
web-rtcp-5axis-sim-plan/tests/browser/gmoccapy_shell_smoke.html
|
||||
```
|
||||
|
||||
实施步骤:
|
||||
|
||||
1. RUN gate 覆盖:
|
||||
- INI loaded。
|
||||
- machine-file opened。
|
||||
- not estop。
|
||||
- machine on。
|
||||
- all homed when `NO_FORCE_HOMING=0`。
|
||||
- mode auto。
|
||||
- interpreter idle。
|
||||
- task/HAL runtime ready when required。
|
||||
2. MDI gate 覆盖:
|
||||
- machine on。
|
||||
- all homed when `NO_FORCE_HOMING=0`。
|
||||
- mode mdi 或可安全切换 MDI。
|
||||
- interpreter idle 或允许队列追加。
|
||||
3. JOG gate 覆盖:
|
||||
- machine on。
|
||||
- mode manual。
|
||||
- not running。
|
||||
- axis/joint available。
|
||||
4. HOME gate 覆盖:
|
||||
- machine on。
|
||||
- not running。
|
||||
- no joint already homing。
|
||||
5. SPINDLE/COOLANT/OVERRIDE gate 覆盖:
|
||||
- estop/off 状态禁用。
|
||||
- auto/mdi reading/waiting 时限制手动覆盖主轴方向。
|
||||
6. Stop/Abort 必须在多数状态下可用,并清理 pause/start_line/active UI 状态。
|
||||
7. 增加每个 gate 的 operatorMessage,供按钮 title 和证据 JSON 使用。
|
||||
|
||||
验收命令:
|
||||
|
||||
```bash
|
||||
node web-rtcp-5axis-sim-plan/tests/node/verify_gmoccapy_xyzab_gates.mjs
|
||||
node web-rtcp-5axis-sim-plan/tests/node/verify_run_preconditions.mjs
|
||||
node web-rtcp-5axis-sim-plan/tests/node/verify_run_feedback_loop.mjs
|
||||
```
|
||||
|
||||
验收标准:
|
||||
|
||||
- 非法状态有明确 blocked reason。
|
||||
- 合法状态 RUN/MDI/JOG/HOME 可通过。
|
||||
- 原有 `verify_run_preconditions.mjs` 不回归。
|
||||
|
||||
## 7. 阶段 F:HAL pin/postgui 诊断面板
|
||||
|
||||
目标:把 gmoccapy_XYZAB 的 HAL pin 和 postgui 连接以 Web 诊断方式展示。
|
||||
|
||||
主要新增或更新文件:
|
||||
|
||||
```text
|
||||
web-rtcp-5axis-sim-plan/app/src/runtime/gmoccapy-hal-model.js
|
||||
web-rtcp-5axis-sim-plan/app/src/ui/gmoccapy-shell.js
|
||||
web-rtcp-5axis-sim-plan/tests/node/verify_gmoccapy_hal_model.mjs
|
||||
```
|
||||
|
||||
实施步骤:
|
||||
|
||||
1. 建立 HAL model 分类:
|
||||
- hard buttons:`gmoccapy.h-button.*`、`gmoccapy.v-button.*`。
|
||||
- jog pins:`gmoccapy.jog.axis.*`、`gmoccapy.jog.jog-inc-*`。
|
||||
- override pins:feed/spindle/jog/rapid counts 和 direct-value。
|
||||
- tool pins:tooloffset、toolchange、diameter。
|
||||
- program pins:length、current-line、progress。
|
||||
- error/message pins。
|
||||
2. 建立 postgui nets:
|
||||
- spindle feedback bar。
|
||||
- spindle at-speed LED。
|
||||
- tooloffset x/z。
|
||||
- simulated tool-change loop。
|
||||
3. UI 显示 `native pin name`、`web source`、`current value`、`semantic boundary`。
|
||||
4. Node 测试断言关键 pins 和 postgui nets 存在。
|
||||
|
||||
验收命令:
|
||||
|
||||
```bash
|
||||
node web-rtcp-5axis-sim-plan/tests/node/verify_gmoccapy_hal_model.mjs
|
||||
```
|
||||
|
||||
验收标准:
|
||||
|
||||
- 诊断面板清楚显示哪些是 native gmoccapy pins,哪些是 Web runtime 映射。
|
||||
- tool-change loop 被标记为 simulation loop,不表示真实人工换刀。
|
||||
|
||||
## 8. 阶段 G:浏览器证据和报告
|
||||
|
||||
目标:为本功能包生成可复查证据。
|
||||
|
||||
主要新增或更新文件:
|
||||
|
||||
```text
|
||||
qa/web-rtcp-5axis-site-test/
|
||||
qa/web-rtcp-5axis-site-test/output/gmoccapy-xyzab-function-report.json
|
||||
qa/web-rtcp-5axis-site-test/output/gmoccapy-xyzab-function-report.pdf
|
||||
qa/web-rtcp-5axis-site-test/output/gmoccapy-xyzab/
|
||||
work/working4/05-acceptance-evidence.md
|
||||
```
|
||||
|
||||
实施步骤:
|
||||
|
||||
1. 增加页面自动化用例:
|
||||
- profile 切换到 `gmoccapy-xyzab`。
|
||||
- 检查 DRO 显示 X/Y/Z/A/B。
|
||||
- 检查 `trivkins`、`NO_FORCE_HOMING=0`、HALFILE、POSTGUI_HALFILE。
|
||||
- 检查按钮图标 active/inactive。
|
||||
- 检查 RUN blocked reason。
|
||||
- 完成一次合法状态 RUN 或模拟 RUN。
|
||||
2. 保存截图:
|
||||
- loaded。
|
||||
- profile selected。
|
||||
- run blocked。
|
||||
- run ready。
|
||||
- running。
|
||||
- HAL diagnostics。
|
||||
3. 保存 JSON report。
|
||||
4. 输出 JSON 和 PDF 报告;本阶段已生成 `gmoccapy-xyzab-function-report.json` 和 `.pdf`。
|
||||
5. 更新 `05-acceptance-evidence.md`。
|
||||
|
||||
验收命令:
|
||||
|
||||
```bash
|
||||
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
|
||||
node qa/web-rtcp-5axis-site-test/capture-gmoccapy-xyzab-function-cases.mjs
|
||||
```
|
||||
|
||||
验收标准:
|
||||
|
||||
- JSON report 中所有 case 为 PASS。
|
||||
- 截图文件存在且页面非空。
|
||||
- PDF 或替代报告路径写入 `05-acceptance-evidence.md`。
|
||||
512
work/working4/03-progress-ledger.md
Normal file
512
work/working4/03-progress-ledger.md
Normal file
@@ -0,0 +1,512 @@
|
||||
# 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
|
||||
|
||||
```
|
||||
|
||||
结果:
|
||||
|
||||
遗留问题:
|
||||
|
||||
下一步:
|
||||
86
work/working4/04-task-matrix.md
Normal file
86
work/working4/04-task-matrix.md
Normal file
@@ -0,0 +1,86 @@
|
||||
# 04 任务矩阵
|
||||
|
||||
生成日期:2026-06-26
|
||||
|
||||
状态取值:
|
||||
|
||||
- `done`:已完成并有证据。
|
||||
- `in_progress`:正在做。
|
||||
- `todo`:未开始。
|
||||
- `blocked`:被外部条件阻塞。
|
||||
- `deferred`:暂缓,不影响当前阶段验收。
|
||||
|
||||
## 1. 文档任务
|
||||
|
||||
| 任务编号 | 状态 | 任务 | 产物 | 验收标准 |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| W4-D01 | done | 建立 working4 文档索引 | `README.md` | 列出 01-07 文档和后续维护入口。 |
|
||||
| W4-D02 | done | 编写功能内容文档 | `01-function-content.md` | 覆盖目标、现状、working3 新价值、功能包、不做事项、成功定义。 |
|
||||
| W4-D03 | done | 编写开发步骤文档 | `02-program-development-steps.md` | 按阶段列出应改文件、步骤、命令、验收标准。 |
|
||||
| W4-D04 | done | 建立推进台账 | `03-progress-ledger.md` | 包含 W4-DOC-001 和后续追加模板。 |
|
||||
| W4-D05 | done | 建立任务矩阵 | `04-task-matrix.md` | 所有后续任务有编号、状态、验收标准。 |
|
||||
| W4-D06 | done | 建立验收证据文档 | `05-acceptance-evidence.md` | 记录现有证据、实际 QA 证据和验收边界。 |
|
||||
| W4-D07 | done | 建立决策记录 | `06-decision-records.md` | 记录边界、技术路线、验收策略。 |
|
||||
| W4-D08 | done | 收口 working4 状态文档 | `README.md`、`01-function-content.md`、`02-program-development-steps.md`、`05-acceptance-evidence.md` | 规划口径与已完成实施、QA 证据和验收边界一致。 |
|
||||
| W4-D09 | done | 建立最终收口说明 | `07-final-closure.md` | 汇总完成结论、最终证据、保留边界和后续变更规则。 |
|
||||
|
||||
## 2. 资料和资产任务
|
||||
|
||||
| 任务编号 | 状态 | 任务 | 主要文件 | 验收标准 |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| W4-A01 | done | 建立 gmoccapy_XYZAB reference 文档 | `web-rtcp-5axis-sim-plan/docs/gmoccapy-xyzab-reference.md` | 文档覆盖 native 启动、NML、HAL、postgui、互锁、按钮控制逻辑。 |
|
||||
| W4-A02 | done | 生成按钮图标 JSON manifest | `app/src/ui-reference/gmoccapy-button-icons.json` | JSON 可解析,记录 211 行清单并保留来源路径。 |
|
||||
| W4-A03 | done | 复制核心 gmoccapy 图标到 app assets | `app/src/assets/gmoccapy-icons/` | 已复制 112 个图标,覆盖主状态栏、底部栏、Auto 栏、spindle/coolant、preview。 |
|
||||
| W4-A04 | done | 更新追溯矩阵 | `docs/traceability-matrix.md` | 新增 gmoccapy_XYZAB、button icon manifest、communication model、HAL diagnostics 追溯项。 |
|
||||
|
||||
## 3. Profile 和 runtime model 任务
|
||||
|
||||
| 任务编号 | 状态 | 任务 | 主要文件 | 验收标准 |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| W4-P01 | done | 新增 `gmoccapy-xyzab` profile | `app/src/profiles/gmoccapy-xyzab.js`、`app/src/profiles/index.js` | profile 可选择,坐标为 XYZAB,标记 `trivkins`、`tcpCapable=false` 和 `rtcpProof=false`。 |
|
||||
| W4-P02 | done | 新增 XYZAB source reference map | `app/src/profiles/source-reference-map.js` | 包含 `gmoccapy_XYZAB.ini`、`core_sim_XYZAB.hal`、`spindle_sim.hal`、`simulated_home.hal`、`gmoccapy_postgui.hal`。 |
|
||||
| W4-P03 | done | 新增 gmoccapy communication model | `app/src/runtime/gmoccapy-communication-model.js` | 能列出 native NML command/status/error、HAL pin、Web runtime 映射。 |
|
||||
| W4-P04 | done | 新增 gmoccapy HAL model | `app/src/runtime/gmoccapy-hal-model.js` | 能列出关键 `gmoccapy.*` pins 和 postgui nets。 |
|
||||
|
||||
## 4. UI 和按钮任务
|
||||
|
||||
| 任务编号 | 状态 | 任务 | 主要文件 | 验收标准 |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| W4-U01 | done | 建立 icon registry | `app/src/ui/gmoccapy-icon-registry.js` | `getGmoccapyIcon(buttonId, variant)` 可返回 icon path/name/fallback。 |
|
||||
| W4-U02 | done | 右侧主状态栏接入 icon | `app/src/ui/gmoccapy-shell.js`、`app/src/styles/gmoccapy.css` | estop/power/manual/mdi/auto/settings/user tabs 有 active/inactive 图标。 |
|
||||
| W4-U03 | done | 底部和 Auto 控制栏接入 icon | `gmoccapy-shell.js`、`gmoccapy.css` | open/reload/run/stop/pause/step/home/tool/touch/fullscreen 有图标和 aria-label。 |
|
||||
| W4-U04 | done | spindle/coolant/preview 接入 icon | `gmoccapy-shell.js`、`gmoccapy.css` | spindle forward/reverse/stop、flood/mist、view/zoom/toolpath/dimensions 有图标或 fallback。 |
|
||||
| W4-U05 | done | 信息面板展示 communication/HAL diagnostics | `gmoccapy-shell.js` | UI 可见 NML/HAL/Web runtime 边界和 postgui 顺序。 |
|
||||
|
||||
## 5. Gate 和业务语义任务
|
||||
|
||||
| 任务编号 | 状态 | 任务 | 主要文件 | 验收标准 |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| W4-G01 | done | RUN gate 对齐 gmoccapy_XYZAB | `app/src/state/linuxcnc-task-policy.js`、`store.js` | 覆盖 INI、machine-file、estop、power、home、auto、interp idle、runtime ready。 |
|
||||
| W4-G02 | done | MDI gate 对齐 gmoccapy_XYZAB | `linuxcnc-task-policy.js`、`store.js` | 未上电、未回零、运行中等状态有明确 blocked reason。 |
|
||||
| W4-G03 | done | JOG/HOME gate 对齐 gmoccapy_XYZAB | `linuxcnc-task-policy.js`、`store.js` | manual/on/not-running 状态规则可测。 |
|
||||
| W4-G04 | done | spindle/coolant/override gate 对齐 gmoccapy_XYZAB | `linuxcnc-task-policy.js`、`gmoccapy-shell.js` | 急停/下电禁用,运行中限制手动主轴方向覆盖。 |
|
||||
| W4-G05 | done | Stop/Abort 清理 UI 状态 | `store.js`、`gmoccapy-shell.js` | Stop 后 pause/start_line/active run state 清理,browser 可测。 |
|
||||
|
||||
## 6. 测试和证据任务
|
||||
|
||||
| 任务编号 | 状态 | 任务 | 主要文件 | 验收标准 |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| W4-T01 | done | 新增 XYZAB profile Node 测试 | `tests/node/verify_gmoccapy_xyzab_profile.mjs` | 断言坐标、HALFILE、POSTGUI、trivkins、boundary。 |
|
||||
| W4-T02 | done | 新增 icon manifest Node 测试 | `tests/node/verify_gmoccapy_icon_manifest.mjs` | manifest 可解析,核心按钮均有 icon 或 fallback。 |
|
||||
| W4-T03 | done | 新增 communication model Node 测试 | `tests/node/verify_gmoccapy_communication_model.mjs` | NML/HAL/Web 映射完整。 |
|
||||
| W4-T04 | done | 新增 HAL model Node 测试 | `tests/node/verify_gmoccapy_hal_model.mjs` | 关键 pins 和 postgui nets 存在。 |
|
||||
| W4-T05 | done | 新增 gate Node 测试 | `tests/node/verify_gmoccapy_xyzab_gates.mjs` | RUN/MDI/JOG/HOME/SPINDLE/COOLANT 合法和非法状态均覆盖。 |
|
||||
| W4-T06 | done | 更新 browser smoke | `tests/browser/gmoccapy_shell_smoke.html` | 覆盖 profile 切换、icon active、blocked reason、HAL diagnostics。 |
|
||||
| W4-T07 | done | 新增 QA 截图和报告脚本 | `qa/web-rtcp-5axis-site-test/capture-gmoccapy-xyzab-function-cases.mjs` | 输出 JSON、PDF 和截图。 |
|
||||
| W4-T08 | done | 更新验收证据文档 | `work/working4/05-acceptance-evidence.md` | 追加实际命令、JSON、PDF、截图和资产路径。 |
|
||||
|
||||
## 7. 全局验收任务
|
||||
|
||||
| 任务编号 | 状态 | 任务 | 命令 | 验收标准 |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| W4-V01 | done | 静态构建 | `npm --prefix web-rtcp-5axis-sim-plan/app run build` | 返回 0。 |
|
||||
| W4-V02 | done | Node smoke | `npm --prefix web-rtcp-5axis-sim-plan/app run smoke:node` | 返回 0,原有测试不回归。 |
|
||||
| W4-V03 | done | Browser smoke | `bash web-rtcp-5axis-sim-plan/tests/browser/verify_gmoccapy_shell_browser.sh` | 返回 0,页面非空,canvas 非空。 |
|
||||
| W4-V04 | done | Dist browser smoke | `bash web-rtcp-5axis-sim-plan/tests/browser/verify_gmoccapy_dist_browser.sh` | 返回 0。 |
|
||||
| W4-V05 | done | 文档和空白检查 | `git diff --check -- web-rtcp-5axis-sim-plan qa/web-rtcp-5axis-site-test work/working4` | 返回 0。 |
|
||||
306
work/working4/05-acceptance-evidence.md
Normal file
306
work/working4/05-acceptance-evidence.md
Normal file
@@ -0,0 +1,306 @@
|
||||
# 05 验收证据
|
||||
|
||||
生成日期:2026-06-26
|
||||
|
||||
## 1. 证据规则
|
||||
|
||||
每个功能完成时必须至少提供一种证据:
|
||||
|
||||
- 命令输出:Node、npm build、browser smoke、QA capture。
|
||||
- 页面证据:本地 URL、云端 URL、页面状态说明。
|
||||
- JSON:机器可读 PASS/FAIL 报告。
|
||||
- 截图:关键页面状态。
|
||||
- PDF/DOCX/Markdown 报告:适合人工归档的报告。
|
||||
- job_id/report_id:如果由 CI、云端任务或报告生成器产生,必须记录。
|
||||
|
||||
本目录先由文档规划创建;后续 W4-IMPL-001、W4-IMPL-002 和收口检查已补齐实现、QA 证据和最新
|
||||
job_id/report_id。
|
||||
|
||||
注:QA JSON 内部字段使用 camelCase:`jobId`、`reportId`;控制台输出和本归档表使用
|
||||
`job_id`、`report_id` 标签,两者指向同一组编号。
|
||||
|
||||
## 2. 本轮文档证据
|
||||
|
||||
本轮输入资料确认:
|
||||
|
||||
```bash
|
||||
find /home/meswork/cnc_wams/work/working3 -maxdepth 3 -type f | sort
|
||||
find /home/meswork/cnc_wams/web-rtcp-5axis-sim-plan -maxdepth 3 -type f | sort
|
||||
find /home/meswork/cnc_wams/work/working4 -maxdepth 2 -type f -print | sort
|
||||
```
|
||||
|
||||
本轮读取的核心资料:
|
||||
|
||||
```text
|
||||
/home/meswork/cnc_wams/work/working3/gmoccapy_XYZAB_execution_analysis.md
|
||||
/home/meswork/cnc_wams/work/working3/gmoccapy_button_icons/README.md
|
||||
/home/meswork/cnc_wams/work/working3/gmoccapy_button_icons/button_icon_inventory.md
|
||||
/home/meswork/cnc_wams/work/working3/gmoccapy_button_icons/button_icon_inventory.csv
|
||||
/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/README.md
|
||||
/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/docs/technical-roadmap.md
|
||||
/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/docs/traceability-matrix.md
|
||||
/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/app/src/main.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/state/store.js
|
||||
```
|
||||
|
||||
本轮输出文件:
|
||||
|
||||
```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
|
||||
/home/meswork/cnc_wams/work/working4/07-final-closure.md
|
||||
```
|
||||
|
||||
## 3. 可复用的现有项目证据
|
||||
|
||||
### 3.1 Node 和 build 命令
|
||||
|
||||
项目已有命令:
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
|
||||
`smoke:node` 当前覆盖:
|
||||
|
||||
```text
|
||||
verify_linuxcnc_kinematics_runtime.mjs
|
||||
verify_linuxcnc_interpreter_runtime.mjs
|
||||
verify_linuxcnc_ini_runtime.mjs
|
||||
verify_run_preconditions.mjs
|
||||
verify_run_feedback_loop.mjs
|
||||
verify_linuxcnc_task_hal_runtime.mjs
|
||||
verify_native_task_hal_audit.mjs
|
||||
verify_full_linuxcnc_5axis_source.mjs
|
||||
verify_real_linuxcnc_5axis_program_cases.mjs
|
||||
verify_full_execution_boundary.mjs
|
||||
verify_machine_file_staging.mjs
|
||||
verify_five_axis_session.mjs
|
||||
verify_rtcp_store.mjs
|
||||
verify_profile_boundary.mjs
|
||||
verify_linear_unit_conversion.mjs
|
||||
```
|
||||
|
||||
### 3.2 项目内已有 JSON/截图/PDF/DOCX
|
||||
|
||||
可复用证据路径:
|
||||
|
||||
```text
|
||||
/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/build/readiness/native-task-hal-readiness.json
|
||||
/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/working_run/run-feedback-evidence/run-feedback-local.json
|
||||
/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/working_run/run-feedback-evidence/run-feedback-local.png
|
||||
/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/toolpath-preview-cases.json
|
||||
/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/run-preconditions-feedback.json
|
||||
/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/meter-scene-evidence.json
|
||||
/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/native-task-hal-comparison-report.json
|
||||
/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/native-task-hal-comparison-report.md
|
||||
/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/button-control-evidence-report.json
|
||||
/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/button-control-evidence-report.pdf
|
||||
/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/cloud-button-control-evidence-report.json
|
||||
/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/cloud-button-control-evidence-report.pdf
|
||||
/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/test-linuxcnc-source-run-report.json
|
||||
/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/test-linuxcnc-source-run-report-2026-06-22.docx
|
||||
/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/test-linuxcnc-source-run-report-2026-06-23.docx
|
||||
```
|
||||
|
||||
云端 RUN 截图目录:
|
||||
|
||||
```text
|
||||
/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/cloud-run-after-deploy/
|
||||
/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/cloud-run-stop-after-deploy/
|
||||
/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/cloud-run-debug/
|
||||
/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/cloud-run-debug-current/
|
||||
```
|
||||
|
||||
## 4. working4 已生成的证据
|
||||
|
||||
| 任务 | 证据类型 | 目标路径 | 状态 |
|
||||
| --- | --- | --- | --- |
|
||||
| W4-A02 icon manifest | JSON | `web-rtcp-5axis-sim-plan/app/src/ui-reference/gmoccapy-button-icons.json` | 已生成,211 行清单 |
|
||||
| W4-P01 XYZAB profile | Node output | `tests/node/verify_gmoccapy_xyzab_profile.mjs` 控制台输出 | 已通过 |
|
||||
| W4-P03 communication model | Node output | `tests/node/verify_gmoccapy_communication_model.mjs` 控制台输出 | 已通过 |
|
||||
| W4-P04 HAL model | Node output | `tests/node/verify_gmoccapy_hal_model.mjs` 控制台输出 | 已通过 |
|
||||
| W4-U01 icon registry | Node output | `tests/node/verify_gmoccapy_icon_registry.mjs` 控制台输出 | 已通过 |
|
||||
| W4-G01 到 W4-G05 gate | Node output | `tests/node/verify_gmoccapy_xyzab_gates.mjs` 控制台输出 | 已通过 |
|
||||
| W4-U02 到 W4-U05 UI | Browser screenshot | `qa/web-rtcp-5axis-site-test/output/gmoccapy-xyzab/*.png` | 已生成 6 张截图 |
|
||||
| W4-T07 QA report | JSON/PDF | `qa/web-rtcp-5axis-site-test/output/gmoccapy-xyzab-function-report.json`、`.pdf` | 已生成,PASS |
|
||||
| W4-V01 build | 命令输出 | `npm --prefix ... run build` | 已通过 |
|
||||
| W4-V02 node smoke | 命令输出 | `npm --prefix ... run smoke:node` | 已通过 |
|
||||
| W4-V03 browser smoke | 命令输出和截图 | `verify_gmoccapy_shell_browser.sh` | 已通过 |
|
||||
| W4-V04 dist browser smoke | 命令输出 | `verify_gmoccapy_dist_browser.sh` | 已通过 |
|
||||
| W4-V05 whitespace check | 命令输出 | `git diff --check -- web-rtcp-5axis-sim-plan qa/web-rtcp-5axis-site-test work/working4` | 已通过 |
|
||||
|
||||
## 5. W4-IMPL-001 实施证据
|
||||
|
||||
日期:2026-06-26
|
||||
|
||||
本轮新增和更新的关键产物:
|
||||
|
||||
```text
|
||||
web-rtcp-5axis-sim-plan/docs/gmoccapy-xyzab-reference.md
|
||||
web-rtcp-5axis-sim-plan/app/src/ui-reference/gmoccapy-button-icons.json
|
||||
web-rtcp-5axis-sim-plan/app/src/assets/gmoccapy-icons/
|
||||
web-rtcp-5axis-sim-plan/app/src/profiles/gmoccapy-xyzab.js
|
||||
web-rtcp-5axis-sim-plan/app/src/runtime/gmoccapy-communication-model.js
|
||||
web-rtcp-5axis-sim-plan/app/src/runtime/gmoccapy-hal-model.js
|
||||
web-rtcp-5axis-sim-plan/tests/node/verify_gmoccapy_xyzab_profile.mjs
|
||||
web-rtcp-5axis-sim-plan/tests/node/verify_gmoccapy_icon_manifest.mjs
|
||||
web-rtcp-5axis-sim-plan/tests/node/verify_gmoccapy_communication_model.mjs
|
||||
web-rtcp-5axis-sim-plan/tests/node/verify_gmoccapy_hal_model.mjs
|
||||
```
|
||||
|
||||
资产证据:
|
||||
|
||||
```bash
|
||||
find web-rtcp-5axis-sim-plan/app/src/assets/gmoccapy-icons -maxdepth 1 -type f | wc -l
|
||||
# 112
|
||||
|
||||
node -e "const m=JSON.parse(require('fs').readFileSync('web-rtcp-5axis-sim-plan/app/src/ui-reference/gmoccapy-button-icons.json','utf8')); console.log(m.rowCount,m.copiedIconCount)"
|
||||
# 211 112
|
||||
```
|
||||
|
||||
新增 Node 测试证据:
|
||||
|
||||
```bash
|
||||
node web-rtcp-5axis-sim-plan/tests/node/verify_gmoccapy_xyzab_profile.mjs
|
||||
# gmoccapy_xyzab_profile_smoke=ok
|
||||
|
||||
node web-rtcp-5axis-sim-plan/tests/node/verify_gmoccapy_icon_manifest.mjs
|
||||
# gmoccapy_icon_manifest_smoke=ok
|
||||
|
||||
node web-rtcp-5axis-sim-plan/tests/node/verify_gmoccapy_communication_model.mjs
|
||||
# gmoccapy_communication_model_smoke=ok
|
||||
|
||||
node web-rtcp-5axis-sim-plan/tests/node/verify_gmoccapy_hal_model.mjs
|
||||
# gmoccapy_hal_model_smoke=ok
|
||||
```
|
||||
|
||||
全局验收命令:
|
||||
|
||||
```bash
|
||||
npm --prefix web-rtcp-5axis-sim-plan/app run build
|
||||
# gmoccapy_static_build=ok
|
||||
|
||||
npm --prefix web-rtcp-5axis-sim-plan/app run smoke:node
|
||||
# linear_unit_conversion_smoke=ok
|
||||
# 全链路返回 0,并包含 gmoccapy_xyzab_profile/icon_manifest/communication_model/hal_model smoke。
|
||||
|
||||
bash web-rtcp-5axis-sim-plan/tests/browser/verify_gmoccapy_shell_browser.sh
|
||||
# gmoccapy_shell_smoke=ok
|
||||
|
||||
bash web-rtcp-5axis-sim-plan/tests/browser/verify_gmoccapy_dist_browser.sh
|
||||
# gmoccapy_dist_smoke=ok
|
||||
|
||||
git diff --check -- web-rtcp-5axis-sim-plan work/working4
|
||||
# 返回 0
|
||||
```
|
||||
|
||||
## 6. job_id 和 report_id 台账
|
||||
|
||||
### 6.1 W4-IMPL-002 UI/gate/QA 证据
|
||||
|
||||
日期:2026-06-26
|
||||
|
||||
本轮新增和更新的关键产物:
|
||||
|
||||
```text
|
||||
web-rtcp-5axis-sim-plan/app/src/ui/gmoccapy-icon-registry.js
|
||||
web-rtcp-5axis-sim-plan/app/src/ui/gmoccapy-shell.js
|
||||
web-rtcp-5axis-sim-plan/app/src/styles/gmoccapy.css
|
||||
web-rtcp-5axis-sim-plan/app/src/state/linuxcnc-task-policy.js
|
||||
web-rtcp-5axis-sim-plan/app/src/state/store.js
|
||||
web-rtcp-5axis-sim-plan/tests/node/verify_gmoccapy_icon_registry.mjs
|
||||
web-rtcp-5axis-sim-plan/tests/node/verify_gmoccapy_xyzab_gates.mjs
|
||||
web-rtcp-5axis-sim-plan/tests/browser/gmoccapy_shell_smoke.html
|
||||
qa/web-rtcp-5axis-site-test/capture-gmoccapy-xyzab-function-cases.mjs
|
||||
```
|
||||
|
||||
新增 Node 测试证据:
|
||||
|
||||
```bash
|
||||
node web-rtcp-5axis-sim-plan/tests/node/verify_gmoccapy_icon_registry.mjs
|
||||
# gmoccapy_icon_registry_smoke=ok
|
||||
|
||||
node web-rtcp-5axis-sim-plan/tests/node/verify_gmoccapy_xyzab_gates.mjs
|
||||
# gmoccapy_xyzab_gates_smoke=ok
|
||||
|
||||
node web-rtcp-5axis-sim-plan/tests/node/verify_rtcp_store.mjs
|
||||
# rtcp_store_smoke=ok
|
||||
|
||||
node web-rtcp-5axis-sim-plan/tests/node/verify_run_preconditions.mjs
|
||||
# run_preconditions_ini_profile_smoke=ok
|
||||
# run_preconditions_kinematics_smoke=ok
|
||||
# run_preconditions_machine_file_smoke=ok
|
||||
```
|
||||
|
||||
Build/browser/QA 证据:
|
||||
|
||||
```bash
|
||||
npm --prefix web-rtcp-5axis-sim-plan/app run build
|
||||
# gmoccapy_static_build=ok
|
||||
|
||||
bash web-rtcp-5axis-sim-plan/tests/browser/verify_gmoccapy_shell_browser.sh
|
||||
# gmoccapy_shell_smoke=ok
|
||||
|
||||
node qa/web-rtcp-5axis-site-test/capture-gmoccapy-xyzab-function-cases.mjs
|
||||
# gmoccapy_xyzab_function_status=PASS
|
||||
# gmoccapy_xyzab_function_job_id=xyzab-20260626214346-f4b4aa36
|
||||
# gmoccapy_xyzab_function_report_id=report-xyzab-20260626214346-f4b4aa36
|
||||
```
|
||||
|
||||
QA 报告路径:
|
||||
|
||||
```text
|
||||
/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/gmoccapy-xyzab-function-report.json
|
||||
/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/gmoccapy-xyzab-function-report.pdf
|
||||
/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/gmoccapy-xyzab/01-loaded.png
|
||||
/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/gmoccapy-xyzab/02-profile-selected.png
|
||||
/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/gmoccapy-xyzab/03-run-blocked-power.png
|
||||
/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/gmoccapy-xyzab/04-run-blocked-reference-evidence.png
|
||||
/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/gmoccapy-xyzab/05-controls-active.png
|
||||
/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/gmoccapy-xyzab/06-hal-diagnostics.png
|
||||
```
|
||||
|
||||
QA JSON 检查结果:
|
||||
|
||||
```text
|
||||
PASS XYZAB profile selected
|
||||
PASS Reference profile blocks RTCP promotion
|
||||
PASS RUN blocked before power
|
||||
PASS RUN blocked by reference evidence
|
||||
PASS Core icons rendered
|
||||
PASS Spindle/coolant state updates
|
||||
PASS NML command diagnostic
|
||||
PASS Web runtime diagnostic
|
||||
PASS HAL postgui diagnostic
|
||||
PASS Screenshots are nonblank
|
||||
```
|
||||
|
||||
### 6.2 job_id/report_id 表
|
||||
|
||||
归档表:
|
||||
|
||||
| 日期 | job_id | report_id | 来源 | 对应任务 | 结果 | 证据路径 |
|
||||
| --- | --- | --- | --- | --- | --- | --- |
|
||||
| 2026-06-26 | N/A | N/A | 本轮文档生成和状态收口 | W4-D01 到 W4-D09 | done | `/home/meswork/cnc_wams/work/working4/` |
|
||||
| 2026-06-26 | N/A | N/A | 本轮本地实施 | W4-A01 到 W4-A04、W4-P01 到 W4-P04、W4-T01 到 W4-T04、W4-V01 到 W4-V05 | done | `web-rtcp-5axis-sim-plan/app/src/`、`docs/`、`tests/node/` |
|
||||
| 2026-06-26 | xyzab-20260626190724-7b80b3aa | report-xyzab-20260626190724-7b80b3aa | 本轮 QA capture | W4-U01 到 W4-U05、W4-G01 到 W4-G05、W4-T05 到 W4-T07 | PASS | `qa/web-rtcp-5axis-site-test/output/gmoccapy-xyzab-function-report.json`、`.pdf`、`output/gmoccapy-xyzab/` |
|
||||
| 2026-06-26 | xyzab-20260626214346-f4b4aa36 | report-xyzab-20260626214346-f4b4aa36 | 继续复核 QA capture | W4-U01 到 W4-U05、W4-G01 到 W4-G05、W4-T05 到 W4-T07、W4-V01 到 W4-V05 | PASS | `qa/web-rtcp-5axis-site-test/output/gmoccapy-xyzab-function-report.json`、`.pdf`、`output/gmoccapy-xyzab/` |
|
||||
|
||||
## 7. 验收缺口
|
||||
|
||||
当前缺口:
|
||||
|
||||
- `gmoccapy-xyzab` 仍是 `trivkins` reference-only profile,不是 RTCP/TCP proof;真实 RTCP promotion 仍只来自 source-derived `xyzac-trt`、`xyzbc-trt`。
|
||||
- 本轮 QA 对 `gmoccapy-xyzab` 证明 profile、图标、diagnostics 和 gate blocked reason,不证明 native `linuxcncsvr/milltask/HAL` 实机运行。
|
||||
|
||||
本轮新增证据已补齐原先 UI icon、communication/HAL diagnostics、XYZAB gate 和 QA JSON/PDF 缺口。
|
||||
182
work/working4/06-decision-records.md
Normal file
182
work/working4/06-decision-records.md
Normal file
@@ -0,0 +1,182 @@
|
||||
# 06 决策记录
|
||||
|
||||
生成日期:2026-06-26
|
||||
|
||||
## ADR-001:working3 作为参考输入,不直接作为 runtime 依赖
|
||||
|
||||
状态:accepted
|
||||
|
||||
决策:
|
||||
|
||||
`working3` 中的 Markdown、CSV 和图标文件是功能完善的参考输入。后续实现时应把需要长期使用的资料复制或转换到 `web-rtcp-5axis-sim-plan` 内部目录,而不是让应用运行时依赖 `work/working3`。
|
||||
|
||||
原因:
|
||||
|
||||
- `work/working3` 是资料整理目录,不是产品运行目录。
|
||||
- Web 应用需要稳定的 assets、manifest 和 source map。
|
||||
- 这样可以在追溯矩阵中明确来源,同时避免后续清理 `work/` 时破坏应用。
|
||||
|
||||
后续影响:
|
||||
|
||||
- 图标必须落到 `app/src/assets/gmoccapy-icons/` 或等价目录。
|
||||
- CSV 必须转换为 JSON manifest 或构建期可解析资产。
|
||||
|
||||
## ADR-002:不移植 native gmoccapy GTK/Glade runtime
|
||||
|
||||
状态:accepted
|
||||
|
||||
决策:
|
||||
|
||||
Web 项目只参考 gmoccapy 的布局、按钮、互锁和通信模型,不把 `gmoccapy.py`、GTK、Glade、Python REMAP runtime 直接搬进浏览器。
|
||||
|
||||
原因:
|
||||
|
||||
- 项目目标是 Web 仿真产品,不是替代 LinuxCNC native GUI。
|
||||
- 浏览器不能等同 native NML buffer、HAL shared memory 和 Linux realtime thread。
|
||||
- 当前项目已有原生 HTML/CSS/ES module shell,继续复用成本最低。
|
||||
|
||||
后续影响:
|
||||
|
||||
- 文档和 UI 必须用 `semanticBoundary` 说明 Web 模拟边界。
|
||||
- Python GUI runtime 一直保持 `reference only`。
|
||||
|
||||
## ADR-003:gmoccapy_XYZAB 是 trivkins 参考 profile,不是 RTCP proof
|
||||
|
||||
状态:accepted
|
||||
|
||||
决策:
|
||||
|
||||
新增 `gmoccapy-xyzab` 时,必须标记为 `trivkins coordinates=xyzab` 的 gmoccapy 参考机型,不得标记为 RTCP/TCP 运动学 proof。
|
||||
|
||||
原因:
|
||||
|
||||
- `gmoccapy_XYZAB.ini` 的运动学是 `trivkins`。
|
||||
- RTCP/TCP 运动学 proof 当前来自 `xyzac-trt`、`xyzbc-trt` 等 source-derived kinematics runtime。
|
||||
- 把 XYZAB trivkins 误标为 RTCP 会污染验收标准。
|
||||
|
||||
后续影响:
|
||||
|
||||
- UI 可以显示 XYZAB 轴和 gmoccapy native 启动链路。
|
||||
- RTCP badge 对该 profile 应显示 `not TCP proof` 或等价说明,除非后续接入真实 TCP 运动学。
|
||||
|
||||
## ADR-004:NML/HAL 通信以诊断模型展示,控制仍走 Web store/task policy/runtime
|
||||
|
||||
状态:accepted
|
||||
|
||||
决策:
|
||||
|
||||
Web UI 显示 gmoccapy native 的 NML/HAL 通信路径,但按钮点击仍走现有 `store.dispatch`、`linuxcnc-task-policy`、runtime status snapshot。
|
||||
|
||||
原因:
|
||||
|
||||
- 当前浏览器应用没有 native NML buffer。
|
||||
- 现有 store/task policy/runtime 已覆盖 RUN、MDI、JOG、HOME、task/HAL status loop。
|
||||
- 诊断模型能帮助用户理解 native gmoccapy,但不会制造虚假的 native 连接。
|
||||
|
||||
后续影响:
|
||||
|
||||
- 每个按钮可显示 native equivalent command,例如 `STATE_ON`、`MODE_AUTO`、`AUTO_RUN`。
|
||||
- 证据中必须区分 native reference 和 Web execution。
|
||||
|
||||
## ADR-005:按钮图标不能替代按钮语义验收
|
||||
|
||||
状态:accepted
|
||||
|
||||
决策:
|
||||
|
||||
图标接入只算 UI 资产验收。按钮是否正确,必须通过 task policy、store、runtime 和 browser action 证据验收。
|
||||
|
||||
原因:
|
||||
|
||||
- `working3` 图标清单只说明图标来源、按钮名、tooltip 和信号线索。
|
||||
- 真正的执行安全依赖 machine state、mode、interp state、home state、runtime readiness。
|
||||
- 防止“看起来像 gmoccapy”但控制逻辑不正确。
|
||||
|
||||
后续影响:
|
||||
|
||||
- 每个核心按钮至少要有 icon 证据和 gate/action 证据。
|
||||
- browser smoke 应断言 active icon 和 disabled reason。
|
||||
|
||||
## ADR-006:G-code 执行互锁按三层保护建模
|
||||
|
||||
状态:accepted
|
||||
|
||||
决策:
|
||||
|
||||
RUN/MDI/JOG/HOME 等 gate 按 gmoccapy_XYZAB 文档中的三层保护建模:
|
||||
|
||||
1. UI 按钮敏感状态。
|
||||
2. Action/task policy gate。
|
||||
3. runtime 或 LinuxCNC source-derived boundary 最终校验。
|
||||
|
||||
原因:
|
||||
|
||||
- gmoccapy native 本身不是只靠一个按钮判断。
|
||||
- LinuxCNC 后台会再次拒绝非法命令。
|
||||
- Web 侧需要给用户可读 blocked reason,同时保持 runtime 校验。
|
||||
|
||||
后续影响:
|
||||
|
||||
- 测试必须覆盖非法状态和合法状态。
|
||||
- Stop/Abort 的可用范围应大于 Run/MDI/Jog。
|
||||
|
||||
## ADR-007:POSTGUI_HALFILE 必须作为顺序约束记录
|
||||
|
||||
状态:accepted
|
||||
|
||||
决策:
|
||||
|
||||
HAL/postgui 诊断中必须记录:`gmoccapy_postgui.hal` 只能在 `gmoccapy.halcomp.ready()` 后执行。
|
||||
|
||||
原因:
|
||||
|
||||
- postgui 文件引用 `gmoccapy.*` pins,普通 HALFILE 阶段这些 pins 尚不存在。
|
||||
- 这是 gmoccapy native 启动顺序中的关键边界。
|
||||
- Web 侧如果展示 HAL model,也要保留这个顺序概念。
|
||||
|
||||
后续影响:
|
||||
|
||||
- HAL model 中 postgui nets 独立于普通 HALFILE。
|
||||
- 文档和 UI 不应把 postgui pin 连接混入实时 HAL 启动前阶段。
|
||||
|
||||
## ADR-008:新增功能必须 evidence-first promotion
|
||||
|
||||
状态:accepted
|
||||
|
||||
决策:
|
||||
|
||||
任何新增功能不能只凭代码合入认定完成,必须补齐 `05-acceptance-evidence.md` 中对应证据。
|
||||
|
||||
原因:
|
||||
|
||||
- 当前项目已经形成 Node smoke、browser smoke、QA JSON、截图、PDF/DOCX 的证据链。
|
||||
- gmoccapy_XYZAB 功能涉及 UI、profile、HAL、NML、gate、图标,多边界容易误判。
|
||||
- 证据优先可以防止重复做和回归。
|
||||
|
||||
后续影响:
|
||||
|
||||
- `04-task-matrix.md` 中没有证据的任务不得标为 `done`。
|
||||
- 文档、代码、测试、报告必须一起更新。
|
||||
|
||||
## ADR-009:gmoccapy_XYZAB profile 必须阻断 TCP/RTCP 切换
|
||||
|
||||
状态:accepted
|
||||
|
||||
决策:
|
||||
|
||||
`gmoccapy-xyzab` profile 虽然进入 profile selector,但必须标记
|
||||
`tcpCapable=false`、`rtcpProof=false`,并在 UI 和 store 层阻断 `tcp-*` kinsType
|
||||
或 `SET_RTCP enabled`。
|
||||
|
||||
原因:
|
||||
|
||||
- `gmoccapy_XYZAB.ini` 的真实运动学是 `trivkins coordinates=xyzab`。
|
||||
- 当前 Web 项目的 source-derived TCP/RTCP proof 来自 `xyzac-trt` 和 `xyzbc-trt`。
|
||||
- 如果 selector 允许 XYZAB reference profile 打开 TCP,会造成“参考配置可运行 RTCP”的误判。
|
||||
|
||||
后续影响:
|
||||
|
||||
- 侧栏 TCP 按钮在 `gmoccapy-xyzab` 下应 disabled,并给出 reference-only 原因。
|
||||
- `store.dispatch({ type: "SET_KINS_TYPE", kinsType: "tcp-..." })` 和
|
||||
`SET_RTCP enabled` 必须保持防护,即使未来 UI 改动也不能绕过。
|
||||
- 如果未来接入真实 XYZAB TCP kinematics,应新增独立 runtime proof 和测试后再修改该决策。
|
||||
86
work/working4/07-final-closure.md
Normal file
86
work/working4/07-final-closure.md
Normal file
@@ -0,0 +1,86 @@
|
||||
# 07 最终收口说明
|
||||
|
||||
生成日期:2026-06-26
|
||||
|
||||
## 1. 收口结论
|
||||
|
||||
`working4` 当前已完成。`04-task-matrix.md` 中 W4-D、W4-A、W4-P、W4-U、W4-G、
|
||||
W4-T、W4-V 任务均为 `done`,当前没有 `todo`、`in_progress`、`blocked` 或
|
||||
`deferred` 任务行。
|
||||
|
||||
本阶段已完成:
|
||||
|
||||
- `gmoccapy-xyzab` reference profile 和 source reference map。
|
||||
- gmoccapy button icon manifest、核心图标资产和 icon registry。
|
||||
- gmoccapy native NML/HAL/postgui communication diagnostics。
|
||||
- RUN、MDI、JOG、HOME、spindle、coolant、override gate 对齐。
|
||||
- Node smoke、browser smoke、dist browser smoke、QA JSON/PDF/截图证据。
|
||||
- 文档矩阵、推进台账、验收证据和决策记录归档。
|
||||
|
||||
## 2. 最终证据
|
||||
|
||||
QA report:
|
||||
|
||||
```text
|
||||
/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/gmoccapy-xyzab-function-report.json
|
||||
/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/gmoccapy-xyzab-function-report.pdf
|
||||
```
|
||||
|
||||
QA identifiers:
|
||||
|
||||
```text
|
||||
jobId/job_id=xyzab-20260626214346-f4b4aa36
|
||||
reportId/report_id=report-xyzab-20260626214346-f4b4aa36
|
||||
status=PASS
|
||||
steps=6
|
||||
checks=10
|
||||
generatedAt=2026-06-26T21:43:46.310Z
|
||||
```
|
||||
|
||||
截图目录:
|
||||
|
||||
```text
|
||||
/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/gmoccapy-xyzab/
|
||||
```
|
||||
|
||||
最终校验命令:
|
||||
|
||||
```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 run build`、`npm run smoke:node`、gmoccapy shell browser smoke 和 dist browser smoke 均返回 0。
|
||||
- QA capture 重新生成 JSON/PDF/截图,状态为 `PASS`,包含 6 个步骤和 10 个检查。
|
||||
- `git diff --check` 返回 0。
|
||||
|
||||
## 3. 保留边界
|
||||
|
||||
- `gmoccapy-xyzab` 是 `trivkins coordinates=xyzab` reference-only profile。
|
||||
- 本阶段不把 `gmoccapy-xyzab` 声称为 TCP/RTCP proof。
|
||||
- 本阶段不证明 native `linuxcncsvr`、`milltask`、HAL realtime thread 或 gmoccapy GTK runtime 实机运行。
|
||||
- 真实 RTCP promotion 仍来自 source-derived `xyzac-trt`、`xyzbc-trt` 等已有验收链路。
|
||||
|
||||
## 4. 后续变更规则
|
||||
|
||||
后续如继续扩展 `working4` 范围,必须先在 `04-task-matrix.md` 新增任务编号,不应复用已完成的 W4-D/W4-A/W4-P/W4-U/W4-G/W4-T/W4-V 任务作为未完成项。
|
||||
|
||||
每个新增任务必须同步更新:
|
||||
|
||||
- `03-progress-ledger.md`
|
||||
- `04-task-matrix.md`
|
||||
- `05-acceptance-evidence.md`
|
||||
- 本文件的最终证据或保留边界
|
||||
59
work/working4/README.md
Normal file
59
work/working4/README.md
Normal file
@@ -0,0 +1,59 @@
|
||||
# working4 文档索引
|
||||
|
||||
生成日期:2026-06-26
|
||||
|
||||
本目录用于承接 `/home/meswork/cnc_wams/work/working3` 的资料,规划、实施并归档
|
||||
`/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan` 的 gmoccapy_XYZAB 功能完善工作。
|
||||
|
||||
截至 2026-06-26,`04-task-matrix.md` 中 W4-D、W4-A、W4-P、W4-U、W4-G、W4-T、W4-V
|
||||
任务均已收口为 `done`。`07-final-closure.md` 是本阶段最终收口入口。
|
||||
|
||||
当前状态:
|
||||
|
||||
- 已完成:gmoccapy_XYZAB reference profile、图标 manifest/assets、communication/HAL diagnostics、task gate、browser smoke、QA JSON/PDF/截图证据。
|
||||
- 保留边界:`gmoccapy-xyzab` 仍是 `trivkins` reference-only profile,不作为 TCP/RTCP proof,也不证明 native `linuxcncsvr/milltask/HAL` 实机运行。
|
||||
- 后续变更:需要先在 `04-task-matrix.md` 新增任务编号,再按 `03-progress-ledger.md` 和 `05-acceptance-evidence.md` 追加证据。
|
||||
|
||||
## 文档清单
|
||||
|
||||
| 编号 | 文件 | 用途 |
|
||||
| --- | --- | --- |
|
||||
| 01 | `01-function-content.md` | 功能内容:说明已完善功能、资料来源、边界和成功定义。 |
|
||||
| 02 | `02-program-development-steps.md` | 程序开发详细步骤:记录各阶段已改文件、实现动作、命令和验收口径。 |
|
||||
| 03 | `03-progress-ledger.md` | 推进台账:记录每轮做了什么、改了哪些文件、验证了什么、下一步是什么。 |
|
||||
| 04 | `04-task-matrix.md` | 任务矩阵:统一任务编号、状态、验收标准,防止重复做。 |
|
||||
| 05 | `05-acceptance-evidence.md` | 验收证据:命令、页面、job_id、report_id、PDF、截图、JSON 等证据路径。 |
|
||||
| 06 | `06-decision-records.md` | 决策记录:记录为什么这么做,后续变更时不重复争论。 |
|
||||
| 07 | `07-final-closure.md` | 最终收口说明:汇总完成结论、最终证据、保留边界和后续变更规则。 |
|
||||
|
||||
## 资料输入
|
||||
|
||||
主要输入资料:
|
||||
|
||||
```text
|
||||
/home/meswork/cnc_wams/work/working3/gmoccapy_XYZAB_execution_analysis.md
|
||||
/home/meswork/cnc_wams/work/working3/gmoccapy_button_icons/README.md
|
||||
/home/meswork/cnc_wams/work/working3/gmoccapy_button_icons/button_icon_inventory.md
|
||||
/home/meswork/cnc_wams/work/working3/gmoccapy_button_icons/button_icon_inventory.csv
|
||||
/home/meswork/cnc_wams/work/working3/gmoccapy_button_icons/files/
|
||||
```
|
||||
|
||||
目标项目现有资料和代码:
|
||||
|
||||
```text
|
||||
/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/README.md
|
||||
/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/docs/
|
||||
/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/working_run/
|
||||
/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/app/src/
|
||||
/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/tests/
|
||||
```
|
||||
|
||||
## 后续维护入口
|
||||
|
||||
当前没有待执行的 `todo` 或 `in_progress` 任务。后续如新增工作,先打开:
|
||||
|
||||
1. `04-task-matrix.md`,新增任务编号、状态和验收标准。
|
||||
2. `02-program-development-steps.md`,按对应阶段复用或扩展代码和测试步骤。
|
||||
3. `03-progress-ledger.md`,每轮结束追加台账。
|
||||
4. `05-acceptance-evidence.md`,补齐命令、截图、JSON、PDF 和报告编号。
|
||||
5. `07-final-closure.md`,更新最终证据或保留边界。
|
||||
Reference in New Issue
Block a user