1500 lines
52 KiB
JSON
1500 lines
52 KiB
JSON
{
|
|
"apiName": "project-release-readiness-report",
|
|
"reportVersion": 1,
|
|
"phase": "ready",
|
|
"ready": true,
|
|
"missing": [],
|
|
"releaseGate": {
|
|
"command": "wasm-port/tests/host/verify_project_release_gate.sh",
|
|
"passed": true,
|
|
"expectedOutput": "project_release_gate=ok"
|
|
},
|
|
"simConfigInventory": {
|
|
"executed": 28,
|
|
"passed": 28,
|
|
"skipped": 131,
|
|
"unexpectedFail": 0
|
|
},
|
|
"virtualHalSimConfigSourceCoverage": {
|
|
"apiName": "linuxcnc-wasm-virtual-hal-sim-config-source-coverage-report",
|
|
"coverageVersion": 1,
|
|
"source": "linuxcnc-configs-sim-source-derived-virtual-hal",
|
|
"phase": "source-covered",
|
|
"complete": true,
|
|
"webSimulationSatisfied": true,
|
|
"manifestChecked": true,
|
|
"targetCount": 7,
|
|
"sourceFiles": [
|
|
"linuxcnc/configs/sim/axis/foam/axis_foam.ini",
|
|
"linuxcnc/configs/sim/axis/foam/foam.ngc",
|
|
"linuxcnc/configs/sim/axis/geometry/xyzc.ini",
|
|
"linuxcnc/configs/sim/axis/geometry/xyzc.ngc",
|
|
"linuxcnc/configs/sim/axis/geometry/M110",
|
|
"linuxcnc/configs/sim/axis/external_offsets/dynamic_offsets.ini",
|
|
"linuxcnc/configs/sim/axis/external_offsets/eoffsets.ini",
|
|
"linuxcnc/configs/sim/axis/external_offsets/M111",
|
|
"linuxcnc/configs/sim/axis/external_offsets/dyn_demo.ngc",
|
|
"linuxcnc/configs/sim/axis/external_offsets/eoffsets.ngc",
|
|
"linuxcnc/configs/sim/axis/gladevcp/gladevcp_panel.ini",
|
|
"linuxcnc/configs/sim/axis/gladevcp/probe.ngc",
|
|
"linuxcnc/configs/sim/axis/gladevcp/sim.tbl",
|
|
"linuxcnc/configs/sim/woodpecker/woodpecker.ini",
|
|
"linuxcnc/configs/sim/woodpecker/on_abort.ngc",
|
|
"linuxcnc/configs/sim/woodpecker/tool.tbl",
|
|
"linuxcnc/configs/sim/qtdragon/qtdragon_xyz/qtdragon_inch.ini",
|
|
"linuxcnc/configs/sim/qtdragon/qtdragon_xyz/on_abort.ngc",
|
|
"linuxcnc/configs/sim/qtdragon/qtdragon_multi_joint/qtdragon_xyyz.ini",
|
|
"linuxcnc/configs/sim/qtdragon/qtdragon_multi_joint/on_abort.ngc",
|
|
"linuxcnc/configs/sim/qtdragon_hd/qtdragon_hd_xyz/qtdragon_hd_vertical.ini",
|
|
"linuxcnc/configs/sim/qtdragon_hd/qtdragon_hd_xyz/on_abort.ngc",
|
|
"linuxcnc/configs/sim/qtvcp_screens/qtdragon/qtdragon_mpg.ini",
|
|
"linuxcnc/configs/sim/qtvcp_screens/qtdragon/on_abort.ngc",
|
|
"linuxcnc/configs/sim/axis/vismach/melfa-sim/melfa.ini",
|
|
"linuxcnc/configs/sim/axis/vismach/melfa-sim/example.ngc",
|
|
"linuxcnc/configs/sim/axis/vismach/melfa-sim/remap_subs/428remap.ngc",
|
|
"linuxcnc/configs/sim/axis/vismach/puma/puma.ini",
|
|
"linuxcnc/configs/sim/axis/vismach/puma/puma_cube.ngc",
|
|
"linuxcnc/configs/sim/axis/vismach/puma/remap_subs/428remap.ngc"
|
|
],
|
|
"coveredCapabilities": [
|
|
"axis-joint-position-feedback",
|
|
"hal-pin-signal-param-store",
|
|
"halcmd-simulation-replacement",
|
|
"interpreter-hal-bridge-snapshot",
|
|
"motion-controller-simulation-replacement",
|
|
"realtime-hal-simulation-replacement",
|
|
"servo-period-motion-step",
|
|
"spindle-coolant-tool-status",
|
|
"userspace-load-command-stubs"
|
|
],
|
|
"requiredCapabilities": [
|
|
"realtime-hal-simulation-replacement",
|
|
"halcmd-simulation-replacement",
|
|
"motion-controller-simulation-replacement",
|
|
"hal-pin-signal-param-store",
|
|
"userspace-load-command-stubs",
|
|
"servo-period-motion-step",
|
|
"axis-joint-position-feedback",
|
|
"spindle-coolant-tool-status",
|
|
"interpreter-hal-bridge-snapshot"
|
|
],
|
|
"missingCapabilities": [],
|
|
"missingTargets": [],
|
|
"rows": [
|
|
{
|
|
"id": "axis-foam",
|
|
"label": "AXIS foam sim",
|
|
"source": "linuxcnc/configs/sim",
|
|
"sourceFiles": [
|
|
"linuxcnc/configs/sim/axis/foam/axis_foam.ini",
|
|
"linuxcnc/configs/sim/axis/foam/foam.ngc"
|
|
],
|
|
"capabilities": [
|
|
"axis-joint-position-feedback",
|
|
"hal-pin-signal-param-store"
|
|
],
|
|
"evidence": "Vendored LinuxCNC AXIS foam sim config covers axis motion pins and simple program execution.",
|
|
"sourceDerived": true,
|
|
"manifestChecked": true,
|
|
"missingManifestFiles": []
|
|
},
|
|
{
|
|
"id": "axis-geometry-user-m",
|
|
"label": "AXIS geometry user-M sim",
|
|
"source": "linuxcnc/configs/sim",
|
|
"sourceFiles": [
|
|
"linuxcnc/configs/sim/axis/geometry/xyzc.ini",
|
|
"linuxcnc/configs/sim/axis/geometry/xyzc.ngc",
|
|
"linuxcnc/configs/sim/axis/geometry/M110"
|
|
],
|
|
"capabilities": [
|
|
"userspace-load-command-stubs",
|
|
"halcmd-simulation-replacement"
|
|
],
|
|
"evidence": "Vendored LinuxCNC geometry sim config declares USER_M_PATH behavior represented as a simulation boundary.",
|
|
"sourceDerived": true,
|
|
"manifestChecked": true,
|
|
"missingManifestFiles": []
|
|
},
|
|
{
|
|
"id": "external-offsets",
|
|
"label": "External offsets sim",
|
|
"source": "linuxcnc/configs/sim",
|
|
"sourceFiles": [
|
|
"linuxcnc/configs/sim/axis/external_offsets/dynamic_offsets.ini",
|
|
"linuxcnc/configs/sim/axis/external_offsets/eoffsets.ini",
|
|
"linuxcnc/configs/sim/axis/external_offsets/M111",
|
|
"linuxcnc/configs/sim/axis/external_offsets/dyn_demo.ngc",
|
|
"linuxcnc/configs/sim/axis/external_offsets/eoffsets.ngc"
|
|
],
|
|
"capabilities": [
|
|
"motion-controller-simulation-replacement",
|
|
"servo-period-motion-step"
|
|
],
|
|
"evidence": "Vendored LinuxCNC external-offset configs exercise motion/HAL pins and deterministic user-M boundary accounting.",
|
|
"sourceDerived": true,
|
|
"manifestChecked": true,
|
|
"missingManifestFiles": []
|
|
},
|
|
{
|
|
"id": "gladevcp-probe",
|
|
"label": "GladeVCP probe sim",
|
|
"source": "linuxcnc/configs/sim",
|
|
"sourceFiles": [
|
|
"linuxcnc/configs/sim/axis/gladevcp/gladevcp_panel.ini",
|
|
"linuxcnc/configs/sim/axis/gladevcp/probe.ngc",
|
|
"linuxcnc/configs/sim/axis/gladevcp/sim.tbl"
|
|
],
|
|
"capabilities": [
|
|
"interpreter-hal-bridge-snapshot",
|
|
"hal-pin-signal-param-store"
|
|
],
|
|
"evidence": "Vendored LinuxCNC probe sim config covers probe input and tool-table staging without browser-owned CNC semantics.",
|
|
"sourceDerived": true,
|
|
"manifestChecked": true,
|
|
"missingManifestFiles": []
|
|
},
|
|
{
|
|
"id": "woodpecker",
|
|
"label": "Woodpecker sim",
|
|
"source": "linuxcnc/configs/sim",
|
|
"sourceFiles": [
|
|
"linuxcnc/configs/sim/woodpecker/woodpecker.ini",
|
|
"linuxcnc/configs/sim/woodpecker/on_abort.ngc",
|
|
"linuxcnc/configs/sim/woodpecker/tool.tbl"
|
|
],
|
|
"capabilities": [
|
|
"halcmd-simulation-replacement",
|
|
"spindle-coolant-tool-status"
|
|
],
|
|
"evidence": "Vendored LinuxCNC woodpecker sim config supplies deterministic on-abort and tool-table workflows.",
|
|
"sourceDerived": true,
|
|
"manifestChecked": true,
|
|
"missingManifestFiles": []
|
|
},
|
|
{
|
|
"id": "qtdragon-on-abort",
|
|
"label": "QtDragon on-abort sims",
|
|
"source": "linuxcnc/configs/sim",
|
|
"sourceFiles": [
|
|
"linuxcnc/configs/sim/qtdragon/qtdragon_xyz/qtdragon_inch.ini",
|
|
"linuxcnc/configs/sim/qtdragon/qtdragon_xyz/on_abort.ngc",
|
|
"linuxcnc/configs/sim/qtdragon/qtdragon_multi_joint/qtdragon_xyyz.ini",
|
|
"linuxcnc/configs/sim/qtdragon/qtdragon_multi_joint/on_abort.ngc",
|
|
"linuxcnc/configs/sim/qtdragon_hd/qtdragon_hd_xyz/qtdragon_hd_vertical.ini",
|
|
"linuxcnc/configs/sim/qtdragon_hd/qtdragon_hd_xyz/on_abort.ngc",
|
|
"linuxcnc/configs/sim/qtvcp_screens/qtdragon/qtdragon_mpg.ini",
|
|
"linuxcnc/configs/sim/qtvcp_screens/qtdragon/on_abort.ngc"
|
|
],
|
|
"capabilities": [
|
|
"realtime-hal-simulation-replacement",
|
|
"axis-joint-position-feedback"
|
|
],
|
|
"evidence": "Vendored LinuxCNC QtDragon sim configs provide multi-joint and on-abort machine/session coverage for Web simulation.",
|
|
"sourceDerived": true,
|
|
"manifestChecked": true,
|
|
"missingManifestFiles": []
|
|
},
|
|
{
|
|
"id": "vismach-remap-sims",
|
|
"label": "Vismach remap sims",
|
|
"source": "linuxcnc/configs/sim",
|
|
"sourceFiles": [
|
|
"linuxcnc/configs/sim/axis/vismach/melfa-sim/melfa.ini",
|
|
"linuxcnc/configs/sim/axis/vismach/melfa-sim/example.ngc",
|
|
"linuxcnc/configs/sim/axis/vismach/melfa-sim/remap_subs/428remap.ngc",
|
|
"linuxcnc/configs/sim/axis/vismach/puma/puma.ini",
|
|
"linuxcnc/configs/sim/axis/vismach/puma/puma_cube.ngc",
|
|
"linuxcnc/configs/sim/axis/vismach/puma/remap_subs/428remap.ngc"
|
|
],
|
|
"capabilities": [
|
|
"interpreter-hal-bridge-snapshot",
|
|
"motion-controller-simulation-replacement"
|
|
],
|
|
"evidence": "Vendored LinuxCNC vismach remap configs remain LinuxCNC-owned remap/kinematics assets staged through the WASM boundary.",
|
|
"sourceDerived": true,
|
|
"manifestChecked": true,
|
|
"missingManifestFiles": []
|
|
}
|
|
],
|
|
"summaryRows": [
|
|
{
|
|
"id": "targets",
|
|
"label": "LinuxCNC sim config targets",
|
|
"value": "7"
|
|
},
|
|
{
|
|
"id": "source-files",
|
|
"label": "Source files",
|
|
"value": "30"
|
|
},
|
|
{
|
|
"id": "capabilities",
|
|
"label": "Covered capabilities",
|
|
"value": "covered"
|
|
},
|
|
{
|
|
"id": "manifest",
|
|
"label": "Manifest check",
|
|
"value": "passed"
|
|
}
|
|
]
|
|
},
|
|
"virtualHalSimConfigSourceCoverageReady": true,
|
|
"virtualHalMotionControllerMatrix": {
|
|
"apiName": "linuxcnc-wasm-virtual-hal-motion-controller-matrix-report",
|
|
"matrixVersion": 1,
|
|
"source": "linuxcnc-motion-source-derived-virtual-hal",
|
|
"phase": "ready",
|
|
"complete": true,
|
|
"webSimulationSatisfied": true,
|
|
"sourceFiles": [
|
|
"linuxcnc/src/emc/motion/motion.c",
|
|
"linuxcnc/src/emc/motion/axis.c",
|
|
"wasm-port/vendor/linuxcnc/src/emc/motion/motion.h",
|
|
"linuxcnc/src/emc/motion/homing.c"
|
|
],
|
|
"simConfigSourceFiles": [
|
|
"linuxcnc/configs/sim/axis/external_offsets/dynamic_offsets.ini",
|
|
"linuxcnc/configs/sim/axis/external_offsets/eoffsets.ini",
|
|
"linuxcnc/configs/sim/axis/external_offsets/M111",
|
|
"linuxcnc/configs/sim/axis/external_offsets/dyn_demo.ngc",
|
|
"linuxcnc/configs/sim/axis/external_offsets/eoffsets.ngc",
|
|
"linuxcnc/configs/sim/qtdragon/qtdragon_xyz/qtdragon_inch.ini",
|
|
"linuxcnc/configs/sim/qtdragon/qtdragon_xyz/on_abort.ngc",
|
|
"linuxcnc/configs/sim/qtdragon/qtdragon_multi_joint/qtdragon_xyyz.ini",
|
|
"linuxcnc/configs/sim/qtdragon/qtdragon_multi_joint/on_abort.ngc",
|
|
"linuxcnc/configs/sim/qtdragon_hd/qtdragon_hd_xyz/qtdragon_hd_vertical.ini",
|
|
"linuxcnc/configs/sim/qtdragon_hd/qtdragon_hd_xyz/on_abort.ngc",
|
|
"linuxcnc/configs/sim/qtvcp_screens/qtdragon/qtdragon_mpg.ini",
|
|
"linuxcnc/configs/sim/qtvcp_screens/qtdragon/on_abort.ngc",
|
|
"linuxcnc/configs/sim/axis/vismach/melfa-sim/melfa.ini",
|
|
"linuxcnc/configs/sim/axis/vismach/melfa-sim/example.ngc",
|
|
"linuxcnc/configs/sim/axis/vismach/melfa-sim/remap_subs/428remap.ngc",
|
|
"linuxcnc/configs/sim/axis/vismach/puma/puma.ini",
|
|
"linuxcnc/configs/sim/axis/vismach/puma/puma_cube.ngc",
|
|
"linuxcnc/configs/sim/axis/vismach/puma/remap_subs/428remap.ngc"
|
|
],
|
|
"simConfigTargets": [
|
|
"external-offsets",
|
|
"qtdragon-on-abort",
|
|
"vismach-remap-sims"
|
|
],
|
|
"manifestChecked": true,
|
|
"requiredPins": [
|
|
"motion.distance-to-go",
|
|
"motion.in-position",
|
|
"axis.x.pos-cmd",
|
|
"joint.0.pos-fb",
|
|
"axis.y.pos-cmd",
|
|
"axis.z.pos-cmd",
|
|
"halui.axis.x.pos-feedback",
|
|
"joint.1.pos-fb",
|
|
"joint.2.pos-fb",
|
|
"motion.current-vel",
|
|
"motion.requested-vel",
|
|
"axis.a.pos-cmd",
|
|
"axis.b.pos-cmd",
|
|
"axis.c.pos-cmd",
|
|
"joint.3.pos-fb",
|
|
"joint.4.pos-fb",
|
|
"joint.5.pos-fb"
|
|
],
|
|
"fixtureCount": 3,
|
|
"missingFixtures": [],
|
|
"missingSimConfigTargets": [],
|
|
"missingManifestFiles": [],
|
|
"rows": [
|
|
{
|
|
"id": "x-single-axis-servo-dtg",
|
|
"label": "Single-axis servo period target stepping",
|
|
"source": "linuxcnc-motion-source-derived-virtual-motion-controller",
|
|
"sourceFiles": [
|
|
"linuxcnc/src/emc/motion/motion.c",
|
|
"linuxcnc/src/emc/motion/axis.c",
|
|
"wasm-port/vendor/linuxcnc/src/emc/motion/motion.h"
|
|
],
|
|
"simConfigTargets": [
|
|
"external-offsets"
|
|
],
|
|
"simConfigEvidenceRows": [
|
|
{
|
|
"id": "external-offsets",
|
|
"label": "External offsets sim",
|
|
"sourceFiles": [
|
|
"linuxcnc/configs/sim/axis/external_offsets/dynamic_offsets.ini",
|
|
"linuxcnc/configs/sim/axis/external_offsets/eoffsets.ini",
|
|
"linuxcnc/configs/sim/axis/external_offsets/M111",
|
|
"linuxcnc/configs/sim/axis/external_offsets/dyn_demo.ngc",
|
|
"linuxcnc/configs/sim/axis/external_offsets/eoffsets.ngc"
|
|
],
|
|
"capabilities": [
|
|
"motion-controller-simulation-replacement",
|
|
"servo-period-motion-step"
|
|
],
|
|
"evidence": "Vendored LinuxCNC external-offset configs exercise motion/HAL pins and deterministic user-M boundary accounting."
|
|
}
|
|
],
|
|
"simConfigSourceFiles": [
|
|
"linuxcnc/configs/sim/axis/external_offsets/dynamic_offsets.ini",
|
|
"linuxcnc/configs/sim/axis/external_offsets/eoffsets.ini",
|
|
"linuxcnc/configs/sim/axis/external_offsets/M111",
|
|
"linuxcnc/configs/sim/axis/external_offsets/dyn_demo.ngc",
|
|
"linuxcnc/configs/sim/axis/external_offsets/eoffsets.ngc"
|
|
],
|
|
"missingSimConfigTargets": [],
|
|
"manifestChecked": true,
|
|
"missingManifestFiles": [],
|
|
"complete": true,
|
|
"target": {
|
|
"x": 1
|
|
},
|
|
"initialPosition": {
|
|
"x": 0,
|
|
"y": 0,
|
|
"z": 0
|
|
},
|
|
"maxVelocity": 10,
|
|
"dt": 0.05,
|
|
"cycleCount": 1,
|
|
"inPosition": false,
|
|
"distanceToGo": 0.5,
|
|
"currentVel": 10,
|
|
"requestedVel": 10,
|
|
"servoPeriod": 0.05,
|
|
"missingPins": [],
|
|
"inPositionMatched": true,
|
|
"distanceToGoMatched": true,
|
|
"movingMatched": true,
|
|
"axisFeedbackRows": [
|
|
{
|
|
"axis": "x",
|
|
"expected": 0.5,
|
|
"axisPosition": 0.5,
|
|
"jointFeedback": 0.5,
|
|
"haluiFeedback": 0.5,
|
|
"matched": true
|
|
}
|
|
],
|
|
"frameCount": 1
|
|
},
|
|
{
|
|
"id": "xyz-multi-axis-in-position",
|
|
"label": "Multi-axis target reaches in-position",
|
|
"source": "linuxcnc-motion-source-derived-virtual-motion-controller",
|
|
"sourceFiles": [
|
|
"linuxcnc/src/emc/motion/motion.c",
|
|
"linuxcnc/src/emc/motion/axis.c",
|
|
"linuxcnc/src/emc/motion/homing.c",
|
|
"wasm-port/vendor/linuxcnc/src/emc/motion/motion.h"
|
|
],
|
|
"simConfigTargets": [
|
|
"qtdragon-on-abort"
|
|
],
|
|
"simConfigEvidenceRows": [
|
|
{
|
|
"id": "qtdragon-on-abort",
|
|
"label": "QtDragon on-abort sims",
|
|
"sourceFiles": [
|
|
"linuxcnc/configs/sim/qtdragon/qtdragon_xyz/qtdragon_inch.ini",
|
|
"linuxcnc/configs/sim/qtdragon/qtdragon_xyz/on_abort.ngc",
|
|
"linuxcnc/configs/sim/qtdragon/qtdragon_multi_joint/qtdragon_xyyz.ini",
|
|
"linuxcnc/configs/sim/qtdragon/qtdragon_multi_joint/on_abort.ngc",
|
|
"linuxcnc/configs/sim/qtdragon_hd/qtdragon_hd_xyz/qtdragon_hd_vertical.ini",
|
|
"linuxcnc/configs/sim/qtdragon_hd/qtdragon_hd_xyz/on_abort.ngc",
|
|
"linuxcnc/configs/sim/qtvcp_screens/qtdragon/qtdragon_mpg.ini",
|
|
"linuxcnc/configs/sim/qtvcp_screens/qtdragon/on_abort.ngc"
|
|
],
|
|
"capabilities": [
|
|
"realtime-hal-simulation-replacement",
|
|
"axis-joint-position-feedback"
|
|
],
|
|
"evidence": "Vendored LinuxCNC QtDragon sim configs provide multi-joint and on-abort machine/session coverage for Web simulation."
|
|
}
|
|
],
|
|
"simConfigSourceFiles": [
|
|
"linuxcnc/configs/sim/qtdragon/qtdragon_xyz/qtdragon_inch.ini",
|
|
"linuxcnc/configs/sim/qtdragon/qtdragon_xyz/on_abort.ngc",
|
|
"linuxcnc/configs/sim/qtdragon/qtdragon_multi_joint/qtdragon_xyyz.ini",
|
|
"linuxcnc/configs/sim/qtdragon/qtdragon_multi_joint/on_abort.ngc",
|
|
"linuxcnc/configs/sim/qtdragon_hd/qtdragon_hd_xyz/qtdragon_hd_vertical.ini",
|
|
"linuxcnc/configs/sim/qtdragon_hd/qtdragon_hd_xyz/on_abort.ngc",
|
|
"linuxcnc/configs/sim/qtvcp_screens/qtdragon/qtdragon_mpg.ini",
|
|
"linuxcnc/configs/sim/qtvcp_screens/qtdragon/on_abort.ngc"
|
|
],
|
|
"missingSimConfigTargets": [],
|
|
"manifestChecked": true,
|
|
"missingManifestFiles": [],
|
|
"complete": true,
|
|
"target": {
|
|
"x": 1,
|
|
"y": -0.5,
|
|
"z": 0.25
|
|
},
|
|
"initialPosition": {
|
|
"x": 0,
|
|
"y": 0,
|
|
"z": 0
|
|
},
|
|
"maxVelocity": 10,
|
|
"dt": 0.1,
|
|
"cycleCount": 1,
|
|
"inPosition": true,
|
|
"distanceToGo": 0,
|
|
"currentVel": 17.5,
|
|
"requestedVel": 10,
|
|
"servoPeriod": 0.1,
|
|
"missingPins": [],
|
|
"inPositionMatched": true,
|
|
"distanceToGoMatched": true,
|
|
"movingMatched": true,
|
|
"axisFeedbackRows": [
|
|
{
|
|
"axis": "x",
|
|
"expected": 1,
|
|
"axisPosition": 1,
|
|
"jointFeedback": 1,
|
|
"haluiFeedback": 1,
|
|
"matched": true
|
|
},
|
|
{
|
|
"axis": "y",
|
|
"expected": -0.5,
|
|
"axisPosition": -0.5,
|
|
"jointFeedback": -0.5,
|
|
"haluiFeedback": -0.5,
|
|
"matched": true
|
|
},
|
|
{
|
|
"axis": "z",
|
|
"expected": 0.25,
|
|
"axisPosition": 0.25,
|
|
"jointFeedback": 0.25,
|
|
"haluiFeedback": 0.25,
|
|
"matched": true
|
|
}
|
|
],
|
|
"frameCount": 1
|
|
},
|
|
{
|
|
"id": "abc-rotary-feedback",
|
|
"label": "Rotary axis feedback follows target",
|
|
"source": "linuxcnc-motion-source-derived-virtual-motion-controller",
|
|
"sourceFiles": [
|
|
"linuxcnc/src/emc/motion/motion.c",
|
|
"linuxcnc/src/emc/motion/axis.c",
|
|
"wasm-port/vendor/linuxcnc/src/emc/motion/motion.h"
|
|
],
|
|
"simConfigTargets": [
|
|
"vismach-remap-sims"
|
|
],
|
|
"simConfigEvidenceRows": [
|
|
{
|
|
"id": "vismach-remap-sims",
|
|
"label": "Vismach remap sims",
|
|
"sourceFiles": [
|
|
"linuxcnc/configs/sim/axis/vismach/melfa-sim/melfa.ini",
|
|
"linuxcnc/configs/sim/axis/vismach/melfa-sim/example.ngc",
|
|
"linuxcnc/configs/sim/axis/vismach/melfa-sim/remap_subs/428remap.ngc",
|
|
"linuxcnc/configs/sim/axis/vismach/puma/puma.ini",
|
|
"linuxcnc/configs/sim/axis/vismach/puma/puma_cube.ngc",
|
|
"linuxcnc/configs/sim/axis/vismach/puma/remap_subs/428remap.ngc"
|
|
],
|
|
"capabilities": [
|
|
"interpreter-hal-bridge-snapshot",
|
|
"motion-controller-simulation-replacement"
|
|
],
|
|
"evidence": "Vendored LinuxCNC vismach remap configs remain LinuxCNC-owned remap/kinematics assets staged through the WASM boundary."
|
|
}
|
|
],
|
|
"simConfigSourceFiles": [
|
|
"linuxcnc/configs/sim/axis/vismach/melfa-sim/melfa.ini",
|
|
"linuxcnc/configs/sim/axis/vismach/melfa-sim/example.ngc",
|
|
"linuxcnc/configs/sim/axis/vismach/melfa-sim/remap_subs/428remap.ngc",
|
|
"linuxcnc/configs/sim/axis/vismach/puma/puma.ini",
|
|
"linuxcnc/configs/sim/axis/vismach/puma/puma_cube.ngc",
|
|
"linuxcnc/configs/sim/axis/vismach/puma/remap_subs/428remap.ngc"
|
|
],
|
|
"missingSimConfigTargets": [],
|
|
"manifestChecked": true,
|
|
"missingManifestFiles": [],
|
|
"complete": true,
|
|
"target": {
|
|
"a": 0.4,
|
|
"b": -0.2,
|
|
"c": 0.1
|
|
},
|
|
"initialPosition": {
|
|
"a": 0,
|
|
"b": 0,
|
|
"c": 0
|
|
},
|
|
"maxVelocity": 8,
|
|
"dt": 0.1,
|
|
"cycleCount": 1,
|
|
"inPosition": true,
|
|
"distanceToGo": 0,
|
|
"currentVel": 7,
|
|
"requestedVel": 8,
|
|
"servoPeriod": 0.1,
|
|
"missingPins": [],
|
|
"inPositionMatched": true,
|
|
"distanceToGoMatched": true,
|
|
"movingMatched": true,
|
|
"axisFeedbackRows": [
|
|
{
|
|
"axis": "a",
|
|
"expected": 0.4,
|
|
"axisPosition": 0.4,
|
|
"jointFeedback": 0.4,
|
|
"haluiFeedback": 0.4,
|
|
"matched": true
|
|
},
|
|
{
|
|
"axis": "b",
|
|
"expected": -0.2,
|
|
"axisPosition": -0.2,
|
|
"jointFeedback": -0.2,
|
|
"haluiFeedback": -0.2,
|
|
"matched": true
|
|
},
|
|
{
|
|
"axis": "c",
|
|
"expected": 0.1,
|
|
"axisPosition": 0.1,
|
|
"jointFeedback": 0.1,
|
|
"haluiFeedback": 0.1,
|
|
"matched": true
|
|
}
|
|
],
|
|
"frameCount": 1
|
|
}
|
|
],
|
|
"summaryRows": [
|
|
{
|
|
"id": "fixtures",
|
|
"label": "Motion matrix fixtures",
|
|
"value": "3"
|
|
},
|
|
{
|
|
"id": "source",
|
|
"label": "LinuxCNC motion source",
|
|
"value": "source-derived"
|
|
},
|
|
{
|
|
"id": "sim-config-source",
|
|
"label": "LinuxCNC sim config source",
|
|
"value": "source-derived"
|
|
},
|
|
{
|
|
"id": "manifest",
|
|
"label": "Sim config manifest check",
|
|
"value": "passed"
|
|
},
|
|
{
|
|
"id": "servo-period",
|
|
"label": "Servo period stepping",
|
|
"value": "covered"
|
|
},
|
|
{
|
|
"id": "axis-joint-feedback",
|
|
"label": "Axis/joint feedback",
|
|
"value": "covered"
|
|
}
|
|
]
|
|
},
|
|
"virtualHalMotionControllerMatrixReady": true,
|
|
"blockedRuntimeFamilies": [
|
|
"L4-USER-M-PROCESS",
|
|
"L4-TOOL-DB",
|
|
"L4-PYTHON-REMAP"
|
|
],
|
|
"promotedRuntimeFamilies": [],
|
|
"promotedBlockedFamilies": [],
|
|
"axisScreenshotArtifactSummary": {
|
|
"apiName": "project-release-axis-screenshot-artifact-summary",
|
|
"summaryVersion": 1,
|
|
"phase": "ready",
|
|
"ready": true,
|
|
"expectedViewports": [
|
|
"desktop-preview",
|
|
"desktop-dro",
|
|
"mobile-preview",
|
|
"mobile-mdi"
|
|
],
|
|
"artifactCount": 0,
|
|
"viewportNames": [],
|
|
"missingViewports": [
|
|
"desktop-preview",
|
|
"desktop-dro",
|
|
"mobile-preview",
|
|
"mobile-mdi"
|
|
],
|
|
"undersizedViewports": [],
|
|
"totalScreenshotBytes": 0,
|
|
"artifacts": []
|
|
},
|
|
"gateManifest": {
|
|
"apiName": "project-release-gate-manifest",
|
|
"manifestVersion": 1,
|
|
"gateCount": 12,
|
|
"gateIds": [
|
|
"diff-check",
|
|
"vendor-sync",
|
|
"standalone-cnc-semantics",
|
|
"interp-wasm",
|
|
"sim-config-inventory",
|
|
"ini-panel-browser",
|
|
"opfs-session-browser",
|
|
"release-artifact-url-browser",
|
|
"project-batch-acceptance",
|
|
"ui-node-smokes",
|
|
"host-smokes",
|
|
"project-release-gate"
|
|
],
|
|
"gates": [
|
|
{
|
|
"id": "diff-check",
|
|
"label": "Git diff check",
|
|
"command": "git diff --check",
|
|
"expectedOutput": null
|
|
},
|
|
{
|
|
"id": "vendor-sync",
|
|
"label": "Vendor sync guard",
|
|
"command": "wasm-port/tools/verify_vendor_sync.sh",
|
|
"expectedOutput": "vendor sync up to date"
|
|
},
|
|
{
|
|
"id": "standalone-cnc-semantics",
|
|
"label": "Standalone CNC semantics guard",
|
|
"command": "wasm-port/tools/verify_no_standalone_cnc_semantics.sh",
|
|
"expectedOutput": "standalone CNC semantics guard complete"
|
|
},
|
|
{
|
|
"id": "interp-wasm",
|
|
"label": "Interpreter WASM Node smoke",
|
|
"command": "SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh",
|
|
"expectedOutput": "interp_wasm_node_smoke=ok"
|
|
},
|
|
{
|
|
"id": "sim-config-inventory",
|
|
"label": "Sim config inventory WASM Node smoke",
|
|
"command": "SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh",
|
|
"expectedOutput": "sim_configs_wasm_node_inventory_unexpected_fail=0"
|
|
},
|
|
{
|
|
"id": "ini-panel-browser",
|
|
"label": "INI panel browser smoke",
|
|
"command": "SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_ini_panel_browser.sh",
|
|
"expectedOutput": "browser_ini_shell_integration_workflow_smoke=ok"
|
|
},
|
|
{
|
|
"id": "opfs-session-browser",
|
|
"label": "OPFS session browser workflow smoke",
|
|
"command": "SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_opfs_session_workflow_browser.sh",
|
|
"expectedOutput": "browser_opfs_session_workflow_smoke=ok"
|
|
},
|
|
{
|
|
"id": "release-artifact-url-browser",
|
|
"label": "Release artifact URL browser workflow smoke",
|
|
"command": "SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_release_artifact_url_workflow_browser.sh",
|
|
"expectedOutput": "browser_release_artifact_url_workflow_smoke=ok"
|
|
},
|
|
{
|
|
"id": "project-batch-acceptance",
|
|
"label": "Project batch acceptance workflow smoke",
|
|
"command": "wasm-port/tests/sdk/node/verify_project_batch_acceptance_workflow.sh",
|
|
"expectedOutput": "project_batch_acceptance_workflow_node_smoke=ok"
|
|
},
|
|
{
|
|
"id": "ui-node-smokes",
|
|
"label": "UI Node smokes",
|
|
"command": "wasm-port/tests/ui/node/verify_ui_node_smokes.sh",
|
|
"expectedOutput": "ui_node_smokes=ok"
|
|
},
|
|
{
|
|
"id": "host-smokes",
|
|
"label": "Host aggregate smoke",
|
|
"command": "wasm-port/tests/host/verify_host_smokes.sh",
|
|
"expectedOutput": "host_wasm_opfs_browser_smokes=ok"
|
|
},
|
|
{
|
|
"id": "project-release-gate",
|
|
"label": "Project release gate",
|
|
"command": "wasm-port/tests/host/verify_project_release_gate.sh",
|
|
"expectedOutput": "project_release_gate=ok"
|
|
}
|
|
]
|
|
},
|
|
"gateExecutionManifest": {
|
|
"apiName": "project-release-gate-execution-manifest",
|
|
"manifestVersion": 1,
|
|
"phase": "ready",
|
|
"ready": true,
|
|
"gateCount": 12,
|
|
"passedCount": 12,
|
|
"unknownCount": 0,
|
|
"missingGateIds": [],
|
|
"manifest": {
|
|
"apiName": "project-release-gate-manifest",
|
|
"manifestVersion": 1,
|
|
"gateCount": 12,
|
|
"gateIds": [
|
|
"diff-check",
|
|
"vendor-sync",
|
|
"standalone-cnc-semantics",
|
|
"interp-wasm",
|
|
"sim-config-inventory",
|
|
"ini-panel-browser",
|
|
"opfs-session-browser",
|
|
"release-artifact-url-browser",
|
|
"project-batch-acceptance",
|
|
"ui-node-smokes",
|
|
"host-smokes",
|
|
"project-release-gate"
|
|
],
|
|
"gates": [
|
|
{
|
|
"id": "diff-check",
|
|
"label": "Git diff check",
|
|
"command": "git diff --check",
|
|
"expectedOutput": null
|
|
},
|
|
{
|
|
"id": "vendor-sync",
|
|
"label": "Vendor sync guard",
|
|
"command": "wasm-port/tools/verify_vendor_sync.sh",
|
|
"expectedOutput": "vendor sync up to date"
|
|
},
|
|
{
|
|
"id": "standalone-cnc-semantics",
|
|
"label": "Standalone CNC semantics guard",
|
|
"command": "wasm-port/tools/verify_no_standalone_cnc_semantics.sh",
|
|
"expectedOutput": "standalone CNC semantics guard complete"
|
|
},
|
|
{
|
|
"id": "interp-wasm",
|
|
"label": "Interpreter WASM Node smoke",
|
|
"command": "SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh",
|
|
"expectedOutput": "interp_wasm_node_smoke=ok"
|
|
},
|
|
{
|
|
"id": "sim-config-inventory",
|
|
"label": "Sim config inventory WASM Node smoke",
|
|
"command": "SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh",
|
|
"expectedOutput": "sim_configs_wasm_node_inventory_unexpected_fail=0"
|
|
},
|
|
{
|
|
"id": "ini-panel-browser",
|
|
"label": "INI panel browser smoke",
|
|
"command": "SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_ini_panel_browser.sh",
|
|
"expectedOutput": "browser_ini_shell_integration_workflow_smoke=ok"
|
|
},
|
|
{
|
|
"id": "opfs-session-browser",
|
|
"label": "OPFS session browser workflow smoke",
|
|
"command": "SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_opfs_session_workflow_browser.sh",
|
|
"expectedOutput": "browser_opfs_session_workflow_smoke=ok"
|
|
},
|
|
{
|
|
"id": "release-artifact-url-browser",
|
|
"label": "Release artifact URL browser workflow smoke",
|
|
"command": "SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_release_artifact_url_workflow_browser.sh",
|
|
"expectedOutput": "browser_release_artifact_url_workflow_smoke=ok"
|
|
},
|
|
{
|
|
"id": "project-batch-acceptance",
|
|
"label": "Project batch acceptance workflow smoke",
|
|
"command": "wasm-port/tests/sdk/node/verify_project_batch_acceptance_workflow.sh",
|
|
"expectedOutput": "project_batch_acceptance_workflow_node_smoke=ok"
|
|
},
|
|
{
|
|
"id": "ui-node-smokes",
|
|
"label": "UI Node smokes",
|
|
"command": "wasm-port/tests/ui/node/verify_ui_node_smokes.sh",
|
|
"expectedOutput": "ui_node_smokes=ok"
|
|
},
|
|
{
|
|
"id": "host-smokes",
|
|
"label": "Host aggregate smoke",
|
|
"command": "wasm-port/tests/host/verify_host_smokes.sh",
|
|
"expectedOutput": "host_wasm_opfs_browser_smokes=ok"
|
|
},
|
|
{
|
|
"id": "project-release-gate",
|
|
"label": "Project release gate",
|
|
"command": "wasm-port/tests/host/verify_project_release_gate.sh",
|
|
"expectedOutput": "project_release_gate=ok"
|
|
}
|
|
]
|
|
},
|
|
"rows": [
|
|
{
|
|
"id": "diff-check",
|
|
"label": "Git diff check",
|
|
"command": "git diff --check",
|
|
"expectedOutput": null,
|
|
"observedOutput": null,
|
|
"observedOutputCount": 0,
|
|
"status": "passed",
|
|
"passed": true,
|
|
"evidence": "explicit-result"
|
|
},
|
|
{
|
|
"id": "vendor-sync",
|
|
"label": "Vendor sync guard",
|
|
"command": "wasm-port/tools/verify_vendor_sync.sh",
|
|
"expectedOutput": "vendor sync up to date",
|
|
"observedOutput": null,
|
|
"observedOutputCount": 0,
|
|
"status": "passed",
|
|
"passed": true,
|
|
"evidence": "explicit-result"
|
|
},
|
|
{
|
|
"id": "standalone-cnc-semantics",
|
|
"label": "Standalone CNC semantics guard",
|
|
"command": "wasm-port/tools/verify_no_standalone_cnc_semantics.sh",
|
|
"expectedOutput": "standalone CNC semantics guard complete",
|
|
"observedOutput": null,
|
|
"observedOutputCount": 0,
|
|
"status": "passed",
|
|
"passed": true,
|
|
"evidence": "explicit-result"
|
|
},
|
|
{
|
|
"id": "interp-wasm",
|
|
"label": "Interpreter WASM Node smoke",
|
|
"command": "SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh",
|
|
"expectedOutput": "interp_wasm_node_smoke=ok",
|
|
"observedOutput": null,
|
|
"observedOutputCount": 0,
|
|
"status": "passed",
|
|
"passed": true,
|
|
"evidence": "explicit-result"
|
|
},
|
|
{
|
|
"id": "sim-config-inventory",
|
|
"label": "Sim config inventory WASM Node smoke",
|
|
"command": "SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh",
|
|
"expectedOutput": "sim_configs_wasm_node_inventory_unexpected_fail=0",
|
|
"observedOutput": null,
|
|
"observedOutputCount": 0,
|
|
"status": "passed",
|
|
"passed": true,
|
|
"evidence": "explicit-result"
|
|
},
|
|
{
|
|
"id": "ini-panel-browser",
|
|
"label": "INI panel browser smoke",
|
|
"command": "SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_ini_panel_browser.sh",
|
|
"expectedOutput": "browser_ini_shell_integration_workflow_smoke=ok",
|
|
"observedOutput": null,
|
|
"observedOutputCount": 0,
|
|
"status": "passed",
|
|
"passed": true,
|
|
"evidence": "explicit-result"
|
|
},
|
|
{
|
|
"id": "opfs-session-browser",
|
|
"label": "OPFS session browser workflow smoke",
|
|
"command": "SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_opfs_session_workflow_browser.sh",
|
|
"expectedOutput": "browser_opfs_session_workflow_smoke=ok",
|
|
"observedOutput": null,
|
|
"observedOutputCount": 0,
|
|
"status": "passed",
|
|
"passed": true,
|
|
"evidence": "explicit-result"
|
|
},
|
|
{
|
|
"id": "release-artifact-url-browser",
|
|
"label": "Release artifact URL browser workflow smoke",
|
|
"command": "SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_release_artifact_url_workflow_browser.sh",
|
|
"expectedOutput": "browser_release_artifact_url_workflow_smoke=ok",
|
|
"observedOutput": null,
|
|
"observedOutputCount": 0,
|
|
"status": "passed",
|
|
"passed": true,
|
|
"evidence": "explicit-result"
|
|
},
|
|
{
|
|
"id": "project-batch-acceptance",
|
|
"label": "Project batch acceptance workflow smoke",
|
|
"command": "wasm-port/tests/sdk/node/verify_project_batch_acceptance_workflow.sh",
|
|
"expectedOutput": "project_batch_acceptance_workflow_node_smoke=ok",
|
|
"observedOutput": null,
|
|
"observedOutputCount": 0,
|
|
"status": "passed",
|
|
"passed": true,
|
|
"evidence": "explicit-result"
|
|
},
|
|
{
|
|
"id": "ui-node-smokes",
|
|
"label": "UI Node smokes",
|
|
"command": "wasm-port/tests/ui/node/verify_ui_node_smokes.sh",
|
|
"expectedOutput": "ui_node_smokes=ok",
|
|
"observedOutput": null,
|
|
"observedOutputCount": 0,
|
|
"status": "passed",
|
|
"passed": true,
|
|
"evidence": "explicit-result"
|
|
},
|
|
{
|
|
"id": "host-smokes",
|
|
"label": "Host aggregate smoke",
|
|
"command": "wasm-port/tests/host/verify_host_smokes.sh",
|
|
"expectedOutput": "host_wasm_opfs_browser_smokes=ok",
|
|
"observedOutput": null,
|
|
"observedOutputCount": 0,
|
|
"status": "passed",
|
|
"passed": true,
|
|
"evidence": "explicit-result"
|
|
},
|
|
{
|
|
"id": "project-release-gate",
|
|
"label": "Project release gate",
|
|
"command": "wasm-port/tests/host/verify_project_release_gate.sh",
|
|
"expectedOutput": "project_release_gate=ok",
|
|
"observedOutput": null,
|
|
"observedOutputCount": 0,
|
|
"status": "passed",
|
|
"passed": true,
|
|
"evidence": "explicit-result"
|
|
}
|
|
]
|
|
},
|
|
"gateExecutionSummaryViewModel": {
|
|
"apiName": "project-release-gate-execution-summary-view-model",
|
|
"viewModelVersion": 1,
|
|
"phase": "ready",
|
|
"ready": true,
|
|
"title": "Project release gate execution",
|
|
"statusText": "Ready",
|
|
"detailText": "All release gate evidence present",
|
|
"statusLine": "Ready: All release gate evidence present",
|
|
"gateCount": 12,
|
|
"passedCount": 12,
|
|
"unknownCount": 0,
|
|
"missingGateIds": [],
|
|
"nextGateId": null,
|
|
"evidenceCounts": {
|
|
"explicit-result": 12
|
|
},
|
|
"rows": [
|
|
{
|
|
"id": "gate-results",
|
|
"label": "Release gate evidence",
|
|
"value": "12/12 passed"
|
|
},
|
|
{
|
|
"id": "unknown-gates",
|
|
"label": "Unknown gates",
|
|
"value": "0"
|
|
},
|
|
{
|
|
"id": "next-gate",
|
|
"label": "Next gate",
|
|
"value": "none"
|
|
},
|
|
{
|
|
"id": "expected-output-evidence",
|
|
"label": "Expected-output evidence",
|
|
"value": "0"
|
|
},
|
|
{
|
|
"id": "explicit-result-evidence",
|
|
"label": "Explicit-result evidence",
|
|
"value": "12"
|
|
},
|
|
{
|
|
"id": "missing",
|
|
"label": "Missing gate evidence",
|
|
"value": "none"
|
|
}
|
|
],
|
|
"gateRows": [
|
|
{
|
|
"id": "diff-check",
|
|
"label": "Git diff check",
|
|
"command": "git diff --check",
|
|
"expectedOutput": null,
|
|
"observedOutput": null,
|
|
"evidence": "explicit-result",
|
|
"status": "passed",
|
|
"passed": true
|
|
},
|
|
{
|
|
"id": "vendor-sync",
|
|
"label": "Vendor sync guard",
|
|
"command": "wasm-port/tools/verify_vendor_sync.sh",
|
|
"expectedOutput": "vendor sync up to date",
|
|
"observedOutput": null,
|
|
"evidence": "explicit-result",
|
|
"status": "passed",
|
|
"passed": true
|
|
},
|
|
{
|
|
"id": "standalone-cnc-semantics",
|
|
"label": "Standalone CNC semantics guard",
|
|
"command": "wasm-port/tools/verify_no_standalone_cnc_semantics.sh",
|
|
"expectedOutput": "standalone CNC semantics guard complete",
|
|
"observedOutput": null,
|
|
"evidence": "explicit-result",
|
|
"status": "passed",
|
|
"passed": true
|
|
},
|
|
{
|
|
"id": "interp-wasm",
|
|
"label": "Interpreter WASM Node smoke",
|
|
"command": "SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh",
|
|
"expectedOutput": "interp_wasm_node_smoke=ok",
|
|
"observedOutput": null,
|
|
"evidence": "explicit-result",
|
|
"status": "passed",
|
|
"passed": true
|
|
},
|
|
{
|
|
"id": "sim-config-inventory",
|
|
"label": "Sim config inventory WASM Node smoke",
|
|
"command": "SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh",
|
|
"expectedOutput": "sim_configs_wasm_node_inventory_unexpected_fail=0",
|
|
"observedOutput": null,
|
|
"evidence": "explicit-result",
|
|
"status": "passed",
|
|
"passed": true
|
|
},
|
|
{
|
|
"id": "ini-panel-browser",
|
|
"label": "INI panel browser smoke",
|
|
"command": "SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_ini_panel_browser.sh",
|
|
"expectedOutput": "browser_ini_shell_integration_workflow_smoke=ok",
|
|
"observedOutput": null,
|
|
"evidence": "explicit-result",
|
|
"status": "passed",
|
|
"passed": true
|
|
},
|
|
{
|
|
"id": "opfs-session-browser",
|
|
"label": "OPFS session browser workflow smoke",
|
|
"command": "SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_opfs_session_workflow_browser.sh",
|
|
"expectedOutput": "browser_opfs_session_workflow_smoke=ok",
|
|
"observedOutput": null,
|
|
"evidence": "explicit-result",
|
|
"status": "passed",
|
|
"passed": true
|
|
},
|
|
{
|
|
"id": "release-artifact-url-browser",
|
|
"label": "Release artifact URL browser workflow smoke",
|
|
"command": "SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_release_artifact_url_workflow_browser.sh",
|
|
"expectedOutput": "browser_release_artifact_url_workflow_smoke=ok",
|
|
"observedOutput": null,
|
|
"evidence": "explicit-result",
|
|
"status": "passed",
|
|
"passed": true
|
|
},
|
|
{
|
|
"id": "project-batch-acceptance",
|
|
"label": "Project batch acceptance workflow smoke",
|
|
"command": "wasm-port/tests/sdk/node/verify_project_batch_acceptance_workflow.sh",
|
|
"expectedOutput": "project_batch_acceptance_workflow_node_smoke=ok",
|
|
"observedOutput": null,
|
|
"evidence": "explicit-result",
|
|
"status": "passed",
|
|
"passed": true
|
|
},
|
|
{
|
|
"id": "ui-node-smokes",
|
|
"label": "UI Node smokes",
|
|
"command": "wasm-port/tests/ui/node/verify_ui_node_smokes.sh",
|
|
"expectedOutput": "ui_node_smokes=ok",
|
|
"observedOutput": null,
|
|
"evidence": "explicit-result",
|
|
"status": "passed",
|
|
"passed": true
|
|
},
|
|
{
|
|
"id": "host-smokes",
|
|
"label": "Host aggregate smoke",
|
|
"command": "wasm-port/tests/host/verify_host_smokes.sh",
|
|
"expectedOutput": "host_wasm_opfs_browser_smokes=ok",
|
|
"observedOutput": null,
|
|
"evidence": "explicit-result",
|
|
"status": "passed",
|
|
"passed": true
|
|
},
|
|
{
|
|
"id": "project-release-gate",
|
|
"label": "Project release gate",
|
|
"command": "wasm-port/tests/host/verify_project_release_gate.sh",
|
|
"expectedOutput": "project_release_gate=ok",
|
|
"observedOutput": null,
|
|
"evidence": "explicit-result",
|
|
"status": "passed",
|
|
"passed": true
|
|
}
|
|
]
|
|
},
|
|
"gateResultMatrix": {
|
|
"apiName": "project-release-gate-result-matrix",
|
|
"matrixVersion": 1,
|
|
"phase": "ready",
|
|
"ready": true,
|
|
"gateCount": 12,
|
|
"passedCount": 12,
|
|
"unknownCount": 0,
|
|
"missingGateIds": [],
|
|
"manifest": {
|
|
"apiName": "project-release-gate-manifest",
|
|
"manifestVersion": 1,
|
|
"gateCount": 12,
|
|
"gateIds": [
|
|
"diff-check",
|
|
"vendor-sync",
|
|
"standalone-cnc-semantics",
|
|
"interp-wasm",
|
|
"sim-config-inventory",
|
|
"ini-panel-browser",
|
|
"opfs-session-browser",
|
|
"release-artifact-url-browser",
|
|
"project-batch-acceptance",
|
|
"ui-node-smokes",
|
|
"host-smokes",
|
|
"project-release-gate"
|
|
],
|
|
"gates": [
|
|
{
|
|
"id": "diff-check",
|
|
"label": "Git diff check",
|
|
"command": "git diff --check",
|
|
"expectedOutput": null
|
|
},
|
|
{
|
|
"id": "vendor-sync",
|
|
"label": "Vendor sync guard",
|
|
"command": "wasm-port/tools/verify_vendor_sync.sh",
|
|
"expectedOutput": "vendor sync up to date"
|
|
},
|
|
{
|
|
"id": "standalone-cnc-semantics",
|
|
"label": "Standalone CNC semantics guard",
|
|
"command": "wasm-port/tools/verify_no_standalone_cnc_semantics.sh",
|
|
"expectedOutput": "standalone CNC semantics guard complete"
|
|
},
|
|
{
|
|
"id": "interp-wasm",
|
|
"label": "Interpreter WASM Node smoke",
|
|
"command": "SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh",
|
|
"expectedOutput": "interp_wasm_node_smoke=ok"
|
|
},
|
|
{
|
|
"id": "sim-config-inventory",
|
|
"label": "Sim config inventory WASM Node smoke",
|
|
"command": "SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh",
|
|
"expectedOutput": "sim_configs_wasm_node_inventory_unexpected_fail=0"
|
|
},
|
|
{
|
|
"id": "ini-panel-browser",
|
|
"label": "INI panel browser smoke",
|
|
"command": "SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_ini_panel_browser.sh",
|
|
"expectedOutput": "browser_ini_shell_integration_workflow_smoke=ok"
|
|
},
|
|
{
|
|
"id": "opfs-session-browser",
|
|
"label": "OPFS session browser workflow smoke",
|
|
"command": "SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_opfs_session_workflow_browser.sh",
|
|
"expectedOutput": "browser_opfs_session_workflow_smoke=ok"
|
|
},
|
|
{
|
|
"id": "release-artifact-url-browser",
|
|
"label": "Release artifact URL browser workflow smoke",
|
|
"command": "SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_release_artifact_url_workflow_browser.sh",
|
|
"expectedOutput": "browser_release_artifact_url_workflow_smoke=ok"
|
|
},
|
|
{
|
|
"id": "project-batch-acceptance",
|
|
"label": "Project batch acceptance workflow smoke",
|
|
"command": "wasm-port/tests/sdk/node/verify_project_batch_acceptance_workflow.sh",
|
|
"expectedOutput": "project_batch_acceptance_workflow_node_smoke=ok"
|
|
},
|
|
{
|
|
"id": "ui-node-smokes",
|
|
"label": "UI Node smokes",
|
|
"command": "wasm-port/tests/ui/node/verify_ui_node_smokes.sh",
|
|
"expectedOutput": "ui_node_smokes=ok"
|
|
},
|
|
{
|
|
"id": "host-smokes",
|
|
"label": "Host aggregate smoke",
|
|
"command": "wasm-port/tests/host/verify_host_smokes.sh",
|
|
"expectedOutput": "host_wasm_opfs_browser_smokes=ok"
|
|
},
|
|
{
|
|
"id": "project-release-gate",
|
|
"label": "Project release gate",
|
|
"command": "wasm-port/tests/host/verify_project_release_gate.sh",
|
|
"expectedOutput": "project_release_gate=ok"
|
|
}
|
|
]
|
|
},
|
|
"rows": [
|
|
{
|
|
"id": "diff-check",
|
|
"label": "Git diff check",
|
|
"command": "git diff --check",
|
|
"expectedOutput": null,
|
|
"status": "passed",
|
|
"passed": true
|
|
},
|
|
{
|
|
"id": "vendor-sync",
|
|
"label": "Vendor sync guard",
|
|
"command": "wasm-port/tools/verify_vendor_sync.sh",
|
|
"expectedOutput": "vendor sync up to date",
|
|
"status": "passed",
|
|
"passed": true
|
|
},
|
|
{
|
|
"id": "standalone-cnc-semantics",
|
|
"label": "Standalone CNC semantics guard",
|
|
"command": "wasm-port/tools/verify_no_standalone_cnc_semantics.sh",
|
|
"expectedOutput": "standalone CNC semantics guard complete",
|
|
"status": "passed",
|
|
"passed": true
|
|
},
|
|
{
|
|
"id": "interp-wasm",
|
|
"label": "Interpreter WASM Node smoke",
|
|
"command": "SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh",
|
|
"expectedOutput": "interp_wasm_node_smoke=ok",
|
|
"status": "passed",
|
|
"passed": true
|
|
},
|
|
{
|
|
"id": "sim-config-inventory",
|
|
"label": "Sim config inventory WASM Node smoke",
|
|
"command": "SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh",
|
|
"expectedOutput": "sim_configs_wasm_node_inventory_unexpected_fail=0",
|
|
"status": "passed",
|
|
"passed": true
|
|
},
|
|
{
|
|
"id": "ini-panel-browser",
|
|
"label": "INI panel browser smoke",
|
|
"command": "SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_ini_panel_browser.sh",
|
|
"expectedOutput": "browser_ini_shell_integration_workflow_smoke=ok",
|
|
"status": "passed",
|
|
"passed": true
|
|
},
|
|
{
|
|
"id": "opfs-session-browser",
|
|
"label": "OPFS session browser workflow smoke",
|
|
"command": "SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_opfs_session_workflow_browser.sh",
|
|
"expectedOutput": "browser_opfs_session_workflow_smoke=ok",
|
|
"status": "passed",
|
|
"passed": true
|
|
},
|
|
{
|
|
"id": "release-artifact-url-browser",
|
|
"label": "Release artifact URL browser workflow smoke",
|
|
"command": "SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_release_artifact_url_workflow_browser.sh",
|
|
"expectedOutput": "browser_release_artifact_url_workflow_smoke=ok",
|
|
"status": "passed",
|
|
"passed": true
|
|
},
|
|
{
|
|
"id": "project-batch-acceptance",
|
|
"label": "Project batch acceptance workflow smoke",
|
|
"command": "wasm-port/tests/sdk/node/verify_project_batch_acceptance_workflow.sh",
|
|
"expectedOutput": "project_batch_acceptance_workflow_node_smoke=ok",
|
|
"status": "passed",
|
|
"passed": true
|
|
},
|
|
{
|
|
"id": "ui-node-smokes",
|
|
"label": "UI Node smokes",
|
|
"command": "wasm-port/tests/ui/node/verify_ui_node_smokes.sh",
|
|
"expectedOutput": "ui_node_smokes=ok",
|
|
"status": "passed",
|
|
"passed": true
|
|
},
|
|
{
|
|
"id": "host-smokes",
|
|
"label": "Host aggregate smoke",
|
|
"command": "wasm-port/tests/host/verify_host_smokes.sh",
|
|
"expectedOutput": "host_wasm_opfs_browser_smokes=ok",
|
|
"status": "passed",
|
|
"passed": true
|
|
},
|
|
{
|
|
"id": "project-release-gate",
|
|
"label": "Project release gate",
|
|
"command": "wasm-port/tests/host/verify_project_release_gate.sh",
|
|
"expectedOutput": "project_release_gate=ok",
|
|
"status": "passed",
|
|
"passed": true
|
|
}
|
|
]
|
|
},
|
|
"gateActionPlan": {
|
|
"apiName": "project-release-gate-action-plan",
|
|
"planVersion": 1,
|
|
"phase": "ready",
|
|
"ready": true,
|
|
"gateCount": 12,
|
|
"completedCount": 12,
|
|
"pendingCount": 0,
|
|
"completedGateIds": [
|
|
"diff-check",
|
|
"vendor-sync",
|
|
"standalone-cnc-semantics",
|
|
"interp-wasm",
|
|
"sim-config-inventory",
|
|
"ini-panel-browser",
|
|
"opfs-session-browser",
|
|
"release-artifact-url-browser",
|
|
"project-batch-acceptance",
|
|
"ui-node-smokes",
|
|
"host-smokes",
|
|
"project-release-gate"
|
|
],
|
|
"pendingGateIds": [],
|
|
"nextGateId": null,
|
|
"nextCommand": null,
|
|
"commands": [],
|
|
"shellScript": "# Project release gates are already marked passed.\n",
|
|
"rows": []
|
|
},
|
|
"gates": [
|
|
{
|
|
"id": "diff-check",
|
|
"label": "Git diff check",
|
|
"command": "git diff --check",
|
|
"expectedOutput": null,
|
|
"status": "passed",
|
|
"passed": true
|
|
},
|
|
{
|
|
"id": "vendor-sync",
|
|
"label": "Vendor sync guard",
|
|
"command": "wasm-port/tools/verify_vendor_sync.sh",
|
|
"expectedOutput": "vendor sync up to date",
|
|
"status": "passed",
|
|
"passed": true
|
|
},
|
|
{
|
|
"id": "standalone-cnc-semantics",
|
|
"label": "Standalone CNC semantics guard",
|
|
"command": "wasm-port/tools/verify_no_standalone_cnc_semantics.sh",
|
|
"expectedOutput": "standalone CNC semantics guard complete",
|
|
"status": "passed",
|
|
"passed": true
|
|
},
|
|
{
|
|
"id": "interp-wasm",
|
|
"label": "Interpreter WASM Node smoke",
|
|
"command": "SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh",
|
|
"expectedOutput": "interp_wasm_node_smoke=ok",
|
|
"status": "passed",
|
|
"passed": true
|
|
},
|
|
{
|
|
"id": "sim-config-inventory",
|
|
"label": "Sim config inventory WASM Node smoke",
|
|
"command": "SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh",
|
|
"expectedOutput": "sim_configs_wasm_node_inventory_unexpected_fail=0",
|
|
"status": "passed",
|
|
"passed": true
|
|
},
|
|
{
|
|
"id": "ini-panel-browser",
|
|
"label": "INI panel browser smoke",
|
|
"command": "SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_ini_panel_browser.sh",
|
|
"expectedOutput": "browser_ini_shell_integration_workflow_smoke=ok",
|
|
"status": "passed",
|
|
"passed": true
|
|
},
|
|
{
|
|
"id": "opfs-session-browser",
|
|
"label": "OPFS session browser workflow smoke",
|
|
"command": "SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_opfs_session_workflow_browser.sh",
|
|
"expectedOutput": "browser_opfs_session_workflow_smoke=ok",
|
|
"status": "passed",
|
|
"passed": true
|
|
},
|
|
{
|
|
"id": "release-artifact-url-browser",
|
|
"label": "Release artifact URL browser workflow smoke",
|
|
"command": "SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_release_artifact_url_workflow_browser.sh",
|
|
"expectedOutput": "browser_release_artifact_url_workflow_smoke=ok",
|
|
"status": "passed",
|
|
"passed": true
|
|
},
|
|
{
|
|
"id": "project-batch-acceptance",
|
|
"label": "Project batch acceptance workflow smoke",
|
|
"command": "wasm-port/tests/sdk/node/verify_project_batch_acceptance_workflow.sh",
|
|
"expectedOutput": "project_batch_acceptance_workflow_node_smoke=ok",
|
|
"status": "passed",
|
|
"passed": true
|
|
},
|
|
{
|
|
"id": "ui-node-smokes",
|
|
"label": "UI Node smokes",
|
|
"command": "wasm-port/tests/ui/node/verify_ui_node_smokes.sh",
|
|
"expectedOutput": "ui_node_smokes=ok",
|
|
"status": "passed",
|
|
"passed": true
|
|
},
|
|
{
|
|
"id": "host-smokes",
|
|
"label": "Host aggregate smoke",
|
|
"command": "wasm-port/tests/host/verify_host_smokes.sh",
|
|
"expectedOutput": "host_wasm_opfs_browser_smokes=ok",
|
|
"status": "passed",
|
|
"passed": true
|
|
},
|
|
{
|
|
"id": "project-release-gate",
|
|
"label": "Project release gate",
|
|
"command": "wasm-port/tests/host/verify_project_release_gate.sh",
|
|
"expectedOutput": "project_release_gate=ok",
|
|
"status": "passed",
|
|
"passed": true
|
|
}
|
|
],
|
|
"rows": [
|
|
{
|
|
"id": "project-release-gate",
|
|
"label": "Project release gate",
|
|
"value": "passed"
|
|
},
|
|
{
|
|
"id": "sim-config-inventory",
|
|
"label": "Sim config inventory",
|
|
"value": "unexpected_fail=0"
|
|
},
|
|
{
|
|
"id": "virtual-hal-sim-config-source-coverage",
|
|
"label": "Virtual HAL sim-config source coverage",
|
|
"value": "ready"
|
|
},
|
|
{
|
|
"id": "virtual-hal-motion-controller-matrix",
|
|
"label": "Virtual HAL motion controller matrix",
|
|
"value": "ready"
|
|
},
|
|
{
|
|
"id": "blocked-runtime-families",
|
|
"label": "Blocked runtime families",
|
|
"value": "L4-USER-M-PROCESS, L4-TOOL-DB, L4-PYTHON-REMAP"
|
|
},
|
|
{
|
|
"id": "axis-screenshot-artifacts",
|
|
"label": "AXIS screenshot artifacts",
|
|
"value": "not captured"
|
|
}
|
|
]
|
|
}
|