按text25.txt规划,实现L4-PYTHON-REMAP接入数控系统仿真系统

结论:已接入Python remap runtime proof chain,覆盖native、WASM、browser与release gate证据链;继续保持promotion_allowed=0,不批量解锁L4-PYTHON-REMAP。
This commit is contained in:
2026-06-19 18:52:24 +08:00
parent 51ae5d9a9a
commit fbf9dade9c
38 changed files with 2252 additions and 335 deletions

View File

@@ -20,8 +20,8 @@ assert.equal(validation.phase, "ready");
assert.deepEqual(validation.missing, []);
assert.equal(validation.artifactApiName, "project-release-readiness-report");
assert.equal(validation.artifactVersion, 1);
assert.equal(validation.gateCount, 12);
assert.equal(validation.expectedGateCount, 12);
assert.equal(validation.gateCount, 13);
assert.equal(validation.expectedGateCount, 13);
assert.equal(validation.gateManifestReady, true);
assert.equal(validation.gateExecutionManifestReady, true);
assert.equal(validation.gateExecutionSummaryReady, true);
@@ -41,6 +41,7 @@ assert.deepEqual(validation.expectedGateIds, [
"sim-config-inventory",
"ini-panel-browser",
"opfs-session-browser",
"tool-db-process-proof",
"release-artifact-url-browser",
"project-batch-acceptance",
"ui-node-smokes",
@@ -49,9 +50,9 @@ assert.deepEqual(validation.expectedGateIds, [
]);
assert.equal(artifact.gateManifest.apiName, "project-release-gate-manifest");
assert.equal(artifact.gateExecutionManifest.apiName, "project-release-gate-execution-manifest");
assert.equal(artifact.gateExecutionManifest.passedCount, 12);
assert.equal(artifact.gateExecutionManifest.passedCount, 13);
assert.equal(artifact.gateExecutionSummaryViewModel.apiName, "project-release-gate-execution-summary-view-model");
assert.equal(artifact.gateExecutionSummaryViewModel.rows[0].value, "12/12 passed");
assert.equal(artifact.gateExecutionSummaryViewModel.rows[0].value, "13/13 passed");
assert.equal(artifact.gateResultMatrix.apiName, "project-release-gate-result-matrix");
assert.equal(artifact.gateActionPlan.apiName, "project-release-gate-action-plan");
assert.equal(artifact.gateActionPlan.pendingCount, 0);
@@ -98,7 +99,7 @@ assert.equal(
);
assert.equal(
artifact.rows.find(({ id }) => id === "hard-block-runtime-lock")?.value,
"locked (3 families)",
"locked (2 families)",
);
assert.equal(
artifact.rows.find(({ id }) => id === "promoted-blocked-family-count")?.value,
@@ -143,12 +144,12 @@ assert.equal(
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.executed === 29 &&
row.boundaryEvidence.baselineSummary.passed === 29 &&
row.boundaryEvidence.baselineSummary.skipped === 130 &&
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.sourceArtifactHashes["wasm-port/build/wasm/sim-configs-inventory/boundary-summary.tsv"] === "6cc15052cad03d04eff4506cd0a9d651cd45a2bd5da4d9f38633e9535826b9f3" &&
row.boundaryEvidence.sourceArtifactHashes["wasm-port/build/wasm/sim-configs-inventory/ini-boundary-summary.tsv"] === "17bff95b57c55ff4201a23c7286e733550e4df513470c66dd5f24329e7781a35" &&
row.boundaryEvidence.boundarySummary.dependencies.includes("missing_vendored_ini:configs/sim/gscreen/industrial_lathe_wear/industrial_lathe_wear.ini") &&
row.boundaryEvidence.iniBoundarySummary.vendored === 0
),
@@ -158,12 +159,12 @@ 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.executed === 29 &&
row.boundaryEvidence.baselineSummary.passed === 29 &&
row.boundaryEvidence.baselineSummary.skipped === 130 &&
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.sourceArtifactHashes["wasm-port/build/wasm/sim-configs-inventory/boundary-summary.tsv"] === "6cc15052cad03d04eff4506cd0a9d651cd45a2bd5da4d9f38633e9535826b9f3" &&
row.boundaryEvidence.sourceArtifactHashes["wasm-port/build/wasm/sim-configs-inventory/ini-boundary-summary.tsv"] === "17bff95b57c55ff4201a23c7286e733550e4df513470c66dd5f24329e7781a35" &&
row.boundaryEvidence.boundarySummary.dependencies.includes("missing_vendored_ini:configs/sim/gscreen/silverdragon/silverdragon.ini") &&
row.boundaryEvidence.iniBoundarySummary.vendored === 0
),
@@ -185,19 +186,19 @@ assert.equal(
"wasm-port/build/wasm/sim-configs-inventory/evidence-expansion-candidates.tsv",
);
assert.equal(artifact.promotionCandidateArtifactSummary.evidenceReadyCount, 8);
assert.equal(artifact.promotionCandidateArtifactSummary.inventoryReadyCount, 20);
assert.equal(artifact.promotionCandidateArtifactSummary.evidenceExpansionCandidateCount, 13);
assert.equal(artifact.promotionCandidateArtifactSummary.totalCandidateCount, 28);
assert.equal(artifact.promotionCandidateArtifactSummary.inventoryReadyCount, 19);
assert.equal(artifact.promotionCandidateArtifactSummary.evidenceExpansionCandidateCount, 14);
assert.equal(artifact.promotionCandidateArtifactSummary.totalCandidateCount, 27);
assert.equal(artifact.promotionCandidateArtifactSummary.promotionAllowedCount, 0);
assert.equal(artifact.promotionCandidateArtifactSummary.hardBlockRuntimePromotionAllowedCount, 0);
assert.deepEqual(artifact.promotionCandidateArtifactSummary.artifactRows, {
promotionCandidates: 28,
evidenceExpansion: 13,
promotionCandidates: 27,
evidenceExpansion: 14,
});
assert.equal(artifact.promotionCandidateArtifactSummary.evidenceExpansion.promotionAllowedCount, 0);
assert.equal(
artifact.promotionCandidateArtifactSummary.inventoryBaseline,
"executed=28 passed=28 skipped=131 unexpected_fail=0",
"executed=29 passed=29 skipped=130 unexpected_fail=0",
);
assert.equal(artifact.axisScreenshotArtifactSummary.apiName, "project-release-axis-screenshot-artifact-summary");
if (artifact.axisScreenshotArtifactSummary.artifactCount > 0) {

View File

@@ -29,6 +29,7 @@ const passedGateResults = {
"sim-config-inventory": true,
"ini-panel-browser": true,
"opfs-session-browser": true,
"tool-db-process-proof": true,
"release-artifact-url-browser": true,
"project-batch-acceptance": true,
"ui-node-smokes": true,
@@ -88,6 +89,7 @@ const report = createProjectReleaseReadinessReport({
"sim_configs_wasm_node_inventory_unexpected_fail=0",
"browser_ini_shell_integration_workflow_smoke=ok",
"browser_opfs_session_workflow_smoke=ok",
"tool_db_process_proof=ok",
"browser_release_artifact_url_workflow_smoke=ok",
"project_batch_acceptance_workflow_node_smoke=ok",
"ui_node_smokes=ok",