# 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 缺口。