Files
linuxcncWebWASM/nextTask1.md

181 lines
7.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# LinuxCNC Web/WASM 完整仿真移植接续指针
这是 LinuxCNC 仿真实现的唯一接续入口;本文件只管理仿真源码、native/WASM/Worker 行为和回归测试。
## Current
```yaml
pointer_version: 1
updated: 2026-08-23
track: complete-linuxcnc-simulation
context_id: linuxcnc-2.10.0-pre0-wasm-m1-py-c1
milestone: S8
last_verified_task: FE-M1-REACT
last_verified_slice: React/Tailwind/Radix/Three.js FE-M1 build and minimal_xyz Worker case verified
```
## Read
启动时只读取本文件的 `Current`、`Task`、`Verify`、`Stop`,然后按需读取:
- [`docs/linuxcnc-web-wasm-simulation-gap-plan-v2.md`](docs/linuxcnc-web-wasm-simulation-gap-plan-v2.md)
- [`docs/linuxcnc-web-wasm-autonomous-execution-prompt.md`](docs/linuxcnc-web-wasm-autonomous-execution-prompt.md)
- [`docs/linuxcnc-web-wasm-case-parity-plan.md`](docs/linuxcnc-web-wasm-case-parity-plan.md)
- [`docs/linuxcnc-axis-complete-parity-spec.md`](docs/linuxcnc-axis-complete-parity-spec.md)
- [`context-lock.json`](context-lock.json)
- 当前任务列出的直接输入和上一个任务的完成报告
启动只读取仿真实现直接输入和当前测试要求。
## Task
```yaml
id: FE-M4-GUI-06
status: blocked
title: GUI browser visual/performance/recovery matrix
active_case: linuxcnc/configs/sim/axis/vismach/3axis-tutorial/3axis-tutorial.ini
milestone: S8
context_id: linuxcnc-2.10.0-pre0-wasm-m1-py-c1
depends_on: [FE-M4-GUI-05, FE-M4-GUI-04, FE-M4-GUI-03, FE-M1-REACT, S8-09]
direct_inputs:
- coverage/react-frontend-m1.report.json
- coverage/gui-source-inventory-fe-m4.report.json
- coverage/react-gui-domain-fe-m4.report.json
- coverage/axis-web-workflow-fe-m4.report.json
- coverage/gui-family-adapter-fe-m4.report.json
- coverage/gui-visual-workflow-fe-m4.report.json
- coverage/axis-source-inventory.report.json
- coverage/axis-contract.report.json
- coverage/axis-control.report.json
- coverage/axis-view-edit.report.json
- coverage/axis-case-parity.report.json
- coverage/axis-test-matrix.report.json
- coverage/axis-release-evidence.report.json
- coverage/gui-browser-visual-fe-m4.report.json
- docs/linuxcnc-axis-complete-parity-spec.md
- coverage/browser-matrix-remediation.report.json
- docs/linuxcnc-web-wasm-frontend-communication-design.md
- docs/linuxcnc-web-wasm-source-map.md
- linuxcnc/src/emc/usr_intf
- linuxcnc/lib/python
- linuxcnc/configs/sim
required_outputs:
- Chromium GUI screenshot/DOM/canvas visual evidence
- browser performance and recovery boundary report
- explicit Firefox/Safari/OPFS blockers without promotion
objective: >-
在真实 Chromium production preview 中验证 GUI DOM、Three.js 非空像素、
exact-path 三轴案例加载、控件布局和移动视口;浏览器版本矩阵、OPFS
crash/recovery 和 Safari/Firefox 不可用条件保持独立 blocked。
non_goals:
- 不复制桌面 GTK/Qt/Tk 窗口,不把宿主 Python/动态 loader/真实硬件变成 Web 能力
- 不修改 ABI、protocol、schema、context lock;manifest 归属缺口保留为可定位审计项
completion_evidence:
status: blocked
report: coverage/gui-browser-visual-fe-m4.report.json
report_sha256: 053d8a18c129487017c1a85b004c6ed46a8475b2bd5fb126fe2ba4d367b845ed
implementation_status: verified
chromium_visual: verified
chromium_authorized_slice: verified
chromium_version: Google Chrome 151.0.7922.169
axis_ui_dom_contract: verified
axis_ui_feature_count: 26
axis_control_contract: verified
axis_control_report_sha256: cc12b349cc3fc3e7d1882530f123ca92e4a510f3f40fec4c72bcfd4e876f0a3e
axis_view_edit_contract: verified
axis_view_edit_report_sha256: 39785b377806de18cb48a1d3c38c129d84a000b9c81d2478cc1a5567ec754e9b
axis_case_parity: partial
axis_case_parity_report_sha256: a6fcc5eec964a02b821f9a52f30b8e0d3303b8c94507b6d44d6cc75b7a7089e4
axis_test_matrix: partial
axis_test_matrix_report_sha256: 9ba5de25bd8cfbfd61bd0a87bcb282170fa1de44b28a172b1c6ba649f580c357
axis_release_evidence: partial
axis_release_evidence_report_sha256: 1a0d3add58fcddf8a6a2a81a7197d91c45a1c94fabb7db75033c4b2f0f3da777
browser_matrix: blocked
opfs_recovery: blocked
prior_completion_evidence:
task_id: FE-M4-GUI-05
report: coverage/gui-visual-workflow-fe-m4.report.json
report_sha256: 4082c673e2bccbf250cfe23683d2732021a3a22f5302da8e12cc80397685c788
worker_test: scripts/test_gui_visual_workflow_report.py
```
## Next
```yaml
next_task: none
status: blocked
depends_on: [FE-M4-GUI-06]
plan: docs/linuxcnc-web-wasm-3axis-tutorial-complete-parity-plan.md
continuation_file: nextTask1.md
continuation_status: local-closure-verified-awaiting-external
case_parity_plan: docs/linuxcnc-web-wasm-case-parity-plan.md
queued_after_unblock: []
local_continuation:
status: verified
task_id: TUTORIAL-14
report: coverage/axis3-tutorial-closure-index.report.json
report_sha256: 5d63a83572d381e01cce7ba70b8c4ddb4ce6dfb790d4ac3b6c365d7dbbdbf750
previous_task: TUTORIAL-13
action_if_drift: rerun_selected_case_complete_parity_and_visual_regression
failure_sample: source_defined_individual_home_and_change_button_ack
pause_condition: selected_case_complete_scope_verified_or_explicit_external_source_blocker_recorded
native_case_execution:
status: required_for_case_parity
selected_case: /home/mes006/linuxcncWebWASM/linuxcnc/configs/sim/axis/vismach/3axis-tutorial
case_dir: copy_only_3axis_tutorial_declared_exact_files_to_isolated_writable_directory
cwd: repository_root_with_system_HALLIB_DIR
command: cwd=/home/mes006/linuxcncWebWASM/linuxcnc linuxcnc <case_dir>/<entrypoint>.ini
display: real_DISPLAY_required
success: visible_AXIS_window_WM_CLASS_axis_Axis_and_geometry_at_least_600x400
forbidden_success_proxies: timeout_or_task_marker_without_visible_AXIS_panel
evidence:
prior_implementation_reports: coverage/*.report.json
title: selected 3axis-tutorial closure verified; external release blockers retained
direct_inputs:
- coverage/runtime-extensions-s8-09.report.json
- coverage/sim-case-matrix-s8-06.report.json
- docs/linuxcnc-web-wasm-case-parity-plan.md
reason: TUTORIAL-11..14 selected-case implementation is verified using source-defined individual home and hal_manualtoolchange.change_button ACK; Firefox/Safari/OPFS/realtime hardware/full release blockers remain external and do not justify creating another local task
```
认领后状态改为 `in_progress`,完成后只能在专属测试、完整技术回归和报告 self-hash 都通过时改为 `verified`;发现输入或契约缺口则改为 `blocked` 并保留失败样本。
## Verify
开始修改前:
```bash
python3 scripts/validate_baseline.py
python3 scripts/validate_task_pointer.py
```
技术轨道收口验证:
```bash
scripts/build-wasm.sh
ctest --test-dir build-native --output-on-failure
for f in web/worker/test_*.mjs; do node "$f" || exit 1; done
for f in web/app/test_*.mjs; do node "$f" || exit 1; done
```
完成任务后还必须运行:
```bash
for f in web/worker/test_*.mjs; do node "$f" || exit 1; done
for f in web/app/test_*.mjs; do node "$f" || exit 1; done
python3 scripts/validate_baseline.py
python3 scripts/validate_task_pointer.py
```
## Stop
遇到以下任一情况立即保持 `blocked`:
- 需要修改锁定 ABI、protocol、schema 或 manifest。
- native/WASM/Worker 的首个 divergent tick 未定位。
- 只能依赖墙钟、随机数、mock Worker、宿主路径或真实设备才能通过。
- checkpoint/event/hash 不可验证,或恢复会重复已提交副作用。
- 直接输入缺失、生成器不确定性、索引/资源无法定位,或测试只能通过降低检查。
S8-10 原有 235-case acceptance 仍保持 `blocked/STOP_RELEASE`,不宣称 LinuxCNC 全功能 release。用户已授权继续全 GUI 技术移植;FE-M4-GUI-01..05 已完成 source/domain/AXIS/family/Three.js 映射,FE-M4-GUI-06 Chromium desktop/mobile visual smoke 已 verified,但三浏览器 minimum matrix、Safari/Firefox、OPFS recovery 仍 blocked;许可证审批不阻塞实现,最终交付阶段再汇总 license/NOTICE。