新增 project release gate wrapper
This commit is contained in:
@@ -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.
|
||||
|
||||
62
text14.txt
62
text14.txt
@@ -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 边界。
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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");
|
||||
|
||||
18
wasm-port/tests/host/verify_project_release_gate.sh
Executable file
18
wasm-port/tests/host/verify_project_release_gate.sh
Executable 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"
|
||||
Reference in New Issue
Block a user