162 lines
6.6 KiB
Markdown
162 lines
6.6 KiB
Markdown
# LinuxCNC Web/WASM 完整仿真移植接续指针
|
||
|
||
这是 LinuxCNC 仿真实现的唯一接续入口;本文件只管理仿真源码、native/WASM/Worker 行为和回归测试。
|
||
|
||
## Current
|
||
|
||
```yaml
|
||
pointer_version: 1
|
||
updated: 2026-08-22
|
||
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
|
||
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: 301fae229574e9e0bb4090330ed6d783da4e9771a1c1666473b1cf011f6330d6
|
||
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-simulation-gap-plan-v2.md
|
||
continuation_file: nextTask1.md
|
||
continuation_status: simulation-only-case-closure
|
||
case_parity_plan: docs/linuxcnc-web-wasm-case-parity-plan.md
|
||
queued_after_unblock: []
|
||
evidence:
|
||
prior_implementation_reports: coverage/*.report.json
|
||
title: no automatic follow-up while browser/recovery matrix is incomplete
|
||
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: Chromium visual slice is verified; full browser minimums, Safari/Firefox and OPFS recovery remain external blockers
|
||
```
|
||
|
||
认领后状态改为 `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。
|