先提交到云仓库

结论:已提交当前 Python-remap proof 链路、runtime/browser/UI/docs 相关变更;保持 L4-PYTHON-REMAP inventory baseline 不直接批量 PASS。
This commit is contained in:
2026-06-20 00:06:10 +08:00
parent fbf9dade9c
commit ac52b48d62
36 changed files with 4388 additions and 240 deletions

View File

@@ -322,6 +322,53 @@ function createToolDbProcessProofSummary(toolDbProcessProof = {}) {
};
}
function createPythonRemapRuntimeProofSummary(pythonRemapRuntimeProof = {}) {
const proof = objectOrEmpty(pythonRemapRuntimeProof);
const nativeLifecycleReady = proof.nativeLifecycleReady === true;
const wasmLifecycleReady = proof.wasmLifecycleReady !== false;
const browserLifecycleReady = proof.browserLifecycleReady !== false;
const promotionAllowed = proof.promotionAllowed === true;
const executionEnabled = proof.executionEnabled === true;
const ready = nativeLifecycleReady &&
wasmLifecycleReady &&
browserLifecycleReady &&
promotionAllowed === false &&
executionEnabled === false;
return {
apiName: "python-remap-runtime-proof-summary",
summaryVersion: 1,
phase: ready ? "ready" : "blocked",
ready,
boundaryClass: "L4-PYTHON-REMAP",
fixtureFamily: proof.fixtureFamily ?? "axis/remap/stop-lookahead/nc_files",
fixtureId: proof.fixtureId ?? "stop_lookahead_python_runtime_lifecycle",
iniPath: proof.iniPath ?? "axis/remap/stop-lookahead/demo.ini",
pythonPathPrepend: proof.pythonPathPrepend ?? "python",
topLevelPath: proof.topLevelPath ?? "python/toplevel.py",
callableName: proof.callableName ?? "queuebuster",
runtimeMode: proof.runtimeMode ?? "browser-python-wasm-worker",
nativeProbeStatus: proof.nativeProbeStatus ?? (nativeLifecycleReady ? "runtime_lifecycle_probe_passed" : "not_provided"),
nativeProofArtifactPath: proof.nativeProofArtifactPath ?? "wasm-port/build/native/native-runtime-probe-summary.tsv",
nativeProofStdoutLog: proof.nativeProofStdoutLog ?? null,
nativeLifecycleReady,
wasmLifecycleReady,
browserLifecycleReady,
interpreterStateBindingReady: proof.interpreterStateBindingReady !== false,
generatorLifecycleReady: proof.generatorLifecycleReady !== false,
promotionAllowed,
executionEnabled,
bulkPromotionAllowed: proof.bulkPromotionAllowed === true,
manualLockUpdateRequired: proof.manualLockUpdateRequired !== false,
requiredCommands: [
"ENABLE_PYTHON_REMAP_RUNTIME_PROBE=1 wasm-port/tests/native/probe_python_remap_runtime.sh",
"wasm-port/tests/sdk/node/verify_python_remap_runtime_port.sh",
"SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_python_remap_runtime_port_wasm.sh",
"SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_python_remap_runtime_browser.sh",
],
};
}
const BLOCKED_RUNTIME_FAMILIES = [
"L4-USER-M-PROCESS",
"L4-PYTHON-REMAP",
@@ -2069,6 +2116,7 @@ export function createProjectReleaseReadinessReport({
virtualHalSimConfigMacroLoadFixtures = null,
virtualHalMotionControllerMatrix = null,
toolDbProcessProof = {},
pythonRemapRuntimeProof = {},
blockedRuntimeFamilies = BLOCKED_RUNTIME_FAMILIES,
promotedRuntimeFamilies = [],
axisScreenshotArtifacts = [],
@@ -2130,6 +2178,8 @@ export function createProjectReleaseReadinessReport({
const axisScreenshotArtifactsReady = axisScreenshotArtifactSummary.ready;
const toolDbProcessProofSummary = createToolDbProcessProofSummary(toolDbProcessProof);
const toolDbProcessProofReady = toolDbProcessProofSummary.ready;
const pythonRemapRuntimeProofSummary = createPythonRemapRuntimeProofSummary(pythonRemapRuntimeProof);
const pythonRemapRuntimeProofReady = pythonRemapRuntimeProofSummary.ready;
const ready = releaseGatePassed &&
inventoryReady &&
virtualHalSimConfigSourceCoverageReady &&
@@ -2137,6 +2187,7 @@ export function createProjectReleaseReadinessReport({
virtualHalSimConfigMacroLoadFixturesReady &&
virtualHalMotionControllerMatrixReady &&
toolDbProcessProofReady &&
pythonRemapRuntimeProofReady &&
blockedRuntimeReady &&
axisScreenshotArtifactsReady;
const missing = [
@@ -2147,6 +2198,7 @@ export function createProjectReleaseReadinessReport({
...(virtualHalSimConfigMacroLoadFixturesReady ? [] : ["virtual-hal-sim-config-macro-load-fixtures"]),
...(virtualHalMotionControllerMatrixReady ? [] : ["virtual-hal-motion-controller-matrix"]),
...(toolDbProcessProofReady ? [] : ["tool-db-process-proof"]),
...(pythonRemapRuntimeProofReady ? [] : ["python-remap-runtime-proof"]),
...(blockedRuntimeReady ? [] : ["blocked-runtime-families"]),
...(axisScreenshotArtifactsReady ? [] : ["axis-screenshot-artifacts"]),
];
@@ -2177,6 +2229,8 @@ export function createProjectReleaseReadinessReport({
virtualHalMotionControllerMatrixReady,
toolDbProcessProofSummary,
toolDbProcessProofReady,
pythonRemapRuntimeProofSummary,
pythonRemapRuntimeProofReady,
blockedRuntimeFamilies: blockedFamilies,
promotedRuntimeFamilies: promotedFamilies,
promotedBlockedFamilies,
@@ -2289,6 +2343,16 @@ export function createProjectReleaseReadinessReport({
label: "Tool DB process proof detail",
value: `wasm=${toolDbProcessProofSummary.wasmProtocolReady ? "ready" : "missing"} browser=${toolDbProcessProofSummary.browserProtocolReady ? "ready" : "missing"} opfs=${toolDbProcessProofSummary.opfsPersistenceReady ? "ready" : "missing"} promotion_allowed=${toolDbProcessProofSummary.promotionAllowed ? "1" : "0"}`,
},
{
id: "python-remap-runtime-proof",
label: "Python remap runtime proof",
value: pythonRemapRuntimeProofReady ? "ready" : "locked",
},
{
id: "python-remap-runtime-proof-detail",
label: "Python remap runtime proof detail",
value: `native=${pythonRemapRuntimeProofSummary.nativeLifecycleReady ? "ready" : "missing"} wasm=${pythonRemapRuntimeProofSummary.wasmLifecycleReady ? "ready" : "missing"} browser=${pythonRemapRuntimeProofSummary.browserLifecycleReady ? "ready" : "missing"} promotion_allowed=${pythonRemapRuntimeProofSummary.promotionAllowed ? "1" : "0"}`,
},
{
id: "blocked-runtime-families",
label: "Blocked runtime families",
@@ -2328,6 +2392,8 @@ export function createProjectReleaseReadinessSummaryViewModel(
const virtualHalMotionControllerMatrixReady = report?.virtualHalMotionControllerMatrixReady === true;
const toolDbProcessProofSummary = objectOrEmpty(report?.toolDbProcessProofSummary);
const toolDbProcessProofReady = report?.toolDbProcessProofReady === true;
const pythonRemapRuntimeProofSummary = objectOrEmpty(report?.pythonRemapRuntimeProofSummary);
const pythonRemapRuntimeProofReady = report?.pythonRemapRuntimeProofReady === true;
const axisScreenshotArtifactSummary = objectOrEmpty(report?.axisScreenshotArtifactSummary);
const blockedRuntimeFamilies = arrayOrEmpty(report?.blockedRuntimeFamilies);
const promotedBlockedFamilies = arrayOrEmpty(report?.promotedBlockedFamilies);
@@ -2430,6 +2496,18 @@ export function createProjectReleaseReadinessSummaryViewModel(
? `wasm=${toolDbProcessProofSummary.wasmProtocolReady ? "ready" : "missing"} browser=${toolDbProcessProofSummary.browserProtocolReady ? "ready" : "missing"} opfs=${toolDbProcessProofSummary.opfsPersistenceReady ? "ready" : "missing"} promotion_allowed=${toolDbProcessProofSummary.promotionAllowed ? "1" : "0"}`
: "missing",
},
{
id: "python-remap-runtime-proof",
label: "Python remap runtime proof",
value: pythonRemapRuntimeProofReady ? "ready" : "locked",
},
{
id: "python-remap-runtime-proof-detail",
label: "Python remap runtime proof detail",
value: pythonRemapRuntimeProofSummary.apiName
? `native=${pythonRemapRuntimeProofSummary.nativeLifecycleReady ? "ready" : "missing"} wasm=${pythonRemapRuntimeProofSummary.wasmLifecycleReady ? "ready" : "missing"} browser=${pythonRemapRuntimeProofSummary.browserLifecycleReady ? "ready" : "missing"} promotion_allowed=${pythonRemapRuntimeProofSummary.promotionAllowed ? "1" : "0"}`
: "missing",
},
{
id: "blocked-runtime-families",
label: "Blocked runtime families",
@@ -2630,6 +2708,18 @@ export function createProjectReleaseReadinessArtifactValidationSummaryViewModel(
? `wasm=${validation.toolDbProcessProofSummary.wasmProtocolReady ? "ready" : "missing"} browser=${validation.toolDbProcessProofSummary.browserProtocolReady ? "ready" : "missing"} opfs=${validation.toolDbProcessProofSummary.opfsPersistenceReady ? "ready" : "missing"} promotion_allowed=${validation.toolDbProcessProofSummary.promotionAllowed ? "1" : "0"}`
: "missing",
},
{
id: "python-remap-runtime-proof",
label: "Python remap runtime proof",
value: validation?.pythonRemapRuntimeProofSummary?.ready === true ? "ready" : "locked",
},
{
id: "python-remap-runtime-proof-detail",
label: "Python remap runtime proof detail",
value: validation?.pythonRemapRuntimeProofSummary?.apiName
? `native=${validation.pythonRemapRuntimeProofSummary.nativeLifecycleReady ? "ready" : "missing"} wasm=${validation.pythonRemapRuntimeProofSummary.wasmLifecycleReady ? "ready" : "missing"} browser=${validation.pythonRemapRuntimeProofSummary.browserLifecycleReady ? "ready" : "missing"} promotion_allowed=${validation.pythonRemapRuntimeProofSummary.promotionAllowed ? "1" : "0"}`
: "missing",
},
{
id: "missing",
label: "Missing artifact evidence",
@@ -3043,6 +3133,8 @@ export function createProjectReleaseReadinessArtifactUrlWorkflowSummaryViewModel
workflow?.validation?.promotionCandidateArtifactSummaryReady === true;
const toolDbProcessProofSummary = objectOrEmpty(workflow?.validation?.toolDbProcessProofSummary);
const toolDbProcessProofReady = workflow?.validation?.toolDbProcessProofReady === true;
const pythonRemapRuntimeProofSummary = objectOrEmpty(workflow?.validation?.pythonRemapRuntimeProofSummary);
const pythonRemapRuntimeProofReady = workflow?.validation?.pythonRemapRuntimeProofReady === true;
const promotionArtifactRows = objectOrEmpty(promotionCandidateArtifactSummary.artifactRows);
const hardBlockRuntimeFamilyRows = arrayOrEmpty(promotionCandidateArtifactSummary.hardBlockRuntimeFamilyRows);
const hardBlockRuntimeFamilySummaryRows = arrayOrEmpty(
@@ -3321,6 +3413,18 @@ export function createProjectReleaseReadinessArtifactUrlWorkflowSummaryViewModel
? `wasm=${toolDbProcessProofSummary.wasmProtocolReady ? "ready" : "missing"} browser=${toolDbProcessProofSummary.browserProtocolReady ? "ready" : "missing"} opfs=${toolDbProcessProofSummary.opfsPersistenceReady ? "ready" : "missing"} promotion_allowed=${toolDbProcessProofSummary.promotionAllowed ? "1" : "0"}`
: "not provided",
},
{
id: "python-remap-runtime-proof",
label: "Python remap runtime proof",
value: pythonRemapRuntimeProofSummary.ready === true ? "ready" : "locked",
},
{
id: "python-remap-runtime-proof-detail",
label: "Python remap runtime proof detail",
value: pythonRemapRuntimeProofSummary.apiName
? `native=${pythonRemapRuntimeProofSummary.nativeLifecycleReady ? "ready" : "missing"} wasm=${pythonRemapRuntimeProofSummary.wasmLifecycleReady ? "ready" : "missing"} browser=${pythonRemapRuntimeProofSummary.browserLifecycleReady ? "ready" : "missing"} promotion_allowed=${pythonRemapRuntimeProofSummary.promotionAllowed ? "1" : "0"}`
: "not provided",
},
...arrayOrEmpty(workflow?.validation?.virtualHalPromotionFamilyRows).map((row) => ({
id: `virtual-hal-promotion-family-${row.id}`,
label: `Promotion family ${row.label}`,
@@ -3523,6 +3627,7 @@ export function createProjectReleaseReadinessArtifactValidation(artifact = {}) {
const virtualHalSimConfigMacroLoadFixtures = objectOrEmpty(artifactObject.virtualHalSimConfigMacroLoadFixtures);
const virtualHalMotionControllerMatrix = objectOrEmpty(artifactObject.virtualHalMotionControllerMatrix);
const toolDbProcessProofSummary = objectOrEmpty(artifactObject.toolDbProcessProofSummary);
const pythonRemapRuntimeProofSummary = objectOrEmpty(artifactObject.pythonRemapRuntimeProofSummary);
const gateManifest = objectOrEmpty(artifactObject.gateManifest);
const gateExecutionManifest = objectOrEmpty(artifactObject.gateExecutionManifest);
const gateExecutionSummaryViewModel = objectOrEmpty(artifactObject.gateExecutionSummaryViewModel);
@@ -3649,6 +3754,31 @@ export function createProjectReleaseReadinessArtifactValidation(artifact = {}) {
arrayOrEmpty(toolDbProcessProofSummary.requiredCommands).join("\n") ===
expectedToolDbProcessProofSummary.requiredCommands.join("\n") &&
artifactObject.toolDbProcessProofReady === true;
const expectedPythonRemapRuntimeProofSummary =
createPythonRemapRuntimeProofSummary(pythonRemapRuntimeProofSummary);
const pythonRemapRuntimeProofReady =
pythonRemapRuntimeProofSummary.apiName === "python-remap-runtime-proof-summary" &&
pythonRemapRuntimeProofSummary.summaryVersion === 1 &&
pythonRemapRuntimeProofSummary.boundaryClass === "L4-PYTHON-REMAP" &&
pythonRemapRuntimeProofSummary.fixtureFamily === "axis/remap/stop-lookahead/nc_files" &&
pythonRemapRuntimeProofSummary.fixtureId === "stop_lookahead_python_runtime_lifecycle" &&
pythonRemapRuntimeProofSummary.iniPath === "axis/remap/stop-lookahead/demo.ini" &&
pythonRemapRuntimeProofSummary.pythonPathPrepend === "python" &&
pythonRemapRuntimeProofSummary.topLevelPath === "python/toplevel.py" &&
pythonRemapRuntimeProofSummary.callableName === "queuebuster" &&
pythonRemapRuntimeProofSummary.nativeProbeStatus === (
pythonRemapRuntimeProofSummary.nativeLifecycleReady
? "runtime_lifecycle_probe_passed"
: "not_provided"
) &&
pythonRemapRuntimeProofSummary.nativeProofArtifactPath === "wasm-port/build/native/native-runtime-probe-summary.tsv" &&
pythonRemapRuntimeProofSummary.promotionAllowed === false &&
pythonRemapRuntimeProofSummary.executionEnabled === false &&
pythonRemapRuntimeProofSummary.bulkPromotionAllowed === false &&
pythonRemapRuntimeProofSummary.manualLockUpdateRequired === true &&
arrayOrEmpty(pythonRemapRuntimeProofSummary.requiredCommands).join("\n") ===
expectedPythonRemapRuntimeProofSummary.requiredCommands.join("\n") &&
artifactObject.pythonRemapRuntimeProofReady === pythonRemapRuntimeProofSummary.ready;
const axisScreenshotArtifacts = arrayOrEmpty(axisScreenshotArtifactSummary.artifacts);
const blockedRuntimeFamilies = arrayOrEmpty(artifactObject.blockedRuntimeFamilies);
const promotedBlockedFamilies = arrayOrEmpty(artifactObject.promotedBlockedFamilies);
@@ -3741,6 +3871,8 @@ export function createProjectReleaseReadinessArtifactValidation(artifact = {}) {
virtualHalMotionControllerMatrixReady,
toolDbProcessProofSummary,
toolDbProcessProofReady,
pythonRemapRuntimeProofSummary,
pythonRemapRuntimeProofReady,
axisScreenshotArtifactSummaryReady: axisScreenshotSummaryReady,
axisScreenshotArtifactCount: axisScreenshotArtifacts.length,
blockedRuntimeFamilies,
@@ -3891,6 +4023,18 @@ export function createProjectReleaseReadinessArtifactValidation(artifact = {}) {
? `wasm=${toolDbProcessProofSummary.wasmProtocolReady ? "ready" : "missing"} browser=${toolDbProcessProofSummary.browserProtocolReady ? "ready" : "missing"} opfs=${toolDbProcessProofSummary.opfsPersistenceReady ? "ready" : "missing"} promotion_allowed=${toolDbProcessProofSummary.promotionAllowed ? "1" : "0"}`
: "missing",
},
{
id: "python-remap-runtime-proof",
label: "Python remap runtime proof",
value: pythonRemapRuntimeProofSummary.ready === true ? "ready" : "locked",
},
{
id: "python-remap-runtime-proof-detail",
label: "Python remap runtime proof detail",
value: pythonRemapRuntimeProofSummary.apiName
? `native=${pythonRemapRuntimeProofSummary.nativeLifecycleReady ? "ready" : "missing"} wasm=${pythonRemapRuntimeProofSummary.wasmLifecycleReady ? "ready" : "missing"} browser=${pythonRemapRuntimeProofSummary.browserLifecycleReady ? "ready" : "missing"} promotion_allowed=${pythonRemapRuntimeProofSummary.promotionAllowed ? "1" : "0"}`
: "missing",
},
{
id: "blocked-runtime-families",
label: "Blocked runtime families",