devagent-physical-engine 1.7.0__tar.gz → 1.7.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- devagent_physical_engine-1.7.2/PKG-INFO +584 -0
- devagent_physical_engine-1.7.2/README.md +543 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/pyproject.toml +4 -2
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/__init__.py +1 -1
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/industrial_motion_hotfix_v170.py +12 -5
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/industrial_motion_v170.py +45 -2
- devagent_physical_engine-1.7.2/src/devagent_physical_engine/one_command_v16.py +89 -0
- devagent_physical_engine-1.7.2/src/devagent_physical_engine/ros2/industrial_sequence_planner_v171.py +112 -0
- devagent_physical_engine-1.7.2/src/devagent_physical_engine/ros2/industrial_sequence_planner_v172.py +239 -0
- devagent_physical_engine-1.7.2/src/devagent_physical_engine.egg-info/PKG-INFO +584 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine.egg-info/SOURCES.txt +4 -0
- devagent_physical_engine-1.7.2/tests/test_golden_abb_runner_v171.py +44 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_golden_abb_showcase.py +1 -4
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_industrial_motion_v170.py +55 -4
- devagent_physical_engine-1.7.2/tests/test_transfer_place_diagnostic_v172.py +162 -0
- devagent_physical_engine-1.7.0/PKG-INFO +0 -670
- devagent_physical_engine-1.7.0/README.md +0 -629
- devagent_physical_engine-1.7.0/src/devagent_physical_engine/one_command_v16.py +0 -28
- devagent_physical_engine-1.7.0/src/devagent_physical_engine.egg-info/PKG-INFO +0 -670
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/NOTICE +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/setup.cfg +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/agent/__init__.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/agent/compiler.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/agent/contracts.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/agent/coordinator.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/agent/critic.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/agent/evidence.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/agent/interpreter.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/agent/planner.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/agent/recovery.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/agent/routing.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/agent/runtime.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/agent/semantic.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/agent/structured.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/ai_cli.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/cli.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/commercial.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/commercial_campaign.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/commercial_cli.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/commercial_importer.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/commercial_intelligence.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/commercial_readiness.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/commercial_repository.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/continuous_clearance.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/doctor.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/engineering_agent.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/engineering_request.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/evidence_replay.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/evidence_trust.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/execution.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/models.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/one_command.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/one_command_runtime.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/one_command_v15.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/operating_envelope.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/optimization/__init__.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/optimization/benchmark.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/optimization/candidates.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/optimization/contracts.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/optimization/evaluator.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/optimization/evidence.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/optimization/experience.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/optimization/measured.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/optimization/optimizer.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/optimization/orchestrator.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/physical_campaign.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/physical_evidence.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/physical_motion.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/planning.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/pose_math.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/preexecution_contract.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/production_authority.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/production_grade.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/project.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/provider_adapters/__init__.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/provider_adapters/anthropic.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/provider_adapters/common.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/provider_adapters/factory.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/provider_adapters/gemini.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/provider_adapters/openai.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/provider_criterion.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/provider_qualification.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/providers.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/qualification.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/qualification_cli.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/qualification_harness.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/reference_workcell.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/report_test_execution.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/report_test_execution_strict.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/robot_platform.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/robots.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/ros2/__init__.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/ros2/acceptance.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/ros2/commands.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/ros2/continuous_clearance_probe.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/ros2/doctor.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/ros2/fk_pose.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/ros2/fk_probe.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/ros2/frame_alignment.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/ros2/gazebo_cli.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/ros2/gazebo_pose.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/ros2/gazebo_world.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/ros2/industrial_sequence_planner_v170.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/ros2/joint_state_probe.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/ros2/joint_state_recorder.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/ros2/measured_motion.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/ros2/moveit_joint_plan_probe.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/ros2/moveit_joint_plan_v161_probe.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/ros2/moveit_scene.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/ros2/moveit_task_planner.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/ros2/pilz_sequence_plan_probe.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/ros2/preexecution.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/ros2/qualification.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/ros2/qualification_v10.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/ros2/qualification_v11.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/ros2/qualification_v12.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/ros2/report_test_visualization.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/ros2/report_test_visualization_v170.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/ros2/scene_probe.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/ros2/state_validity_probe.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/ros2/support_contact_acm_probe_v170.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/ros2/support_contact_lease_v170.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/ros2/support_contact_runner_v161.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/ros2/support_contact_v161.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/ros2/task_adapter.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/ros2/task_visualization.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/ros2/tf_probe.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/ros2/tool_scene.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/ros2/tool_scene_probe.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/ros2/trajectory.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/ros2/trajectory_action_probe.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/ros2/trajectory_tracking.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/ros2/ur5e.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/ros2/ur5e_adapter.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/ros2/ur5e_v10_adapter.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/ros2/workpiece_follow.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/ros2/workpiece_gazebo_follower.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/ros2/workpiece_scene.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/ros2/workpiece_scene_probe.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/selective_verification.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/selective_verification_v16.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/setup_profile.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/sim_real_qualification.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/simulation.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/simulation_platform.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/smooth_motion_hotfix_v162.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/support_contact_hotfix_v161.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/tool_collision.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/trajectory_qualification.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/twin.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/twin_builder.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/twin_codec.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/twin_materialization.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/user_cli.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/user_cli_v15.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/user_cli_v16.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/verification.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine/workpiece_lifecycle.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine.egg-info/dependency_links.txt +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine.egg-info/entry_points.txt +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine.egg-info/requires.txt +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/src/devagent_physical_engine.egg-info/top_level.txt +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_agent_core.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_agent_semantic_hardening.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_ai_cli.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_ai_cli_v07.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_commercial_importer_v1.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_commercial_intelligence_v15.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_commercial_readiness_v1.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_commercial_v1.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_continuous_clearance_v011.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_core.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_engineering_request_v07.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_evidence_replay_v12.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_evidence_trust_coverage_v12.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_evidence_trust_transport_v12.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_evidence_trust_v12.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_evidence_viewer_palette_v130.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_gazebo_cli_v0122.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_interpreter_profiles_v08.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_joint_state_probe_v0125.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_live_provider_qualification.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_measured_motion_v10.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_moveit_planning_diagnostics_v0125.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_moveit_scene_v0123.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_natural_language_agent_v07.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_one_command_hardening_v13.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_one_command_pose_hardening_v15.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_one_command_regression_v141.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_one_command_v13.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_openai_strict_schema_v0113.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_optimization_v05.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_physical_campaign_v09.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_physical_evidence_v09.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_physical_motion_v09.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_planning_fallback_v012.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_pose_math_v0125.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_preexecution_contract_v10.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_production_authority_v11.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_production_grade_coverage_v11.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_production_grade_v11.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_project_spine_v013.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_provider_and_qualification.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_provider_criterion_v15.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_qualification_cli_lifecycle_v06.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_qualification_harness_v06.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_readme_pypi.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_real_provider_adapters.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_reference_workcell_ros_frames_v0125.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_reference_workcell_v012.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_report_test_contract_coverage_v16.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_report_test_lineage_v16.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_report_test_visual_execution_v16.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_robot_platform_v08.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_ros2_production_receipts_v011.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_ros2_simulation.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_ros_trajectory_v09.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_selective_verification_v14.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_setup_profile.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_sim_real_qualification_v011.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_simulation_platform_v08.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_smooth_motion_hotfix_v162.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_support_contact_hotfix_v161.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_tool_collision_v011.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_tool_scene_v0124.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_trajectory_action_probe_v0125.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_trajectory_qualification_v09.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_trajectory_tracking_v0125.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_twin_materialization_v10.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_twin_v08.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_ur5e_adapter_scopes_v09.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_ur5e_v10_adapter_scopes.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_user_cli_interactive_v131.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_user_cli_progress_v131.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_user_cli_report_visual_v16.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_user_cli_selective_v14.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_user_cli_v15.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_user_cli_v15_hotfix_inheritance.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_v052_stabilization.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_v08_catalog_mapping_regression.py +0 -0
- {devagent_physical_engine-1.7.0 → devagent_physical_engine-1.7.2}/tests/test_workpiece_lifecycle_v011.py +0 -0
|
@@ -0,0 +1,584 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: devagent-physical-engine
|
|
3
|
+
Version: 1.7.2
|
|
4
|
+
Summary: Production-grade verification-first robotics evidence runtime with one-command customer intake, validated requirement mapping, adaptive industrial Pilz PTP/LIN report-test Gazebo execution, transfer/place segment diagnostics, requirement-driven test generation, selective verification, deterministic Twin lineage, measured physical verification, replay inspection, regression, and FAT evidence.
|
|
5
|
+
Author: Tom Ha
|
|
6
|
+
License: All Rights Reserved
|
|
7
|
+
Project-URL: Homepage, https://github.com/tomha85/devagent-physical-engine
|
|
8
|
+
Project-URL: Repository, https://github.com/tomha85/devagent-physical-engine
|
|
9
|
+
Project-URL: Issues, https://github.com/tomha85/devagent-physical-engine/issues
|
|
10
|
+
Keywords: robotics,industrial-automation,agentic-ai,ros2,gazebo,moveit,pilz,verification,selective-testing,digital-twin,fat-testing,regression,evidence,replay
|
|
11
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: Operating System :: OS Independent
|
|
14
|
+
Classifier: Programming Language :: Python :: 3
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
18
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
19
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
20
|
+
Requires-Python: >=3.11
|
|
21
|
+
Description-Content-Type: text/markdown
|
|
22
|
+
License-File: NOTICE
|
|
23
|
+
Requires-Dist: PyYAML<7,>=6.0
|
|
24
|
+
Provides-Extra: openai
|
|
25
|
+
Requires-Dist: openai<4,>=3.0; extra == "openai"
|
|
26
|
+
Provides-Extra: anthropic
|
|
27
|
+
Requires-Dist: anthropic<2,>=1.0; extra == "anthropic"
|
|
28
|
+
Provides-Extra: gemini
|
|
29
|
+
Requires-Dist: google-genai<3,>=2.0; extra == "gemini"
|
|
30
|
+
Provides-Extra: ai
|
|
31
|
+
Requires-Dist: openai<4,>=3.0; extra == "ai"
|
|
32
|
+
Requires-Dist: anthropic<2,>=1.0; extra == "ai"
|
|
33
|
+
Requires-Dist: google-genai<3,>=2.0; extra == "ai"
|
|
34
|
+
Provides-Extra: dev
|
|
35
|
+
Requires-Dist: build==1.6.0; extra == "dev"
|
|
36
|
+
Requires-Dist: twine==7.0.0; extra == "dev"
|
|
37
|
+
Requires-Dist: coverage[toml]<8,>=7.6; extra == "dev"
|
|
38
|
+
Requires-Dist: ruff<1,>=0.12; extra == "dev"
|
|
39
|
+
Requires-Dist: pip-audit<3,>=2.9; extra == "dev"
|
|
40
|
+
Dynamic: license-file
|
|
41
|
+
|
|
42
|
+
# DevAgent Smart Physical Engine
|
|
43
|
+
|
|
44
|
+
[](https://pypi.org/project/devagent-physical-engine/)
|
|
45
|
+
[](https://pypi.org/project/devagent-physical-engine/)
|
|
46
|
+
[](#project-status)
|
|
47
|
+
|
|
48
|
+
**Verification-first commissioning engineering for robotics and industrial automation.**
|
|
49
|
+
|
|
50
|
+
DevAgent turns a customer engineering folder into a bounded verification workflow with immutable Digital Twin lineage, deterministic requirement verdicts, requirement-driven test cases, exact-Twin measured simulation evidence, regression analysis, FAT reporting, replay inspection, and selective retesting.
|
|
51
|
+
|
|
52
|
+
```text
|
|
53
|
+
customer engineering files
|
|
54
|
+
↓
|
|
55
|
+
intake + SHA-256 inventory
|
|
56
|
+
↓
|
|
57
|
+
validated Requirement → Criterion mapping
|
|
58
|
+
↓
|
|
59
|
+
immutable Digital Twin revision
|
|
60
|
+
↓
|
|
61
|
+
requirement-driven nominal / boundary / fault cases
|
|
62
|
+
↓
|
|
63
|
+
qualified exact-Twin simulation when supported
|
|
64
|
+
↓
|
|
65
|
+
measured evidence
|
|
66
|
+
↓
|
|
67
|
+
PASS / FAIL / NOT_TESTED
|
|
68
|
+
↓
|
|
69
|
+
regression + FAT report + Evidence Viewer
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
> **AI proposes. Deterministic engines validate, compile, verify, measure, and gate promotion. OEM robot controllers, PLCs, safety PLCs, and certified safety systems remain authoritative.**
|
|
73
|
+
|
|
74
|
+
## Quick start
|
|
75
|
+
|
|
76
|
+
Python 3.11+ is required.
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
python -m pip install --upgrade devagent-physical-engine==1.7.2
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Verify the installed package:
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
python -c "import devagent_physical_engine as d; print(d.__version__)"
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
Expected:
|
|
89
|
+
|
|
90
|
+
```text
|
|
91
|
+
1.7.2
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Run the normal customer workflow:
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
devagent verify ./customer-project
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Request simulation:
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
devagent verify ./customer-project --simulate
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
Open the Evidence Viewer and keep the engineering terminal active:
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
devagent verify ./customer-project --simulate --open
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
For machine-readable CI output:
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
devagent verify ./customer-project --json
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
Default locations:
|
|
119
|
+
|
|
120
|
+
```text
|
|
121
|
+
Evidence database: ~/.devagent/projects.db
|
|
122
|
+
Results: <customer-project>/devagent-results/
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
## What DevAgent proves
|
|
126
|
+
|
|
127
|
+
DevAgent separates planning, execution, measurement, verdicts, and authority.
|
|
128
|
+
|
|
129
|
+
```text
|
|
130
|
+
requirement
|
|
131
|
+
↓
|
|
132
|
+
verification criterion
|
|
133
|
+
↓
|
|
134
|
+
verification case
|
|
135
|
+
↓
|
|
136
|
+
exact Twin revision/hash
|
|
137
|
+
↓
|
|
138
|
+
qualified simulation when available
|
|
139
|
+
↓
|
|
140
|
+
measured evidence
|
|
141
|
+
↓
|
|
142
|
+
PASS / FAIL / NOT_TESTED
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
A generated plan is not physical proof. A replay is not a new execution. A simulation result does not grant site qualification or real-robot authority.
|
|
146
|
+
|
|
147
|
+
Current hard boundaries remain:
|
|
148
|
+
|
|
149
|
+
```text
|
|
150
|
+
site_qualification = false
|
|
151
|
+
real_execution_allowed = false
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
unless separately proven by an appropriate qualified process.
|
|
155
|
+
|
|
156
|
+
## v1.6 report-test visual execution foundation
|
|
157
|
+
|
|
158
|
+
v1.6 connected report tests to the exact stored Twin instead of a separate demo scene.
|
|
159
|
+
|
|
160
|
+
A supported physical report test follows:
|
|
161
|
+
|
|
162
|
+
```text
|
|
163
|
+
Requirement
|
|
164
|
+
→ stable Test ID
|
|
165
|
+
→ immutable Requirement → Case mapping
|
|
166
|
+
→ exact Verification Plan ID/hash
|
|
167
|
+
→ exact Case ID
|
|
168
|
+
→ exact Twin revision/hash
|
|
169
|
+
→ qualified Gazebo/MoveIt execution
|
|
170
|
+
→ typed physical_measurement artifact
|
|
171
|
+
→ deterministic verdict
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
Interactive example:
|
|
175
|
+
|
|
176
|
+
```text
|
|
177
|
+
devagent> tests
|
|
178
|
+
devagent> simulate TEST-PERF-001
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
Measured physical criteria include:
|
|
182
|
+
|
|
183
|
+
```text
|
|
184
|
+
cycle_time_max_s
|
|
185
|
+
minimum_clearance_m
|
|
186
|
+
final_tcp_error_max_m
|
|
187
|
+
max_tracking_error_rad
|
|
188
|
+
collision_free
|
|
189
|
+
physical_completed
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
Structural/Twin criteria include:
|
|
193
|
+
|
|
194
|
+
```text
|
|
195
|
+
planning_allowed
|
|
196
|
+
physics_allowed
|
|
197
|
+
entity_present
|
|
198
|
+
validation_issue_absent
|
|
199
|
+
twin_state
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
A requirement without deterministic evidence remains `NOT_TESTED`; it is never auto-passed from prose or AI interpretation.
|
|
203
|
+
|
|
204
|
+
## v1.6.1 support-contact lift hotfix
|
|
205
|
+
|
|
206
|
+
The packaged UR5e reference load starts with the workpiece resting on its source support. During attached-object lift departure, DevAgent preserves the complete live MoveIt Allowed Collision Matrix and temporarily enables exactly the attached-workpiece ↔ source-support pair.
|
|
207
|
+
|
|
208
|
+
That allowance is scoped only to lift departure. Transfer/place keep normal collision checking. DevAgent does not globally disable collision checking or replace the live matrix with an unsafe sparse matrix.
|
|
209
|
+
|
|
210
|
+
## v1.6.2 slower measured visual execution
|
|
211
|
+
|
|
212
|
+
The packaged visual task uses conservative MoveIt scaling so motion is inspectable while remaining real trajectory execution:
|
|
213
|
+
|
|
214
|
+
```text
|
|
215
|
+
velocity scale: 12%
|
|
216
|
+
acceleration scale: 8%
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
The joint-state recorder also rejects duplicate/backward ROS timestamps instead of manufacturing synthetic time. Collision, endpoint, tracking, Twin-lineage, and authority checks remain fail-closed.
|
|
220
|
+
|
|
221
|
+
## v1.7 industrial PTP/LIN execution
|
|
222
|
+
|
|
223
|
+
v1.7 moves the qualified UR5e report test to the MoveIt Pilz Industrial Motion Planner rather than hand-building interpolation.
|
|
224
|
+
|
|
225
|
+
The bounded task sequence is:
|
|
226
|
+
|
|
227
|
+
```text
|
|
228
|
+
HOME
|
|
229
|
+
↓ PTP
|
|
230
|
+
PRE_PICK
|
|
231
|
+
↓ LIN
|
|
232
|
+
PICK
|
|
233
|
+
↓ grasp hard boundary
|
|
234
|
+
LIFT
|
|
235
|
+
↓ LIN support departure hard boundary
|
|
236
|
+
TRANSFER
|
|
237
|
+
↓ PTP
|
|
238
|
+
PLACE
|
|
239
|
+
↓ LIN release hard boundary
|
|
240
|
+
RETRACT
|
|
241
|
+
↓ LIN
|
|
242
|
+
HOME
|
|
243
|
+
↓ PTP
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
Execution groups:
|
|
247
|
+
|
|
248
|
+
```text
|
|
249
|
+
approach_pick PTP → LIN
|
|
250
|
+
lift_departure LIN
|
|
251
|
+
transfer_place PTP → LIN
|
|
252
|
+
retreat_home LIN → PTP
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
Conservative limits:
|
|
256
|
+
|
|
257
|
+
```text
|
|
258
|
+
PTP velocity scale: 10%
|
|
259
|
+
PTP acceleration scale: 6%
|
|
260
|
+
LIN velocity scale: 6%
|
|
261
|
+
LIN acceleration scale: 4%
|
|
262
|
+
requested blend radius: 12 mm
|
|
263
|
+
workpiece follow target: 60 Hz
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
MoveIt/Pilz owns geometry, timestamps, collision checking, velocity/acceleration time parameterization, and the returned `RobotTrajectory`. DevAgent does not fake smoothness with teleports or sleeps.
|
|
267
|
+
|
|
268
|
+
## v1.7.1 adaptive Pilz blend hotfix
|
|
269
|
+
|
|
270
|
+
A real ROS 2 Jazzy + Gazebo Harmonic + MoveIt/Pilz target-stack run showed:
|
|
271
|
+
|
|
272
|
+
```text
|
|
273
|
+
approach_pick PASS
|
|
274
|
+
lift_departure PASS
|
|
275
|
+
transfer_place Pilz FAILURE(99999)
|
|
276
|
+
execution NOT STARTED
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
Pilz can reject a sequence when a requested blend sphere is not feasible for that specific geometry. v1.7.1 therefore keeps the same PTP/LIN targets, attached/world scene contract, collision policy, velocity/acceleration limits, and execution authority while retrying only the internal blend radius:
|
|
280
|
+
|
|
281
|
+
```text
|
|
282
|
+
12 mm
|
|
283
|
+
↓ if Pilz returns pilz_sequence_planning_failed
|
|
284
|
+
6 mm
|
|
285
|
+
↓
|
|
286
|
+
3 mm
|
|
287
|
+
↓
|
|
288
|
+
0 mm
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
Every candidate is still planned and collision-checked by MoveIt/Pilz. DevAgent selects the largest candidate Pilz actually accepts. If the zero-blend candidate fails, execution remains blocked.
|
|
292
|
+
|
|
293
|
+
The fallback is intentionally narrow:
|
|
294
|
+
|
|
295
|
+
```text
|
|
296
|
+
no target modification
|
|
297
|
+
no planner-type substitution
|
|
298
|
+
no collision disable
|
|
299
|
+
no speed increase
|
|
300
|
+
no hand-built interpolation
|
|
301
|
+
no fake PASS
|
|
302
|
+
no fallback to an unqualified simulator or robot
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
The selected blend radii and every planning attempt receipt remain attached to motion metadata for auditability.
|
|
306
|
+
|
|
307
|
+
## v1.7.2 transfer/place diagnostic hotfix
|
|
308
|
+
|
|
309
|
+
A target-stack qualification run proved that `transfer_place` still returned Pilz `FAILURE(99999)` for every v1.7.1 blend candidate, including zero blend. v1.7.2 therefore does not keep guessing at blend values. When that exact bounded failure occurs, DevAgent remains fail-closed and runs two independent **plan-only** probes against the same attached-workpiece PlanningScene:
|
|
310
|
+
|
|
311
|
+
```text
|
|
312
|
+
lift target
|
|
313
|
+
↓
|
|
314
|
+
transfer PTP probe
|
|
315
|
+
↓ independent start at transfer target
|
|
316
|
+
place LIN probe
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
The result is classified deterministically as one of:
|
|
320
|
+
|
|
321
|
+
```text
|
|
322
|
+
pilz_transfer_segment_planning_failed
|
|
323
|
+
pilz_place_segment_planning_failed
|
|
324
|
+
pilz_transfer_and_place_segment_planning_failed
|
|
325
|
+
pilz_transfer_place_sequence_composition_failed
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
Each probe writes its own request/receipt plus a `transfer-place-diagnostic.json` summary. These probes never execute motion and never relax targets, planner types, collision policy, attached-workpiece scene state, velocity/acceleration limits, Twin lineage, or real-execution authority. Their purpose is to identify the exact target-stack defect before changing physical execution semantics.
|
|
329
|
+
|
|
330
|
+
## Qualified visual-execution scope
|
|
331
|
+
|
|
332
|
+
The packaged visual executor remains intentionally narrow:
|
|
333
|
+
|
|
334
|
+
```text
|
|
335
|
+
robot: UR5e
|
|
336
|
+
operation: load
|
|
337
|
+
case scope: one nominal mapped physical report case
|
|
338
|
+
runtime: Ubuntu 24.04 + ROS 2 Jazzy + Gazebo Harmonic + MoveIt/Pilz
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
Unsupported customer Twins, unqualified robot profiles, boundary/fault cases outside the qualified scope, ambiguous case mappings, or incomplete lineage fail closed.
|
|
342
|
+
|
|
343
|
+
Cross-vendor projects such as ABB may still be imported, normalized, structurally evaluated, and reported, but they do not silently enter the UR5e-only physical executor.
|
|
344
|
+
|
|
345
|
+
## Interactive engineering session
|
|
346
|
+
|
|
347
|
+
Use `--interactive`, or `--open` from a real terminal, to keep a bounded prompt:
|
|
348
|
+
|
|
349
|
+
```text
|
|
350
|
+
status
|
|
351
|
+
tests
|
|
352
|
+
test SELECTOR
|
|
353
|
+
simulate [SELECTOR]
|
|
354
|
+
rerun [SELECTOR]
|
|
355
|
+
rerun failed
|
|
356
|
+
rerun blocked
|
|
357
|
+
rerun affected
|
|
358
|
+
replay
|
|
359
|
+
report
|
|
360
|
+
log
|
|
361
|
+
help
|
|
362
|
+
quit
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
Selectors can be requirement IDs, test IDs, or bounded groups:
|
|
366
|
+
|
|
367
|
+
```text
|
|
368
|
+
REQ-PERF-001
|
|
369
|
+
TEST-PERF-001
|
|
370
|
+
failed
|
|
371
|
+
blocked
|
|
372
|
+
affected
|
|
373
|
+
all
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
`test SELECTOR` evaluates deterministic/evidence checks without commanding the simulator.
|
|
377
|
+
|
|
378
|
+
`simulate TEST-X` requests qualified execution of the selected mapped physical report case.
|
|
379
|
+
|
|
380
|
+
`replay` reconstructs persisted evidence identity; it never commands Gazebo, MoveIt, a robot, PLC, or safety PLC.
|
|
381
|
+
|
|
382
|
+
## Customer input
|
|
383
|
+
|
|
384
|
+
A customer folder can contain the engineering material the team already has:
|
|
385
|
+
|
|
386
|
+
```text
|
|
387
|
+
ACME_CNC_CELL_TEST/
|
|
388
|
+
├── project.yaml
|
|
389
|
+
├── requirements.xlsx
|
|
390
|
+
├── devagent-twin.yaml
|
|
391
|
+
├── robot.urdf
|
|
392
|
+
├── robot.urdf.xacro
|
|
393
|
+
├── robot.srdf
|
|
394
|
+
├── tcp.yaml
|
|
395
|
+
├── calibration.yaml
|
|
396
|
+
├── layout/
|
|
397
|
+
│ ├── cell_layout.yaml
|
|
398
|
+
│ └── meshes/
|
|
399
|
+
├── robot_program/
|
|
400
|
+
│ └── mission.yaml
|
|
401
|
+
└── expected/
|
|
402
|
+
└── expected_findings.json
|
|
403
|
+
```
|
|
404
|
+
|
|
405
|
+
Important rule:
|
|
406
|
+
|
|
407
|
+
```text
|
|
408
|
+
file discovered != engineering fact proven
|
|
409
|
+
```
|
|
410
|
+
|
|
411
|
+
DevAgent fingerprints and classifies files, but filenames do not prove poses, TCPs, calibrations, collision geometry, safety behavior, or physical performance.
|
|
412
|
+
|
|
413
|
+
The root `expected/` folder is test-oracle material and is never promoted as engineering authority.
|
|
414
|
+
|
|
415
|
+
If critical information is missing or ambiguous, DevAgent writes questions into the project results instead of guessing.
|
|
416
|
+
|
|
417
|
+
## Results and evidence
|
|
418
|
+
|
|
419
|
+
Typical output:
|
|
420
|
+
|
|
421
|
+
```text
|
|
422
|
+
customer-project/
|
|
423
|
+
└── devagent-results/
|
|
424
|
+
├── RUN.log
|
|
425
|
+
├── SUMMARY.json
|
|
426
|
+
├── INTAKE.json
|
|
427
|
+
├── QUESTIONS.md
|
|
428
|
+
├── normalized/
|
|
429
|
+
│ ├── requirements.csv
|
|
430
|
+
│ └── devagent-twin.yaml
|
|
431
|
+
├── report-test-visualization/
|
|
432
|
+
├── FAT_REPORT.html
|
|
433
|
+
└── EVIDENCE.html
|
|
434
|
+
```
|
|
435
|
+
|
|
436
|
+
`EVIDENCE.html` is read-only engineering evidence. `RUN.log` is a human debug/progress trace and does not replace immutable evidence artifacts.
|
|
437
|
+
|
|
438
|
+
Repeat runs compare the immediately previous campaign with the current campaign before a new FAT artifact is finalized.
|
|
439
|
+
|
|
440
|
+
## Physical simulation setup
|
|
441
|
+
|
|
442
|
+
`pip install` does not install ROS 2, Gazebo, MoveIt, OEM drivers, or privileged operating-system packages.
|
|
443
|
+
|
|
444
|
+
Reference stack:
|
|
445
|
+
|
|
446
|
+
```text
|
|
447
|
+
Ubuntu 24.04
|
|
448
|
+
ROS 2 Jazzy
|
|
449
|
+
Gazebo Harmonic
|
|
450
|
+
gz_ros2_control
|
|
451
|
+
Universal Robots ROS 2 driver
|
|
452
|
+
ur_simulation_gz
|
|
453
|
+
MoveIt 2 + Pilz Industrial Motion Planner
|
|
454
|
+
```
|
|
455
|
+
|
|
456
|
+
Preview setup:
|
|
457
|
+
|
|
458
|
+
```bash
|
|
459
|
+
devagent-physical setup --profile ur5e-sim --dry-run
|
|
460
|
+
```
|
|
461
|
+
|
|
462
|
+
Apply explicitly:
|
|
463
|
+
|
|
464
|
+
```bash
|
|
465
|
+
devagent-physical setup --profile ur5e-sim --yes
|
|
466
|
+
```
|
|
467
|
+
|
|
468
|
+
Check runtime:
|
|
469
|
+
|
|
470
|
+
```bash
|
|
471
|
+
devagent-physical ros doctor
|
|
472
|
+
```
|
|
473
|
+
|
|
474
|
+
Hosted CI validates deterministic software contracts. It does not pretend to execute a graphical ROS/Gazebo/MoveIt target stack. Target-stack acceptance must run on the intended workstation.
|
|
475
|
+
|
|
476
|
+
## Optional AI providers
|
|
477
|
+
|
|
478
|
+
AI is optional and advisory.
|
|
479
|
+
|
|
480
|
+
```bash
|
|
481
|
+
python -m pip install "devagent-physical-engine[openai]"
|
|
482
|
+
python -m pip install "devagent-physical-engine[anthropic]"
|
|
483
|
+
python -m pip install "devagent-physical-engine[gemini]"
|
|
484
|
+
python -m pip install "devagent-physical-engine[ai]"
|
|
485
|
+
```
|
|
486
|
+
|
|
487
|
+
Typical credentials:
|
|
488
|
+
|
|
489
|
+
```bash
|
|
490
|
+
export OPENAI_API_KEY="..."
|
|
491
|
+
export ANTHROPIC_API_KEY="..."
|
|
492
|
+
export GEMINI_API_KEY="..."
|
|
493
|
+
```
|
|
494
|
+
|
|
495
|
+
Provider-backed interpretation cannot grant physical truth, site qualification, functional-safety certification, or real-execution authority.
|
|
496
|
+
|
|
497
|
+
## Installed CLIs
|
|
498
|
+
|
|
499
|
+
```text
|
|
500
|
+
devagent one-command customer verification + interactive report testing
|
|
501
|
+
devagent-commercial commercial/evidence workflow
|
|
502
|
+
devagent-physical deterministic core + ROS/qualification tools
|
|
503
|
+
devagent-physical-ai optional provider-backed engineering front end
|
|
504
|
+
```
|
|
505
|
+
|
|
506
|
+
## Simple Mode exit codes
|
|
507
|
+
|
|
508
|
+
| Exit | Meaning |
|
|
509
|
+
| ---: | --- |
|
|
510
|
+
| `0` | bounded full verification is release-ready |
|
|
511
|
+
| `10` | customer input or operational contract failure |
|
|
512
|
+
| `30` | more engineering information is required |
|
|
513
|
+
| `31` | requested simulation is blocked/unqualified |
|
|
514
|
+
| `32` | verification completed but full release readiness is false |
|
|
515
|
+
|
|
516
|
+
# Project status
|
|
517
|
+
|
|
518
|
+
**v1.7.2 — Production/Stable software workflow**
|
|
519
|
+
|
|
520
|
+
v1.7.2 retains the v1.7 industrial Pilz PTP/LIN execution architecture and v1.7.1 bounded adaptive-blend fallback. If transfer/place still fails at zero blend, v1.7.2 now proves the transfer PTP and place LIN segments independently and records a deterministic diagnostic result while keeping execution blocked. It also retains the cross-vendor profile gate so non-UR5e customer Twins cannot enter the UR5e-only qualified visual executor.
|
|
521
|
+
|
|
522
|
+
Production-oriented software capabilities include:
|
|
523
|
+
|
|
524
|
+
```text
|
|
525
|
+
one-command customer intake
|
|
526
|
+
XLSX requirement normalization
|
|
527
|
+
validated Requirement → Criterion mapping
|
|
528
|
+
optional provider-backed advisory criterion proposals
|
|
529
|
+
requirement-driven nominal / boundary / fault case generation
|
|
530
|
+
immutable project/Twin lineage
|
|
531
|
+
exact Requirement → Mapping → Verification Plan → Case provenance
|
|
532
|
+
qualified report-test visual execution contract
|
|
533
|
+
industrial Pilz PTP / LIN planning
|
|
534
|
+
adaptive bounded blend selection
|
|
535
|
+
plan-only transfer/place segment diagnostics
|
|
536
|
+
lift-only support-contact ACM lease + exact restore
|
|
537
|
+
Gazebo/MoveIt selected-case visualization
|
|
538
|
+
typed physical measurement binding
|
|
539
|
+
deterministic campaigns
|
|
540
|
+
repeat-run regression
|
|
541
|
+
professional FAT / Evidence Viewer
|
|
542
|
+
interactive selective verification
|
|
543
|
+
Evidence Bundle + replay
|
|
544
|
+
change impact + regression
|
|
545
|
+
provider-neutral optional AI front end
|
|
546
|
+
```
|
|
547
|
+
|
|
548
|
+
Production/Stable describes the bounded software workflow. It does not claim arbitrary customer cells are physically qualified, site-qualified, functionally safe, or authorized for autonomous real execution.
|
|
549
|
+
|
|
550
|
+
## Documentation
|
|
551
|
+
|
|
552
|
+
One-command verification:
|
|
553
|
+
https://github.com/tomha85/devagent-physical-engine/blob/main/docs/ONE_COMMAND_VERIFY_V13.md
|
|
554
|
+
|
|
555
|
+
Report-test visual execution foundation:
|
|
556
|
+
https://github.com/tomha85/devagent-physical-engine/blob/main/docs/REPORT_TEST_VISUAL_EXECUTION_V16.md
|
|
557
|
+
|
|
558
|
+
Evidence Trust / replay / viewer:
|
|
559
|
+
https://github.com/tomha85/devagent-physical-engine/blob/main/docs/EVIDENCE_TRUST_V12.md
|
|
560
|
+
|
|
561
|
+
Measured physical runtime:
|
|
562
|
+
https://github.com/tomha85/devagent-physical-engine/blob/main/docs/MEASURED_PHYSICAL_RUNTIME.md
|
|
563
|
+
|
|
564
|
+
Commercial project spine:
|
|
565
|
+
https://github.com/tomha85/devagent-physical-engine/blob/main/docs/COMMERCIAL_PROJECT_SPINE.md
|
|
566
|
+
|
|
567
|
+
Architecture:
|
|
568
|
+
https://github.com/tomha85/devagent-physical-engine/blob/main/docs/ARCHITECTURE.md
|
|
569
|
+
|
|
570
|
+
Canonical Twin runtime:
|
|
571
|
+
https://github.com/tomha85/devagent-physical-engine/blob/main/docs/CANONICAL_TWIN_RUNTIME.md
|
|
572
|
+
|
|
573
|
+
Laptop acceptance:
|
|
574
|
+
https://github.com/tomha85/devagent-physical-engine/blob/main/docs/LAPTOP_ACCEPTANCE.md
|
|
575
|
+
|
|
576
|
+
## Ownership
|
|
577
|
+
|
|
578
|
+
DevAgent Smart Physical Engine
|
|
579
|
+
Copyright © 2026 Tom Ha
|
|
580
|
+
Original creator: Tom Ha
|
|
581
|
+
Original project: https://github.com/tomha85/devagent-physical-engine
|
|
582
|
+
All rights reserved.
|
|
583
|
+
|
|
584
|
+
See repository `LICENSE`, `NOTICE`, and `COPYRIGHT` for complete ownership and usage terms.
|