完善五轴 RTCP 仿真与验证资料

This commit is contained in:
2026-07-01 21:49:58 -04:00
parent ac4e855b2b
commit d0d58998ac
159 changed files with 6771594 additions and 339 deletions

View File

@@ -8,6 +8,8 @@ assert.equal(blocked.phase, "blocked");
assert.equal(blocked.promotionAllowed, false);
assert.equal(blocked.fullLinuxCncProgramExecutionReady, false);
assert.equal(blocked.missing.includes("linuxcnc kinematics WASM frame"), true);
assert.equal(blocked.missing.includes("tool DB Web/WASM simulation process"), true);
assert.equal(blocked.missing.includes("controlled user-M Web/WASM simulation process"), true);
assert.equal(blocked.blockers.some((blocker) => blocker.includes("LinuxCNC task runtime")), true);
const canonicalState = {
@@ -105,6 +107,45 @@ assert.equal(remap.semanticBoundary, "linuxcnc_machine_file_remap_ready_planner_
assert.equal(remap.satisfied.includes("fiveaxis-remap-machine-file-run"), true);
assert.equal(remap.evidence.machineFileFlags.length, 3);
const gmoccapyMachineFile = createFullLinuxCncExecutionBoundary({
...canonicalState,
programExecution: {
...canonicalState.programExecution,
plannerTiming: {
plannerRuntimeReady: true,
semanticBoundary: "linuxcnc_tp_queue_runtime_timing_from_canonical_motion",
},
summary: {
...canonicalState.programExecution.summary,
plannerRuntimeReady: true,
},
},
machineFileStaging: {
status: "staged",
fileCount: 18,
},
machineFileExecution: {
sourceMode: "linuxcnc-machine-file-remap-wasm",
summary: {
machineFileExecutionReady: true,
remapRuntimeReady: false,
},
resultText: [
"fiveaxis_parse_remap_1=5",
"fiveaxis_parse_remap_2=5",
"fiveaxis_remaps_ready=0",
"fiveaxis_file_reached_exit=1",
"fiveaxis_linuxcnc_remap_file_execute=0",
].join("\n"),
},
});
assert.equal(gmoccapyMachineFile.machineFileBackedRemapReady, true);
assert.equal(gmoccapyMachineFile.remapRuntimeReady, false);
assert.equal(gmoccapyMachineFile.semanticBoundary, "linuxcnc_machine_file_remap_ready_planner_task_hal_blocked");
assert.equal(gmoccapyMachineFile.satisfied.includes("fiveaxis-remap-machine-file-run"), true);
assert.equal(gmoccapyMachineFile.evidence.machineFileFlags.length, 1);
const taskHalPromoted = createFullLinuxCncExecutionBoundary({
...canonicalState,
programExecution: remap.programExecution || {
@@ -153,6 +194,18 @@ const taskHalPromoted = createFullLinuxCncExecutionBoundary({
halChangedPinCount: 4,
},
},
toolDbReadiness: {
toolDbProcessReady: true,
toolDbProcessScope: "web_simulation_only",
hostToolDbProcessReady: false,
toolCount: 10,
},
controlledUserMReadiness: {
externalUserMProcessReady: true,
externalUserMProcessScope: "web_simulation_only",
hostExternalUserMProcessReady: false,
arbitraryUserMExecution: false,
},
});
assert.equal(taskHalPromoted.semanticBoundary, "linuxcnc_task_motion_hal_wasm_simulation_runtime");
@@ -162,8 +215,15 @@ assert.equal(taskHalPromoted.fullLinuxCncProgramExecutionReady, true);
assert.equal(taskHalPromoted.promotionAllowed, true);
assert.equal(taskHalPromoted.hardwareDrive, false);
assert.equal(taskHalPromoted.hostRealtimeKernel, false);
assert.equal(taskHalPromoted.externalUserMProcessReady, false);
assert.equal(taskHalPromoted.toolDbProcessReady, false);
assert.equal(taskHalPromoted.externalUserMProcessReady, true);
assert.equal(taskHalPromoted.externalUserMProcessScope, "web_simulation_only");
assert.equal(taskHalPromoted.toolDbProcessReady, true);
assert.equal(taskHalPromoted.toolDbProcessScope, "web_simulation_only");
assert.equal(taskHalPromoted.hostExternalUserMProcessReady, false);
assert.equal(taskHalPromoted.hostToolDbProcessReady, false);
assert.equal(taskHalPromoted.arbitraryUserMExecution, false);
assert.equal(taskHalPromoted.satisfied.includes("tool-db-web-simulation"), true);
assert.equal(taskHalPromoted.satisfied.includes("controlled-user-m-web-simulation"), true);
assert.equal(taskHalPromoted.evidence.taskCycle, 2);
console.log("full_execution_boundary_smoke=ok");