按text22收束promotion证据
结论:完成 evidence-ready / inventory-ready 双层 promotion candidate 管理,release/SDK gate 已纳入 virtual HAL promotion summary,baseline 保持 28/28/131/0,Python remap、tool DB、external user-M hard block 继续 locked。
This commit is contained in:
@@ -66,6 +66,15 @@
|
||||
!workflowApi?.getWorkflowOverviewReleaseReadinessArtifactUrlWorkflowDomReadiness ||
|
||||
!workflowApi?.renderWorkflowOverviewReleaseReadinessArtifactUrlWorkflowState ||
|
||||
!workflowApi?.mountWorkflowOverviewReleaseReadinessArtifactUrlWorkflowState ||
|
||||
!workflowApi?.getWorkflowOverviewPromotionFamilyRowsRenderState ||
|
||||
!workflowApi?.getWorkflowOverviewPromotionFamilySourceFilterViewModel ||
|
||||
!workflowApi?.getWorkflowOverviewPromotionFamilySourceFilterDomContract ||
|
||||
!workflowApi?.getWorkflowOverviewPromotionFamilySourceFilterDomReadiness ||
|
||||
!workflowApi?.getWorkflowOverviewPromotionFamilySourceFilterSelectionActionPlan ||
|
||||
!workflowApi?.handleWorkflowOverviewPromotionFamilySourceFilterSelectionChange ||
|
||||
!workflowApi?.bindWorkflowOverviewPromotionFamilySourceFilterSelectionControls ||
|
||||
!workflowApi?.renderWorkflowOverviewPromotionFamilySourceFilterState ||
|
||||
!workflowApi?.mountWorkflowOverviewPromotionFamilySourceFilterState ||
|
||||
!workflowApi?.getWorkflowOverviewReleaseReadinessArtifactUrlWorkflowActionPlanRenderState ||
|
||||
!workflowApi?.getWorkflowOverviewReleaseReadinessArtifactUrlWorkflowActionPlanDomContract ||
|
||||
!workflowApi?.getWorkflowOverviewReleaseReadinessArtifactUrlWorkflowActionPlanDomReadiness ||
|
||||
@@ -381,6 +390,22 @@
|
||||
manifestEntries: VIRTUAL_HAL_MOTION_MATRIX_MANIFEST_ENTRIES,
|
||||
}),
|
||||
}),
|
||||
virtualHalPromotionCandidateSummary: {
|
||||
apiName: "real-browser-simulation-promotion-candidate-summary",
|
||||
summaryVersion: 1,
|
||||
phase: "ready",
|
||||
ready: true,
|
||||
candidateCount: 8,
|
||||
readyCandidateCount: 8,
|
||||
familyCount: 3,
|
||||
sourceFileCount: 17,
|
||||
preferredCandidateId: "qtdragon-multi-joint-on-abort",
|
||||
preferredIniPath: "linuxcnc/configs/sim/qtdragon/qtdragon_multi_joint/qtdragon_xyyz.ini",
|
||||
preferredGcodePath: "linuxcnc/configs/sim/qtdragon/qtdragon_multi_joint/on_abort.ngc",
|
||||
blockedCandidateIds: [],
|
||||
explicitBrowserDiagnosticsCount: 8,
|
||||
inventoryBaseline: "executed=28 passed=28 skipped=131 unexpected_fail=0",
|
||||
},
|
||||
virtualHalSimConfigMacroLoadFixtures: createVirtualHalSimConfigMacroLoadFixtureReport({
|
||||
manifestEntries: [
|
||||
...VIRTUAL_HAL_MOTION_MATRIX_MANIFEST_ENTRIES,
|
||||
@@ -543,6 +568,11 @@
|
||||
assertEqual(releaseArtifactUrlWorkflow.httpStatus, 200, "workflow overview release artifact URL workflow status");
|
||||
assertEqual(releaseArtifactUrlWorkflow.diagnosticsHttpStatus, 200, "workflow overview diagnostics artifact URL workflow status");
|
||||
assertEqual(releaseArtifactUrlWorkflow.diagnosticsValidation.ready, true, "workflow overview diagnostics artifact validation");
|
||||
assertEqual(
|
||||
releaseArtifactUrlWorkflow.diagnosticsArtifact.virtualHalPromotionCandidateSummary.ready,
|
||||
true,
|
||||
"workflow overview diagnostics promotion candidate summary",
|
||||
);
|
||||
assertEqual(releaseArtifactUrlWorkflow.diagnosticsValidation.hasSessionDiagnostics, true, "workflow overview diagnostics saved-session presence");
|
||||
assertEqual(releaseArtifactUrlWorkflow.diagnosticsValidation.sessionDiagnosticsReady, true, "workflow overview diagnostics saved-session validation");
|
||||
assertEqual(
|
||||
@@ -567,7 +597,7 @@
|
||||
);
|
||||
assertEqual(
|
||||
releaseArtifactUrlWorkflowRenderResult.rowCount,
|
||||
12,
|
||||
18,
|
||||
"workflow overview release artifact URL workflow render rows",
|
||||
);
|
||||
assertEqual(
|
||||
@@ -575,6 +605,36 @@
|
||||
true,
|
||||
"workflow overview release artifact URL workflow diagnostics row",
|
||||
);
|
||||
assertEqual(
|
||||
releaseArtifactUrlWorkflowRenderResult.rowIds.includes("virtual-hal-promotion-candidate-summary"),
|
||||
true,
|
||||
"workflow overview release artifact URL workflow candidate summary row",
|
||||
);
|
||||
assertEqual(
|
||||
releaseArtifactUrlWorkflowSummary.rows.find(({ id }) => id === "virtual-hal-promotion-candidate")?.value,
|
||||
"qtdragon-multi-joint-on-abort",
|
||||
"workflow overview release artifact URL workflow candidate id",
|
||||
);
|
||||
assertEqual(
|
||||
releaseArtifactUrlWorkflowSummary.rows.find(({ id }) => id === "virtual-hal-promotion-candidate-ini")?.value,
|
||||
"linuxcnc/configs/sim/qtdragon/qtdragon_multi_joint/qtdragon_xyyz.ini",
|
||||
"workflow overview release artifact URL workflow candidate INI",
|
||||
);
|
||||
assertEqual(
|
||||
releaseArtifactUrlWorkflowSummary.rows.find(({ id }) => id === "virtual-hal-promotion-candidate-gcode")?.value,
|
||||
"linuxcnc/configs/sim/qtdragon/qtdragon_multi_joint/on_abort.ngc",
|
||||
"workflow overview release artifact URL workflow candidate G-code",
|
||||
);
|
||||
assertEqual(
|
||||
releaseArtifactUrlWorkflowSummary.rows.find(({ id }) => id === "virtual-hal-promotion-candidate-count")?.value,
|
||||
"8/8 ready",
|
||||
"workflow overview release artifact URL workflow candidate count",
|
||||
);
|
||||
assertEqual(
|
||||
releaseArtifactUrlWorkflowSummary.rows.find(({ id }) => id === "virtual-hal-promotion-candidate-baseline")?.value,
|
||||
"executed=28 passed=28 skipped=131 unexpected_fail=0",
|
||||
"workflow overview release artifact URL workflow candidate baseline",
|
||||
);
|
||||
assertEqual(
|
||||
releaseArtifactUrlWorkflowRenderResult.rowIds.includes("saved-session-diagnostics"),
|
||||
true,
|
||||
@@ -626,16 +686,71 @@
|
||||
true,
|
||||
"workflow overview fixed URL workflow gate execution summary row",
|
||||
);
|
||||
assertEqual(
|
||||
releaseArtifactUrlFormResult.promotionFamilyRowsRenderState.ready,
|
||||
true,
|
||||
"workflow overview fixed URL workflow promotion family rows ready",
|
||||
);
|
||||
assertEqual(
|
||||
releaseArtifactUrlFormResult.promotionFamilyRowsRenderState.sourceFileCount,
|
||||
17,
|
||||
"workflow overview fixed URL workflow promotion family source count",
|
||||
);
|
||||
assertEqual(
|
||||
releaseArtifactUrlFormResult.promotionFamilySourceFilter.ready,
|
||||
true,
|
||||
"workflow overview fixed URL workflow source filter readiness",
|
||||
);
|
||||
assertEqual(
|
||||
releaseArtifactUrlFormResult.promotionFamilySourceFilter.filteredSourceFileCount,
|
||||
17,
|
||||
"workflow overview fixed URL workflow source filter default count",
|
||||
);
|
||||
assertEqual(
|
||||
releaseArtifactUrlFormResult.promotionFamilySourceFilterMountResult.ready,
|
||||
true,
|
||||
"workflow overview fixed URL workflow source filter mount readiness",
|
||||
);
|
||||
assertEqual(
|
||||
releaseArtifactUrlFormResult.promotionFamilySourceFilterBinding.ready,
|
||||
true,
|
||||
"workflow overview fixed URL workflow source filter binding readiness",
|
||||
);
|
||||
assertEqual(
|
||||
releaseArtifactUrlFormResult.promotionFamilySourceFilterBinding.boundControlCount,
|
||||
2,
|
||||
"workflow overview fixed URL workflow source filter bound controls",
|
||||
);
|
||||
assertEqual(
|
||||
workflowDoc.body.dataset.releaseArtifactUrlWorkflowReady,
|
||||
"true",
|
||||
"workflow overview fixed URL workflow form body ready",
|
||||
);
|
||||
assertEqual(
|
||||
workflowDoc.body.dataset.promotionFamilySourceFilterReady,
|
||||
"true",
|
||||
"workflow overview fixed URL workflow source filter body ready",
|
||||
);
|
||||
assertEqual(
|
||||
workflowDoc.body.dataset.promotionFamilySourceFilterCount,
|
||||
"17",
|
||||
"workflow overview fixed URL workflow source filter body default count",
|
||||
);
|
||||
assertEqual(
|
||||
workflowDoc.querySelector('[data-workflow-overview-release-readiness-artifact-url-workflow-value="browser-diagnostics"]').textContent,
|
||||
"ready",
|
||||
"workflow overview fixed URL workflow form browser diagnostics row",
|
||||
);
|
||||
assertEqual(
|
||||
workflowDoc.querySelector('[data-workflow-overview-release-readiness-artifact-url-workflow-value="virtual-hal-promotion-candidate"]').textContent,
|
||||
"qtdragon-multi-joint-on-abort",
|
||||
"workflow overview fixed URL workflow form candidate row",
|
||||
);
|
||||
assertEqual(
|
||||
workflowDoc.querySelector('[data-workflow-overview-release-readiness-artifact-url-workflow-value="virtual-hal-promotion-candidate-count"]').textContent,
|
||||
"8/8 ready",
|
||||
"workflow overview fixed URL workflow form candidate count row",
|
||||
);
|
||||
assertEqual(
|
||||
workflowDoc.querySelector('[data-workflow-overview-release-readiness-artifact-url-workflow-action-plan-value="next-command"]').textContent,
|
||||
"none",
|
||||
@@ -646,6 +761,59 @@
|
||||
true,
|
||||
"workflow overview fixed URL workflow gate execution summary DOM row",
|
||||
);
|
||||
const sourceFilterMount = workflowDoc.querySelector("[data-workflow-overview-promotion-family-source-filter]");
|
||||
const sourceFilterFamilySelect = workflowDoc.querySelector(
|
||||
'[data-workflow-overview-promotion-family-source-filter-select="family"]',
|
||||
);
|
||||
const sourceFilterKindSelect = workflowDoc.querySelector(
|
||||
'[data-workflow-overview-promotion-family-source-filter-select="source-kind"]',
|
||||
);
|
||||
assertEqual(
|
||||
sourceFilterMount.dataset.selectedFamilyId,
|
||||
"all",
|
||||
"workflow overview source filter default family",
|
||||
);
|
||||
assertEqual(
|
||||
sourceFilterFamilySelect?.value,
|
||||
"all",
|
||||
"workflow overview source filter family select default",
|
||||
);
|
||||
assertEqual(
|
||||
sourceFilterKindSelect?.value,
|
||||
"all",
|
||||
"workflow overview source filter kind select default",
|
||||
);
|
||||
sourceFilterFamilySelect.value = "virtual-hal-promotion-family-rose-engine-rcone-demo";
|
||||
sourceFilterFamilySelect.dispatchEvent(new Event("change", { bubbles: true }));
|
||||
assertEqual(
|
||||
workflowDoc.body.dataset.promotionFamilySourceFilterFamily,
|
||||
"virtual-hal-promotion-family-rose-engine-rcone-demo",
|
||||
"workflow overview source filter change body family",
|
||||
);
|
||||
assertEqual(
|
||||
workflowDoc.body.dataset.promotionFamilySourceFilterCount,
|
||||
"2",
|
||||
"workflow overview source filter change source count",
|
||||
);
|
||||
assertEqual(
|
||||
sourceFilterMount.dataset.selectedFamilyId,
|
||||
"virtual-hal-promotion-family-rose-engine-rcone-demo",
|
||||
"workflow overview source filter changed mount family",
|
||||
);
|
||||
assertEqual(
|
||||
workflowDoc.querySelectorAll(
|
||||
'[data-workflow-overview-promotion-family-source-filter-type="source-row"]',
|
||||
).length,
|
||||
4,
|
||||
"workflow overview source filter changed source DOM nodes",
|
||||
);
|
||||
assertEqual(
|
||||
workflowDoc.querySelector(
|
||||
'[data-workflow-overview-promotion-family-source-filter-value="linuxcnc/configs/sim/axis/rose_engine/rcone_demo.ngc"]',
|
||||
)?.textContent,
|
||||
"linuxcnc/configs/sim/axis/rose_engine/rcone_demo.ngc",
|
||||
"workflow overview source filter changed rose engine source row",
|
||||
);
|
||||
assertEqual(
|
||||
releaseArtifactJsonWorkflow.statusLine,
|
||||
"Ready: Artifact JSON workflow complete",
|
||||
|
||||
@@ -97,6 +97,7 @@
|
||||
"native-runtime-probe-summary.tsv",
|
||||
"next-boundary-recommendations.tsv",
|
||||
"next-boundary-worklist.tsv",
|
||||
"promotion-candidates.tsv",
|
||||
"python-remap-boundary-summary.tsv",
|
||||
"python-remap-family-summary.tsv",
|
||||
"python-remap-native-runtime-alignment.tsv",
|
||||
@@ -150,7 +151,7 @@
|
||||
"build/native/source-probes.tsv",
|
||||
];
|
||||
|
||||
if (wasmArtifactNames.length !== 54 || new Set(wasmArtifactNames).size !== wasmArtifactNames.length) {
|
||||
if (wasmArtifactNames.length !== 55 || new Set(wasmArtifactNames).size !== wasmArtifactNames.length) {
|
||||
throw new Error("browser_generated_artifact_documentation_coverage: WASM artifact list drift");
|
||||
}
|
||||
if (nativeArtifactTokens.length !== 8 || new Set(nativeArtifactTokens).size !== nativeArtifactTokens.length) {
|
||||
|
||||
@@ -244,6 +244,8 @@
|
||||
!api?.getVirtualHalSourceComplianceReport ||
|
||||
!api?.getVirtualHalSimConfigSourceCoverageReport ||
|
||||
!api?.getVirtualHalSimConfigPromotionCandidateReport ||
|
||||
!api?.getVirtualHalPromotionCandidateSummary ||
|
||||
!api?.getVirtualHalPromotionFamilyRows ||
|
||||
!api?.getVirtualHalSimConfigMacroLoadFixtureReport ||
|
||||
!api?.getVirtualHalCommandScriptFixtureReport ||
|
||||
!api?.getVirtualHalMotionControllerMatrixReport ||
|
||||
@@ -409,6 +411,7 @@
|
||||
throw new Error(`simulation virtual HAL registry/integrity drift: ${JSON.stringify(initialVirtualHalRegistry)}`);
|
||||
}
|
||||
const diagnosticsArtifact = api.exportDiagnosticsArtifact();
|
||||
const promotionCandidateSummary = api.getVirtualHalPromotionCandidateSummary();
|
||||
const expectedPromotionCandidates = [
|
||||
[
|
||||
"qtdragon-multi-joint-on-abort",
|
||||
@@ -458,6 +461,9 @@
|
||||
"linuxcnc/configs/sim/axis/rose_engine/rcone.ngc",
|
||||
false,
|
||||
"linuxcnc/configs/sim/axis/rose_engine/rose_engine.ini",
|
||||
"rcone.ngc",
|
||||
34,
|
||||
"linuxcnc/configs/sim/axis/rose_engine/rose_engine.ini",
|
||||
"linuxcnc/configs/sim/axis/rose_engine/rcone.ngc",
|
||||
"linuxcnc/configs/sim/axis/rose_engine/rcone_demo.ngc",
|
||||
],
|
||||
@@ -466,6 +472,9 @@
|
||||
"linuxcnc/configs/sim/axis/external_offsets/queuebuster.ngc",
|
||||
true,
|
||||
"linuxcnc/configs/sim/axis/external_offsets/eoffsets.ini",
|
||||
"queuebuster.ngc",
|
||||
40,
|
||||
"linuxcnc/configs/sim/axis/external_offsets/eoffsets.ini",
|
||||
"linuxcnc/configs/sim/axis/external_offsets/eoffsets.ngc",
|
||||
],
|
||||
];
|
||||
@@ -481,6 +490,18 @@
|
||||
"L4-PYTHON-REMAP",
|
||||
],
|
||||
];
|
||||
const expectedMacroLoadAuditCandidates = [
|
||||
[
|
||||
"gscreen-industrial-lathe-wear-toolchange-audit",
|
||||
"linuxcnc/configs/sim/gscreen/industrial_lathe_wear/toolchange.ngc",
|
||||
"blocked-missing-owning-ini",
|
||||
],
|
||||
[
|
||||
"qtvcp-industrial-lathe-wear-toolchange-audit",
|
||||
"linuxcnc/configs/sim/qtvcp_screens/industrial_lathe_wear/toolchange.ngc",
|
||||
"blocked-missing-owning-ini",
|
||||
],
|
||||
];
|
||||
if (
|
||||
diagnosticsArtifact.apiName !== "real-browser-simulation-diagnostics-artifact" ||
|
||||
diagnosticsArtifact.statusHistory.length === 0 ||
|
||||
@@ -495,18 +516,41 @@
|
||||
!diagnosticsArtifact.virtualHalSimConfigSourceCoverage?.sourceFiles?.includes("linuxcnc/configs/sim/qtdragon/qtdragon_xyz45/qtdragon_xyza.ini") ||
|
||||
!diagnosticsArtifact.virtualHalSimConfigSourceCoverage?.sourceFiles?.includes("linuxcnc/configs/sim/qtdragon_hd/qtdragon_hd_z_compensation/qtdragon_hd_z_compensation.ini") ||
|
||||
diagnosticsArtifact.virtualHalSimConfigPromotionCandidates?.complete !== true ||
|
||||
diagnosticsArtifact.virtualHalPromotionCandidateSummary?.ready !== true ||
|
||||
diagnosticsArtifact.virtualHalPromotionCandidateSummary?.preferredCandidateId !== "qtdragon-multi-joint-on-abort" ||
|
||||
diagnosticsArtifact.virtualHalPromotionCandidateSummary?.candidateCount !== 8 ||
|
||||
diagnosticsArtifact.virtualHalPromotionCandidateSummary?.readyCandidateCount !== 8 ||
|
||||
diagnosticsArtifact.virtualHalPromotionCandidateSummary?.sourceFileCount !== 17 ||
|
||||
diagnosticsArtifact.virtualHalPromotionCandidateSummary?.inventoryBaseline !== "executed=28 passed=28 skipped=131 unexpected_fail=0" ||
|
||||
promotionCandidateSummary.ready !== true ||
|
||||
promotionCandidateSummary.preferredIniPath !== "linuxcnc/configs/sim/qtdragon/qtdragon_multi_joint/qtdragon_xyyz.ini" ||
|
||||
doc.body.dataset.promotionCandidateReady !== "true" ||
|
||||
doc.body.dataset.promotionCandidatePreferred !== "qtdragon-multi-joint-on-abort" ||
|
||||
doc.querySelector('[data-promotion-candidate-summary-value="preferred-candidate"]')?.textContent !== "qtdragon-multi-joint-on-abort" ||
|
||||
doc.querySelector('[data-promotion-candidate-summary-value="inventory-baseline"]')?.textContent !== "28/28 pass; 131 skip unchanged" ||
|
||||
!diagnosticsArtifact.virtualHalSimConfigPromotionCandidates?.familyRows?.some((row) =>
|
||||
row.id === "qtdragon-on-abort" &&
|
||||
row.candidateCount === 6 &&
|
||||
row.completeCount === 6 &&
|
||||
row.explicitBrowserDiagnosticsCount === 6 &&
|
||||
row.explicitBrowserDiagnosticsReady === true &&
|
||||
row.complete === true
|
||||
) ||
|
||||
!expectedPromotionCandidates.every(([id, ...sourceFiles]) =>
|
||||
diagnosticsArtifact.virtualHalSimConfigPromotionCandidates?.rows?.some((row) =>
|
||||
row.id === id &&
|
||||
row.complete === true &&
|
||||
row.currentNodeInventoryStatus === "PASS" &&
|
||||
row.currentMatrixBrowserStatus === "explicit-browser-diagnostics" &&
|
||||
row.targetBrowserEvidence === "explicit-browser-diagnostics" &&
|
||||
sourceFiles.every((sourceFile) => row.sourceFiles.includes(sourceFile))
|
||||
)
|
||||
) ||
|
||||
diagnosticsArtifact.virtualHalSimConfigMacroLoadFixtures?.complete !== true ||
|
||||
diagnosticsArtifact.virtualHalSimConfigMacroLoadFixtures?.blockedFixturePromotionViolations?.length !== 0 ||
|
||||
!expectedMacroLoadFixtures.every(([id, fixturePath, declaredOnly, ...sourceFiles]) =>
|
||||
diagnosticsArtifact.virtualHalSimConfigMacroLoadFixtures?.blockedBoundaryEvidenceViolations?.length !== 0 ||
|
||||
diagnosticsArtifact.virtualHalSimConfigMacroLoadFixtures?.auditPromotionViolations?.length !== 0 ||
|
||||
!expectedMacroLoadFixtures.every(([id, fixturePath, declaredOnly, declarationSourceFile, declarationValue, declarationLine, ...sourceFiles]) =>
|
||||
diagnosticsArtifact.virtualHalSimConfigMacroLoadFixtures?.rows?.some((row) =>
|
||||
row.id === id &&
|
||||
row.complete === true &&
|
||||
@@ -514,6 +558,12 @@
|
||||
row.targetBrowserEvidence === "non-main-fixture-diagnostics" &&
|
||||
row.fixturePath === fixturePath &&
|
||||
row.declaredOnly === declaredOnly &&
|
||||
row.requiresDeclarationEvidence === true &&
|
||||
row.declarationEvidenceReady === true &&
|
||||
row.declarationEvidence?.sourceFile === declarationSourceFile &&
|
||||
row.declarationEvidence?.key === "NGCGUI_SUBFILE" &&
|
||||
row.declarationEvidence?.value === declarationValue &&
|
||||
row.declarationEvidence?.line === declarationLine &&
|
||||
sourceFiles.every((sourceFile) => row.sourceFiles.includes(sourceFile))
|
||||
)
|
||||
) ||
|
||||
@@ -523,6 +573,38 @@
|
||||
row.fixturePath === fixturePath &&
|
||||
row.blockedKind === blockedKind &&
|
||||
row.excludedFromPositiveFixtures === true &&
|
||||
row.boundaryEvidenceReady === true &&
|
||||
row.boundaryEvidence?.baselineSummary?.executed === 28 &&
|
||||
row.boundaryEvidence?.baselineSummary?.passed === 28 &&
|
||||
row.boundaryEvidence?.baselineSummary?.skipped === 131 &&
|
||||
row.boundaryEvidence?.baselineSummary?.unexpectedFail === 0 &&
|
||||
row.boundaryEvidence?.sourceArtifactHashes?.["wasm-port/build/wasm/sim-configs-inventory/boundary-summary.tsv"] === "de6cf57b7c07182e3bcb32e22dbdf202b618cabc14620d6dff1ef815587950b9" &&
|
||||
row.boundaryEvidence?.sourceArtifactHashes?.["wasm-port/build/wasm/sim-configs-inventory/ini-boundary-summary.tsv"] === "b0afe27224e97a82fbecbbd75a7c86233c98fe957d9c1ba20f0656f8745a5eae" &&
|
||||
row.boundaryEvidence?.boundarySummary?.recommendedBlocked === "UNAVAILABLE" &&
|
||||
row.boundaryEvidence?.boundarySummary?.dependencies?.includes("missing_vendored_ini:") &&
|
||||
row.boundaryEvidence?.iniBoundarySummary?.vendored === 0 &&
|
||||
row.boundaryEvidence?.iniBoundarySummary?.reportAvailable === 0 &&
|
||||
row.complete === true
|
||||
)
|
||||
) ||
|
||||
!expectedMacroLoadAuditCandidates.every(([id, fixturePath, auditStatus]) =>
|
||||
diagnosticsArtifact.virtualHalSimConfigMacroLoadFixtures?.auditRows?.some((row) =>
|
||||
row.id === id &&
|
||||
row.fixturePath === fixturePath &&
|
||||
row.auditStatus === auditStatus &&
|
||||
row.promotionAllowed === false &&
|
||||
row.excludedFromPositiveFixtures === true &&
|
||||
row.boundaryEvidenceReady === true &&
|
||||
row.boundaryEvidence?.baselineSummary?.executed === 28 &&
|
||||
row.boundaryEvidence?.baselineSummary?.passed === 28 &&
|
||||
row.boundaryEvidence?.baselineSummary?.skipped === 131 &&
|
||||
row.boundaryEvidence?.baselineSummary?.unexpectedFail === 0 &&
|
||||
row.boundaryEvidence?.sourceArtifactHashes?.["wasm-port/build/wasm/sim-configs-inventory/boundary-summary.tsv"] === "de6cf57b7c07182e3bcb32e22dbdf202b618cabc14620d6dff1ef815587950b9" &&
|
||||
row.boundaryEvidence?.sourceArtifactHashes?.["wasm-port/build/wasm/sim-configs-inventory/ini-boundary-summary.tsv"] === "b0afe27224e97a82fbecbbd75a7c86233c98fe957d9c1ba20f0656f8745a5eae" &&
|
||||
row.boundaryEvidence?.boundarySummary?.recommendedBlocked === "UNAVAILABLE" &&
|
||||
row.boundaryEvidence?.boundarySummary?.dependencies?.includes("missing_vendored_ini:") &&
|
||||
row.boundaryEvidence?.iniBoundarySummary?.vendored === 0 &&
|
||||
row.boundaryEvidence?.iniBoundarySummary?.reportAvailable === 0 &&
|
||||
row.complete === true
|
||||
)
|
||||
) ||
|
||||
@@ -946,6 +1028,7 @@
|
||||
}
|
||||
const virtualHalReplacement = api.getVirtualHalSimulationReplacementReport();
|
||||
const promotionCandidateReport = api.getVirtualHalSimConfigPromotionCandidateReport();
|
||||
const promotionFamilyRows = api.getVirtualHalPromotionFamilyRows();
|
||||
const macroLoadFixtureReport = api.getVirtualHalSimConfigMacroLoadFixtureReport();
|
||||
if (
|
||||
virtualHalReplacement.apiName !== "linuxcnc-wasm-virtual-hal-simulation-replacement-report" ||
|
||||
@@ -966,6 +1049,17 @@
|
||||
!api.getVirtualHalSimConfigSourceCoverageReport().sourceFiles.includes("linuxcnc/configs/sim/qtdragon/qtdragon_xyz/on_abort.ngc") ||
|
||||
promotionCandidateReport.complete !== true ||
|
||||
promotionCandidateReport.inventoryBaselineUnchanged !== true ||
|
||||
doc.body.dataset.promotionFamilyReady !== "true" ||
|
||||
doc.body.dataset.promotionFamilyCount !== "3" ||
|
||||
promotionFamilyRows.length !== 3 ||
|
||||
![
|
||||
["qtdragon-on-abort", "6/6 ready; sources=12"],
|
||||
["vismach-remap-sims", "1/1 ready; sources=3"],
|
||||
["rose-engine-rcone-demo", "1/1 ready; sources=2"],
|
||||
].every(([id, value]) =>
|
||||
doc.querySelector(`[data-promotion-family-row="${id}"]`)?.dataset.promotionFamilyReady === "true" &&
|
||||
doc.querySelector(`[data-promotion-family-value="${id}"]`)?.textContent === value
|
||||
) ||
|
||||
!expectedPromotionCandidates.every(([id, ...sourceFiles]) =>
|
||||
promotionCandidateReport.rows.some((row) =>
|
||||
row.id === id &&
|
||||
@@ -978,13 +1072,21 @@
|
||||
macroLoadFixtureReport.inventoryBaselineUnchanged !== true ||
|
||||
macroLoadFixtureReport.standaloneMainViolations.length !== 0 ||
|
||||
macroLoadFixtureReport.blockedFixturePromotionViolations.length !== 0 ||
|
||||
!expectedMacroLoadFixtures.every(([id, fixturePath, declaredOnly, ...sourceFiles]) =>
|
||||
macroLoadFixtureReport.blockedBoundaryEvidenceViolations.length !== 0 ||
|
||||
macroLoadFixtureReport.auditPromotionViolations.length !== 0 ||
|
||||
!expectedMacroLoadFixtures.every(([id, fixturePath, declaredOnly, declarationSourceFile, declarationValue, declarationLine, ...sourceFiles]) =>
|
||||
macroLoadFixtureReport.rows.some((row) =>
|
||||
row.id === id &&
|
||||
row.complete === true &&
|
||||
row.nonMainFixture === true &&
|
||||
row.fixturePath === fixturePath &&
|
||||
row.declaredOnly === declaredOnly &&
|
||||
row.requiresDeclarationEvidence === true &&
|
||||
row.declarationEvidenceReady === true &&
|
||||
row.declarationEvidence?.sourceFile === declarationSourceFile &&
|
||||
row.declarationEvidence?.key === "NGCGUI_SUBFILE" &&
|
||||
row.declarationEvidence?.value === declarationValue &&
|
||||
row.declarationEvidence?.line === declarationLine &&
|
||||
sourceFiles.every((sourceFile) => row.sourceFiles.includes(sourceFile))
|
||||
)
|
||||
) ||
|
||||
@@ -994,6 +1096,38 @@
|
||||
row.fixturePath === fixturePath &&
|
||||
row.blockedKind === blockedKind &&
|
||||
row.excludedFromPositiveFixtures === true &&
|
||||
row.boundaryEvidenceReady === true &&
|
||||
row.boundaryEvidence?.baselineSummary?.executed === 28 &&
|
||||
row.boundaryEvidence?.baselineSummary?.passed === 28 &&
|
||||
row.boundaryEvidence?.baselineSummary?.skipped === 131 &&
|
||||
row.boundaryEvidence?.baselineSummary?.unexpectedFail === 0 &&
|
||||
row.boundaryEvidence?.sourceArtifactHashes?.["wasm-port/build/wasm/sim-configs-inventory/boundary-summary.tsv"] === "de6cf57b7c07182e3bcb32e22dbdf202b618cabc14620d6dff1ef815587950b9" &&
|
||||
row.boundaryEvidence?.sourceArtifactHashes?.["wasm-port/build/wasm/sim-configs-inventory/ini-boundary-summary.tsv"] === "b0afe27224e97a82fbecbbd75a7c86233c98fe957d9c1ba20f0656f8745a5eae" &&
|
||||
row.boundaryEvidence?.boundarySummary?.recommendedBlocked === "UNAVAILABLE" &&
|
||||
row.boundaryEvidence?.boundarySummary?.dependencies?.includes("missing_vendored_ini:") &&
|
||||
row.boundaryEvidence?.iniBoundarySummary?.vendored === 0 &&
|
||||
row.boundaryEvidence?.iniBoundarySummary?.reportAvailable === 0 &&
|
||||
row.complete === true
|
||||
)
|
||||
) ||
|
||||
!expectedMacroLoadAuditCandidates.every(([id, fixturePath, auditStatus]) =>
|
||||
macroLoadFixtureReport.auditRows.some((row) =>
|
||||
row.id === id &&
|
||||
row.fixturePath === fixturePath &&
|
||||
row.auditStatus === auditStatus &&
|
||||
row.promotionAllowed === false &&
|
||||
row.excludedFromPositiveFixtures === true &&
|
||||
row.boundaryEvidenceReady === true &&
|
||||
row.boundaryEvidence?.baselineSummary?.executed === 28 &&
|
||||
row.boundaryEvidence?.baselineSummary?.passed === 28 &&
|
||||
row.boundaryEvidence?.baselineSummary?.skipped === 131 &&
|
||||
row.boundaryEvidence?.baselineSummary?.unexpectedFail === 0 &&
|
||||
row.boundaryEvidence?.sourceArtifactHashes?.["wasm-port/build/wasm/sim-configs-inventory/boundary-summary.tsv"] === "de6cf57b7c07182e3bcb32e22dbdf202b618cabc14620d6dff1ef815587950b9" &&
|
||||
row.boundaryEvidence?.sourceArtifactHashes?.["wasm-port/build/wasm/sim-configs-inventory/ini-boundary-summary.tsv"] === "b0afe27224e97a82fbecbbd75a7c86233c98fe957d9c1ba20f0656f8745a5eae" &&
|
||||
row.boundaryEvidence?.boundarySummary?.recommendedBlocked === "UNAVAILABLE" &&
|
||||
row.boundaryEvidence?.boundarySummary?.dependencies?.includes("missing_vendored_ini:") &&
|
||||
row.boundaryEvidence?.iniBoundarySummary?.vendored === 0 &&
|
||||
row.boundaryEvidence?.iniBoundarySummary?.reportAvailable === 0 &&
|
||||
row.complete === true
|
||||
)
|
||||
) ||
|
||||
|
||||
Reference in New Issue
Block a user