按text32继续推进evidence expansion过滤预设

结论:已完成 evidence expansion family/source filter 的 summary/action-plan、query/hash 预选、UI/API/SDK/浏览器验证覆盖,并保持 sim-config inventory baseline=82/82/77/0。
This commit is contained in:
2026-06-20 12:18:08 +08:00
parent 8a1c4699b1
commit a6eda3fbff
18 changed files with 2144 additions and 51 deletions

View File

@@ -87,6 +87,17 @@ import {
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrlWorkflowSummaryViewModel,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrlWorkflowActionPlan,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrlWorkflowRenderState,
createIniPanelShellWorkflowOverviewEvidenceExpansionFamilyRowsRenderState,
createIniPanelShellWorkflowOverviewEvidenceExpansionFamilySourceFilterViewModel,
createIniPanelShellWorkflowOverviewEvidenceExpansionFamilySourceFilterDomContract,
createIniPanelShellWorkflowOverviewEvidenceExpansionFamilySourceFilterDomReadiness,
createIniPanelShellWorkflowOverviewEvidenceExpansionFamilySourceFilterSummary,
createIniPanelShellWorkflowOverviewEvidenceExpansionFamilySourceFilterActionPlan,
createIniPanelShellWorkflowOverviewEvidenceExpansionFamilySourceFilterSelectionActionPlan,
handleIniPanelShellWorkflowOverviewEvidenceExpansionFamilySourceFilterSelectionChange,
bindIniPanelShellWorkflowOverviewEvidenceExpansionFamilySourceFilterSelectionControls,
renderIniPanelShellWorkflowOverviewEvidenceExpansionFamilySourceFilterState,
mountIniPanelShellWorkflowOverviewEvidenceExpansionFamilySourceFilterState,
createIniPanelShellWorkflowOverviewPromotionFamilyRowsRenderState,
createIniPanelShellWorkflowOverviewPromotionFamilySourceFilterViewModel,
createIniPanelShellWorkflowOverviewPromotionFamilySourceFilterDomContract,
@@ -793,6 +804,17 @@ assert.deepEqual(shellViewModel.shellWorkflowOverviewContract, {
"getWorkflowOverviewReleaseReadinessArtifactUrlWorkflowActionPlan",
"getWorkflowOverviewReleaseReadinessArtifactUrlWorkflowRenderState",
"getWorkflowOverviewPromotionFamilyRowsRenderState",
"getWorkflowOverviewEvidenceExpansionFamilyRowsRenderState",
"getWorkflowOverviewEvidenceExpansionFamilySourceFilterViewModel",
"getWorkflowOverviewEvidenceExpansionFamilySourceFilterDomContract",
"getWorkflowOverviewEvidenceExpansionFamilySourceFilterDomReadiness",
"getWorkflowOverviewEvidenceExpansionFamilySourceFilterSummary",
"getWorkflowOverviewEvidenceExpansionFamilySourceFilterActionPlan",
"getWorkflowOverviewEvidenceExpansionFamilySourceFilterSelectionActionPlan",
"handleWorkflowOverviewEvidenceExpansionFamilySourceFilterSelectionChange",
"bindWorkflowOverviewEvidenceExpansionFamilySourceFilterSelectionControls",
"renderWorkflowOverviewEvidenceExpansionFamilySourceFilterState",
"mountWorkflowOverviewEvidenceExpansionFamilySourceFilterState",
"getWorkflowOverviewPromotionFamilySourceFilterViewModel",
"getWorkflowOverviewPromotionFamilySourceFilterDomContract",
"getWorkflowOverviewPromotionFamilySourceFilterDomReadiness",
@@ -2112,11 +2134,27 @@ assert.equal(
);
assert.equal(
releaseArtifactUrlWorkflowSummary.rows.find(({ id }) => id === "evidence-expansion-full-candidate-list")?.value,
"woodpecker-on-abort, puma-cube, melfa-example, trt-boat-xyzac, trt-xyzac-switchkins",
"woodpecker-on-abort, puma-cube, melfa-example, trt-boat-xyzac, trt-xyzac-switchkins, trt-boat-xyzbc, trt-impeller-7bl-xyzac, trt-xyzac-switchkins-test-1, trt-xyzac-switchkins-test-2, trt-xyzac-switchkins-test-3, trt-xyzbc-switchkins",
);
assert.equal(
releaseArtifactUrlWorkflowSummary.rows.find(({ id }) => id === "evidence-expansion-full-gcode-list")?.value,
"linuxcnc/configs/sim/woodpecker/on_abort.ngc, linuxcnc/configs/sim/axis/vismach/puma/puma_cube.ngc, linuxcnc/configs/sim/axis/vismach/melfa-sim/example.ngc, linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc, linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc",
"linuxcnc/configs/sim/woodpecker/on_abort.ngc, linuxcnc/configs/sim/axis/vismach/puma/puma_cube.ngc, linuxcnc/configs/sim/axis/vismach/melfa-sim/example.ngc, linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc, linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc, linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzbc.ngc, linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/impeller-7bl-xyzac.ngc, linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins_test_1.ngc, linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins_test_2.ngc, linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins_test_3.ngc, linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzbc_switchkins.ngc",
);
assert.equal(
releaseArtifactUrlWorkflowSummary.rows.find(({ id }) => id === "evidence-expansion-family-count")?.value,
"3 families",
);
assert.equal(
releaseArtifactUrlWorkflowSummary.rows.find(({ id }) => id === "evidence-expansion-family-summary")?.value,
"woodpecker: 1/1 ready; vismach-remap-sims: 2/2 ready; five-axis-trt: 8/8 ready",
);
assert.equal(
releaseArtifactUrlWorkflowSummary.rows.find(({ id }) => id === "evidence-expansion-family-source-count-list")?.value,
"woodpecker:3, vismach-remap-sims:6, five-axis-trt:12",
);
assert.equal(
releaseArtifactUrlWorkflowSummary.rows.find(({ id }) => id === "evidence-expansion-family-five-axis-trt")?.value,
"8/8 ready; sources=12; diagnostics=ready",
);
assert.equal(
releaseArtifactUrlWorkflowSummary.rows.find(({ id }) => id === "virtual-hal-promotion-candidate-baseline")?.value,
@@ -2694,6 +2732,263 @@ assert.equal(
),
true,
);
const evidenceExpansionFamilyRowsRenderState =
createIniPanelShellWorkflowOverviewEvidenceExpansionFamilyRowsRenderState(releaseArtifactUrlWorkflowSummary);
const evidenceExpansionFamilySourceFilterViewModel =
createIniPanelShellWorkflowOverviewEvidenceExpansionFamilySourceFilterViewModel(
evidenceExpansionFamilyRowsRenderState,
);
const evidenceExpansionTrtGcodeFilterViewModel =
createIniPanelShellWorkflowOverviewEvidenceExpansionFamilySourceFilterViewModel(
evidenceExpansionFamilyRowsRenderState,
{
familyId: "evidence-expansion-family-five-axis-trt",
sourceKind: "gcode",
},
);
const evidenceExpansionTrtGcodeFilterSummary =
createIniPanelShellWorkflowOverviewEvidenceExpansionFamilySourceFilterSummary(
evidenceExpansionTrtGcodeFilterViewModel,
);
const evidenceExpansionTrtGcodeFilterActionPlan =
createIniPanelShellWorkflowOverviewEvidenceExpansionFamilySourceFilterActionPlan(
evidenceExpansionTrtGcodeFilterSummary,
);
assert.equal(evidenceExpansionFamilyRowsRenderState.ready, true);
assert.equal(evidenceExpansionFamilyRowsRenderState.statusLine, "Ready: 3 evidence expansion families ready");
assert.equal(evidenceExpansionFamilyRowsRenderState.rows.length, 3);
assert.equal(evidenceExpansionFamilyRowsRenderState.sourceFileCount, 21);
assert.equal(evidenceExpansionFamilyRowsRenderState.candidateCount, 11);
assert.deepEqual(
evidenceExpansionFamilyRowsRenderState.rows.map(({ id, sourceKindSummary }) => [id, sourceKindSummary]),
[
["evidence-expansion-family-woodpecker", "ini=1 gcode=1 source=1"],
["evidence-expansion-family-vismach-remap-sims", "ini=2 gcode=2 remap-subroutine=2"],
["evidence-expansion-family-five-axis-trt", "ini=1 gcode=8 remap-subroutine=3"],
],
);
assert.equal(evidenceExpansionFamilySourceFilterViewModel.ready, true);
assert.equal(evidenceExpansionFamilySourceFilterViewModel.statusLine, "Ready: 21/21 source files selected");
assert.equal(evidenceExpansionFamilySourceFilterViewModel.filteredCandidateCount, 11);
assert.deepEqual(
evidenceExpansionFamilySourceFilterViewModel.familyFilters.map(({ id, count, selected }) => [id, count, selected]),
[
["all", 21, true],
["evidence-expansion-family-woodpecker", 3, false],
["evidence-expansion-family-vismach-remap-sims", 6, false],
["evidence-expansion-family-five-axis-trt", 12, false],
],
);
assert.deepEqual(
evidenceExpansionFamilySourceFilterViewModel.sourceKindFilters.map(({ id, count, selected }) => [id, count, selected]),
[
["all", 21, true],
["ini", 4, false],
["gcode", 11, false],
["remap-subroutine", 5, false],
["source", 1, false],
],
);
assert.equal(evidenceExpansionTrtGcodeFilterViewModel.statusLine, "Ready: 8/21 source files selected");
assert.equal(evidenceExpansionTrtGcodeFilterViewModel.scopedSourceFileCount, 12);
assert.equal(evidenceExpansionTrtGcodeFilterViewModel.filteredSourceFileCount, 8);
assert.equal(evidenceExpansionTrtGcodeFilterViewModel.filteredCandidateCount, 8);
assert.equal(evidenceExpansionTrtGcodeFilterViewModel.familyRows[0]?.sourceKindSummary, "gcode=8");
assert.deepEqual(
{
ready: evidenceExpansionTrtGcodeFilterSummary.ready,
selectedFamilyId: evidenceExpansionTrtGcodeFilterSummary.selectedFamilyId,
selectedSourceKind: evidenceExpansionTrtGcodeFilterSummary.selectedSourceKind,
filteredSourceFileCount: evidenceExpansionTrtGcodeFilterSummary.filteredSourceFileCount,
filteredCandidateCount: evidenceExpansionTrtGcodeFilterSummary.filteredCandidateCount,
totalSourceFileCount: evidenceExpansionTrtGcodeFilterSummary.totalSourceFileCount,
promotionAllowed: evidenceExpansionTrtGcodeFilterActionPlan.promotionAllowed,
baselineChanging: evidenceExpansionTrtGcodeFilterActionPlan.baselineChanging,
nextCommand: evidenceExpansionTrtGcodeFilterActionPlan.nextCommand,
},
{
ready: true,
selectedFamilyId: "evidence-expansion-family-five-axis-trt",
selectedSourceKind: "gcode",
filteredSourceFileCount: 8,
filteredCandidateCount: 8,
totalSourceFileCount: 21,
promotionAllowed: false,
baselineChanging: false,
nextCommand: null,
},
);
assert.equal(
evidenceExpansionTrtGcodeFilterSummary.statusLine,
"Ready: evidence-expansion-family-five-axis-trt / gcode selects 8/21 source files",
);
assert.equal(
evidenceExpansionTrtGcodeFilterActionPlan.statusLine,
"Ready: evidence expansion filter evidence-expansion-family-five-axis-trt / gcode is externally readable",
);
assert.equal(
evidenceExpansionTrtGcodeFilterViewModel.sourceRows.every(({ familyId, sourceKind }) =>
familyId === "evidence-expansion-family-five-axis-trt" &&
sourceKind === "gcode"
),
true,
);
assert.equal(
createIniPanelShellWorkflowOverviewEvidenceExpansionFamilySourceFilterDomContract().selectors.mount,
"[data-workflow-overview-evidence-expansion-family-source-filter]",
);
assert.equal(createIniPanelShellWorkflowOverviewEvidenceExpansionFamilySourceFilterDomReadiness().ready, false);
const evidenceExpansionSourceFilterMountNode = mountDocument.createElement("section");
evidenceExpansionSourceFilterMountNode.dataset.workflowOverviewEvidenceExpansionFamilySourceFilter = "";
const evidenceExpansionSourceFilterStatusNode = mountDocument.createElement("p");
evidenceExpansionSourceFilterStatusNode.dataset.workflowOverviewEvidenceExpansionFamilySourceFilterStatus = "";
const evidenceExpansionSourceFilterControlsNode = {
...mountDocument.createElement("div"),
children: [],
replaceChildren() {
this.children = [];
},
append(...nodes) {
this.children.push(...nodes);
},
};
evidenceExpansionSourceFilterControlsNode.dataset.workflowOverviewEvidenceExpansionFamilySourceFilterControls = "";
const evidenceExpansionSourceFilterRowsNode = {
...mountDocument.createElement("dl"),
children: [],
replaceChildren() {
this.children = [];
},
append(...nodes) {
this.children.push(...nodes);
},
};
evidenceExpansionSourceFilterRowsNode.dataset.workflowOverviewEvidenceExpansionFamilySourceFilterRows = "";
const evidenceExpansionSourceFilterRenderResult =
renderIniPanelShellWorkflowOverviewEvidenceExpansionFamilySourceFilterState(
evidenceExpansionTrtGcodeFilterViewModel,
{
documentRef: mountDocument,
mountNode: evidenceExpansionSourceFilterMountNode,
statusNode: evidenceExpansionSourceFilterStatusNode,
controlsNode: evidenceExpansionSourceFilterControlsNode,
rowsNode: evidenceExpansionSourceFilterRowsNode,
},
);
const evidenceExpansionSourceFilterMountResult =
mountIniPanelShellWorkflowOverviewEvidenceExpansionFamilySourceFilterState({
viewModel: evidenceExpansionTrtGcodeFilterViewModel,
documentRef: mountDocument,
mountNode: evidenceExpansionSourceFilterMountNode,
statusNode: evidenceExpansionSourceFilterStatusNode,
controlsNode: evidenceExpansionSourceFilterControlsNode,
rowsNode: evidenceExpansionSourceFilterRowsNode,
});
assert.equal(evidenceExpansionSourceFilterRenderResult.rendered, true);
assert.equal(evidenceExpansionSourceFilterRenderResult.statusLine, "Ready: 8/21 source files selected");
assert.equal(evidenceExpansionSourceFilterRenderResult.rowCount, 24);
assert.equal(evidenceExpansionSourceFilterRenderResult.sourceFileCount, 8);
assert.equal(evidenceExpansionSourceFilterRenderResult.candidateCount, 8);
assert.deepEqual(evidenceExpansionSourceFilterRenderResult.dataset, {
handoffPhase: "ready",
handoffReady: "true",
handoffScope: "workflow-overview-evidence-expansion-family-source-filter",
selectedFamilyId: "evidence-expansion-family-five-axis-trt",
selectedSourceKind: "gcode",
});
assert.equal(
evidenceExpansionSourceFilterRowsNode.children.some((node) =>
node.dataset?.workflowOverviewEvidenceExpansionFamilySourceFilterType === "candidate-row" &&
node.dataset?.workflowOverviewEvidenceExpansionFamilySourceFilterFamily ===
"evidence-expansion-family-five-axis-trt" &&
node.dataset?.workflowOverviewEvidenceExpansionFamilySourceFilterCandidateStatus ===
"evidence-expansion-ready" &&
node.dataset?.workflowOverviewEvidenceExpansionFamilySourceFilterPromotionAllowed === "0" &&
node.textContent === "linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc"
),
true,
);
assert.equal(evidenceExpansionSourceFilterMountResult.ready, true);
assert.equal(evidenceExpansionSourceFilterMountResult.renderResult.rowCount, 24);
const evidenceExpansionSourceFilterSelectionActionPlan =
createIniPanelShellWorkflowOverviewEvidenceExpansionFamilySourceFilterSelectionActionPlan(
evidenceExpansionFamilyRowsRenderState,
{
familyId: "evidence-expansion-family-woodpecker",
sourceKind: "source",
previousViewModel: evidenceExpansionTrtGcodeFilterViewModel,
},
);
assert.equal(evidenceExpansionSourceFilterSelectionActionPlan.ready, true);
assert.equal(evidenceExpansionSourceFilterSelectionActionPlan.changed, true);
assert.equal(
evidenceExpansionSourceFilterSelectionActionPlan.statusLine,
"Ready: evidence expansion source filter changed to evidence-expansion-family-woodpecker / source",
);
assert.equal(evidenceExpansionSourceFilterSelectionActionPlan.nextViewModel.filteredSourceFileCount, 1);
const evidenceExpansionSourceFilterFamilySelect = evidenceExpansionSourceFilterControlsNode.children.find((node) =>
node.dataset?.workflowOverviewEvidenceExpansionFamilySourceFilterSelect === "family"
);
const evidenceExpansionSourceFilterKindSelect = evidenceExpansionSourceFilterControlsNode.children.find((node) =>
node.dataset?.workflowOverviewEvidenceExpansionFamilySourceFilterSelect === "source-kind"
);
evidenceExpansionSourceFilterFamilySelect.value = "evidence-expansion-family-woodpecker";
evidenceExpansionSourceFilterKindSelect.value = "source";
const evidenceExpansionSourceFilterSelectionChange =
handleIniPanelShellWorkflowOverviewEvidenceExpansionFamilySourceFilterSelectionChange({
renderState: evidenceExpansionFamilyRowsRenderState,
viewModel: evidenceExpansionTrtGcodeFilterViewModel,
documentRef: mountDocument,
mountNode: evidenceExpansionSourceFilterMountNode,
statusNode: evidenceExpansionSourceFilterStatusNode,
controlsNode: evidenceExpansionSourceFilterControlsNode,
rowsNode: evidenceExpansionSourceFilterRowsNode,
render: true,
});
assert.equal(evidenceExpansionSourceFilterSelectionChange.ready, true);
assert.equal(evidenceExpansionSourceFilterSelectionChange.selectedFamilyId, "evidence-expansion-family-woodpecker");
assert.equal(evidenceExpansionSourceFilterSelectionChange.selectedSourceKind, "source");
assert.equal(evidenceExpansionSourceFilterSelectionChange.renderResult.sourceFileCount, 1);
let evidenceExpansionSourceFilterBindingLastChange = null;
renderIniPanelShellWorkflowOverviewEvidenceExpansionFamilySourceFilterState(
evidenceExpansionTrtGcodeFilterViewModel,
{
documentRef: mountDocument,
mountNode: evidenceExpansionSourceFilterMountNode,
statusNode: evidenceExpansionSourceFilterStatusNode,
controlsNode: evidenceExpansionSourceFilterControlsNode,
rowsNode: evidenceExpansionSourceFilterRowsNode,
},
);
const evidenceExpansionSourceFilterSelectionBinding =
bindIniPanelShellWorkflowOverviewEvidenceExpansionFamilySourceFilterSelectionControls({
renderState: evidenceExpansionFamilyRowsRenderState,
viewModel: evidenceExpansionTrtGcodeFilterViewModel,
documentRef: mountDocument,
mountNode: evidenceExpansionSourceFilterMountNode,
statusNode: evidenceExpansionSourceFilterStatusNode,
controlsNode: evidenceExpansionSourceFilterControlsNode,
rowsNode: evidenceExpansionSourceFilterRowsNode,
render: true,
onChange: (changeResult) => {
evidenceExpansionSourceFilterBindingLastChange = changeResult;
},
});
assert.equal(evidenceExpansionSourceFilterSelectionBinding.ready, true);
assert.deepEqual(evidenceExpansionSourceFilterSelectionBinding.controlIds, ["family", "source-kind"]);
const boundEvidenceExpansionFamilySelect = evidenceExpansionSourceFilterControlsNode.children.find((node) =>
node.dataset?.workflowOverviewEvidenceExpansionFamilySourceFilterSelect === "family"
);
const boundEvidenceExpansionKindSelect = evidenceExpansionSourceFilterControlsNode.children.find((node) =>
node.dataset?.workflowOverviewEvidenceExpansionFamilySourceFilterSelect === "source-kind"
);
boundEvidenceExpansionFamilySelect.value = "evidence-expansion-family-woodpecker";
boundEvidenceExpansionKindSelect.value = "source";
const evidenceExpansionSourceFilterBoundChange = boundEvidenceExpansionFamilySelect.dispatchEvent("change");
assert.equal(evidenceExpansionSourceFilterBoundChange.ready, true);
assert.equal(evidenceExpansionSourceFilterBoundChange.selectedFamilyId, "evidence-expansion-family-woodpecker");
assert.equal(evidenceExpansionSourceFilterBindingLastChange.selectedSourceKind, "source");
assert.deepEqual(evidenceExpansionSourceFilterSelectionBinding.unbind(), { unbound: 2 });
assert.equal(
promotionFamilyRowsRenderState.sourceRows.some(({ sourceKind, manifestBacked, status, value }) =>
sourceKind === "ini" &&
@@ -2866,7 +3161,7 @@ const releaseArtifactUrlWorkflowMountResult =
rowsNode: releaseArtifactUrlWorkflowRowsNode,
});
assert.equal(releaseArtifactUrlWorkflowRenderResult.rendered, true);
assert.equal(releaseArtifactUrlWorkflowRenderResult.rowCount, 55);
assert.equal(releaseArtifactUrlWorkflowRenderResult.rowCount, 61);
assert.equal(
releaseArtifactUrlWorkflowRenderResult.rowIds.includes("browser-diagnostics"),
true,
@@ -2924,7 +3219,7 @@ assert.equal(
true,
);
assert.equal(releaseArtifactUrlWorkflowMountResult.ready, true);
assert.equal(releaseArtifactUrlWorkflowMountResult.renderResult.rowCount, 55);
assert.equal(releaseArtifactUrlWorkflowMountResult.renderResult.rowCount, 61);
const releaseArtifactUrlWorkflowMissingDom = await loadIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrl({
artifactUrl: "/project-release-readiness.json",
fetchRef: async () => ({
@@ -2984,6 +3279,34 @@ const workflowOverviewApi = {
getWorkflowOverviewReleaseReadinessArtifactUrlWorkflowActionPlan: () => releaseArtifactUrlWorkflow.actionPlan,
getWorkflowOverviewReleaseReadinessArtifactUrlWorkflowRenderState: () => releaseArtifactUrlWorkflowRenderState,
getWorkflowOverviewPromotionFamilyRowsRenderState: () => promotionFamilyRowsRenderState,
getWorkflowOverviewEvidenceExpansionFamilyRowsRenderState: () => evidenceExpansionFamilyRowsRenderState,
getWorkflowOverviewEvidenceExpansionFamilySourceFilterViewModel: () =>
evidenceExpansionFamilySourceFilterViewModel,
getWorkflowOverviewEvidenceExpansionFamilySourceFilterDomContract:
createIniPanelShellWorkflowOverviewEvidenceExpansionFamilySourceFilterDomContract,
getWorkflowOverviewEvidenceExpansionFamilySourceFilterDomReadiness: () => (
createIniPanelShellWorkflowOverviewEvidenceExpansionFamilySourceFilterDomReadiness({
documentRef: mountDocument,
mountNode: evidenceExpansionSourceFilterMountNode,
statusNode: evidenceExpansionSourceFilterStatusNode,
controlsNode: evidenceExpansionSourceFilterControlsNode,
rowsNode: evidenceExpansionSourceFilterRowsNode,
})
),
getWorkflowOverviewEvidenceExpansionFamilySourceFilterSummary: () =>
evidenceExpansionTrtGcodeFilterSummary,
getWorkflowOverviewEvidenceExpansionFamilySourceFilterActionPlan: () =>
evidenceExpansionTrtGcodeFilterActionPlan,
getWorkflowOverviewEvidenceExpansionFamilySourceFilterSelectionActionPlan: () =>
evidenceExpansionSourceFilterSelectionActionPlan,
handleWorkflowOverviewEvidenceExpansionFamilySourceFilterSelectionChange: () =>
evidenceExpansionSourceFilterSelectionChange,
bindWorkflowOverviewEvidenceExpansionFamilySourceFilterSelectionControls: () =>
evidenceExpansionSourceFilterSelectionBinding,
renderWorkflowOverviewEvidenceExpansionFamilySourceFilterState: () =>
evidenceExpansionSourceFilterRenderResult,
mountWorkflowOverviewEvidenceExpansionFamilySourceFilterState: () =>
evidenceExpansionSourceFilterMountResult,
getWorkflowOverviewPromotionFamilySourceFilterViewModel: () => promotionFamilySourceFilterViewModel,
getWorkflowOverviewPromotionFamilySourceFilterDomContract:
createIniPanelShellWorkflowOverviewPromotionFamilySourceFilterDomContract,