新增 project release gate wrapper

This commit is contained in:
2026-06-16 04:33:06 +08:00
parent efbcf8b9bf
commit d076763ef4
6 changed files with 125 additions and 3 deletions

View File

@@ -9,7 +9,7 @@ turn-by-turn continuation notes and next-batch execution records.
## Current Status
- Active continuation file: `text14.txt`
- Latest completed batch: final clean-tree acceptance closeout
- Latest completed batch: project release gate wrapper
- 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
@@ -48,6 +48,7 @@ The project is complete for the current scope when all of the following are true
| 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
@@ -210,6 +211,12 @@ 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
@@ -235,6 +242,7 @@ wasm-port/tests/native/verify_sim_configs.sh
- [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.

View File

@@ -1576,3 +1576,65 @@ blocked_runtime_promotion_allowed=0
若 host runtime 可用,按 native -> Node/WASM -> browser/host 顺序验证
`L4-USER-M-PROCESS`、`L4-TOOL-DB`、`L4-PYTHON-REMAP`,否则保持 blocked若进入新功能范围
继续遵守 LinuxCNC 作为唯一 CNC 语义来源、JS/browser 只做边界 glue 与 UI/OPFS/SDK workflow。
十八、2026-06-16 继续执行记录project release gate wrapper
本轮在当前 scope complete 后继续快速推进可维护性,不新增运行时功能。新增单入口 project
release gate wrapper把 `docs/project-release-handoff.md` 中的最小 release validation commands
固化为可执行脚本,减少后续维护者手动拼命令的漂移风险。
完成内容:
- 新增 `wasm-port/tests/host/verify_project_release_gate.sh`
- 脚本执行当前 scope 最小 release validation commands
- `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`
- 脚本成功时输出 `project_release_gate=ok`
- `wasm-port/docs/project-release-handoff.md` 增加单入口 release gate 命令和输出;
- `wasm-port/README.md` 增加单入口 release gate 命令和输出;
- `PROJECT_COMPLETION_TRACKER.md` 增加 Project release gate wrapper 状态与 checklist 项;
- `wasm-port/tests/docs/node/verify_project_release_handoff_docs.mjs` 增加 release gate wrapper
文档/脚本漂移检查;
- 未新增控制按钮;
- 未执行 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/tests/docs/node/verify_project_release_handoff_docs.sh
wasm-port/tests/host/verify_project_release_gate.sh
```
关键输出:
```text
project_release_handoff_docs_node_smoke=ok
vendor sync up to date
standalone CNC semantics guard complete
interp_wasm_node_smoke=ok
sim_configs_wasm_node_inventory_unexpected_fail=0
browser_ini_shell_integration_workflow_smoke=ok
ui_node_smokes=ok
host_wasm_opfs_browser_smokes=ok
project_release_gate=ok
```
下一步工作计划:
若本批验证通过并提交,后续可以继续做低风险可维护性推进:为 project release gate 增加短文档索引或
CI 入口说明;或者在真实 LinuxCNC host runtime 可用前,保持 blocked runtime family 不 promotion
只维护 guard、docs 和 workflow/API 边界。

View File

@@ -9,7 +9,13 @@ 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:
The project release gate for the current scope is:
```bash
wasm-port/tests/host/verify_project_release_gate.sh
```
It executes these minimum release validation commands:
```bash
git diff --check
@@ -31,6 +37,7 @@ 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
project_release_gate=ok
```
Browser/UI entry points are documented in `docs/panel-entry.md`. Stable SDK

View File

@@ -37,7 +37,14 @@ continuation records are in `../text14.txt`.
## Required release gates
Run these before claiming the current scope is release-ready:
Run the single project release gate before claiming the current scope is
release-ready:
```bash
wasm-port/tests/host/verify_project_release_gate.sh
```
It executes the same minimum release validation commands:
```bash
git diff --check
@@ -55,6 +62,7 @@ browser smoke coverage. A passing aggregate ends with:
```text
host_wasm_opfs_browser_smokes=ok
project_release_gate=ok
```
## Expected baseline outputs
@@ -110,6 +118,7 @@ must not be run on hosts that do not provide the required LinuxCNC runtime.
- UI Node smoke passes.
- Browser INI panel smoke passes.
- Host aggregate smoke passes.
- `verify_project_release_gate.sh` 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

View File

@@ -17,6 +17,7 @@ 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 projectReleaseGateText = readFileSync(resolve(root, "tests/host/verify_project_release_gate.sh"), "utf8");
const trackerText = readFileSync(resolve(root, "../PROJECT_COMPLETION_TRACKER.md"), "utf8");
for (const phrase of [
@@ -33,7 +34,9 @@ for (const phrase of [
"workflow overview embedding mount DOM",
"verify_no_standalone_cnc_semantics.sh",
"verify_host_smokes.sh",
"verify_project_release_gate.sh",
"host_wasm_opfs_browser_smokes=ok",
"project_release_gate=ok",
"sim_configs_wasm_node_inventory_unexpected_fail=0",
"browser_ini_shell_integration_workflow_smoke=ok",
"project_release_handoff_docs_node_smoke=ok",
@@ -52,6 +55,20 @@ for (const phrase of [
assert.match(hostSmokeText, literalRegExp("verify_project_release_handoff_docs.sh"));
}
for (const phrase of [
"git diff --check",
"verify_vendor_sync.sh",
"verify_no_standalone_cnc_semantics.sh",
"verify_interp_wasm.sh",
"verify_sim_configs_inventory_wasm.sh",
"verify_ini_panel_browser.sh",
"verify_ui_node_smokes.sh",
"verify_host_smokes.sh",
"project_release_gate=ok",
]) {
assert.match(projectReleaseGateText, literalRegExp(phrase));
}
for (const phrase of [
"docs/project-release-handoff.md",
"runtime/sdk/src/index.js",
@@ -70,6 +87,7 @@ for (const phrase of [
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, /Project release gate wrapper/);
assert.match(trackerText, /Final Acceptance Checklist/);
console.log("project_release_handoff_docs_node_smoke=ok");

View File

@@ -0,0 +1,18 @@
#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "$0")/../.." && pwd)"
REPO_ROOT="$(cd "$ROOT_DIR/.." && pwd)"
cd "$REPO_ROOT"
git diff --check
"$ROOT_DIR/tools/verify_vendor_sync.sh"
"$ROOT_DIR/tools/verify_no_standalone_cnc_semantics.sh"
SKIP_INTERP_BUILD=1 "$ROOT_DIR/tests/wasm/node/verify_interp_wasm.sh"
SKIP_INTERP_BUILD=1 "$ROOT_DIR/tests/wasm/node/verify_sim_configs_inventory_wasm.sh"
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 "$ROOT_DIR/tests/browser/verify_ini_panel_browser.sh"
"$ROOT_DIR/tests/ui/node/verify_ui_node_smokes.sh"
"$ROOT_DIR/tests/host/verify_host_smokes.sh"
echo "project_release_gate=ok"