新增 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
|
## Current Status
|
||||||
|
|
||||||
- Active continuation file: `text14.txt`
|
- 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
|
- 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
|
||||||
@@ -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. |
|
| 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. |
|
| 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. |
|
| 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
|
## 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
|
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:
|
Run this if browser interpreter behavior is touched:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
@@ -235,6 +242,7 @@ wasm-port/tests/native/verify_sim_configs.sh
|
|||||||
- [x] UI Node smoke passes.
|
- [x] UI Node smoke passes.
|
||||||
- [x] Browser INI panel smoke passes.
|
- [x] Browser INI panel smoke passes.
|
||||||
- [x] Host aggregate smoke passes.
|
- [x] Host aggregate smoke passes.
|
||||||
|
- [x] Project release gate wrapper passes.
|
||||||
- [x] Runtime blocked families remain documented.
|
- [x] Runtime blocked families remain documented.
|
||||||
- [x] Project release handoff docs smoke passes.
|
- [x] Project release handoff docs smoke passes.
|
||||||
- [x] README/docs explain supported workflows and blocked items.
|
- [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 顺序验证
|
若 host runtime 可用,按 native -> Node/WASM -> browser/host 顺序验证
|
||||||
`L4-USER-M-PROCESS`、`L4-TOOL-DB`、`L4-PYTHON-REMAP`,否则保持 blocked;若进入新功能范围,
|
`L4-USER-M-PROCESS`、`L4-TOOL-DB`、`L4-PYTHON-REMAP`,否则保持 blocked;若进入新功能范围,
|
||||||
继续遵守 LinuxCNC 作为唯一 CNC 语义来源、JS/browser 只做边界 glue 与 UI/OPFS/SDK workflow。
|
继续遵守 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
|
OPFS/session persistence scope, sim-config coverage baseline, blocked
|
||||||
host/runtime families, source reuse rules, drift rules, and acceptance tracker.
|
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
|
```bash
|
||||||
git diff --check
|
git diff --check
|
||||||
@@ -31,6 +37,7 @@ sim_configs_coverage_docs_node_smoke=ok
|
|||||||
host_runtime_boundary_docs_node_smoke=ok
|
host_runtime_boundary_docs_node_smoke=ok
|
||||||
sdk_surface_node_smoke=ok
|
sdk_surface_node_smoke=ok
|
||||||
host_wasm_opfs_browser_smokes=ok
|
host_wasm_opfs_browser_smokes=ok
|
||||||
|
project_release_gate=ok
|
||||||
```
|
```
|
||||||
|
|
||||||
Browser/UI entry points are documented in `docs/panel-entry.md`. Stable SDK
|
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
|
## 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
|
```bash
|
||||||
git diff --check
|
git diff --check
|
||||||
@@ -55,6 +62,7 @@ browser smoke coverage. A passing aggregate ends with:
|
|||||||
|
|
||||||
```text
|
```text
|
||||||
host_wasm_opfs_browser_smokes=ok
|
host_wasm_opfs_browser_smokes=ok
|
||||||
|
project_release_gate=ok
|
||||||
```
|
```
|
||||||
|
|
||||||
## Expected baseline outputs
|
## 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.
|
- UI Node smoke passes.
|
||||||
- Browser INI panel smoke passes.
|
- Browser INI panel smoke passes.
|
||||||
- Host aggregate smoke passes.
|
- Host aggregate smoke passes.
|
||||||
|
- `verify_project_release_gate.sh` passes.
|
||||||
- SDK exports match `runtime/sdk/README.md`.
|
- SDK exports match `runtime/sdk/README.md`.
|
||||||
- `docs/panel-entry.md` documents the external shell workflow surface.
|
- `docs/panel-entry.md` documents the external shell workflow surface.
|
||||||
- OPFS/session, sim-config coverage, host/runtime boundary, source reuse, and
|
- 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 sourceReuseText = readFileSync(resolve(root, "docs/source-reuse-map.md"), "utf8");
|
||||||
const driftText = readFileSync(resolve(root, "docs/drift-report.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 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");
|
const trackerText = readFileSync(resolve(root, "../PROJECT_COMPLETION_TRACKER.md"), "utf8");
|
||||||
|
|
||||||
for (const phrase of [
|
for (const phrase of [
|
||||||
@@ -33,7 +34,9 @@ for (const phrase of [
|
|||||||
"workflow overview embedding mount DOM",
|
"workflow overview embedding mount DOM",
|
||||||
"verify_no_standalone_cnc_semantics.sh",
|
"verify_no_standalone_cnc_semantics.sh",
|
||||||
"verify_host_smokes.sh",
|
"verify_host_smokes.sh",
|
||||||
|
"verify_project_release_gate.sh",
|
||||||
"host_wasm_opfs_browser_smokes=ok",
|
"host_wasm_opfs_browser_smokes=ok",
|
||||||
|
"project_release_gate=ok",
|
||||||
"sim_configs_wasm_node_inventory_unexpected_fail=0",
|
"sim_configs_wasm_node_inventory_unexpected_fail=0",
|
||||||
"browser_ini_shell_integration_workflow_smoke=ok",
|
"browser_ini_shell_integration_workflow_smoke=ok",
|
||||||
"project_release_handoff_docs_node_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"));
|
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 [
|
for (const phrase of [
|
||||||
"docs/project-release-handoff.md",
|
"docs/project-release-handoff.md",
|
||||||
"runtime/sdk/src/index.js",
|
"runtime/sdk/src/index.js",
|
||||||
@@ -70,6 +87,7 @@ for (const phrase of [
|
|||||||
assert.match(sourceReuseText, literalRegExp("docs/project-release-handoff.md"));
|
assert.match(sourceReuseText, literalRegExp("docs/project-release-handoff.md"));
|
||||||
assert.match(driftText, literalRegExp("docs/project-release-handoff.md"));
|
assert.match(driftText, literalRegExp("docs/project-release-handoff.md"));
|
||||||
assert.match(trackerText, /Documentation\/release gate/);
|
assert.match(trackerText, /Documentation\/release gate/);
|
||||||
|
assert.match(trackerText, /Project release gate wrapper/);
|
||||||
assert.match(trackerText, /Final Acceptance Checklist/);
|
assert.match(trackerText, /Final Acceptance Checklist/);
|
||||||
|
|
||||||
console.log("project_release_handoff_docs_node_smoke=ok");
|
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