接入虚拟HAL宏加载非主程序证据

This commit is contained in:
2026-06-18 05:15:02 +08:00
parent e263387cea
commit 506a6357c1
16 changed files with 519 additions and 14 deletions

View File

@@ -148,6 +148,26 @@ const REQUIRED_PROMOTION_CANDIDATES = [
},
];
const REQUIRED_MACRO_LOAD_FIXTURES = [
{
id: "rose-engine-rcone-macro-load",
fixturePath: "linuxcnc/configs/sim/axis/rose_engine/rcone.ngc",
sourceFiles: [
"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",
],
},
{
id: "external-offsets-queuebuster-macro-load",
fixturePath: "linuxcnc/configs/sim/axis/external_offsets/queuebuster.ngc",
sourceFiles: [
"linuxcnc/configs/sim/axis/external_offsets/eoffsets.ini",
"linuxcnc/configs/sim/axis/external_offsets/eoffsets.ngc",
],
},
];
function isVirtualHalSimConfigSourceCoverageReady(report) {
const coverage = objectOrEmpty(report);
return coverage.apiName === "linuxcnc-wasm-virtual-hal-sim-config-source-coverage-report" &&
@@ -176,6 +196,29 @@ function hasRequiredPromotionCandidates(rows) {
);
}
function isVirtualHalSimConfigMacroLoadFixtureReportReady(report) {
const fixtureReport = objectOrEmpty(report);
const rows = arrayOrEmpty(fixtureReport.rows);
return fixtureReport.apiName === "linuxcnc-wasm-virtual-hal-sim-config-macro-load-fixture-report" &&
fixtureReport.complete === true &&
fixtureReport.webSimulationSatisfied === true &&
fixtureReport.inventoryBaselineUnchanged === true &&
arrayOrEmpty(fixtureReport.missingFixtures).length === 0 &&
arrayOrEmpty(fixtureReport.blockedFixtureIds).length === 0 &&
arrayOrEmpty(fixtureReport.standaloneMainViolations).length === 0 &&
arrayOrEmpty(fixtureReport.missingManifestFiles).length === 0 &&
REQUIRED_MACRO_LOAD_FIXTURES.every((fixture) =>
rows.some((row) =>
row.id === fixture.id &&
row.complete === true &&
row.nonMainFixture === true &&
row.targetBrowserEvidence === "non-main-fixture-diagnostics" &&
row.fixturePath === fixture.fixturePath &&
fixture.sourceFiles.every((file) => arrayOrEmpty(row.sourceFiles).includes(file))
)
);
}
function isVirtualHalMotionControllerMatrixReady(report) {
const matrix = objectOrEmpty(report);
return matrix.apiName === "linuxcnc-wasm-virtual-hal-motion-controller-matrix-report" &&
@@ -218,6 +261,7 @@ export function createProjectReleaseBrowserDiagnosticsArtifactValidation(artifac
const commandScriptFixtures = objectOrEmpty(artifactObject.virtualHalCommandScriptFixtures);
const motionControllerMatrix = objectOrEmpty(artifactObject.virtualHalMotionControllerMatrix);
const promotionCandidates = objectOrEmpty(artifactObject.virtualHalSimConfigPromotionCandidates);
const macroLoadFixtures = objectOrEmpty(artifactObject.virtualHalSimConfigMacroLoadFixtures);
const sessionDiagnostics = objectOrEmpty(artifactObject.virtualHalSessionDiagnostics);
const replacement = objectOrEmpty(artifactObject.virtualHalSimulationReplacement);
const virtualHal = objectOrEmpty(artifactObject.virtualHal);
@@ -234,6 +278,9 @@ export function createProjectReleaseBrowserDiagnosticsArtifactValidation(artifac
const hasPromotionCandidates = artifactObject.virtualHalSimConfigPromotionCandidates !== undefined;
const promotionCandidatesReady = !hasPromotionCandidates ||
isVirtualHalSimConfigPromotionCandidateReportReady(promotionCandidates);
const hasMacroLoadFixtures = artifactObject.virtualHalSimConfigMacroLoadFixtures !== undefined;
const macroLoadFixturesReady = hasMacroLoadFixtures &&
isVirtualHalSimConfigMacroLoadFixtureReportReady(macroLoadFixtures);
const replacementReady = replacement.ready === true &&
replacement.replacesHostRuntimeForSimulation === true &&
objectOrEmpty(replacement.sourceCompliance).webSimulationSatisfied === true &&
@@ -256,6 +303,7 @@ export function createProjectReleaseBrowserDiagnosticsArtifactValidation(artifac
...(sourceComplianceReady ? [] : ["virtualHalSourceCompliance"]),
...(simConfigSourceCoverageReady ? [] : ["virtualHalSimConfigSourceCoverage"]),
...(promotionCandidatesReady ? [] : ["virtualHalSimConfigPromotionCandidates"]),
...(macroLoadFixturesReady ? [] : ["virtualHalSimConfigMacroLoadFixtures"]),
...(commandScriptFixturesReady ? [] : ["virtualHalCommandScriptFixtures"]),
...(motionControllerMatrixReady ? [] : ["virtualHalMotionControllerMatrix"]),
...(sessionDiagnosticsReady ? [] : ["virtualHalSessionDiagnostics"]),
@@ -273,6 +321,8 @@ export function createProjectReleaseBrowserDiagnosticsArtifactValidation(artifac
simConfigSourceCoverageReady,
promotionCandidatesReady,
hasPromotionCandidates,
macroLoadFixturesReady,
hasMacroLoadFixtures,
commandScriptFixturesReady,
motionControllerMatrixReady,
sessionDiagnosticsReady,
@@ -281,6 +331,7 @@ export function createProjectReleaseBrowserDiagnosticsArtifactValidation(artifac
...arrayOrEmpty(sourceCompliance.sourceFiles),
...arrayOrEmpty(simConfigSourceCoverage.sourceFiles),
...arrayOrEmpty(promotionCandidates.sourceFiles),
...arrayOrEmpty(macroLoadFixtures.sourceFiles),
...arrayOrEmpty(commandScriptFixtures.sourceFiles),
...arrayOrEmpty(motionControllerMatrix.sourceFiles),
...arrayOrEmpty(motionControllerMatrix.simConfigSourceFiles),
@@ -311,6 +362,11 @@ export function createProjectReleaseBrowserDiagnosticsArtifactValidation(artifac
label: "Virtual HAL sim-config promotion candidates",
value: hasPromotionCandidates ? (promotionCandidatesReady ? "ready" : "missing") : "not provided",
},
{
id: "sim-config-macro-load-fixtures",
label: "Virtual HAL sim-config macro/load fixtures",
value: hasMacroLoadFixtures ? (macroLoadFixturesReady ? "ready" : "missing") : "not provided",
},
{
id: "command-script-fixtures",
label: "Virtual HAL command script fixtures",