展开promotion证据行

结论:workflow overview promotion candidate drilldown 现在展示8条evidence-ready候选的family、G-code path、source count和manifest-backed状态,hard block仍保持locked,baseline保持28/28/131/0。
This commit is contained in:
2026-06-18 19:41:40 +08:00
parent 9ce8ad6f12
commit 31c83db696
2 changed files with 77 additions and 3 deletions

View File

@@ -10,6 +10,7 @@ import {
createVirtualHalCommandScriptFixtureReport,
createVirtualHalMotionControllerMatrixReport,
createVirtualHalSimConfigMacroLoadFixtureReport,
createVirtualHalSimConfigEvidenceExpansionReport,
createVirtualHalSimConfigPromotionCandidateReport,
createVirtualHalSimConfigSourceCoverageReport,
createVirtualHalSimulationReplacementReport,
@@ -1431,6 +1432,13 @@ const releaseReadinessPromotionCandidates = createVirtualHalSimConfigPromotionCa
],
motionControllerMatrix: releaseReadinessMotionControllerMatrix,
});
const releaseReadinessEvidenceExpansion = createVirtualHalSimConfigEvidenceExpansionReport({
manifestEntries: [
...VIRTUAL_HAL_MOTION_MATRIX_MANIFEST_ENTRIES,
"linuxcnc/configs/sim/axis/vismach/puma/puma_cube.ini",
],
motionControllerMatrix: releaseReadinessMotionControllerMatrix,
});
const releaseReadinessMacroLoadFixtures = createVirtualHalSimConfigMacroLoadFixtureReport({
manifestEntries: [
...VIRTUAL_HAL_MOTION_MATRIX_MANIFEST_ENTRIES,
@@ -1445,6 +1453,7 @@ const releaseReadinessArtifactJson = JSON.stringify(createProjectReleaseReadines
gateResults: Object.fromEntries(createProjectReleaseGateManifest().gateIds.map((id) => [id, true])),
virtualHalSimConfigSourceCoverage: createVirtualHalSimConfigSourceCoverageReport(),
virtualHalSimConfigPromotionCandidates: releaseReadinessPromotionCandidates,
virtualHalSimConfigEvidenceExpansion: releaseReadinessEvidenceExpansion,
virtualHalSimConfigMacroLoadFixtures: releaseReadinessMacroLoadFixtures,
virtualHalMotionControllerMatrix: releaseReadinessMotionControllerMatrix,
}));
@@ -1457,6 +1466,7 @@ const browserDiagnosticsArtifact = {
virtualHalSourceCompliance: createVirtualHalSourceComplianceReport({ halState: browserDiagnosticsVirtualHalState }),
virtualHalSimConfigSourceCoverage: createVirtualHalSimConfigSourceCoverageReport(),
virtualHalSimConfigPromotionCandidates: releaseReadinessPromotionCandidates,
virtualHalSimConfigEvidenceExpansion: releaseReadinessEvidenceExpansion,
virtualHalPromotionCandidateSummary: {
apiName: "real-browser-simulation-promotion-candidate-summary",
summaryVersion: 1,
@@ -2013,6 +2023,22 @@ assert.equal(
"passed",
);
assert.equal(promotionCandidateDrilldownViewModel.sourceFileCount, 2);
assert.equal(promotionCandidateDrilldownViewModel.evidenceRowCount, 8);
assert.equal(
promotionCandidateDrilldownViewModel.evidenceRows.every(({ status, manifestBacked }) =>
status === "evidence-ready" && manifestBacked === true
),
true,
);
assert.equal(
promotionCandidateDrilldownViewModel.evidenceRows.some(({ label, value, familyId, sourceFileCount }) =>
label === "puma-seam-weld" &&
value === "linuxcnc/configs/sim/axis/vismach/puma/puma_seam_weld.ngc" &&
familyId === "vismach-remap-sims" &&
sourceFileCount === 3
),
true,
);
assert.deepEqual(
promotionCandidateDrilldownViewModel.sourceRows.map(({ value, sourceKind, manifestBacked }) => [
value,
@@ -2025,8 +2051,9 @@ assert.deepEqual(
],
);
assert.equal(promotionCandidateDrilldownRenderState.ready, true);
assert.equal(promotionCandidateDrilldownRenderState.rowCount, 11);
assert.equal(promotionCandidateDrilldownRenderState.rowCount, 19);
assert.equal(promotionCandidateDrilldownRenderState.sourceFileCount, 2);
assert.equal(promotionCandidateDrilldownRenderState.evidenceRowCount, 8);
assert.equal(
createIniPanelShellWorkflowOverviewPromotionCandidateDrilldownDomContract().selectors.mount,
"[data-workflow-overview-promotion-candidate-drilldown]",
@@ -2066,7 +2093,8 @@ const promotionCandidateDrilldownMountResult =
rowsNode: promotionCandidateDrilldownRowsNode,
});
assert.equal(promotionCandidateDrilldownRenderResult.rendered, true);
assert.equal(promotionCandidateDrilldownRenderResult.rowCount, 11);
assert.equal(promotionCandidateDrilldownRenderResult.rowCount, 19);
assert.equal(promotionCandidateDrilldownRenderResult.evidenceRowCount, 8);
assert.deepEqual(promotionCandidateDrilldownRenderResult.dataset, {
handoffPhase: "ready",
handoffReady: "true",
@@ -2082,8 +2110,16 @@ assert.equal(promotionCandidateDrilldownRowsNode.children.some((node) =>
node.dataset?.workflowOverviewPromotionCandidateDrilldownManifestBacked === "true" &&
node.textContent === "linuxcnc/configs/sim/qtdragon/qtdragon_multi_joint/on_abort.ngc"
), true);
assert.equal(promotionCandidateDrilldownRowsNode.children.some((node) =>
node.dataset?.workflowOverviewPromotionCandidateDrilldownValue === "evidence-7" &&
node.dataset?.workflowOverviewPromotionCandidateDrilldownFamilyId === "vismach-remap-sims" &&
node.dataset?.workflowOverviewPromotionCandidateDrilldownEvidenceReady === "true" &&
node.dataset?.workflowOverviewPromotionCandidateDrilldownSourceFileCount === "3" &&
node.textContent === "linuxcnc/configs/sim/axis/vismach/puma/puma_seam_weld.ngc"
), true);
assert.equal(promotionCandidateDrilldownMountResult.ready, true);
assert.equal(promotionCandidateDrilldownMountResult.renderResult.sourceFileCount, 2);
assert.equal(promotionCandidateDrilldownMountResult.renderResult.evidenceRowCount, 8);
assert.equal(
releaseArtifactUrlWorkflowSummary.rows.find(({ id }) => id === "virtual-hal-promotion-families")?.value,
expectedPromotionFamilySummary,