Files
cnc_wams/PROJECT_COMPLETION_TRACKER.md

249 lines
10 KiB
Markdown

# Project Completion Tracker
Last updated: 2026-06-16 CST
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
turn-by-turn continuation notes and next-batch execution records.
## Current Status
- Active continuation file: `text14.txt`
- Latest completed batch: INI panel shell API surface inventory
- Latest relevant commit: use `git log -1 --oneline` after each committed batch
- Working tree at tracker creation: clean
- Required policy: LinuxCNC remains the only CNC semantic source
- Current scope status: complete after final clean-tree release validation
## Completion Definition
The project is complete for the current scope when all of the following are true:
- Browser UI workflows are usable and validated:
- INI panel
- control page
- workflow overview
- external shell handoff
- OPFS/session persistence
- SDK/API surface exposes stable helpers for external callers.
- Sim config coverage has clear pass/skip/promotion state.
- Host/runtime blocked families are explicitly documented and not falsely promoted.
- All required gates pass.
- Documentation explains what is supported, blocked, and how to verify it.
- `text14.txt` contains the final completion record and the working tree is clean.
## Area Status
| Area | Status | Notes |
| --- | --- | --- |
| LinuxCNC semantic boundary | Stable | JS/browser remains glue, staging, OPFS, WASM/browser boundary, docs, and tests only. |
| Vendor/source guard | Stable | `verify_vendor_sync.sh` and standalone semantic guard are required every batch. |
| Interpreter WASM smoke | Stable | `interp_wasm_node_smoke=ok`. |
| 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 sim configs baseline | Stable | Last recorded Layer 2: `total 159`, `pass 151`, `expected_fail 8`, `unexpected_fail 0`. |
| OPFS/session persistence | Stable for current scope | Browser smoke passes, SDK re-exports OPFS/session helpers including `readMachineSessionReadiness()`, and `docs/opfs-session-persistence.md` defines the project-level release gate. |
| SDK/API surface | Stable for current scope | SDK re-exports core, OPFS/session readiness/load helpers, sim-config staging, INI panel shell/workflow overview helpers, the session readiness workflow report, and the shell API surface inventory with a Node surface smoke. |
| Browser/UI workflow | Stable for current scope | Workflow overview embedding mount DOM closure is complete, and INI panel session workflows plus read-only control/shell handoff expose, render, and report OPFS/session readiness before loading or reading WASM session state. |
| 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 | 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 | 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. |
| Project release gate wrapper | Stable | `tests/host/verify_project_release_gate.sh` runs the documented minimum release validation commands and ends with `project_release_gate=ok`. |
## Blocked Runtime Families
Do not promote these without real LinuxCNC-owned runtime proof and the required
native -> Node/WASM -> browser/host validation sequence:
- `L4-USER-M-PROCESS`
- `L4-TOOL-DB`
- `L4-PYTHON-REMAP`
Do not run these unless the host environment actually provides the needed
LinuxCNC runtime:
```bash
ENABLE_MILLTURN_USER_M_RUNTIME_PROBE=1 bash wasm-port/tests/native/probe_millturn_user_m_runtime.sh
ENABLE_TOOL_DB_RUNTIME_PROBE=1 bash wasm-port/tests/native/probe_tool_db_runtime.sh
ENABLE_PYTHON_REMAP_RUNTIME_PROBE=1 bash wasm-port/tests/native/probe_python_remap_runtime.sh
```
## Remaining Work
Execute these in order unless a later user request explicitly changes priority.
### 1. Browser/UI Workflow Closure
Current next task:
- No required work remains for the current scope. Future work should start from
a new scope request or from a real LinuxCNC host runtime becoming available
for the blocked runtime families.
Then complete the closure:
- Mount render-state DOM renderer is complete.
- Non-throwing mount workflow wrapper is complete.
- Expose each helper through:
- `createIniPanelLaunchApiManifest().methods`
- `createIniPanelShellViewModel()`
- `window.linuxCncIniPanelLaunchApi`
- `window.linuxCncIniPanelWorkflowOverviewApi`
- Cover each helper in:
- UI Node smoke
- launch API manifest test
- shell integration manifest test
- entry docs test
- workflow overview browser smoke
- launch browser smoke
- shell integration browser smoke
- `docs/panel-entry.md`
Completion criteria:
- External shell can render workflow overview embedding mount state with a
custom DOM contract.
- Missing DOM returns structured blocked results where applicable.
- No control buttons or CNC semantic parsing are added.
### 2. SDK/API Surface Consolidation
Work items:
- Audit `runtime/sdk/src/index.js`. Done.
- Export stable helpers that external callers should use. Done for core, OPFS/session, sim-config staging, and INI panel shell/workflow overview helpers.
- Add or update SDK smoke for export shape and manifest compatibility. Done via `tests/sdk/node/verify_sdk_surface.sh`.
- Update `runtime/sdk/README.md` with usage examples and unsupported areas. Initial SDK surface update done; final docs pass still pending.
Completion criteria:
- SDK exports match documented browser/UI helper surface.
- SDK tests pass in Node.
- No CNC semantics are implemented in JS.
### 3. OPFS/Session Persistence Summary
Work items:
- Add a project-level OPFS/session workflow summary helper or report. Done as `docs/opfs-session-persistence.md`.
- Include machine files, session snapshot, readonly control status, and handoff
readiness. Done through linked UI docs plus browser and host gate references.
- Add browser smoke coverage for save -> restore -> readonly status -> shell
handoff. Existing browser smoke remains the gate for this workflow.
- Document OPFS scope and failure modes. Done.
- Add docs smoke for the project-level handoff. Done via `tests/docs/node/verify_opfs_session_docs.sh`.
Completion criteria:
- `browser_ini_opfs_smoke=ok` remains stable.
- External callers can inspect persistence readiness and failures.
- `opfs_session_docs_node_smoke=ok` is included in the host aggregate gate.
### 4. Sim Config Coverage Promotion Matrix
Work items:
- Keep inventory `unexpected_fail=0`.
- Make skip reasons machine-readable and documented:
- `ASSET_ONLY`
- `L4_PYTHON_REMAP`
- `L4_TOOL_DB`
- `L4_USER_M_PROCESS`
- `NON_MAIN_CLASS`
- `UPSTREAM_DEMO`
- Promote only configs with LinuxCNC-owned proof.
- Add short release handoff for current inventory baseline. Done via `docs/sim-configs-coverage-handoff.md`.
- Add docs smoke for inventory baseline and skip reason map. Done via `tests/docs/node/verify_sim_configs_coverage_docs.sh`.
Completion criteria:
- No skipped config lacks a documented reason.
- No blocked runtime family is falsely promoted.
- `sim_configs_coverage_docs_node_smoke=ok` is included in the host aggregate gate.
### 5. Host/Runtime Boundary Reports
Work items:
- Consolidate runtime family proof reports. Done via `docs/host-runtime-boundary-handoff.md`.
- Keep missing host runtime as blocked. Done; current status remains `host_blocked_for_all_opt_in_native_probes`.
- If real runtime becomes available, validate in native -> Node/WASM -> browser/host order.
- Add docs smoke for host/runtime boundary handoff. Done via `tests/docs/node/verify_host_runtime_boundary_docs.sh`.
Completion criteria:
- `verify_host_smokes.sh` remains stable.
- Boundaries are documented and machine-readable.
- `host_runtime_boundary_docs_node_smoke=ok` is included in the host aggregate gate.
### 6. Documentation/Release Gate
Work items:
- Update `README.md`. Done.
- Update `docs/panel-entry.md`. Done.
- Update `docs/source-reuse-map.md`. Done.
- Update `docs/drift-report.md`. Done.
- 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:
- A new developer can run validation from README/docs without reading old
`text1` through `text13`.
- `project_release_handoff_docs_node_smoke=ok` is included in the host
aggregate gate.
## Required Gates
Run these for each implementation batch:
```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
```
Or run the same current-scope minimum gate through:
```bash
wasm-port/tests/host/verify_project_release_gate.sh
```
Run this if browser interpreter behavior is touched:
```bash
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_interp_browser.sh
```
Run these for native/source/staging or promotion work:
```bash
wasm-port/tests/native/verify_nc_files.sh
wasm-port/tests/native/verify_sim_configs.sh
```
## Final Acceptance Checklist
- [x] Working tree is clean.
- [x] Latest `text14.txt` record says the project is complete for current scope.
- [x] `git diff --check` passes.
- [x] Vendor sync guard passes.
- [x] Standalone CNC semantics guard passes.
- [x] Interpreter WASM Node smoke passes.
- [x] Sim config WASM inventory has `unexpected_fail=0`.
- [x] UI Node smoke passes.
- [x] Browser INI panel smoke passes.
- [x] Host aggregate smoke passes.
- [x] Project release gate wrapper passes.
- [x] Runtime blocked families remain documented.
- [x] Project release handoff docs smoke passes.
- [x] README/docs explain supported workflows and blocked items.