收束promotion候选证据
结论:按text22铁律完成promotion-candidates双层证据管理,baseline保持28/28/131/0,Python remap、tool DB、external user-M hard block继续locked。
This commit is contained in:
@@ -14,6 +14,7 @@ import {
|
||||
createVirtualHalSimConfigMacroLoadFixtureReport,
|
||||
createVirtualHalCommandScriptFixtureReport,
|
||||
createVirtualHalMotionControllerMatrixReport,
|
||||
createVirtualHalSimConfigEvidenceExpansionReport,
|
||||
createVirtualHalSimulationReplacementReport,
|
||||
createVirtualHalSourceComplianceReport,
|
||||
createVirtualHalState,
|
||||
@@ -31,6 +32,11 @@ const virtualHalSimConfigPromotionCandidates = createVirtualHalSimConfigPromotio
|
||||
simConfigSourceCoverage: virtualHalSimConfigSourceCoverage,
|
||||
motionControllerMatrix: virtualHalMotionControllerMatrix,
|
||||
});
|
||||
const virtualHalSimConfigEvidenceExpansion = createVirtualHalSimConfigEvidenceExpansionReport({
|
||||
manifestText: sourceManifestText,
|
||||
simConfigSourceCoverage: virtualHalSimConfigSourceCoverage,
|
||||
motionControllerMatrix: virtualHalMotionControllerMatrix,
|
||||
});
|
||||
const virtualHalSimConfigMacroLoadFixtures = createVirtualHalSimConfigMacroLoadFixtureReport({
|
||||
manifestText: sourceManifestText,
|
||||
});
|
||||
@@ -43,6 +49,7 @@ const browserDiagnosticsArtifact = {
|
||||
virtualHalSourceCompliance: createVirtualHalSourceComplianceReport({ halState: virtualHalState }),
|
||||
virtualHalSimConfigSourceCoverage,
|
||||
virtualHalSimConfigPromotionCandidates,
|
||||
virtualHalSimConfigEvidenceExpansion,
|
||||
virtualHalPromotionCandidateSummary: {
|
||||
apiName: "real-browser-simulation-promotion-candidate-summary",
|
||||
summaryVersion: 1,
|
||||
@@ -84,6 +91,7 @@ const readyArtifactJson = JSON.stringify(createProjectReleaseReadinessReport({
|
||||
gateResults: Object.fromEntries(manifest.gateIds.map((id) => [id, true])),
|
||||
virtualHalSimConfigSourceCoverage,
|
||||
virtualHalSimConfigPromotionCandidates,
|
||||
virtualHalSimConfigEvidenceExpansion,
|
||||
virtualHalSimConfigMacroLoadFixtures,
|
||||
virtualHalMotionControllerMatrix: browserDiagnosticsArtifact.virtualHalMotionControllerMatrix,
|
||||
}));
|
||||
@@ -178,6 +186,30 @@ assert.equal(
|
||||
readySummary.rows.find(({ id }) => id === "virtual-hal-promotion-candidate-baseline")?.value,
|
||||
"executed=28 passed=28 skipped=131 unexpected_fail=0",
|
||||
);
|
||||
assert.equal(
|
||||
readySummary.rows.find(({ id }) => id === "promotion-candidate-artifact")?.value,
|
||||
"wasm-port/build/wasm/sim-configs-inventory/promotion-candidates.tsv",
|
||||
);
|
||||
assert.equal(
|
||||
readySummary.rows.find(({ id }) => id === "promotion-candidate-layers")?.value,
|
||||
"evidence-ready=8 inventory-ready=20",
|
||||
);
|
||||
assert.equal(
|
||||
readySummary.rows.find(({ id }) => id === "promotion-candidate-total")?.value,
|
||||
"28",
|
||||
);
|
||||
assert.equal(
|
||||
readySummary.rows.find(({ id }) => id === "evidence-expansion-candidates")?.value,
|
||||
"13",
|
||||
);
|
||||
assert.equal(
|
||||
readySummary.rows.find(({ id }) => id === "evidence-expansion-artifact")?.value,
|
||||
"wasm-port/build/wasm/sim-configs-inventory/evidence-expansion-candidates.tsv",
|
||||
);
|
||||
assert.equal(
|
||||
readySummary.rows.find(({ id }) => id === "promotion-candidate-allowed")?.value,
|
||||
"0",
|
||||
);
|
||||
assert.equal(
|
||||
readySummary.rows.find(({ id }) => id === "hard-block-runtime-lock")?.value,
|
||||
"locked (3 families)",
|
||||
@@ -203,6 +235,12 @@ assert.deepEqual(
|
||||
["json-workflow", "ready"],
|
||||
["artifact-validation", "ready"],
|
||||
["virtual-hal-promotion-families", expectedPromotionFamilySummary],
|
||||
["promotion-candidate-artifact", "wasm-port/build/wasm/sim-configs-inventory/promotion-candidates.tsv"],
|
||||
["promotion-candidate-layers", "evidence-ready=8 inventory-ready=20"],
|
||||
["promotion-candidate-total", "28"],
|
||||
["evidence-expansion-candidates", "13"],
|
||||
["evidence-expansion-artifact", "wasm-port/build/wasm/sim-configs-inventory/evidence-expansion-candidates.tsv"],
|
||||
["promotion-candidate-allowed", "0"],
|
||||
...expectedPromotionFamilyRows,
|
||||
["browser-diagnostics", "ready"],
|
||||
["virtual-hal-promotion-candidate-summary", "ready"],
|
||||
|
||||
@@ -271,6 +271,21 @@ assert.deepEqual(createProjectReleaseReadinessSummaryViewModel(report), {
|
||||
label: "Virtual HAL sim-config promotion candidates",
|
||||
value: "ready",
|
||||
},
|
||||
{
|
||||
id: "promotion-candidate-layers",
|
||||
label: "Promotion candidate layers",
|
||||
value: "evidence-ready=8 inventory-ready=20",
|
||||
},
|
||||
{
|
||||
id: "promotion-candidate-allowed",
|
||||
label: "Promotion candidates allowed",
|
||||
value: "0",
|
||||
},
|
||||
{
|
||||
id: "evidence-expansion-candidates",
|
||||
label: "Evidence expansion candidates",
|
||||
value: "13",
|
||||
},
|
||||
{
|
||||
id: "virtual-hal-sim-config-macro-load-fixtures",
|
||||
label: "Virtual HAL sim-config macro/load fixtures",
|
||||
@@ -369,6 +384,12 @@ assert.deepEqual(
|
||||
["gate-action-plan", "ready"],
|
||||
["virtual-hal-sim-config-source-coverage", "ready"],
|
||||
["virtual-hal-sim-config-promotion-candidates", "ready"],
|
||||
["promotion-candidate-artifact", "wasm-port/build/wasm/sim-configs-inventory/promotion-candidates.tsv"],
|
||||
["promotion-candidate-layers", "evidence-ready=8 inventory-ready=20"],
|
||||
["promotion-candidate-total", "28"],
|
||||
["evidence-expansion-candidates", "13"],
|
||||
["evidence-expansion-artifact", "wasm-port/build/wasm/sim-configs-inventory/evidence-expansion-candidates.tsv"],
|
||||
["promotion-candidate-allowed", "0"],
|
||||
["virtual-hal-promotion-families", expectedPromotionFamilySummary],
|
||||
...expectedPromotionFamilyRows,
|
||||
["virtual-hal-sim-config-macro-load-fixtures", "ready"],
|
||||
@@ -460,6 +481,12 @@ assert.deepEqual(
|
||||
["json-workflow", "ready"],
|
||||
["artifact-validation", "ready"],
|
||||
["virtual-hal-promotion-families", expectedPromotionFamilySummary],
|
||||
["promotion-candidate-artifact", "wasm-port/build/wasm/sim-configs-inventory/promotion-candidates.tsv"],
|
||||
["promotion-candidate-layers", "evidence-ready=8 inventory-ready=20"],
|
||||
["promotion-candidate-total", "28"],
|
||||
["evidence-expansion-candidates", "13"],
|
||||
["evidence-expansion-artifact", "wasm-port/build/wasm/sim-configs-inventory/evidence-expansion-candidates.tsv"],
|
||||
["promotion-candidate-allowed", "0"],
|
||||
...expectedPromotionFamilyRows,
|
||||
["browser-diagnostics", "not requested"],
|
||||
["virtual-hal-promotion-candidate-summary", "not requested"],
|
||||
|
||||
@@ -39,6 +39,7 @@ import {
|
||||
VIRTUAL_HAL_SIM_CONFIG_MACRO_LOAD_AUDIT_CANDIDATES,
|
||||
VIRTUAL_HAL_SIM_CONFIG_MACRO_LOAD_BLOCKED_FIXTURES,
|
||||
VIRTUAL_HAL_SIM_CONFIG_MACRO_LOAD_FIXTURES,
|
||||
VIRTUAL_HAL_SIM_CONFIG_EVIDENCE_EXPANSION_CANDIDATES,
|
||||
VIRTUAL_HAL_SIM_CONFIG_INVENTORY_ARTIFACT_HASHES,
|
||||
VIRTUAL_HAL_SIM_CONFIG_INVENTORY_BASELINE,
|
||||
VIRTUAL_HAL_SIM_CONFIG_PROMOTION_CANDIDATES,
|
||||
@@ -95,6 +96,7 @@ import {
|
||||
createVirtualHalPinInventory,
|
||||
createVirtualHalPinRegistry,
|
||||
createVirtualHalProjectReport,
|
||||
createVirtualHalSimConfigEvidenceExpansionReport,
|
||||
createVirtualHalSimConfigMacroLoadFixtureReport,
|
||||
createVirtualHalSimConfigPromotionCandidateReport,
|
||||
createVirtualHalSimConfigSourceCoverageReport,
|
||||
@@ -188,6 +190,45 @@ const expectedPromotionFamilyRows = [
|
||||
["virtual-hal-promotion-family-vismach-remap-sims", "1/1 ready; sources=3; diagnostics=ready"],
|
||||
["virtual-hal-promotion-family-rose-engine-rcone-demo", "1/1 ready; sources=2; diagnostics=ready"],
|
||||
];
|
||||
const expectedPromotionCandidateArtifactSummary = {
|
||||
apiName: "project-release-promotion-candidate-artifact-summary",
|
||||
summaryVersion: 1,
|
||||
phase: "ready",
|
||||
ready: true,
|
||||
artifactPath: "wasm-port/build/wasm/sim-configs-inventory/promotion-candidates.tsv",
|
||||
evidenceExpansionArtifactPath: "wasm-port/build/wasm/sim-configs-inventory/evidence-expansion-candidates.tsv",
|
||||
layerCount: 2,
|
||||
evidenceReadyCount: 8,
|
||||
inventoryReadyCount: 20,
|
||||
evidenceExpansionCandidateCount: 13,
|
||||
totalCandidateCount: 28,
|
||||
promotionAllowedCount: 0,
|
||||
hardBlockRuntimeLock: "locked (3 families)",
|
||||
inventoryBaseline: "executed=28 passed=28 skipped=131 unexpected_fail=0",
|
||||
layers: [
|
||||
{
|
||||
id: "evidence-ready",
|
||||
candidateCount: 8,
|
||||
promotionAllowedCount: 0,
|
||||
virtualHalEvidenceReady: true,
|
||||
baselineChanging: false,
|
||||
},
|
||||
{
|
||||
id: "inventory-ready",
|
||||
candidateCount: 20,
|
||||
promotionAllowedCount: 0,
|
||||
virtualHalEvidenceReady: false,
|
||||
baselineChanging: false,
|
||||
},
|
||||
],
|
||||
evidenceExpansion: {
|
||||
id: "browser-diagnostics-expansion",
|
||||
candidateCount: 13,
|
||||
promotionAllowedCount: 0,
|
||||
baselineChanging: false,
|
||||
nextEvidence: "browser-diagnostics-binding",
|
||||
},
|
||||
};
|
||||
const hasFreshBoundaryArtifactHashes = (boundaryEvidence) =>
|
||||
Object.entries(VIRTUAL_HAL_SIM_CONFIG_INVENTORY_ARTIFACT_HASHES)
|
||||
.every(([artifactPath, expectedHash]) => boundaryEvidence?.sourceArtifactHashes?.[artifactPath] === expectedHash);
|
||||
@@ -257,6 +298,7 @@ const requiredExports = [
|
||||
["createVirtualHalPinInventory", createVirtualHalPinInventory],
|
||||
["createVirtualHalPinRegistry", createVirtualHalPinRegistry],
|
||||
["createVirtualHalProjectReport", createVirtualHalProjectReport],
|
||||
["createVirtualHalSimConfigEvidenceExpansionReport", createVirtualHalSimConfigEvidenceExpansionReport],
|
||||
["createVirtualHalSimConfigMacroLoadFixtureReport", createVirtualHalSimConfigMacroLoadFixtureReport],
|
||||
["createVirtualHalSimConfigPromotionCandidateReport", createVirtualHalSimConfigPromotionCandidateReport],
|
||||
["createVirtualHalSimConfigSourceCoverageReport", createVirtualHalSimConfigSourceCoverageReport],
|
||||
@@ -896,6 +938,33 @@ assert.equal(virtualHalRuntime.getSimConfigPromotionCandidateReport({
|
||||
simConfigSourceCoverage: simConfigSourceCoverageReport,
|
||||
motionControllerMatrix: manifestCheckedMotionControllerMatrixReport,
|
||||
}).complete, true);
|
||||
assert.equal(VIRTUAL_HAL_SIM_CONFIG_EVIDENCE_EXPANSION_CANDIDATES.length, 3);
|
||||
const simConfigEvidenceExpansionReport = createVirtualHalSimConfigEvidenceExpansionReport({
|
||||
manifestText: sourceManifestText,
|
||||
simConfigSourceCoverage: simConfigSourceCoverageReport,
|
||||
motionControllerMatrix: manifestCheckedMotionControllerMatrixReport,
|
||||
});
|
||||
assert.equal(
|
||||
simConfigEvidenceExpansionReport.apiName,
|
||||
"linuxcnc-wasm-virtual-hal-sim-config-evidence-expansion-report",
|
||||
);
|
||||
assert.equal(simConfigEvidenceExpansionReport.complete, true);
|
||||
assert.equal(simConfigEvidenceExpansionReport.webSimulationSatisfied, true);
|
||||
assert.equal(simConfigEvidenceExpansionReport.inventoryBaselineUnchanged, true);
|
||||
assert.equal(simConfigEvidenceExpansionReport.promotionAllowed, false);
|
||||
assert.equal(simConfigEvidenceExpansionReport.candidateCount, 3);
|
||||
assert.equal(simConfigEvidenceExpansionReport.readyCandidateCount, 3);
|
||||
assert.equal(simConfigEvidenceExpansionReport.promotionAllowedViolations.length, 0);
|
||||
assert.equal(
|
||||
simConfigEvidenceExpansionReport.rows.some((row) =>
|
||||
row.id === "woodpecker-on-abort" &&
|
||||
row.currentMatrixBrowserStatus === "REP" &&
|
||||
row.targetBrowserEvidence === "browser-diagnostics-expansion" &&
|
||||
row.promotionAllowed === false &&
|
||||
row.sourceFiles.includes("linuxcnc/configs/sim/woodpecker/on_abort.ngc")
|
||||
),
|
||||
true,
|
||||
);
|
||||
assert.equal(VIRTUAL_HAL_SIM_CONFIG_MACRO_LOAD_FIXTURES.length >= 2, true);
|
||||
assert.equal(VIRTUAL_HAL_SIM_CONFIG_MACRO_LOAD_BLOCKED_FIXTURES.length >= 2, true);
|
||||
assert.equal(VIRTUAL_HAL_SIM_CONFIG_MACRO_LOAD_AUDIT_CANDIDATES.length >= 2, true);
|
||||
@@ -1204,6 +1273,7 @@ assert.equal(virtualHalSessionPayload.state.hal.signals["x-pos"].value, 1.25);
|
||||
assert.equal(virtualHalSessionPayload.sourceCompliance.complete, true);
|
||||
assert.equal(virtualHalSessionPayload.simConfigSourceCoverage.complete, true);
|
||||
assert.equal(virtualHalSessionPayload.simConfigPromotionCandidates.complete, true);
|
||||
assert.equal(virtualHalSessionPayload.simConfigEvidenceExpansion.complete, true);
|
||||
assert.equal(virtualHalSessionPayload.simConfigMacroLoadFixtures.complete, true);
|
||||
assert.equal(virtualHalSessionPayload.commandScriptFixtures.complete, true);
|
||||
assert.equal(virtualHalSessionPayload.motionControllerMatrix.complete, true);
|
||||
@@ -1226,6 +1296,7 @@ const browserDiagnosticsArtifact = {
|
||||
virtualHalSourceCompliance: sourceComplianceReport,
|
||||
virtualHalSimConfigSourceCoverage: simConfigSourceCoverageReport,
|
||||
virtualHalSimConfigPromotionCandidates: simConfigPromotionCandidateReport,
|
||||
virtualHalSimConfigEvidenceExpansion: simConfigEvidenceExpansionReport,
|
||||
virtualHalPromotionCandidateSummary: {
|
||||
apiName: "real-browser-simulation-promotion-candidate-summary",
|
||||
summaryVersion: 1,
|
||||
@@ -1268,6 +1339,8 @@ assert.equal(browserDiagnosticsArtifactValidation.sourceComplianceReady, true);
|
||||
assert.equal(browserDiagnosticsArtifactValidation.simConfigSourceCoverageReady, true);
|
||||
assert.equal(browserDiagnosticsArtifactValidation.promotionCandidatesReady, true);
|
||||
assert.equal(browserDiagnosticsArtifactValidation.hasPromotionCandidates, true);
|
||||
assert.equal(browserDiagnosticsArtifactValidation.evidenceExpansionReady, true);
|
||||
assert.equal(browserDiagnosticsArtifactValidation.hasEvidenceExpansion, true);
|
||||
assert.equal(browserDiagnosticsArtifactValidation.promotionCandidateSummaryReady, true);
|
||||
assert.equal(browserDiagnosticsArtifactValidation.hasPromotionCandidateSummary, true);
|
||||
assert.equal(browserDiagnosticsArtifactValidation.macroLoadFixturesReady, true);
|
||||
@@ -1494,6 +1567,10 @@ assert.equal(releaseReadinessReady.releaseGate.passed, true);
|
||||
assert.equal(releaseReadinessReady.virtualHalSimConfigSourceCoverageReady, true);
|
||||
assert.equal(releaseReadinessReady.virtualHalSimConfigPromotionCandidatesReady, true);
|
||||
assert.equal(releaseReadinessReady.virtualHalPromotionFamilySummary, expectedPromotionFamilySummary);
|
||||
assert.deepEqual(
|
||||
releaseReadinessReady.promotionCandidateArtifactSummary,
|
||||
expectedPromotionCandidateArtifactSummary,
|
||||
);
|
||||
assert.deepEqual(
|
||||
releaseReadinessReady.virtualHalPromotionFamilyRows.map(({ id, value }) => [
|
||||
`virtual-hal-promotion-family-${id}`,
|
||||
@@ -1516,6 +1593,10 @@ assert.equal(
|
||||
createProjectReleaseReadinessSummaryViewModel(releaseReadinessReady).rows.find(({ id }) => id === "axis-screenshot-artifacts")?.value,
|
||||
"not captured",
|
||||
);
|
||||
assert.equal(
|
||||
createProjectReleaseReadinessSummaryViewModel(releaseReadinessReady).rows.find(({ id }) => id === "promotion-candidate-layers")?.value,
|
||||
"evidence-ready=8 inventory-ready=20",
|
||||
);
|
||||
const releaseReadinessWithScreenshots = createProjectReleaseReadinessReport({
|
||||
gateResults: Object.fromEntries(createProjectReleaseGateManifest().gateIds.map((id) => [id, true])),
|
||||
virtualHalSimConfigSourceCoverage: simConfigSourceCoverageReport,
|
||||
@@ -1582,6 +1663,8 @@ assert.deepEqual(releaseReadinessArtifactValidation, {
|
||||
virtualHalSimConfigPromotionCandidatesReady: true,
|
||||
virtualHalPromotionFamilySummary: expectedPromotionFamilySummary,
|
||||
virtualHalPromotionFamilyRows: releaseReadinessReady.virtualHalPromotionFamilyRows,
|
||||
promotionCandidateArtifactSummary: expectedPromotionCandidateArtifactSummary,
|
||||
promotionCandidateArtifactSummaryReady: true,
|
||||
virtualHalSimConfigMacroLoadFixturesReady: true,
|
||||
virtualHalMotionControllerMatrixReady: true,
|
||||
axisScreenshotArtifactSummaryReady: true,
|
||||
@@ -1637,6 +1720,36 @@ assert.deepEqual(releaseReadinessArtifactValidation, {
|
||||
label: "Virtual HAL sim-config promotion candidates",
|
||||
value: "ready",
|
||||
},
|
||||
{
|
||||
id: "promotion-candidate-artifact",
|
||||
label: "Promotion candidate artifact",
|
||||
value: "wasm-port/build/wasm/sim-configs-inventory/promotion-candidates.tsv",
|
||||
},
|
||||
{
|
||||
id: "promotion-candidate-layers",
|
||||
label: "Promotion candidate layers",
|
||||
value: "evidence-ready=8 inventory-ready=20",
|
||||
},
|
||||
{
|
||||
id: "promotion-candidate-total",
|
||||
label: "Promotion candidate total",
|
||||
value: "28",
|
||||
},
|
||||
{
|
||||
id: "evidence-expansion-candidates",
|
||||
label: "Evidence expansion candidates",
|
||||
value: "13",
|
||||
},
|
||||
{
|
||||
id: "evidence-expansion-artifact",
|
||||
label: "Evidence expansion artifact",
|
||||
value: "wasm-port/build/wasm/sim-configs-inventory/evidence-expansion-candidates.tsv",
|
||||
},
|
||||
{
|
||||
id: "promotion-candidate-allowed",
|
||||
label: "Promotion candidates allowed",
|
||||
value: "0",
|
||||
},
|
||||
{
|
||||
id: "virtual-hal-promotion-families",
|
||||
label: "Virtual HAL promotion families",
|
||||
@@ -1763,6 +1876,32 @@ assert.equal(
|
||||
).rows.find(({ id }) => id === "virtual-hal-promotion-families")?.value,
|
||||
expectedPromotionFamilySummary,
|
||||
);
|
||||
assert.equal(
|
||||
createProjectReleaseReadinessArtifactUrlWorkflowSummaryViewModel(
|
||||
await loadProjectReleaseReadinessArtifactUrlWorkflow({
|
||||
artifactUrl: "/project-release-readiness.json",
|
||||
fetchRef: async () => ({
|
||||
ok: true,
|
||||
status: 200,
|
||||
text: async () => JSON.stringify(releaseReadinessArtifact),
|
||||
}),
|
||||
}),
|
||||
).rows.find(({ id }) => id === "promotion-candidate-layers")?.value,
|
||||
"evidence-ready=8 inventory-ready=20",
|
||||
);
|
||||
assert.equal(
|
||||
createProjectReleaseReadinessArtifactUrlWorkflowSummaryViewModel(
|
||||
await loadProjectReleaseReadinessArtifactUrlWorkflow({
|
||||
artifactUrl: "/project-release-readiness.json",
|
||||
fetchRef: async () => ({
|
||||
ok: true,
|
||||
status: 200,
|
||||
text: async () => JSON.stringify(releaseReadinessArtifact),
|
||||
}),
|
||||
}),
|
||||
).rows.find(({ id }) => id === "evidence-expansion-candidates")?.value,
|
||||
"13",
|
||||
);
|
||||
assert.deepEqual(
|
||||
createProjectReleaseReadinessArtifactUrlWorkflowSummaryViewModel(
|
||||
await loadProjectReleaseReadinessArtifactUrlWorkflow({
|
||||
@@ -1815,6 +1954,7 @@ assert.deepEqual(
|
||||
"simConfigInventory.unexpectedFail",
|
||||
"virtualHalSimConfigSourceCoverage",
|
||||
"virtualHalSimConfigPromotionCandidates",
|
||||
"promotionCandidateArtifactSummary",
|
||||
"virtualHalSimConfigMacroLoadFixtures",
|
||||
"virtualHalMotionControllerMatrix",
|
||||
"blockedRuntimeFamilies",
|
||||
|
||||
Reference in New Issue
Block a user