补充 project release handoff 文档
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
# Project Completion Tracker
|
# Project Completion Tracker
|
||||||
|
|
||||||
Last updated: 2026-06-15 CST
|
Last updated: 2026-06-16 CST
|
||||||
|
|
||||||
This file tracks the overall completion state of the LinuxCNC WASM/browser port.
|
This file tracks the overall completion state of the LinuxCNC WASM/browser port.
|
||||||
Use it for project-level status and acceptance tracking. Use `text14.txt` for
|
Use it for project-level status and acceptance tracking. Use `text14.txt` for
|
||||||
@@ -9,7 +9,7 @@ turn-by-turn continuation notes and next-batch execution records.
|
|||||||
## Current Status
|
## Current Status
|
||||||
|
|
||||||
- Active continuation file: `text14.txt`
|
- Active continuation file: `text14.txt`
|
||||||
- Latest completed batch: host/runtime boundary release-gate docs
|
- Latest completed batch: project release handoff docs
|
||||||
- Latest relevant commit: use `git log -1 --oneline` after each committed batch
|
- Latest relevant commit: use `git log -1 --oneline` after each committed batch
|
||||||
- Working tree at tracker creation: clean
|
- Working tree at tracker creation: clean
|
||||||
- Required policy: LinuxCNC remains the only CNC semantic source
|
- Required policy: LinuxCNC remains the only CNC semantic source
|
||||||
@@ -41,12 +41,12 @@ The project is complete for the current scope when all of the following are true
|
|||||||
| Sim config inventory | Stable with skips | `executed=28`, `passed=28`, `skipped=131`, `unexpected_fail=0`; `docs/sim-configs-coverage-handoff.md` records the release-gate baseline. |
|
| Sim config inventory | Stable with skips | `executed=28`, `passed=28`, `skipped=131`, `unexpected_fail=0`; `docs/sim-configs-coverage-handoff.md` records the release-gate baseline. |
|
||||||
| Native nc_files baseline | Stable | Last recorded Layer 1: `total 107`, `pass 101`, `expected_fail 6`, `unexpected_fail 0`. |
|
| Native nc_files baseline | Stable | Last recorded Layer 1: `total 107`, `pass 101`, `expected_fail 6`, `unexpected_fail 0`. |
|
||||||
| Native sim configs baseline | Stable | Last recorded Layer 2: `total 159`, `pass 151`, `expected_fail 8`, `unexpected_fail 0`. |
|
| Native sim configs baseline | Stable | Last recorded Layer 2: `total 159`, `pass 151`, `expected_fail 8`, `unexpected_fail 0`. |
|
||||||
| OPFS/session persistence | In progress | Browser smoke passes, SDK re-exports OPFS/session helpers, and `docs/opfs-session-persistence.md` defines the project-level release gate. |
|
| OPFS/session persistence | Stable for current scope | Browser smoke passes, SDK re-exports OPFS/session helpers, and `docs/opfs-session-persistence.md` defines the project-level release gate. |
|
||||||
| SDK/API surface | In progress | SDK re-exports core, OPFS/session, sim-config staging, and INI panel shell/workflow overview helpers with a Node surface smoke. |
|
| SDK/API surface | Stable for current scope | SDK re-exports core, OPFS/session, sim-config staging, and INI panel shell/workflow overview helpers with a Node surface smoke. |
|
||||||
| Browser/UI workflow | In progress | Workflow overview embedding mount DOM closure is complete; current focus is SDK/docs/release gate consolidation. |
|
| Browser/UI workflow | Stable for current scope | Workflow overview embedding mount DOM closure is complete and documented for external shells. |
|
||||||
| Workflow overview embedding | In progress | Report/display/render, DOM contract/readiness/renderer, mount result/display/render, mount DOM contract/readiness/renderer/wrapper exist. |
|
| Workflow overview embedding | Stable for current scope | Report/display/render, DOM contract/readiness/renderer, mount result/display/render, mount DOM contract/readiness/renderer/wrapper exist. |
|
||||||
| Host/runtime boundary proof | In progress | Host smoke passes; runtime families remain blocked and `docs/host-runtime-boundary-handoff.md` records host readiness, promotion blockers, dispatch, and evidence gates. |
|
| Host/runtime boundary proof | Stable blocked state | Host smoke passes; runtime families remain blocked and `docs/host-runtime-boundary-handoff.md` records host readiness, promotion blockers, dispatch, and evidence gates. |
|
||||||
| Documentation/release gate | In progress | OPFS/session, sim-config, and host/runtime release gates are documented and smoke-tested; final README/docs pass still pending. |
|
| Documentation/release gate | Stable for current scope | `docs/project-release-handoff.md` links README, panel entry, SDK, OPFS/session, sim-config, host/runtime, source reuse, drift, and tracker acceptance paths. |
|
||||||
|
|
||||||
## Blocked Runtime Families
|
## Blocked Runtime Families
|
||||||
|
|
||||||
@@ -74,7 +74,9 @@ Execute these in order unless a later user request explicitly changes priority.
|
|||||||
|
|
||||||
Current next task:
|
Current next task:
|
||||||
|
|
||||||
- Refresh final README/docs acceptance checklist and project completion handoff.
|
- Run the final required gate set from `docs/project-release-handoff.md`, keep
|
||||||
|
the working tree clean, and add the final `text14.txt` completion record if
|
||||||
|
all gates pass.
|
||||||
|
|
||||||
Then complete the closure:
|
Then complete the closure:
|
||||||
|
|
||||||
@@ -176,16 +178,21 @@ Completion criteria:
|
|||||||
|
|
||||||
Work items:
|
Work items:
|
||||||
|
|
||||||
- Update `README.md`.
|
- Update `README.md`. Done.
|
||||||
- Update `docs/panel-entry.md`.
|
- Update `docs/panel-entry.md`. Done.
|
||||||
- Update `docs/source-reuse-map.md`.
|
- Update `docs/source-reuse-map.md`. Done.
|
||||||
- Update `docs/drift-report.md`.
|
- Update `docs/drift-report.md`. Done.
|
||||||
- Add or refresh final acceptance checklist.
|
- Add or refresh final acceptance checklist. Done via
|
||||||
|
`docs/project-release-handoff.md`.
|
||||||
|
- Add docs smoke for project release handoff. Done via
|
||||||
|
`tests/docs/node/verify_project_release_handoff_docs.sh`.
|
||||||
|
|
||||||
Completion criteria:
|
Completion criteria:
|
||||||
|
|
||||||
- A new developer can run validation from README/docs without reading old
|
- A new developer can run validation from README/docs without reading old
|
||||||
`text1` through `text13`.
|
`text1` through `text13`.
|
||||||
|
- `project_release_handoff_docs_node_smoke=ok` is included in the host
|
||||||
|
aggregate gate.
|
||||||
|
|
||||||
## Required Gates
|
## Required Gates
|
||||||
|
|
||||||
@@ -228,4 +235,5 @@ wasm-port/tests/native/verify_sim_configs.sh
|
|||||||
- [ ] Browser INI panel smoke passes.
|
- [ ] Browser INI panel smoke passes.
|
||||||
- [ ] Host aggregate smoke passes.
|
- [ ] Host aggregate smoke passes.
|
||||||
- [ ] Runtime blocked families remain documented.
|
- [ ] Runtime blocked families remain documented.
|
||||||
|
- [ ] Project release handoff docs smoke passes.
|
||||||
- [ ] README/docs explain supported workflows and blocked items.
|
- [ ] README/docs explain supported workflows and blocked items.
|
||||||
|
|||||||
96
text14.txt
96
text14.txt
@@ -1399,3 +1399,99 @@ host_wasm_opfs_browser_smokes=ok
|
|||||||
`wasm-port/README.md`、`PROJECT_COMPLETION_TRACKER.md` 和必要 docs 索引,形成新接手者不阅读
|
`wasm-port/README.md`、`PROJECT_COMPLETION_TRACKER.md` 和必要 docs 索引,形成新接手者不阅读
|
||||||
`text1` 到 `text13` 也能完成验证的最终路径;重点是收敛 required gates、supported workflows、
|
`text1` 到 `text13` 也能完成验证的最终路径;重点是收敛 required gates、supported workflows、
|
||||||
blocked runtime families、SDK/API surface 与 browser/UI workflow 入口,不新增功能或 CNC 语义。
|
blocked runtime families、SDK/API surface 与 browser/UI workflow 入口,不新增功能或 CNC 语义。
|
||||||
|
|
||||||
|
十六、2026-06-16 继续执行记录:project release handoff docs
|
||||||
|
|
||||||
|
本轮按 `text14.txt` 执行,推进最终 README/docs acceptance checklist 与项目完成 handoff。
|
||||||
|
新增项目级 release handoff 文档和 docs smoke,把 README、panel entry、SDK、OPFS/session、
|
||||||
|
sim-config coverage、host/runtime boundary、source reuse、drift report 与 tracker 串成新接手者可直接
|
||||||
|
执行的验收路径。
|
||||||
|
|
||||||
|
完成内容:
|
||||||
|
|
||||||
|
- 新增 `wasm-port/docs/project-release-handoff.md`;
|
||||||
|
- 新增 `wasm-port/tests/docs/node/verify_project_release_handoff_docs.mjs`;
|
||||||
|
- 新增 `wasm-port/tests/docs/node/verify_project_release_handoff_docs.sh`;
|
||||||
|
- `wasm-port/README.md` 增加当前 release handoff 入口、最小 release validation commands、
|
||||||
|
expected handoff smoke outputs、browser/UI 与 SDK 入口;
|
||||||
|
- `wasm-port/docs/panel-entry.md` 增加项目级 handoff 入口、SDK 稳定导入说明、
|
||||||
|
workflow overview embedding helpers 概括与 release validation 引用;
|
||||||
|
- `wasm-port/docs/source-reuse-map.md` 增加 project release handoff 交叉引用;
|
||||||
|
- `wasm-port/docs/drift-report.md` 增加 project release handoff 交叉引用;
|
||||||
|
- `wasm-port/tests/host/verify_host_smokes.sh` 纳入
|
||||||
|
`wasm-port/tests/docs/node/verify_project_release_handoff_docs.sh`;
|
||||||
|
- `PROJECT_COMPLETION_TRACKER.md` 同步:
|
||||||
|
- latest completed batch 更新为 `project release handoff docs`;
|
||||||
|
- OPFS/session persistence、SDK/API surface、Browser/UI workflow、Workflow overview embedding、
|
||||||
|
Documentation/release gate 标记为 current scope stable;
|
||||||
|
- Host/runtime boundary proof 标记为 stable blocked state;
|
||||||
|
- Documentation/Release Gate 工作项标记完成;
|
||||||
|
- Final Acceptance Checklist 增加 project release handoff docs smoke;
|
||||||
|
- 当前下一步收敛为 final required gate set、clean working tree 与最终 completion record;
|
||||||
|
- 未新增控制按钮;
|
||||||
|
- 未执行 action-plan;
|
||||||
|
- 未解析 G-code;
|
||||||
|
- 未解释 canonical events;
|
||||||
|
- 未新增 JS CNC 语义;
|
||||||
|
- 未运行 opt-in runtime probes;
|
||||||
|
- 未 promotion blocked runtime family;
|
||||||
|
- 未改变 LinuxCNC interpreter、tool、parameter、planner、kinematics、remap 或 LinuxCNC-owned
|
||||||
|
runtime semantics。
|
||||||
|
|
||||||
|
验证已通过:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git diff --check
|
||||||
|
wasm-port/tools/verify_vendor_sync.sh
|
||||||
|
wasm-port/tools/verify_no_standalone_cnc_semantics.sh
|
||||||
|
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
|
||||||
|
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh
|
||||||
|
wasm-port/tests/docs/node/verify_project_release_handoff_docs.sh
|
||||||
|
wasm-port/tests/docs/node/verify_opfs_session_docs.sh
|
||||||
|
wasm-port/tests/docs/node/verify_sim_configs_coverage_docs.sh
|
||||||
|
wasm-port/tests/docs/node/verify_host_runtime_boundary_docs.sh
|
||||||
|
wasm-port/tests/sdk/node/verify_sdk_surface.sh
|
||||||
|
wasm-port/tests/ui/node/verify_ini_panel_entry_docs.sh
|
||||||
|
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
|
||||||
|
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_ini_panel_browser.sh
|
||||||
|
wasm-port/tests/host/verify_host_smokes.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
关键输出:
|
||||||
|
|
||||||
|
```text
|
||||||
|
project_release_handoff_docs_node_smoke=ok
|
||||||
|
opfs_session_docs_node_smoke=ok
|
||||||
|
sim_configs_coverage_docs_node_smoke=ok
|
||||||
|
host_runtime_boundary_docs_node_smoke=ok
|
||||||
|
sdk_surface_node_smoke=ok
|
||||||
|
ini_panel_entry_docs_node_smoke=ok
|
||||||
|
ui_node_smokes=ok
|
||||||
|
vendor sync up to date
|
||||||
|
standalone CNC semantics guard complete
|
||||||
|
interp_wasm_node_smoke=ok
|
||||||
|
sim_configs_wasm_node_inventory_executed=28
|
||||||
|
sim_configs_wasm_node_inventory_passed=28
|
||||||
|
sim_configs_wasm_node_inventory_skipped=131
|
||||||
|
sim_configs_wasm_node_inventory_unexpected_fail=0
|
||||||
|
sim_configs_wasm_node_inventory_skip_ASSET_ONLY=65
|
||||||
|
sim_configs_wasm_node_inventory_skip_L4_PYTHON_REMAP=53
|
||||||
|
sim_configs_wasm_node_inventory_skip_L4_TOOL_DB=1
|
||||||
|
sim_configs_wasm_node_inventory_skip_L4_USER_M_PROCESS=1
|
||||||
|
sim_configs_wasm_node_inventory_skip_NON_MAIN_CLASS=10
|
||||||
|
sim_configs_wasm_node_inventory_skip_UPSTREAM_DEMO=1
|
||||||
|
browser_ini_opfs_smoke=ok
|
||||||
|
browser_ini_control_page_smoke=ok
|
||||||
|
browser_ini_launch_smoke=ok
|
||||||
|
browser_ini_workflow_overview_smoke=ok
|
||||||
|
browser_ini_shell_integration_workflow_smoke=ok
|
||||||
|
browser_interp_smoke=ok
|
||||||
|
host_wasm_opfs_browser_smokes=ok
|
||||||
|
```
|
||||||
|
|
||||||
|
下一步工作计划:
|
||||||
|
|
||||||
|
进入最终 clean-tree acceptance closeout。下一批建议在本批提交后从 clean working tree 重新执行
|
||||||
|
`docs/project-release-handoff.md` 的最小 release validation commands;若全部通过,则把
|
||||||
|
`PROJECT_COMPLETION_TRACKER.md` 的 Final Acceptance Checklist 勾选为当前 scope complete,并在
|
||||||
|
`text14.txt` 追加最终完成记录。仍不新增功能、不扩大 CNC 语义、不 promotion blocked runtime family。
|
||||||
|
|||||||
@@ -2,6 +2,41 @@
|
|||||||
|
|
||||||
This directory is the standalone workspace for the WASM-based simulation port.
|
This directory is the standalone workspace for the WASM-based simulation port.
|
||||||
|
|
||||||
|
## Current Release Handoff
|
||||||
|
|
||||||
|
Start from `docs/project-release-handoff.md` for the current project-level
|
||||||
|
handoff. It links the browser/UI workflow surface, SDK surface,
|
||||||
|
OPFS/session persistence scope, sim-config coverage baseline, blocked
|
||||||
|
host/runtime families, source reuse rules, drift rules, and acceptance tracker.
|
||||||
|
|
||||||
|
The minimum release validation commands for the current scope are:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git diff --check
|
||||||
|
wasm-port/tools/verify_vendor_sync.sh
|
||||||
|
wasm-port/tools/verify_no_standalone_cnc_semantics.sh
|
||||||
|
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
|
||||||
|
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh
|
||||||
|
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_ini_panel_browser.sh
|
||||||
|
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
|
||||||
|
wasm-port/tests/host/verify_host_smokes.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
Expected handoff smoke outputs include:
|
||||||
|
|
||||||
|
```text
|
||||||
|
project_release_handoff_docs_node_smoke=ok
|
||||||
|
opfs_session_docs_node_smoke=ok
|
||||||
|
sim_configs_coverage_docs_node_smoke=ok
|
||||||
|
host_runtime_boundary_docs_node_smoke=ok
|
||||||
|
sdk_surface_node_smoke=ok
|
||||||
|
host_wasm_opfs_browser_smokes=ok
|
||||||
|
```
|
||||||
|
|
||||||
|
Browser/UI entry points are documented in `docs/panel-entry.md`. Stable SDK
|
||||||
|
imports are documented in `runtime/sdk/README.md` and should come from
|
||||||
|
`runtime/sdk/src/index.js`.
|
||||||
|
|
||||||
Rules:
|
Rules:
|
||||||
|
|
||||||
1. `linuxcnc/` is treated as the upstream source tree.
|
1. `linuxcnc/` is treated as the upstream source tree.
|
||||||
@@ -136,6 +171,8 @@ Sim-config inventory coverage and release-gate handoff is documented in
|
|||||||
`docs/sim-configs-coverage-handoff.md`.
|
`docs/sim-configs-coverage-handoff.md`.
|
||||||
Host/runtime boundary release-gate handoff is documented in
|
Host/runtime boundary release-gate handoff is documented in
|
||||||
`docs/host-runtime-boundary-handoff.md`.
|
`docs/host-runtime-boundary-handoff.md`.
|
||||||
|
Project-level release acceptance and next-maintainer handoff is documented in
|
||||||
|
`docs/project-release-handoff.md`.
|
||||||
|
|
||||||
The presence of this directory means the port is managed independently of the
|
The presence of this directory means the port is managed independently of the
|
||||||
native LinuxCNC tree even though LinuxCNC remains the semantic source of truth.
|
native LinuxCNC tree even though LinuxCNC remains the semantic source of truth.
|
||||||
|
|||||||
@@ -6,6 +6,10 @@ As of the current upstream baseline, no byte-level drift is allowed between
|
|||||||
files listed in `tools/source-manifest.txt` and the matching files under
|
files listed in `tools/source-manifest.txt` and the matching files under
|
||||||
`../linuxcnc/`.
|
`../linuxcnc/`.
|
||||||
|
|
||||||
|
The project-level release handoff in `docs/project-release-handoff.md` includes
|
||||||
|
this drift report in the final acceptance path alongside source reuse,
|
||||||
|
OPFS/session, sim-config coverage, host/runtime boundary, SDK, and UI docs.
|
||||||
|
|
||||||
The enforced upstream baseline is:
|
The enforced upstream baseline is:
|
||||||
|
|
||||||
```text
|
```text
|
||||||
|
|||||||
@@ -2,6 +2,12 @@
|
|||||||
|
|
||||||
This page is the short entry map for the INI panel UI shell.
|
This page is the short entry map for the INI panel UI shell.
|
||||||
|
|
||||||
|
For the project-level acceptance path that references this UI surface, start
|
||||||
|
with `docs/project-release-handoff.md`. Stable SDK imports for external callers
|
||||||
|
are documented in `runtime/sdk/README.md` and should come from
|
||||||
|
`runtime/sdk/src/index.js`. The workflow overview embedding helpers below are
|
||||||
|
the read-only external-shell path for embedding and mounting overview state.
|
||||||
|
|
||||||
## Shell Module
|
## Shell Module
|
||||||
|
|
||||||
Use the shell-facing module when an outer UI needs entry links or a read-only
|
Use the shell-facing module when an outer UI needs entry links or a read-only
|
||||||
@@ -428,3 +434,7 @@ read-only readiness snapshot for the embedded panel API and first control view.
|
|||||||
The entry shell only links pages and renders already-observed panel state. It
|
The entry shell only links pages and renders already-observed panel state. It
|
||||||
does not parse G-code, infer canonical events, or implement LinuxCNC-owned
|
does not parse G-code, infer canonical events, or implement LinuxCNC-owned
|
||||||
tool, parameter, planner, or kinematics behavior.
|
tool, parameter, planner, or kinematics behavior.
|
||||||
|
|
||||||
|
Release validation for this surface is covered by `verify_ui_node_smokes.sh`,
|
||||||
|
`verify_ini_panel_browser.sh`, and the project handoff docs smoke
|
||||||
|
`verify_project_release_handoff_docs.sh`.
|
||||||
|
|||||||
124
wasm-port/docs/project-release-handoff.md
Normal file
124
wasm-port/docs/project-release-handoff.md
Normal file
@@ -0,0 +1,124 @@
|
|||||||
|
# Project release handoff
|
||||||
|
|
||||||
|
This is the short project-level handoff for the current LinuxCNC WASM/browser
|
||||||
|
port scope. It points a new maintainer to the supported workflow surfaces, the
|
||||||
|
required release gates, and the boundaries that must remain blocked until real
|
||||||
|
LinuxCNC-owned runtime proof exists.
|
||||||
|
|
||||||
|
## Start here
|
||||||
|
|
||||||
|
Use these documents as the current handoff set:
|
||||||
|
|
||||||
|
- `README.md` for the workspace layout and release validation commands.
|
||||||
|
- `docs/panel-entry.md` for browser/UI entry points and shell handoff helpers.
|
||||||
|
- `runtime/sdk/README.md` for stable SDK imports from `runtime/sdk/src/index.js`.
|
||||||
|
- `docs/opfs-session-persistence.md` for OPFS/session persistence scope.
|
||||||
|
- `docs/sim-configs-coverage-handoff.md` for sim-config inventory status.
|
||||||
|
- `docs/host-runtime-boundary-handoff.md` for blocked runtime families.
|
||||||
|
- `docs/source-reuse-map.md` and `docs/drift-report.md` for LinuxCNC source
|
||||||
|
reuse and non-drift rules.
|
||||||
|
- `../PROJECT_COMPLETION_TRACKER.md` for project-level acceptance tracking.
|
||||||
|
|
||||||
|
Old turn logs `text1.txt` through `text13.txt` are historical context. Current
|
||||||
|
continuation records are in `../text14.txt`.
|
||||||
|
|
||||||
|
## Supported current workflows
|
||||||
|
|
||||||
|
- INI panel launch, edit/run page, read-only control page, workflow overview,
|
||||||
|
and external shell handoff are exposed from `runtime/ui/ini-panel/`.
|
||||||
|
- External shells should use the read-only helpers documented in
|
||||||
|
`docs/panel-entry.md`, including workflow overview embedding mount DOM
|
||||||
|
contract/readiness/renderer/wrapper helpers.
|
||||||
|
- SDK callers should import stable helpers from `runtime/sdk/src/index.js`.
|
||||||
|
- OPFS/session persistence is host-side storage glue. Parameter and tool-table
|
||||||
|
behavior still comes from the LinuxCNC-backed interpreter SDK calls.
|
||||||
|
- Sim-config inventory promotion remains evidence-driven and must keep
|
||||||
|
`unexpected_fail=0`.
|
||||||
|
|
||||||
|
## Required release gates
|
||||||
|
|
||||||
|
Run these before claiming the current scope is release-ready:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git diff --check
|
||||||
|
wasm-port/tools/verify_vendor_sync.sh
|
||||||
|
wasm-port/tools/verify_no_standalone_cnc_semantics.sh
|
||||||
|
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
|
||||||
|
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh
|
||||||
|
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_ini_panel_browser.sh
|
||||||
|
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
|
||||||
|
wasm-port/tests/host/verify_host_smokes.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
The host aggregate gate includes SDK, OPFS, docs, UI Node, WASM Node, and
|
||||||
|
browser smoke coverage. A passing aggregate ends with:
|
||||||
|
|
||||||
|
```text
|
||||||
|
host_wasm_opfs_browser_smokes=ok
|
||||||
|
```
|
||||||
|
|
||||||
|
## Expected baseline outputs
|
||||||
|
|
||||||
|
The current sim-config inventory release baseline is:
|
||||||
|
|
||||||
|
```text
|
||||||
|
sim_configs_wasm_node_inventory_executed=28
|
||||||
|
sim_configs_wasm_node_inventory_passed=28
|
||||||
|
sim_configs_wasm_node_inventory_skipped=131
|
||||||
|
sim_configs_wasm_node_inventory_unexpected_fail=0
|
||||||
|
```
|
||||||
|
|
||||||
|
The expected docs and SDK smoke outputs include:
|
||||||
|
|
||||||
|
```text
|
||||||
|
project_release_handoff_docs_node_smoke=ok
|
||||||
|
opfs_session_docs_node_smoke=ok
|
||||||
|
sim_configs_coverage_docs_node_smoke=ok
|
||||||
|
host_runtime_boundary_docs_node_smoke=ok
|
||||||
|
sdk_surface_node_smoke=ok
|
||||||
|
```
|
||||||
|
|
||||||
|
The expected browser INI panel smoke outputs include:
|
||||||
|
|
||||||
|
```text
|
||||||
|
browser_ini_opfs_smoke=ok
|
||||||
|
browser_ini_control_page_smoke=ok
|
||||||
|
browser_ini_launch_smoke=ok
|
||||||
|
browser_ini_workflow_overview_smoke=ok
|
||||||
|
browser_ini_shell_integration_workflow_smoke=ok
|
||||||
|
```
|
||||||
|
|
||||||
|
## Blocked runtime families
|
||||||
|
|
||||||
|
These runtime families remain blocked:
|
||||||
|
|
||||||
|
- `L4-USER-M-PROCESS`
|
||||||
|
- `L4-TOOL-DB`
|
||||||
|
- `L4-PYTHON-REMAP`
|
||||||
|
|
||||||
|
Do not promote them from skipped/blocked state without LinuxCNC-owned native
|
||||||
|
runtime proof followed by Node/WASM and browser/host validation. The opt-in
|
||||||
|
runtime probes are documented in `docs/host-runtime-boundary-handoff.md`; they
|
||||||
|
must not be run on hosts that do not provide the required LinuxCNC runtime.
|
||||||
|
|
||||||
|
## Acceptance checklist
|
||||||
|
|
||||||
|
- `git diff --check` passes.
|
||||||
|
- Vendor sync and standalone CNC semantic guards pass.
|
||||||
|
- Interpreter WASM Node smoke passes.
|
||||||
|
- Sim-config inventory has `unexpected_fail=0`.
|
||||||
|
- UI Node smoke passes.
|
||||||
|
- Browser INI panel smoke passes.
|
||||||
|
- Host aggregate smoke passes.
|
||||||
|
- SDK exports match `runtime/sdk/README.md`.
|
||||||
|
- `docs/panel-entry.md` documents the external shell workflow surface.
|
||||||
|
- OPFS/session, sim-config coverage, host/runtime boundary, source reuse, and
|
||||||
|
drift docs all point to the current validation gates.
|
||||||
|
- Blocked runtime families remain documented and are not falsely promoted.
|
||||||
|
|
||||||
|
## Next maintainer rule
|
||||||
|
|
||||||
|
Add new CNC behavior only by reusing vendored LinuxCNC source or a documented
|
||||||
|
runtime-edge adapter. JavaScript may stage files, mount UI state, manage OPFS,
|
||||||
|
load WASM modules, and call C ABI functions; it must not implement G-code,
|
||||||
|
tool, parameter, planner, kinematics, remap, or canonical motion semantics.
|
||||||
@@ -29,6 +29,11 @@ Current validation is intentionally mechanical:
|
|||||||
documented Python/remap runtime-edge stubs in
|
documented Python/remap runtime-edge stubs in
|
||||||
`runtime/core/linuxcnc_wrap/linuxcnc_interp_edge_stubs.cpp`.
|
`runtime/core/linuxcnc_wrap/linuxcnc_interp_edge_stubs.cpp`.
|
||||||
|
|
||||||
|
The project-level release handoff in `docs/project-release-handoff.md` links
|
||||||
|
this source reuse map to the README, panel entry documentation, SDK surface,
|
||||||
|
OPFS/session release gate, sim-config coverage gate, host/runtime blocked
|
||||||
|
families, and drift report.
|
||||||
|
|
||||||
## Reuse Matrix
|
## Reuse Matrix
|
||||||
|
|
||||||
| Capability | LinuxCNC source files | Port classification | Standalone boundary | Current validation |
|
| Capability | LinuxCNC source files | Port classification | Standalone boundary | Current validation |
|
||||||
|
|||||||
@@ -0,0 +1,75 @@
|
|||||||
|
import assert from "node:assert/strict";
|
||||||
|
import { readFileSync } from "node:fs";
|
||||||
|
import { dirname, resolve } from "node:path";
|
||||||
|
import { fileURLToPath } from "node:url";
|
||||||
|
|
||||||
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
||||||
|
const root = resolve(__dirname, "../../..");
|
||||||
|
|
||||||
|
function literalRegExp(text) {
|
||||||
|
return new RegExp(text.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"));
|
||||||
|
}
|
||||||
|
|
||||||
|
const handoffText = readFileSync(resolve(root, "docs/project-release-handoff.md"), "utf8");
|
||||||
|
const readmeText = readFileSync(resolve(root, "README.md"), "utf8");
|
||||||
|
const panelEntryText = readFileSync(resolve(root, "docs/panel-entry.md"), "utf8");
|
||||||
|
const sdkReadmeText = readFileSync(resolve(root, "runtime/sdk/README.md"), "utf8");
|
||||||
|
const sourceReuseText = readFileSync(resolve(root, "docs/source-reuse-map.md"), "utf8");
|
||||||
|
const driftText = readFileSync(resolve(root, "docs/drift-report.md"), "utf8");
|
||||||
|
const hostSmokeText = readFileSync(resolve(root, "tests/host/verify_host_smokes.sh"), "utf8");
|
||||||
|
const trackerText = readFileSync(resolve(root, "../PROJECT_COMPLETION_TRACKER.md"), "utf8");
|
||||||
|
|
||||||
|
for (const phrase of [
|
||||||
|
"Project release handoff",
|
||||||
|
"docs/panel-entry.md",
|
||||||
|
"runtime/sdk/README.md",
|
||||||
|
"docs/opfs-session-persistence.md",
|
||||||
|
"docs/sim-configs-coverage-handoff.md",
|
||||||
|
"docs/host-runtime-boundary-handoff.md",
|
||||||
|
"docs/source-reuse-map.md",
|
||||||
|
"docs/drift-report.md",
|
||||||
|
"PROJECT_COMPLETION_TRACKER.md",
|
||||||
|
"runtime/sdk/src/index.js",
|
||||||
|
"workflow overview embedding mount DOM",
|
||||||
|
"verify_no_standalone_cnc_semantics.sh",
|
||||||
|
"verify_host_smokes.sh",
|
||||||
|
"host_wasm_opfs_browser_smokes=ok",
|
||||||
|
"sim_configs_wasm_node_inventory_unexpected_fail=0",
|
||||||
|
"browser_ini_shell_integration_workflow_smoke=ok",
|
||||||
|
"project_release_handoff_docs_node_smoke=ok",
|
||||||
|
"L4-USER-M-PROCESS",
|
||||||
|
"L4-TOOL-DB",
|
||||||
|
"L4-PYTHON-REMAP",
|
||||||
|
]) {
|
||||||
|
assert.match(handoffText, literalRegExp(phrase));
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const phrase of [
|
||||||
|
"docs/project-release-handoff.md",
|
||||||
|
"project_release_handoff_docs_node_smoke=ok",
|
||||||
|
]) {
|
||||||
|
assert.match(readmeText, literalRegExp(phrase));
|
||||||
|
assert.match(hostSmokeText, literalRegExp("verify_project_release_handoff_docs.sh"));
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const phrase of [
|
||||||
|
"docs/project-release-handoff.md",
|
||||||
|
"runtime/sdk/src/index.js",
|
||||||
|
"workflow overview embedding",
|
||||||
|
]) {
|
||||||
|
assert.match(panelEntryText, literalRegExp(phrase));
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const phrase of [
|
||||||
|
"OPFS/session persistence exports",
|
||||||
|
"INI panel shell handoff exports",
|
||||||
|
]) {
|
||||||
|
assert.match(sdkReadmeText, literalRegExp(phrase));
|
||||||
|
}
|
||||||
|
|
||||||
|
assert.match(sourceReuseText, literalRegExp("docs/project-release-handoff.md"));
|
||||||
|
assert.match(driftText, literalRegExp("docs/project-release-handoff.md"));
|
||||||
|
assert.match(trackerText, /Documentation\/release gate/);
|
||||||
|
assert.match(trackerText, /Final Acceptance Checklist/);
|
||||||
|
|
||||||
|
console.log("project_release_handoff_docs_node_smoke=ok");
|
||||||
6
wasm-port/tests/docs/node/verify_project_release_handoff_docs.sh
Executable file
6
wasm-port/tests/docs/node/verify_project_release_handoff_docs.sh
Executable file
@@ -0,0 +1,6 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
ROOT_DIR="$(cd "$(dirname "$0")/../../.." && pwd)"
|
||||||
|
|
||||||
|
node "$ROOT_DIR/tests/docs/node/verify_project_release_handoff_docs.mjs"
|
||||||
@@ -17,6 +17,7 @@ SKIP_TP_BUILD=1 "$ROOT_DIR/tests/wasm/node/verify_tp_wasm.sh"
|
|||||||
"$ROOT_DIR/tests/docs/node/verify_opfs_session_docs.sh"
|
"$ROOT_DIR/tests/docs/node/verify_opfs_session_docs.sh"
|
||||||
"$ROOT_DIR/tests/docs/node/verify_sim_configs_coverage_docs.sh"
|
"$ROOT_DIR/tests/docs/node/verify_sim_configs_coverage_docs.sh"
|
||||||
"$ROOT_DIR/tests/docs/node/verify_host_runtime_boundary_docs.sh"
|
"$ROOT_DIR/tests/docs/node/verify_host_runtime_boundary_docs.sh"
|
||||||
|
"$ROOT_DIR/tests/docs/node/verify_project_release_handoff_docs.sh"
|
||||||
"$ROOT_DIR/tests/ui/node/verify_ui_node_smokes.sh"
|
"$ROOT_DIR/tests/ui/node/verify_ui_node_smokes.sh"
|
||||||
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 "$ROOT_DIR/tests/browser/verify_ini_panel_browser.sh"
|
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 "$ROOT_DIR/tests/browser/verify_ini_panel_browser.sh"
|
||||||
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 "$ROOT_DIR/tests/browser/verify_interp_browser.sh"
|
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 "$ROOT_DIR/tests/browser/verify_interp_browser.sh"
|
||||||
|
|||||||
Reference in New Issue
Block a user