强化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:
@@ -132,6 +132,15 @@ function createPromotionFamilySummaryRows(candidateReport = {}) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function createHardBlockRuntimeLockSummary(blockedFamilies = [], promotedBlockedFamilies = []) {
|
||||||
|
const blockedCount = arrayOrEmpty(blockedFamilies).length;
|
||||||
|
const promotedCount = arrayOrEmpty(promotedBlockedFamilies).length;
|
||||||
|
return {
|
||||||
|
lockValue: promotedCount === 0 ? `locked (${blockedCount} families)` : `violated (${promotedCount} promoted)`,
|
||||||
|
promotedCountValue: `${promotedCount} promoted`,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
const BLOCKED_RUNTIME_FAMILIES = [
|
const BLOCKED_RUNTIME_FAMILIES = [
|
||||||
"L4-USER-M-PROCESS",
|
"L4-USER-M-PROCESS",
|
||||||
"L4-TOOL-DB",
|
"L4-TOOL-DB",
|
||||||
@@ -1854,6 +1863,7 @@ export function createProjectReleaseReadinessReport({
|
|||||||
virtualHalMotionControllerMatrix,
|
virtualHalMotionControllerMatrix,
|
||||||
);
|
);
|
||||||
const blockedRuntimeReady = promotedBlockedFamilies.length === 0;
|
const blockedRuntimeReady = promotedBlockedFamilies.length === 0;
|
||||||
|
const hardBlockRuntimeLockSummary = createHardBlockRuntimeLockSummary(blockedFamilies, promotedBlockedFamilies);
|
||||||
const axisScreenshotArtifactSummary = createAxisScreenshotArtifactSummary(axisScreenshotArtifacts);
|
const axisScreenshotArtifactSummary = createAxisScreenshotArtifactSummary(axisScreenshotArtifacts);
|
||||||
const axisScreenshotArtifactsReady = axisScreenshotArtifactSummary.ready;
|
const axisScreenshotArtifactsReady = axisScreenshotArtifactSummary.ready;
|
||||||
const ready = releaseGatePassed &&
|
const ready = releaseGatePassed &&
|
||||||
@@ -1954,6 +1964,16 @@ export function createProjectReleaseReadinessReport({
|
|||||||
label: "Blocked runtime families",
|
label: "Blocked runtime families",
|
||||||
value: blockedRuntimeReady ? blockedFamilies.join(", ") : `promoted: ${promotedBlockedFamilies.join(", ")}`,
|
value: blockedRuntimeReady ? blockedFamilies.join(", ") : `promoted: ${promotedBlockedFamilies.join(", ")}`,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
id: "hard-block-runtime-lock",
|
||||||
|
label: "Hard-block runtime lock",
|
||||||
|
value: hardBlockRuntimeLockSummary.lockValue,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "promoted-blocked-family-count",
|
||||||
|
label: "Promoted blocked families",
|
||||||
|
value: hardBlockRuntimeLockSummary.promotedCountValue,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
id: "axis-screenshot-artifacts",
|
id: "axis-screenshot-artifacts",
|
||||||
label: "AXIS screenshot artifacts",
|
label: "AXIS screenshot artifacts",
|
||||||
@@ -1978,6 +1998,10 @@ export function createProjectReleaseReadinessSummaryViewModel(
|
|||||||
const axisScreenshotArtifactSummary = objectOrEmpty(report?.axisScreenshotArtifactSummary);
|
const axisScreenshotArtifactSummary = objectOrEmpty(report?.axisScreenshotArtifactSummary);
|
||||||
const blockedRuntimeFamilies = arrayOrEmpty(report?.blockedRuntimeFamilies);
|
const blockedRuntimeFamilies = arrayOrEmpty(report?.blockedRuntimeFamilies);
|
||||||
const promotedBlockedFamilies = arrayOrEmpty(report?.promotedBlockedFamilies);
|
const promotedBlockedFamilies = arrayOrEmpty(report?.promotedBlockedFamilies);
|
||||||
|
const hardBlockRuntimeLockSummary = createHardBlockRuntimeLockSummary(
|
||||||
|
blockedRuntimeFamilies,
|
||||||
|
promotedBlockedFamilies,
|
||||||
|
);
|
||||||
const ready = report?.ready === true;
|
const ready = report?.ready === true;
|
||||||
const statusText = ready ? "Ready" : "Waiting";
|
const statusText = ready ? "Ready" : "Waiting";
|
||||||
const detailText = ready ? "No blocking reasons" : (missing.length > 0 ? missing.join(", ") : "release evidence missing");
|
const detailText = ready ? "No blocking reasons" : (missing.length > 0 ? missing.join(", ") : "release evidence missing");
|
||||||
@@ -2033,6 +2057,16 @@ export function createProjectReleaseReadinessSummaryViewModel(
|
|||||||
? `promoted: ${promotedBlockedFamilies.join(", ")}`
|
? `promoted: ${promotedBlockedFamilies.join(", ")}`
|
||||||
: (blockedRuntimeFamilies.join(", ") || "none"),
|
: (blockedRuntimeFamilies.join(", ") || "none"),
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
id: "hard-block-runtime-lock",
|
||||||
|
label: "Hard-block runtime lock",
|
||||||
|
value: hardBlockRuntimeLockSummary.lockValue,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "promoted-blocked-family-count",
|
||||||
|
label: "Promoted blocked families",
|
||||||
|
value: hardBlockRuntimeLockSummary.promotedCountValue,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
id: "axis-screenshot-artifacts",
|
id: "axis-screenshot-artifacts",
|
||||||
label: "AXIS screenshot artifacts",
|
label: "AXIS screenshot artifacts",
|
||||||
@@ -2819,6 +2853,12 @@ export function createProjectReleaseReadinessArtifactValidation(artifact = {}) {
|
|||||||
virtualHalMotionControllerMatrix,
|
virtualHalMotionControllerMatrix,
|
||||||
) && artifactObject.virtualHalMotionControllerMatrixReady === true;
|
) && artifactObject.virtualHalMotionControllerMatrixReady === true;
|
||||||
const axisScreenshotArtifacts = arrayOrEmpty(axisScreenshotArtifactSummary.artifacts);
|
const axisScreenshotArtifacts = arrayOrEmpty(axisScreenshotArtifactSummary.artifacts);
|
||||||
|
const blockedRuntimeFamilies = arrayOrEmpty(artifactObject.blockedRuntimeFamilies);
|
||||||
|
const promotedBlockedFamilies = arrayOrEmpty(artifactObject.promotedBlockedFamilies);
|
||||||
|
const hardBlockRuntimeLockSummary = createHardBlockRuntimeLockSummary(
|
||||||
|
blockedRuntimeFamilies,
|
||||||
|
promotedBlockedFamilies,
|
||||||
|
);
|
||||||
const axisScreenshotSummaryReady = !axisScreenshotArtifactSummary.apiName
|
const axisScreenshotSummaryReady = !axisScreenshotArtifactSummary.apiName
|
||||||
|| axisScreenshotArtifacts.length === 0
|
|| axisScreenshotArtifacts.length === 0
|
||||||
|| (
|
|| (
|
||||||
@@ -2900,7 +2940,7 @@ export function createProjectReleaseReadinessArtifactValidation(artifact = {}) {
|
|||||||
virtualHalMotionControllerMatrixReady,
|
virtualHalMotionControllerMatrixReady,
|
||||||
axisScreenshotArtifactSummaryReady: axisScreenshotSummaryReady,
|
axisScreenshotArtifactSummaryReady: axisScreenshotSummaryReady,
|
||||||
axisScreenshotArtifactCount: axisScreenshotArtifacts.length,
|
axisScreenshotArtifactCount: axisScreenshotArtifacts.length,
|
||||||
blockedRuntimeFamilies: arrayOrEmpty(artifactObject.blockedRuntimeFamilies),
|
blockedRuntimeFamilies,
|
||||||
rows: [
|
rows: [
|
||||||
{
|
{
|
||||||
id: "artifact",
|
id: "artifact",
|
||||||
@@ -2968,6 +3008,23 @@ export function createProjectReleaseReadinessArtifactValidation(artifact = {}) {
|
|||||||
label: "Virtual HAL motion controller matrix",
|
label: "Virtual HAL motion controller matrix",
|
||||||
value: virtualHalMotionControllerMatrixReady ? "ready" : "missing",
|
value: virtualHalMotionControllerMatrixReady ? "ready" : "missing",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
id: "blocked-runtime-families",
|
||||||
|
label: "Blocked runtime families",
|
||||||
|
value: promotedBlockedFamilies.length > 0
|
||||||
|
? `promoted: ${promotedBlockedFamilies.join(", ")}`
|
||||||
|
: (blockedRuntimeFamilies.join(", ") || "none"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "hard-block-runtime-lock",
|
||||||
|
label: "Hard-block runtime lock",
|
||||||
|
value: hardBlockRuntimeLockSummary.lockValue,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "promoted-blocked-family-count",
|
||||||
|
label: "Promoted blocked families",
|
||||||
|
value: hardBlockRuntimeLockSummary.promotedCountValue,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
id: "axis-screenshot-artifacts",
|
id: "axis-screenshot-artifacts",
|
||||||
label: "AXIS screenshot artifacts",
|
label: "AXIS screenshot artifacts",
|
||||||
|
|||||||
@@ -662,6 +662,20 @@
|
|||||||
"id": "qtdragon-on-abort",
|
"id": "qtdragon-on-abort",
|
||||||
"label": "qtdragon-on-abort",
|
"label": "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"
|
||||||
|
],
|
||||||
"candidateCount": 6,
|
"candidateCount": 6,
|
||||||
"completeCount": 6,
|
"completeCount": 6,
|
||||||
"sourceFileCount": 12,
|
"sourceFileCount": 12,
|
||||||
@@ -672,6 +686,11 @@
|
|||||||
"id": "vismach-remap-sims",
|
"id": "vismach-remap-sims",
|
||||||
"label": "vismach-remap-sims",
|
"label": "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"
|
||||||
|
],
|
||||||
"candidateCount": 1,
|
"candidateCount": 1,
|
||||||
"completeCount": 1,
|
"completeCount": 1,
|
||||||
"sourceFileCount": 3,
|
"sourceFileCount": 3,
|
||||||
@@ -682,6 +701,10 @@
|
|||||||
"id": "rose-engine-rcone-demo",
|
"id": "rose-engine-rcone-demo",
|
||||||
"label": "rose-engine-rcone-demo",
|
"label": "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"
|
||||||
|
],
|
||||||
"candidateCount": 1,
|
"candidateCount": 1,
|
||||||
"completeCount": 1,
|
"completeCount": 1,
|
||||||
"sourceFileCount": 2,
|
"sourceFileCount": 2,
|
||||||
@@ -2273,17 +2296,40 @@
|
|||||||
{
|
{
|
||||||
"id": "virtual-hal-promotion-family-qtdragon-on-abort",
|
"id": "virtual-hal-promotion-family-qtdragon-on-abort",
|
||||||
"label": "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",
|
"id": "virtual-hal-promotion-family-vismach-remap-sims",
|
||||||
"label": "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",
|
"id": "virtual-hal-promotion-family-rose-engine-rcone-demo",
|
||||||
"label": "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",
|
"id": "virtual-hal-sim-config-macro-load-fixtures",
|
||||||
@@ -2300,6 +2346,16 @@
|
|||||||
"label": "Blocked runtime families",
|
"label": "Blocked runtime families",
|
||||||
"value": "L4-USER-M-PROCESS, L4-TOOL-DB, L4-PYTHON-REMAP"
|
"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",
|
"id": "axis-screenshot-artifacts",
|
||||||
"label": "AXIS screenshot artifacts",
|
"label": "AXIS screenshot artifacts",
|
||||||
|
|||||||
@@ -96,6 +96,14 @@ assert.equal(
|
|||||||
),
|
),
|
||||||
true,
|
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.apiName, "linuxcnc-wasm-virtual-hal-sim-config-macro-load-fixture-report");
|
||||||
assert.equal(artifact.virtualHalSimConfigMacroLoadFixtures.complete, true);
|
assert.equal(artifact.virtualHalSimConfigMacroLoadFixtures.complete, true);
|
||||||
assert.equal(artifact.virtualHalSimConfigMacroLoadFixturesReady, true);
|
assert.equal(artifact.virtualHalSimConfigMacroLoadFixturesReady, true);
|
||||||
|
|||||||
@@ -286,6 +286,16 @@ assert.deepEqual(createProjectReleaseReadinessSummaryViewModel(report), {
|
|||||||
label: "Blocked runtime families",
|
label: "Blocked runtime families",
|
||||||
value: "L4-USER-M-PROCESS, L4-TOOL-DB, L4-PYTHON-REMAP",
|
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",
|
id: "axis-screenshot-artifacts",
|
||||||
label: "AXIS screenshot artifacts",
|
label: "AXIS screenshot artifacts",
|
||||||
|
|||||||
@@ -1474,6 +1474,14 @@ assert.equal(
|
|||||||
releaseReadinessWaiting.rows.find(({ id }) => id === "blocked-runtime-families")?.value,
|
releaseReadinessWaiting.rows.find(({ id }) => id === "blocked-runtime-families")?.value,
|
||||||
"L4-USER-M-PROCESS, L4-TOOL-DB, L4-PYTHON-REMAP",
|
"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({
|
const releaseReadinessReady = createProjectReleaseReadinessReport({
|
||||||
observedOutputs: ["project_release_gate=ok"],
|
observedOutputs: ["project_release_gate=ok"],
|
||||||
virtualHalSimConfigSourceCoverage: simConfigSourceCoverageReport,
|
virtualHalSimConfigSourceCoverage: simConfigSourceCoverageReport,
|
||||||
@@ -1652,6 +1660,21 @@ assert.deepEqual(releaseReadinessArtifactValidation, {
|
|||||||
label: "Virtual HAL motion controller matrix",
|
label: "Virtual HAL motion controller matrix",
|
||||||
value: "ready",
|
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",
|
id: "axis-screenshot-artifacts",
|
||||||
label: "AXIS screenshot artifacts",
|
label: "AXIS screenshot artifacts",
|
||||||
@@ -1892,6 +1915,13 @@ assert.equal(
|
|||||||
}).missing.includes("blocked-runtime-families"),
|
}).missing.includes("blocked-runtime-families"),
|
||||||
true,
|
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(getIniPanelEntryManifest(), INI_PANEL_ENTRIES);
|
||||||
assert.deepEqual(getVisibleIniPanelEntries(), INI_PANEL_ENTRIES);
|
assert.deepEqual(getVisibleIniPanelEntries(), INI_PANEL_ENTRIES);
|
||||||
|
|||||||
Reference in New Issue
Block a user