解锁L4-TOOL-DB主机运行环境

结论:已识别RIP版LinuxCNC主机运行时,Tool DB native protocol probe可通过,inventory baseline保持28/28/131/0且promotion继续锁定。
This commit is contained in:
2026-06-19 06:28:38 +08:00
parent f101932bf1
commit d9ac3770a7
18 changed files with 3041 additions and 184 deletions

View File

@@ -612,7 +612,7 @@
);
assertEqual(
releaseArtifactUrlWorkflowRenderResult.rowCount,
29,
53,
"workflow overview release artifact URL workflow render rows",
);
assertEqual(
@@ -650,11 +650,46 @@
"13",
"workflow overview release artifact URL workflow evidence expansion count",
);
assertEqual(
releaseArtifactUrlWorkflowSummary.rows.find(({ id }) => id === "promotion-candidate-artifact-rows")?.value,
"28",
"workflow overview release artifact URL workflow promotion candidate artifact rows",
);
assertEqual(
releaseArtifactUrlWorkflowSummary.rows.find(({ id }) => id === "evidence-expansion-artifact-rows")?.value,
"13",
"workflow overview release artifact URL workflow evidence expansion artifact rows",
);
assertEqual(
releaseArtifactUrlWorkflowSummary.rows.find(({ id }) => id === "evidence-expansion-next-evidence")?.value,
"browser-diagnostics-binding",
"workflow overview release artifact URL workflow evidence expansion next evidence",
);
assertEqual(
releaseArtifactUrlWorkflowSummary.rows.find(({ id }) => id === "evidence-ready-candidate-rows")?.value,
"8",
"workflow overview release artifact URL workflow evidence-ready candidate rows",
);
assertEqual(
releaseArtifactUrlWorkflowSummary.rows.find(({ id }) => id === "evidence-ready-candidate-preview")?.value,
"qtdragon-multi-joint-on-abort",
"workflow overview release artifact URL workflow evidence-ready candidate preview",
);
assertEqual(
releaseArtifactUrlWorkflowSummary.rows.find(({ id }) => id === "evidence-ready-candidate-preview-gcode")?.value,
"linuxcnc/configs/sim/qtdragon/qtdragon_multi_joint/on_abort.ngc",
"workflow overview release artifact URL workflow evidence-ready candidate preview gcode",
);
assertEqual(
releaseArtifactUrlWorkflowSummary.rows.find(({ id }) => id === "evidence-ready-candidate-promotion-allowed")?.value,
"0",
"workflow overview release artifact URL workflow evidence-ready promotion allowed",
);
assertEqual(
releaseArtifactUrlWorkflowSummary.rows.find(({ id }) => id === "evidence-ready-candidate-baseline-changing")?.value,
"no",
"workflow overview release artifact URL workflow evidence-ready baseline changing",
);
assertEqual(
releaseArtifactUrlWorkflowSummary.rows.find(({ id }) => id === "evidence-expansion-baseline-changing")?.value,
"no",
@@ -750,6 +785,51 @@
"0 promoted",
"workflow overview release artifact URL workflow promoted blocked count",
);
assertEqual(
releaseArtifactUrlWorkflowSummary.rows.find(({ id }) => id === "hard-block-runtime-locked-rows")?.value,
"19",
"workflow overview release artifact URL workflow locked hard-block rows",
);
assertEqual(
releaseArtifactUrlWorkflowSummary.rows.find(({ id }) => id === "hard-block-runtime-locked-preview")?.value,
"L4-TOOL-DB:axis/db_demo/base.ngc, L4-PYTHON-REMAP:axis/laser/raster_test.ngc, L4-PYTHON-REMAP:axis/laser/vector_test.ngc",
"workflow overview release artifact URL workflow locked hard-block preview",
);
assertEqual(
releaseArtifactUrlWorkflowSummary.rows.find(({ id }) => id === "hard-block-runtime-promotion-allowed")?.value,
"0",
"workflow overview release artifact URL workflow hard-block promotion allowed count",
);
assertEqual(
releaseArtifactUrlWorkflowSummary.rows.find(({ id }) => id === "hard-block-runtime-family-count")?.value,
"3",
"workflow overview release artifact URL workflow hard-block family count",
);
assertEqual(
releaseArtifactUrlWorkflowSummary.rows.find(({ id }) => id === "hard-block-runtime-family-summary")?.value,
"L4-USER-M-PROCESS:1 locked=yes, L4-TOOL-DB:1 locked=yes, L4-PYTHON-REMAP:17 locked=yes",
"workflow overview release artifact URL workflow hard-block family summary",
);
assertEqual(
releaseArtifactUrlWorkflowSummary.rows.find(({ id }) => id === "hard-block-runtime-detail-row-count")?.value,
"19",
"workflow overview release artifact URL workflow hard-block detail count",
);
assertEqual(
releaseArtifactUrlWorkflowSummary.rows.find(({ id }) => id === "hard-block-runtime-detail-preview-1")?.value,
"L4-TOOL-DB:axis/db_demo/base.ngc; reason=design_tooldata_db_protocol_boundary; next=db_program_v2_1_handshake_getall_load_unload_or_put; promotion_allowed=0",
"workflow overview release artifact URL workflow hard-block detail preview",
);
assertEqual(
releaseArtifactUrlWorkflowSummary.rows.find(({ id }) => id === "hard-block-runtime-family-L4-USER-M-PROCESS")?.value,
"1 locked rows; promotion_allowed=0; first=axis/vismach/millturn/example.ngc; reason=design_m128_m129_linuxcnc_state_boundary; next=kinstype_guard_and_ini_xyz_hal_pin_state",
"workflow overview release artifact URL workflow user-M family row",
);
assertEqual(
releaseArtifactUrlWorkflowSummary.rows.find(({ id }) => id === "hard-block-runtime-family-L4-USER-M-PROCESS-paths")?.value,
"axis/vismach/millturn/example.ngc",
"workflow overview release artifact URL workflow user-M family paths",
);
assertEqual(
releaseArtifactUrlWorkflowRenderResult.rowIds.includes("saved-session-diagnostics"),
true,
@@ -876,6 +956,21 @@
"0",
"workflow overview fixed URL workflow form candidate allowed row",
);
assertEqual(
workflowDoc.querySelector('[data-workflow-overview-release-readiness-artifact-url-workflow-value="evidence-ready-candidate-rows"]').textContent,
"8",
"workflow overview fixed URL workflow form evidence-ready candidate rows",
);
assertEqual(
workflowDoc.querySelector('[data-workflow-overview-release-readiness-artifact-url-workflow-value="evidence-ready-candidate-preview"]').textContent,
"qtdragon-multi-joint-on-abort",
"workflow overview fixed URL workflow form evidence-ready candidate preview",
);
assertEqual(
workflowDoc.querySelector('[data-workflow-overview-release-readiness-artifact-url-workflow-value="evidence-ready-candidate-promotion-allowed"]').textContent,
"0",
"workflow overview fixed URL workflow form evidence-ready promotion allowed",
);
assertEqual(
workflowDoc.querySelector('[data-workflow-overview-release-readiness-artifact-url-workflow-value="evidence-expansion-candidates"]').textContent,
"13",
@@ -943,6 +1038,27 @@
16,
"workflow overview promotion candidate drilldown evidence-ready DOM nodes",
);
assertEqual(
workflowDoc.querySelector(
'[data-workflow-overview-promotion-candidate-drilldown-value="candidate-layer"]',
)?.textContent,
"evidence-ready",
"workflow overview promotion candidate drilldown candidate layer row",
);
assertEqual(
workflowDoc.querySelector(
'[data-workflow-overview-promotion-candidate-drilldown-value="inventory-promotion-allowed"]',
)?.textContent,
"0",
"workflow overview promotion candidate drilldown promotion allowed row",
);
assertEqual(
workflowDoc.querySelector(
'[data-workflow-overview-promotion-candidate-drilldown-value="inventory-baseline-changing"]',
)?.textContent,
"no",
"workflow overview promotion candidate drilldown baseline changing row",
);
assertEqual(
workflowDoc.querySelector(
'[data-workflow-overview-promotion-candidate-drilldown-value="evidence-7"]',
@@ -1020,6 +1136,13 @@
4,
"workflow overview source filter changed source DOM nodes",
);
assertEqual(
workflowDoc.querySelectorAll(
'[data-workflow-overview-promotion-family-source-filter-type="candidate-row"]',
).length,
2,
"workflow overview source filter changed candidate DOM nodes",
);
assertEqual(
workflowDoc.querySelector(
'[data-workflow-overview-promotion-family-source-filter-value="linuxcnc/configs/sim/axis/rose_engine/rcone_demo.ngc"]',
@@ -1027,6 +1150,20 @@
"linuxcnc/configs/sim/axis/rose_engine/rcone_demo.ngc",
"workflow overview source filter changed rose engine source row",
);
assertEqual(
workflowDoc.querySelector(
'[data-workflow-overview-promotion-family-source-filter-type="candidate-row"][data-workflow-overview-promotion-family-source-filter-value="linuxcnc/configs/sim/axis/rose_engine/rcone_demo.ngc"]',
)?.dataset.workflowOverviewPromotionFamilySourceFilterCandidateStatus,
"evidence-ready",
"workflow overview source filter changed rose engine candidate status",
);
assertEqual(
workflowDoc.querySelector(
'[data-workflow-overview-promotion-family-source-filter-type="candidate-row"][data-workflow-overview-promotion-family-source-filter-value="linuxcnc/configs/sim/axis/rose_engine/rcone_demo.ngc"]',
)?.dataset.workflowOverviewPromotionFamilySourceFilterPromotionAllowed,
"0",
"workflow overview source filter changed rose engine promotion allowed",
);
assertEqual(
releaseArtifactJsonWorkflow.statusLine,
"Ready: Artifact JSON workflow complete",