diff --git a/PROJECT_COMPLETION_TRACKER.md b/PROJECT_COMPLETION_TRACKER.md index ae59781..05c9652 100644 --- a/PROJECT_COMPLETION_TRACKER.md +++ b/PROJECT_COMPLETION_TRACKER.md @@ -9,7 +9,7 @@ turn-by-turn continuation notes and next-batch execution records. ## Current Status - Active continuation file: `text32.txt` -- Latest completed batch: five-axis TRT browser diagnostics evidence expansion +- Latest completed batch: evidence expansion UI surface - 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 @@ -45,7 +45,7 @@ The project is complete for the current scope when all of the following are true | Simulation test program library | Active | Built-in browser simulation programs live in `wasm-port/runtime/ui/simulation/programs/`, one module per program, exported through `programs/index.js`; `verify_real_simulation_programs.sh` checks directory-backed inventory, IDs, defaults, and playback contracts. | | 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=82`, `passed=82`, `skipped=77`, `unexpected_fail=0`; `docs/sim-configs-coverage-handoff.md` records the release-gate baseline. The 2026-06-20 remaining-skip audit found 2 skipped main-program rows and 0 rows with `promotion_allowed=1`, so the baseline must not change without new LinuxCNC-owned native/Node/browser proof. Browser diagnostics evidence expansion now includes five ready source-derived REP candidates: `woodpecker-on-abort`, `puma-cube`, `melfa-example`, `trt-boat-xyzac`, and `trt-xyzac-switchkins`, all with `promotionAllowed=false`. | +| Sim config inventory | Stable with skips | `executed=82`, `passed=82`, `skipped=77`, `unexpected_fail=0`; `docs/sim-configs-coverage-handoff.md` records the release-gate baseline. The 2026-06-20 remaining-skip audit found 2 skipped main-program rows and 0 rows with `promotion_allowed=1`, so the baseline must not change without new LinuxCNC-owned native/Node/browser proof. Browser diagnostics evidence expansion now includes five ready source-derived REP candidates: `woodpecker-on-abort`, `puma-cube`, `melfa-example`, `trt-boat-xyzac`, and `trt-xyzac-switchkins`, all with `promotionAllowed=false`; the real simulation diagnostics panel and release URL workflow summaries expose the five-row full candidate/G-code lists. | | 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 `createMachineSessionPersistenceSummary()`, the UI exposes `getMachineSessionPersistenceSummary()`, and `docs/opfs-session-persistence.md` defines the project-level release gate. | diff --git a/text32.txt b/text32.txt index 8c84b74..951e157 100644 --- a/text32.txt +++ b/text32.txt @@ -279,3 +279,79 @@ standalone CNC semantics guard complete - inventoryBaselineUnchanged=true; - real browser diagnostics artifact smoke 覆盖。 ``` + +八、本轮接续推进:evidence expansion UI surface + +执行时间:2026-06-20 CST + +已完成第七节优先建议中的 UI 可见性推进: + +```text +1. real simulation diagnostics panel 显示 evidence expansion ready count; +2. real simulation diagnostics panel 显示完整 5 个 ready candidates; +3. release artifact URL workflow summary 暴露完整 candidate / G-code list; +4. INI workflow overview URL summary 暴露完整 candidate / G-code list; +5. 保留原有 preview 的前三项,兼容既有 UI 和测试。 +``` + +新增可见/API 字段: + +```text +real-browser-simulation-evidence-expansion-summary +data-evidence-expansion-summary-value="candidate-count" => 5/5 ready +data-evidence-expansion-summary-value="candidate-list" => + woodpecker-on-abort, puma-cube, melfa-example, trt-boat-xyzac, trt-xyzac-switchkins +evidence-expansion-full-candidate-list +evidence-expansion-full-gcode-list +``` + +边界仍保持: + +```text +inventoryBaselineUnchanged=true +promotionAllowed=false +inventory baseline=82/82/77/0 +``` + +本轮已运行验证: + +```text +wasm-port/tests/sdk/node/verify_project_release_artifact_url_workflow.sh +wasm-port/tests/sdk/node/verify_project_release_gate_manifest.sh +wasm-port/tests/sdk/node/verify_sdk_surface.sh +wasm-port/tests/ui/node/verify_ini_panel_ui_shell.sh +SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_real_simulation_browser.sh +SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_ini_panel_browser.sh +SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_release_artifact_url_workflow_browser.sh +``` + +结果: + +```text +project_release_artifact_url_workflow_node_smoke=ok +project_release_gate_manifest_node_smoke=ok +sdk_surface_node_smoke=ok +ini_panel_ui_shell_node_smoke=ok +browser_real_simulation_page_smoke=ok +browser_ini_workflow_overview_smoke=ok +browser_ini_shell_integration_workflow_smoke=ok +browser_release_artifact_url_workflow_smoke=ok +``` + +九、下一步工作计划 + +继续扩展五轴 TRT family 的 browser diagnostics evidence,不改变 +`82/82/77/0` baseline。建议下一批新增: + +```text +axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzbc.ngc +axis/vismach/5axis/table-rotary-tilting/demos/impeller-7bl-xyzac.ngc +axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins_test_1.ngc +axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins_test_2.ngc +axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins_test_3.ngc +axis/vismach/5axis/table-rotary-tilting/demos/xyzbc_switchkins.ngc +``` + +每批仍只做 browser diagnostics / release evidence expansion,不能改 +`promotionAllowed=false`,不能把 SKIP 或 REP 伪装为 inventory baseline +promotion。 diff --git a/wasm-port/docs/sim-config-coverage-promotion-analysis.md b/wasm-port/docs/sim-config-coverage-promotion-analysis.md index b3fdabf..fefc7c7 100644 --- a/wasm-port/docs/sim-config-coverage-promotion-analysis.md +++ b/wasm-port/docs/sim-config-coverage-promotion-analysis.md @@ -728,6 +728,23 @@ evidence expansion report has `candidateCount=5` and `readyCandidateCount=5`, including the two TRT rows above. The inventory baseline remains `executed=82 passed=82 skipped=77 unexpected_fail=0`. +## 2026-06-20 Evidence Expansion UI Surface + +The evidence expansion data is now visible outside the raw diagnostics JSON: + +```text +real-browser-simulation-evidence-expansion-summary +evidence-expansion-full-candidate-list +evidence-expansion-full-gcode-list +``` + +The real simulation diagnostics panel renders `5/5 ready`, the full five-row +candidate list, source-file count, promotion lock state, and unchanged +inventory state. The project release URL workflow summary and INI workflow +overview keep their existing three-row preview fields for compatibility, and +also expose the full candidate and G-code lists so shell callers can inspect +all five ready evidence-expansion rows without opening the raw artifact. + ## Boundary Statement This analysis relies on the improved virtual HAL only for Web simulation diff --git a/wasm-port/runtime/sdk/src/project-release-readiness.js b/wasm-port/runtime/sdk/src/project-release-readiness.js index c549ab2..2bd0133 100644 --- a/wasm-port/runtime/sdk/src/project-release-readiness.js +++ b/wasm-port/runtime/sdk/src/project-release-readiness.js @@ -3225,6 +3225,7 @@ export function createProjectReleaseReadinessArtifactUrlWorkflowSummaryViewModel ); const preferredEvidenceExpansion = evidenceExpansionRows[0] ?? {}; const evidenceExpansionPreviewRows = evidenceExpansionRows.slice(0, 3); + const evidenceExpansionFullRows = evidenceExpansionRows; const ready = workflow?.ready === true; const statusText = ready ? "Ready" : "Blocked"; const detailText = ready @@ -3386,6 +3387,20 @@ export function createProjectReleaseReadinessArtifactUrlWorkflowSummaryViewModel ).join(", ") : "not provided", }, + { + id: "evidence-expansion-full-candidate-list", + label: "Evidence expansion full candidate list", + value: evidenceExpansionFullRows.length > 0 + ? evidenceExpansionFullRows.map((row) => row.id).join(", ") + : "not provided", + }, + { + id: "evidence-expansion-full-gcode-list", + label: "Evidence expansion full G-code list", + value: evidenceExpansionFullRows.length > 0 + ? evidenceExpansionFullRows.map((row) => row.gcodePath).join(", ") + : "not provided", + }, { id: "evidence-expansion-artifact", label: "Evidence expansion artifact", diff --git a/wasm-port/runtime/ui/ini-panel/ui-shell.js b/wasm-port/runtime/ui/ini-panel/ui-shell.js index 3d839e4..bfc6f3e 100644 --- a/wasm-port/runtime/ui/ini-panel/ui-shell.js +++ b/wasm-port/runtime/ui/ini-panel/ui-shell.js @@ -2606,6 +2606,9 @@ export function createIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrlWo const evidenceExpansionPreviewRows = Array.isArray(evidenceExpansionRows) ? evidenceExpansionRows.slice(0, 3) : []; + const evidenceExpansionFullRows = Array.isArray(evidenceExpansionRows) + ? evidenceExpansionRows + : []; const ready = workflow?.ready === true; const promotionFamilyRows = ( workflow?.validation?.virtualHalPromotionFamilyRows @@ -2800,6 +2803,20 @@ export function createIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrlWo ).join(", ") : "not provided", }, + { + id: "evidence-expansion-full-candidate-list", + label: "Evidence expansion full candidate list", + value: evidenceExpansionFullRows.length > 0 + ? evidenceExpansionFullRows.map((row) => row.id).join(", ") + : "not provided", + }, + { + id: "evidence-expansion-full-gcode-list", + label: "Evidence expansion full G-code list", + value: evidenceExpansionFullRows.length > 0 + ? evidenceExpansionFullRows.map((row) => row.gcodePath).join(", ") + : "not provided", + }, { id: "hard-block-runtime-lock", label: "Hard-block runtime lock", diff --git a/wasm-port/runtime/ui/simulation/index.html b/wasm-port/runtime/ui/simulation/index.html index 1d36fdb..3f0e687 100644 --- a/wasm-port/runtime/ui/simulation/index.html +++ b/wasm-port/runtime/ui/simulation/index.html @@ -1757,6 +1757,7 @@ M2