强化hard block锁定可见性

结论:release readiness 现显式展示 hard-block runtime lock 和 promoted blocked family count;baseline 保持 28/28/131/0,Python remap、tool DB、external user-M 仍 locked。
This commit is contained in:
2026-06-18 17:44:45 +08:00
parent 04db87dddd
commit eb2fc22129
5 changed files with 165 additions and 4 deletions

View File

@@ -662,6 +662,20 @@
"id": "qtdragon-on-abort",
"label": "qtdragon-on-abort",
"value": "6/6 ready; sources=12; diagnostics=ready",
"sourceFiles": [
"linuxcnc/configs/sim/qtdragon/qtdragon_multi_joint/qtdragon_xyyz.ini",
"linuxcnc/configs/sim/qtdragon/qtdragon_multi_joint/on_abort.ngc",
"linuxcnc/configs/sim/qtdragon/qtdragon_xyz/qtdragon_inch.ini",
"linuxcnc/configs/sim/qtdragon/qtdragon_xyz/on_abort.ngc",
"linuxcnc/configs/sim/qtdragon/qtdragon_xyz45/qtdragon_xyza.ini",
"linuxcnc/configs/sim/qtdragon/qtdragon_xyz45/on_abort.ngc",
"linuxcnc/configs/sim/qtdragon_hd/qtdragon_hd_xyz/qtdragon_hd_vertical.ini",
"linuxcnc/configs/sim/qtdragon_hd/qtdragon_hd_xyz/on_abort.ngc",
"linuxcnc/configs/sim/qtdragon_hd/qtdragon_hd_z_compensation/qtdragon_hd_z_compensation.ini",
"linuxcnc/configs/sim/qtdragon_hd/qtdragon_hd_z_compensation/on_abort.ngc",
"linuxcnc/configs/sim/qtvcp_screens/qtdragon/qtdragon_mpg.ini",
"linuxcnc/configs/sim/qtvcp_screens/qtdragon/on_abort.ngc"
],
"candidateCount": 6,
"completeCount": 6,
"sourceFileCount": 12,
@@ -672,6 +686,11 @@
"id": "vismach-remap-sims",
"label": "vismach-remap-sims",
"value": "1/1 ready; sources=3; diagnostics=ready",
"sourceFiles": [
"linuxcnc/configs/sim/axis/vismach/puma/puma.ini",
"linuxcnc/configs/sim/axis/vismach/puma/puma_seam_weld.ngc",
"linuxcnc/configs/sim/axis/vismach/puma/remap_subs/428remap.ngc"
],
"candidateCount": 1,
"completeCount": 1,
"sourceFileCount": 3,
@@ -682,6 +701,10 @@
"id": "rose-engine-rcone-demo",
"label": "rose-engine-rcone-demo",
"value": "1/1 ready; sources=2; diagnostics=ready",
"sourceFiles": [
"linuxcnc/configs/sim/axis/rose_engine/rose_engine.ini",
"linuxcnc/configs/sim/axis/rose_engine/rcone_demo.ngc"
],
"candidateCount": 1,
"completeCount": 1,
"sourceFileCount": 2,
@@ -2273,17 +2296,40 @@
{
"id": "virtual-hal-promotion-family-qtdragon-on-abort",
"label": "Promotion family qtdragon-on-abort",
"value": "6/6 ready; sources=12; diagnostics=ready"
"value": "6/6 ready; sources=12; diagnostics=ready",
"sourceFiles": [
"linuxcnc/configs/sim/qtdragon/qtdragon_multi_joint/qtdragon_xyyz.ini",
"linuxcnc/configs/sim/qtdragon/qtdragon_multi_joint/on_abort.ngc",
"linuxcnc/configs/sim/qtdragon/qtdragon_xyz/qtdragon_inch.ini",
"linuxcnc/configs/sim/qtdragon/qtdragon_xyz/on_abort.ngc",
"linuxcnc/configs/sim/qtdragon/qtdragon_xyz45/qtdragon_xyza.ini",
"linuxcnc/configs/sim/qtdragon/qtdragon_xyz45/on_abort.ngc",
"linuxcnc/configs/sim/qtdragon_hd/qtdragon_hd_xyz/qtdragon_hd_vertical.ini",
"linuxcnc/configs/sim/qtdragon_hd/qtdragon_hd_xyz/on_abort.ngc",
"linuxcnc/configs/sim/qtdragon_hd/qtdragon_hd_z_compensation/qtdragon_hd_z_compensation.ini",
"linuxcnc/configs/sim/qtdragon_hd/qtdragon_hd_z_compensation/on_abort.ngc",
"linuxcnc/configs/sim/qtvcp_screens/qtdragon/qtdragon_mpg.ini",
"linuxcnc/configs/sim/qtvcp_screens/qtdragon/on_abort.ngc"
]
},
{
"id": "virtual-hal-promotion-family-vismach-remap-sims",
"label": "Promotion family vismach-remap-sims",
"value": "1/1 ready; sources=3; diagnostics=ready"
"value": "1/1 ready; sources=3; diagnostics=ready",
"sourceFiles": [
"linuxcnc/configs/sim/axis/vismach/puma/puma.ini",
"linuxcnc/configs/sim/axis/vismach/puma/puma_seam_weld.ngc",
"linuxcnc/configs/sim/axis/vismach/puma/remap_subs/428remap.ngc"
]
},
{
"id": "virtual-hal-promotion-family-rose-engine-rcone-demo",
"label": "Promotion family rose-engine-rcone-demo",
"value": "1/1 ready; sources=2; diagnostics=ready"
"value": "1/1 ready; sources=2; diagnostics=ready",
"sourceFiles": [
"linuxcnc/configs/sim/axis/rose_engine/rose_engine.ini",
"linuxcnc/configs/sim/axis/rose_engine/rcone_demo.ngc"
]
},
{
"id": "virtual-hal-sim-config-macro-load-fixtures",
@@ -2300,6 +2346,16 @@
"label": "Blocked runtime families",
"value": "L4-USER-M-PROCESS, L4-TOOL-DB, L4-PYTHON-REMAP"
},
{
"id": "hard-block-runtime-lock",
"label": "Hard-block runtime lock",
"value": "locked (3 families)"
},
{
"id": "promoted-blocked-family-count",
"label": "Promoted blocked families",
"value": "0 promoted"
},
{
"id": "axis-screenshot-artifacts",
"label": "AXIS screenshot artifacts",

View File

@@ -96,6 +96,14 @@ assert.equal(
),
true,
);
assert.equal(
artifact.rows.find(({ id }) => id === "hard-block-runtime-lock")?.value,
"locked (3 families)",
);
assert.equal(
artifact.rows.find(({ id }) => id === "promoted-blocked-family-count")?.value,
"0 promoted",
);
assert.equal(artifact.virtualHalSimConfigMacroLoadFixtures.apiName, "linuxcnc-wasm-virtual-hal-sim-config-macro-load-fixture-report");
assert.equal(artifact.virtualHalSimConfigMacroLoadFixtures.complete, true);
assert.equal(artifact.virtualHalSimConfigMacroLoadFixturesReady, true);

View File

@@ -286,6 +286,16 @@ assert.deepEqual(createProjectReleaseReadinessSummaryViewModel(report), {
label: "Blocked runtime families",
value: "L4-USER-M-PROCESS, L4-TOOL-DB, L4-PYTHON-REMAP",
},
{
id: "hard-block-runtime-lock",
label: "Hard-block runtime lock",
value: "locked (3 families)",
},
{
id: "promoted-blocked-family-count",
label: "Promoted blocked families",
value: "0 promoted",
},
{
id: "axis-screenshot-artifacts",
label: "AXIS screenshot artifacts",

View File

@@ -1474,6 +1474,14 @@ assert.equal(
releaseReadinessWaiting.rows.find(({ id }) => id === "blocked-runtime-families")?.value,
"L4-USER-M-PROCESS, L4-TOOL-DB, L4-PYTHON-REMAP",
);
assert.equal(
releaseReadinessWaiting.rows.find(({ id }) => id === "hard-block-runtime-lock")?.value,
"locked (3 families)",
);
assert.equal(
releaseReadinessWaiting.rows.find(({ id }) => id === "promoted-blocked-family-count")?.value,
"0 promoted",
);
const releaseReadinessReady = createProjectReleaseReadinessReport({
observedOutputs: ["project_release_gate=ok"],
virtualHalSimConfigSourceCoverage: simConfigSourceCoverageReport,
@@ -1652,6 +1660,21 @@ assert.deepEqual(releaseReadinessArtifactValidation, {
label: "Virtual HAL motion controller matrix",
value: "ready",
},
{
id: "blocked-runtime-families",
label: "Blocked runtime families",
value: "L4-USER-M-PROCESS, L4-TOOL-DB, L4-PYTHON-REMAP",
},
{
id: "hard-block-runtime-lock",
label: "Hard-block runtime lock",
value: "locked (3 families)",
},
{
id: "promoted-blocked-family-count",
label: "Promoted blocked families",
value: "0 promoted",
},
{
id: "axis-screenshot-artifacts",
label: "AXIS screenshot artifacts",
@@ -1892,6 +1915,13 @@ assert.equal(
}).missing.includes("blocked-runtime-families"),
true,
);
assert.equal(
createProjectReleaseReadinessSummaryViewModel(createProjectReleaseReadinessReport({
observedOutputs: ["project_release_gate=ok"],
promotedRuntimeFamilies: ["L4-TOOL-DB"],
})).rows.find(({ id }) => id === "hard-block-runtime-lock")?.value,
"violated (1 promoted)",
);
assert.deepEqual(getIniPanelEntryManifest(), INI_PANEL_ENTRIES);
assert.deepEqual(getVisibleIniPanelEntries(), INI_PANEL_ENTRIES);