按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:
@@ -28,6 +28,8 @@ assert.equal(validation.gateExecutionSummaryReady, true);
|
||||
assert.equal(validation.gateResultMatrixReady, true);
|
||||
assert.equal(validation.gateActionPlanReady, true);
|
||||
assert.equal(validation.virtualHalSimConfigSourceCoverageReady, true);
|
||||
assert.equal(validation.virtualHalSimConfigPromotionCandidatesReady, true);
|
||||
assert.equal(validation.virtualHalSimConfigMacroLoadFixturesReady, true);
|
||||
assert.equal(validation.virtualHalMotionControllerMatrixReady, true);
|
||||
assert.equal(validation.axisScreenshotArtifactSummaryReady, true);
|
||||
assert.ok(validation.axisScreenshotArtifactCount === 0 || validation.axisScreenshotArtifactCount === 4);
|
||||
@@ -60,6 +62,105 @@ assert.equal(artifact.virtualHalSimConfigSourceCoverage.webSimulationSatisfied,
|
||||
assert.equal(artifact.virtualHalSimConfigSourceCoverageReady, true);
|
||||
assert.equal(artifact.virtualHalSimConfigSourceCoverage.sourceFiles.includes("linuxcnc/configs/sim/axis/foam/axis_foam.ini"), true);
|
||||
assert.equal(artifact.virtualHalSimConfigSourceCoverage.sourceFiles.includes("linuxcnc/configs/sim/qtdragon/qtdragon_xyz/on_abort.ngc"), true);
|
||||
assert.equal(artifact.virtualHalSimConfigPromotionCandidates.apiName, "linuxcnc-wasm-virtual-hal-sim-config-promotion-candidate-report");
|
||||
assert.equal(artifact.virtualHalSimConfigPromotionCandidates.complete, true);
|
||||
assert.equal(artifact.virtualHalSimConfigPromotionCandidatesReady, true);
|
||||
assert.equal(
|
||||
artifact.virtualHalPromotionFamilySummary,
|
||||
"qtdragon-on-abort: 6/6 ready; vismach-remap-sims: 1/1 ready; rose-engine-rcone-demo: 1/1 ready",
|
||||
);
|
||||
assert.deepEqual(
|
||||
artifact.virtualHalPromotionFamilyRows.map(({ id, value }) => [id, value]),
|
||||
[
|
||||
["qtdragon-on-abort", "6/6 ready; sources=12; diagnostics=ready"],
|
||||
["vismach-remap-sims", "1/1 ready; sources=3; diagnostics=ready"],
|
||||
["rose-engine-rcone-demo", "1/1 ready; sources=2; diagnostics=ready"],
|
||||
],
|
||||
);
|
||||
assert.equal(
|
||||
artifact.virtualHalSimConfigPromotionCandidates.familyRows.some((row) =>
|
||||
row.id === "qtdragon-on-abort" &&
|
||||
row.candidateCount === 6 &&
|
||||
row.completeCount === 6 &&
|
||||
row.explicitBrowserDiagnosticsCount === 6 &&
|
||||
row.explicitBrowserDiagnosticsReady === true &&
|
||||
row.complete === true
|
||||
),
|
||||
true,
|
||||
);
|
||||
assert.equal(
|
||||
artifact.virtualHalSimConfigPromotionCandidates.rows.some((row) =>
|
||||
row.id === "rose-engine-rcone-demo" &&
|
||||
row.currentMatrixBrowserStatus === "explicit-browser-diagnostics" &&
|
||||
row.sourceFiles.includes("linuxcnc/configs/sim/axis/rose_engine/rcone_demo.ngc")
|
||||
),
|
||||
true,
|
||||
);
|
||||
assert.equal(artifact.virtualHalSimConfigMacroLoadFixtures.apiName, "linuxcnc-wasm-virtual-hal-sim-config-macro-load-fixture-report");
|
||||
assert.equal(artifact.virtualHalSimConfigMacroLoadFixtures.complete, true);
|
||||
assert.equal(artifact.virtualHalSimConfigMacroLoadFixturesReady, true);
|
||||
assert.equal(artifact.virtualHalSimConfigMacroLoadFixtures.declarationEvidenceViolations.length, 0);
|
||||
assert.equal(artifact.virtualHalSimConfigMacroLoadFixtures.missingAuditRows.length, 0);
|
||||
assert.equal(artifact.virtualHalSimConfigMacroLoadFixtures.blockedBoundaryEvidenceViolations.length, 0);
|
||||
assert.equal(artifact.virtualHalSimConfigMacroLoadFixtures.auditPromotionViolations.length, 0);
|
||||
assert.equal(artifact.virtualHalSimConfigMacroLoadFixtures.auditBoundaryEvidenceViolations.length, 0);
|
||||
assert.equal(artifact.virtualHalSimConfigMacroLoadFixtures.auditPromotionAllowedViolations.length, 0);
|
||||
assert.equal(
|
||||
artifact.virtualHalSimConfigMacroLoadFixtures.rows.some((row) =>
|
||||
row.id === "rose-engine-rcone-macro-load" &&
|
||||
row.requiresDeclarationEvidence === true &&
|
||||
row.declarationEvidenceReady === true &&
|
||||
row.declarationEvidence.sourceFile === "linuxcnc/configs/sim/axis/rose_engine/rose_engine.ini" &&
|
||||
row.declarationEvidence.key === "NGCGUI_SUBFILE" &&
|
||||
row.declarationEvidence.value === "rcone.ngc" &&
|
||||
row.declarationEvidence.line === 34
|
||||
),
|
||||
true,
|
||||
);
|
||||
assert.equal(
|
||||
artifact.virtualHalSimConfigMacroLoadFixtures.rows.some((row) =>
|
||||
row.id === "external-offsets-queuebuster-macro-load" &&
|
||||
row.requiresDeclarationEvidence === true &&
|
||||
row.declarationEvidenceReady === true &&
|
||||
row.declarationEvidence.sourceFile === "linuxcnc/configs/sim/axis/external_offsets/eoffsets.ini" &&
|
||||
row.declarationEvidence.key === "NGCGUI_SUBFILE" &&
|
||||
row.declarationEvidence.value === "queuebuster.ngc" &&
|
||||
row.declarationEvidence.line === 40
|
||||
),
|
||||
true,
|
||||
);
|
||||
assert.equal(
|
||||
artifact.virtualHalSimConfigMacroLoadFixtures.auditRows.some((row) =>
|
||||
row.id === "gscreen-industrial-lathe-wear-toolchange-audit" &&
|
||||
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.dependencies.includes("missing_vendored_ini:configs/sim/gscreen/industrial_lathe_wear/industrial_lathe_wear.ini") &&
|
||||
row.boundaryEvidence.iniBoundarySummary.vendored === 0
|
||||
),
|
||||
true,
|
||||
);
|
||||
assert.equal(
|
||||
artifact.virtualHalSimConfigMacroLoadFixtures.blockedRows.some((row) =>
|
||||
row.id === "silverdragon-tool-sensor-python-ui-boundary" &&
|
||||
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.dependencies.includes("missing_vendored_ini:configs/sim/gscreen/silverdragon/silverdragon.ini") &&
|
||||
row.boundaryEvidence.iniBoundarySummary.vendored === 0
|
||||
),
|
||||
true,
|
||||
);
|
||||
assert.equal(artifact.virtualHalMotionControllerMatrix.apiName, "linuxcnc-wasm-virtual-hal-motion-controller-matrix-report");
|
||||
assert.equal(artifact.virtualHalMotionControllerMatrix.complete, true);
|
||||
assert.equal(artifact.virtualHalMotionControllerMatrix.manifestChecked, true);
|
||||
|
||||
@@ -5,6 +5,8 @@ import { fileURLToPath } from "node:url";
|
||||
import {
|
||||
createProjectReleaseReadinessReport,
|
||||
createVirtualHalMotionControllerMatrixReport,
|
||||
createVirtualHalSimConfigMacroLoadFixtureReport,
|
||||
createVirtualHalSimConfigPromotionCandidateReport,
|
||||
createVirtualHalSimConfigSourceCoverageReport,
|
||||
} from "../../runtime/sdk/src/index.js";
|
||||
|
||||
@@ -31,6 +33,13 @@ const passedGateResults = {
|
||||
"project-release-gate": true,
|
||||
};
|
||||
|
||||
const virtualHalSimConfigSourceCoverage = createVirtualHalSimConfigSourceCoverageReport({
|
||||
manifestText: sourceManifestText,
|
||||
});
|
||||
const virtualHalMotionControllerMatrix = createVirtualHalMotionControllerMatrixReport({
|
||||
manifestText: sourceManifestText,
|
||||
});
|
||||
|
||||
function loadAxisScreenshotArtifacts(directory) {
|
||||
if (!directory || !existsSync(directory)) {
|
||||
return [];
|
||||
@@ -65,12 +74,16 @@ const report = createProjectReleaseReadinessReport({
|
||||
"host_wasm_opfs_browser_smokes=ok",
|
||||
"project_release_gate=ok",
|
||||
],
|
||||
virtualHalSimConfigSourceCoverage: createVirtualHalSimConfigSourceCoverageReport({
|
||||
manifestText: sourceManifestText,
|
||||
}),
|
||||
virtualHalMotionControllerMatrix: createVirtualHalMotionControllerMatrixReport({
|
||||
virtualHalSimConfigSourceCoverage,
|
||||
virtualHalSimConfigPromotionCandidates: createVirtualHalSimConfigPromotionCandidateReport({
|
||||
manifestText: sourceManifestText,
|
||||
simConfigSourceCoverage: virtualHalSimConfigSourceCoverage,
|
||||
motionControllerMatrix: virtualHalMotionControllerMatrix,
|
||||
}),
|
||||
virtualHalSimConfigMacroLoadFixtures: createVirtualHalSimConfigMacroLoadFixtureReport({
|
||||
manifestText: sourceManifestText,
|
||||
}),
|
||||
virtualHalMotionControllerMatrix,
|
||||
axisScreenshotArtifacts: loadAxisScreenshotArtifacts(axisScreenshotArtifactDir),
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user