devagent-physical-engine 1.7.1__tar.gz → 1.8.0__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.
Files changed (242) hide show
  1. {devagent_physical_engine-1.7.1/src/devagent_physical_engine.egg-info → devagent_physical_engine-1.8.0}/PKG-INFO +86 -15
  2. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/README.md +84 -13
  3. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/pyproject.toml +6 -3
  4. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/__init__.py +1 -1
  5. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/industrial_motion_hotfix_v170.py +9 -8
  6. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/one_command_v16.py +8 -0
  7. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/qualification.py +28 -3
  8. devagent_physical_engine-1.8.0/src/devagent_physical_engine/robot_support_v18.py +97 -0
  9. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/robots.py +6 -0
  10. devagent_physical_engine-1.8.0/src/devagent_physical_engine/ros2/abb_irb1200.py +441 -0
  11. devagent_physical_engine-1.8.0/src/devagent_physical_engine/ros2/abb_irb1200_preview.py +203 -0
  12. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/doctor.py +9 -1
  13. devagent_physical_engine-1.8.0/src/devagent_physical_engine/ros2/industrial_sequence_planner_v172.py +239 -0
  14. devagent_physical_engine-1.8.0/src/devagent_physical_engine/user_cli_v18.py +283 -0
  15. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0/src/devagent_physical_engine.egg-info}/PKG-INFO +86 -15
  16. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine.egg-info/SOURCES.txt +7 -0
  17. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine.egg-info/entry_points.txt +1 -1
  18. devagent_physical_engine-1.8.0/tests/test_abb_irb1200_visual_v18.py +180 -0
  19. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_golden_abb_showcase.py +6 -2
  20. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_industrial_motion_v170.py +6 -6
  21. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_robot_platform_v08.py +26 -1
  22. devagent_physical_engine-1.8.0/tests/test_transfer_place_diagnostic_v172.py +162 -0
  23. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/NOTICE +0 -0
  24. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/setup.cfg +0 -0
  25. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/agent/__init__.py +0 -0
  26. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/agent/compiler.py +0 -0
  27. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/agent/contracts.py +0 -0
  28. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/agent/coordinator.py +0 -0
  29. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/agent/critic.py +0 -0
  30. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/agent/evidence.py +0 -0
  31. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/agent/interpreter.py +0 -0
  32. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/agent/planner.py +0 -0
  33. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/agent/recovery.py +0 -0
  34. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/agent/routing.py +0 -0
  35. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/agent/runtime.py +0 -0
  36. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/agent/semantic.py +0 -0
  37. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/agent/structured.py +0 -0
  38. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ai_cli.py +0 -0
  39. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/cli.py +0 -0
  40. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/commercial.py +0 -0
  41. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/commercial_campaign.py +0 -0
  42. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/commercial_cli.py +0 -0
  43. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/commercial_importer.py +0 -0
  44. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/commercial_intelligence.py +0 -0
  45. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/commercial_readiness.py +0 -0
  46. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/commercial_repository.py +0 -0
  47. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/continuous_clearance.py +0 -0
  48. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/doctor.py +0 -0
  49. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/engineering_agent.py +0 -0
  50. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/engineering_request.py +0 -0
  51. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/evidence_replay.py +0 -0
  52. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/evidence_trust.py +0 -0
  53. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/execution.py +0 -0
  54. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/industrial_motion_v170.py +0 -0
  55. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/models.py +0 -0
  56. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/one_command.py +0 -0
  57. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/one_command_runtime.py +0 -0
  58. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/one_command_v15.py +0 -0
  59. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/operating_envelope.py +0 -0
  60. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/optimization/__init__.py +0 -0
  61. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/optimization/benchmark.py +0 -0
  62. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/optimization/candidates.py +0 -0
  63. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/optimization/contracts.py +0 -0
  64. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/optimization/evaluator.py +0 -0
  65. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/optimization/evidence.py +0 -0
  66. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/optimization/experience.py +0 -0
  67. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/optimization/measured.py +0 -0
  68. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/optimization/optimizer.py +0 -0
  69. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/optimization/orchestrator.py +0 -0
  70. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/physical_campaign.py +0 -0
  71. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/physical_evidence.py +0 -0
  72. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/physical_motion.py +0 -0
  73. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/planning.py +0 -0
  74. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/pose_math.py +0 -0
  75. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/preexecution_contract.py +0 -0
  76. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/production_authority.py +0 -0
  77. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/production_grade.py +0 -0
  78. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/project.py +0 -0
  79. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/provider_adapters/__init__.py +0 -0
  80. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/provider_adapters/anthropic.py +0 -0
  81. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/provider_adapters/common.py +0 -0
  82. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/provider_adapters/factory.py +0 -0
  83. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/provider_adapters/gemini.py +0 -0
  84. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/provider_adapters/openai.py +0 -0
  85. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/provider_criterion.py +0 -0
  86. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/provider_qualification.py +0 -0
  87. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/providers.py +0 -0
  88. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/qualification_cli.py +0 -0
  89. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/qualification_harness.py +0 -0
  90. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/reference_workcell.py +0 -0
  91. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/report_test_execution.py +0 -0
  92. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/report_test_execution_strict.py +0 -0
  93. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/robot_platform.py +0 -0
  94. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/__init__.py +0 -0
  95. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/acceptance.py +0 -0
  96. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/commands.py +0 -0
  97. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/continuous_clearance_probe.py +0 -0
  98. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/fk_pose.py +0 -0
  99. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/fk_probe.py +0 -0
  100. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/frame_alignment.py +0 -0
  101. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/gazebo_cli.py +0 -0
  102. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/gazebo_pose.py +0 -0
  103. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/gazebo_world.py +0 -0
  104. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/industrial_sequence_planner_v170.py +0 -0
  105. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/industrial_sequence_planner_v171.py +0 -0
  106. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/joint_state_probe.py +0 -0
  107. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/joint_state_recorder.py +0 -0
  108. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/measured_motion.py +0 -0
  109. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/moveit_joint_plan_probe.py +0 -0
  110. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/moveit_joint_plan_v161_probe.py +0 -0
  111. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/moveit_scene.py +0 -0
  112. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/moveit_task_planner.py +0 -0
  113. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/pilz_sequence_plan_probe.py +0 -0
  114. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/preexecution.py +0 -0
  115. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/qualification.py +0 -0
  116. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/qualification_v10.py +0 -0
  117. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/qualification_v11.py +0 -0
  118. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/qualification_v12.py +0 -0
  119. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/report_test_visualization.py +0 -0
  120. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/report_test_visualization_v170.py +0 -0
  121. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/scene_probe.py +0 -0
  122. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/state_validity_probe.py +0 -0
  123. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/support_contact_acm_probe_v170.py +0 -0
  124. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/support_contact_lease_v170.py +0 -0
  125. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/support_contact_runner_v161.py +0 -0
  126. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/support_contact_v161.py +0 -0
  127. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/task_adapter.py +0 -0
  128. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/task_visualization.py +0 -0
  129. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/tf_probe.py +0 -0
  130. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/tool_scene.py +0 -0
  131. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/tool_scene_probe.py +0 -0
  132. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/trajectory.py +0 -0
  133. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/trajectory_action_probe.py +0 -0
  134. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/trajectory_tracking.py +0 -0
  135. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/ur5e.py +0 -0
  136. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/ur5e_adapter.py +0 -0
  137. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/ur5e_v10_adapter.py +0 -0
  138. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/workpiece_follow.py +0 -0
  139. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/workpiece_gazebo_follower.py +0 -0
  140. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/workpiece_scene.py +0 -0
  141. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/workpiece_scene_probe.py +0 -0
  142. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/selective_verification.py +0 -0
  143. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/selective_verification_v16.py +0 -0
  144. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/setup_profile.py +0 -0
  145. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/sim_real_qualification.py +0 -0
  146. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/simulation.py +0 -0
  147. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/simulation_platform.py +0 -0
  148. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/smooth_motion_hotfix_v162.py +0 -0
  149. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/support_contact_hotfix_v161.py +0 -0
  150. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/tool_collision.py +0 -0
  151. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/trajectory_qualification.py +0 -0
  152. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/twin.py +0 -0
  153. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/twin_builder.py +0 -0
  154. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/twin_codec.py +0 -0
  155. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/twin_materialization.py +0 -0
  156. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/user_cli.py +0 -0
  157. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/user_cli_v15.py +0 -0
  158. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/user_cli_v16.py +0 -0
  159. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/verification.py +0 -0
  160. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/workpiece_lifecycle.py +0 -0
  161. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine.egg-info/dependency_links.txt +0 -0
  162. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine.egg-info/requires.txt +0 -0
  163. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine.egg-info/top_level.txt +0 -0
  164. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_agent_core.py +0 -0
  165. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_agent_semantic_hardening.py +0 -0
  166. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_ai_cli.py +0 -0
  167. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_ai_cli_v07.py +0 -0
  168. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_commercial_importer_v1.py +0 -0
  169. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_commercial_intelligence_v15.py +0 -0
  170. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_commercial_readiness_v1.py +0 -0
  171. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_commercial_v1.py +0 -0
  172. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_continuous_clearance_v011.py +0 -0
  173. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_core.py +0 -0
  174. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_engineering_request_v07.py +0 -0
  175. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_evidence_replay_v12.py +0 -0
  176. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_evidence_trust_coverage_v12.py +0 -0
  177. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_evidence_trust_transport_v12.py +0 -0
  178. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_evidence_trust_v12.py +0 -0
  179. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_evidence_viewer_palette_v130.py +0 -0
  180. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_gazebo_cli_v0122.py +0 -0
  181. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_golden_abb_runner_v171.py +0 -0
  182. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_interpreter_profiles_v08.py +0 -0
  183. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_joint_state_probe_v0125.py +0 -0
  184. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_live_provider_qualification.py +0 -0
  185. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_measured_motion_v10.py +0 -0
  186. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_moveit_planning_diagnostics_v0125.py +0 -0
  187. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_moveit_scene_v0123.py +0 -0
  188. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_natural_language_agent_v07.py +0 -0
  189. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_one_command_hardening_v13.py +0 -0
  190. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_one_command_pose_hardening_v15.py +0 -0
  191. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_one_command_regression_v141.py +0 -0
  192. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_one_command_v13.py +0 -0
  193. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_openai_strict_schema_v0113.py +0 -0
  194. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_optimization_v05.py +0 -0
  195. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_physical_campaign_v09.py +0 -0
  196. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_physical_evidence_v09.py +0 -0
  197. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_physical_motion_v09.py +0 -0
  198. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_planning_fallback_v012.py +0 -0
  199. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_pose_math_v0125.py +0 -0
  200. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_preexecution_contract_v10.py +0 -0
  201. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_production_authority_v11.py +0 -0
  202. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_production_grade_coverage_v11.py +0 -0
  203. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_production_grade_v11.py +0 -0
  204. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_project_spine_v013.py +0 -0
  205. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_provider_and_qualification.py +0 -0
  206. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_provider_criterion_v15.py +0 -0
  207. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_qualification_cli_lifecycle_v06.py +0 -0
  208. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_qualification_harness_v06.py +0 -0
  209. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_readme_pypi.py +0 -0
  210. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_real_provider_adapters.py +0 -0
  211. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_reference_workcell_ros_frames_v0125.py +0 -0
  212. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_reference_workcell_v012.py +0 -0
  213. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_report_test_contract_coverage_v16.py +0 -0
  214. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_report_test_lineage_v16.py +0 -0
  215. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_report_test_visual_execution_v16.py +0 -0
  216. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_ros2_production_receipts_v011.py +0 -0
  217. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_ros2_simulation.py +0 -0
  218. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_ros_trajectory_v09.py +0 -0
  219. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_selective_verification_v14.py +0 -0
  220. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_setup_profile.py +0 -0
  221. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_sim_real_qualification_v011.py +0 -0
  222. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_simulation_platform_v08.py +0 -0
  223. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_smooth_motion_hotfix_v162.py +0 -0
  224. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_support_contact_hotfix_v161.py +0 -0
  225. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_tool_collision_v011.py +0 -0
  226. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_tool_scene_v0124.py +0 -0
  227. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_trajectory_action_probe_v0125.py +0 -0
  228. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_trajectory_qualification_v09.py +0 -0
  229. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_trajectory_tracking_v0125.py +0 -0
  230. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_twin_materialization_v10.py +0 -0
  231. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_twin_v08.py +0 -0
  232. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_ur5e_adapter_scopes_v09.py +0 -0
  233. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_ur5e_v10_adapter_scopes.py +0 -0
  234. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_user_cli_interactive_v131.py +0 -0
  235. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_user_cli_progress_v131.py +0 -0
  236. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_user_cli_report_visual_v16.py +0 -0
  237. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_user_cli_selective_v14.py +0 -0
  238. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_user_cli_v15.py +0 -0
  239. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_user_cli_v15_hotfix_inheritance.py +0 -0
  240. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_v052_stabilization.py +0 -0
  241. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_v08_catalog_mapping_regression.py +0 -0
  242. {devagent_physical_engine-1.7.1 → devagent_physical_engine-1.8.0}/tests/test_workpiece_lifecycle_v011.py +0 -0
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: devagent-physical-engine
3
- Version: 1.7.1
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, requirement-driven test generation, selective verification, deterministic Twin lineage, measured physical verification, replay inspection, regression, and FAT evidence.
3
+ Version: 1.8.0
4
+ Summary: Production-grade verification-first robotics evidence runtime with one-command customer intake, truthful robot support tiers, qualified UR5e report-test Gazebo execution, experimental ABB IRB1200 Gazebo/MoveIt/RViz visualization, transfer/place diagnostics, requirement-driven test generation, selective verification, deterministic Twin lineage, measured physical verification, replay inspection, regression, and FAT evidence.
5
5
  Author: Tom Ha
6
6
  License: All Rights Reserved
7
7
  Project-URL: Homepage, https://github.com/tomha85/devagent-physical-engine
@@ -76,7 +76,7 @@ regression + FAT report + Evidence Viewer
76
76
  Python 3.11+ is required.
77
77
 
78
78
  ```bash
79
- python -m pip install --upgrade devagent-physical-engine==1.7.1
79
+ python -m pip install --upgrade devagent-physical-engine==1.8.0
80
80
  ```
81
81
 
82
82
  Verify the installed package:
@@ -88,7 +88,7 @@ python -c "import devagent_physical_engine as d; print(d.__version__)"
88
88
  Expected:
89
89
 
90
90
  ```text
91
- 1.7.1
91
+ 1.8.0
92
92
  ```
93
93
 
94
94
  Run the normal customer workflow:
@@ -115,6 +115,19 @@ For machine-readable CI output:
115
115
  devagent verify ./customer-project --json
116
116
  ```
117
117
 
118
+ Inspect truthful robot support tiers:
119
+
120
+ ```bash
121
+ devagent robots
122
+ ```
123
+
124
+ For the exact ABB IRB1200 experimental visual runtime:
125
+
126
+ ```bash
127
+ devagent robot doctor abb_irb1200
128
+ devagent robot visualize abb_irb1200
129
+ ```
130
+
118
131
  Default locations:
119
132
 
120
133
  ```text
@@ -304,9 +317,52 @@ no fallback to an unqualified simulator or robot
304
317
 
305
318
  The selected blend radii and every planning attempt receipt remain attached to motion metadata for auditability.
306
319
 
320
+ ## v1.7.2 transfer/place diagnostic hotfix
321
+
322
+ 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:
323
+
324
+ ```text
325
+ lift target
326
+
327
+ transfer PTP probe
328
+ ↓ independent start at transfer target
329
+ place LIN probe
330
+ ```
331
+
332
+ The result is classified deterministically as one of:
333
+
334
+ ```text
335
+ pilz_transfer_segment_planning_failed
336
+ pilz_place_segment_planning_failed
337
+ pilz_transfer_and_place_segment_planning_failed
338
+ pilz_transfer_place_sequence_composition_failed
339
+ ```
340
+
341
+ 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.
342
+
343
+ ## v1.8 truthful robot support + ABB IRB1200 visual runtime
344
+
345
+ v1.8 makes robot support explicit instead of implying that every built-in robot profile has the same simulator authority.
346
+
347
+ Support is exposed through:
348
+
349
+ ```bash
350
+ devagent robots
351
+ devagent robot doctor <robot>
352
+ devagent robot visualize <robot>
353
+ ```
354
+
355
+ The exact `abb_irb1200` profile adds an experimental visual runtime using Ubuntu 24.04, ROS 2 Jazzy, Gazebo Harmonic, `gz_ros2_control`, upstream ABB IRB1200 geometry, MoveIt, and RViz. Runtime readiness is bounded on controller state, `/joint_states`, FollowJointTrajectory, `move_group`, and RViz availability.
356
+
357
+ For the Golden ABB cell, DevAgent can load the waypoint seed, pre-plan every phase through MoveIt before sending any simulated trajectory, then execute the preview while Gazebo/RViz remain open for inspection.
358
+
359
+ This is intentionally **visual simulation availability**, not measured FAT qualification. ABB preview evidence is not promoted to a qualified physical measurement, and `real_execution_allowed` remains false. The normal One-Command ABB FAT path continues to fail closed until an exact-Twin measured ABB execution adapter is separately qualified.
360
+
361
+ Generic `abb_irb`, FANUC CRX, and KUKA KR profiles remain model-only until equivalent vendor/model visual runtimes are implemented and qualified.
362
+
307
363
  ## Qualified visual-execution scope
308
364
 
309
- The packaged visual executor remains intentionally narrow:
365
+ Measured report-test execution remains intentionally narrow:
310
366
 
311
367
  ```text
312
368
  robot: UR5e
@@ -317,7 +373,7 @@ runtime: Ubuntu 24.04 + ROS 2 Jazzy + Gazebo Harmonic + MoveIt/Pilz
317
373
 
318
374
  Unsupported customer Twins, unqualified robot profiles, boundary/fault cases outside the qualified scope, ambiguous case mappings, or incomplete lineage fail closed.
319
375
 
320
- 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.
376
+ ABB IRB1200 is separately exposed as `SIMULATION_AVAILABLE_EXPERIMENTAL`: Gazebo/MoveIt/RViz preview is available, but it does not silently enter the UR5e measured FAT executor and cannot promote physical evidence.
321
377
 
322
378
  ## Interactive engineering session
323
379
 
@@ -425,12 +481,12 @@ Ubuntu 24.04
425
481
  ROS 2 Jazzy
426
482
  Gazebo Harmonic
427
483
  gz_ros2_control
428
- Universal Robots ROS 2 driver
429
- ur_simulation_gz
430
- MoveIt 2 + Pilz Industrial Motion Planner
484
+ MoveIt 2
431
485
  ```
432
486
 
433
- Preview setup:
487
+ UR5e measured report-test execution additionally uses the Universal Robots ROS 2 driver, `ur_simulation_gz`, and Pilz Industrial Motion Planner.
488
+
489
+ Preview UR5e setup:
434
490
 
435
491
  ```bash
436
492
  devagent-physical setup --profile ur5e-sim --dry-run
@@ -442,12 +498,24 @@ Apply explicitly:
442
498
  devagent-physical setup --profile ur5e-sim --yes
443
499
  ```
444
500
 
445
- Check runtime:
501
+ Check the UR5e runtime:
446
502
 
447
503
  ```bash
448
504
  devagent-physical ros doctor
449
505
  ```
450
506
 
507
+ Check ABB IRB1200 visual runtime prerequisites:
508
+
509
+ ```bash
510
+ devagent robot doctor abb_irb1200
511
+ ```
512
+
513
+ Launch ABB IRB1200 Gazebo + MoveIt + RViz preview:
514
+
515
+ ```bash
516
+ devagent robot visualize abb_irb1200
517
+ ```
518
+
451
519
  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.
452
520
 
453
521
  ## Optional AI providers
@@ -474,7 +542,7 @@ Provider-backed interpretation cannot grant physical truth, site qualification,
474
542
  ## Installed CLIs
475
543
 
476
544
  ```text
477
- devagent one-command customer verification + interactive report testing
545
+ devagent one-command verification, interactive report testing, robot support/visualization
478
546
  devagent-commercial commercial/evidence workflow
479
547
  devagent-physical deterministic core + ROS/qualification tools
480
548
  devagent-physical-ai optional provider-backed engineering front end
@@ -492,9 +560,9 @@ devagent-physical-ai optional provider-backed engineering front end
492
560
 
493
561
  # Project status
494
562
 
495
- **v1.7.1 — Production/Stable software workflow**
563
+ **v1.8.0 — Production/Stable software workflow**
496
564
 
497
- v1.7.1 retains the v1.7 industrial Pilz PTP/LIN execution architecture and adds fail-closed adaptive blend selection for geometry-specific Pilz sequence failures. It also retains the cross-vendor profile gate so non-UR5e customer Twins cannot enter the UR5e-only qualified visual executor.
565
+ v1.8.0 retains the qualified UR5e measured report-test architecture and the v1.7.2 transfer/place diagnostics, while adding truthful robot support tiers and an exact ABB IRB1200 experimental Gazebo Harmonic + MoveIt + RViz visual runtime. ABB visualization is available for engineering preview, but measured FAT promotion remains fail-closed until the exact ABB execution adapter is separately qualified.
498
566
 
499
567
  Production-oriented software capabilities include:
500
568
 
@@ -506,9 +574,12 @@ optional provider-backed advisory criterion proposals
506
574
  requirement-driven nominal / boundary / fault case generation
507
575
  immutable project/Twin lineage
508
576
  exact Requirement → Mapping → Verification Plan → Case provenance
509
- qualified report-test visual execution contract
577
+ truthful robot support tiers
578
+ qualified UR5e report-test visual execution contract
579
+ experimental exact ABB IRB1200 Gazebo/MoveIt/RViz preview
510
580
  industrial Pilz PTP / LIN planning
511
581
  adaptive bounded blend selection
582
+ plan-only transfer/place segment diagnostics
512
583
  lift-only support-contact ACM lease + exact restore
513
584
  Gazebo/MoveIt selected-case visualization
514
585
  typed physical measurement binding
@@ -35,7 +35,7 @@ regression + FAT report + Evidence Viewer
35
35
  Python 3.11+ is required.
36
36
 
37
37
  ```bash
38
- python -m pip install --upgrade devagent-physical-engine==1.7.1
38
+ python -m pip install --upgrade devagent-physical-engine==1.8.0
39
39
  ```
40
40
 
41
41
  Verify the installed package:
@@ -47,7 +47,7 @@ python -c "import devagent_physical_engine as d; print(d.__version__)"
47
47
  Expected:
48
48
 
49
49
  ```text
50
- 1.7.1
50
+ 1.8.0
51
51
  ```
52
52
 
53
53
  Run the normal customer workflow:
@@ -74,6 +74,19 @@ For machine-readable CI output:
74
74
  devagent verify ./customer-project --json
75
75
  ```
76
76
 
77
+ Inspect truthful robot support tiers:
78
+
79
+ ```bash
80
+ devagent robots
81
+ ```
82
+
83
+ For the exact ABB IRB1200 experimental visual runtime:
84
+
85
+ ```bash
86
+ devagent robot doctor abb_irb1200
87
+ devagent robot visualize abb_irb1200
88
+ ```
89
+
77
90
  Default locations:
78
91
 
79
92
  ```text
@@ -263,9 +276,52 @@ no fallback to an unqualified simulator or robot
263
276
 
264
277
  The selected blend radii and every planning attempt receipt remain attached to motion metadata for auditability.
265
278
 
279
+ ## v1.7.2 transfer/place diagnostic hotfix
280
+
281
+ 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:
282
+
283
+ ```text
284
+ lift target
285
+
286
+ transfer PTP probe
287
+ ↓ independent start at transfer target
288
+ place LIN probe
289
+ ```
290
+
291
+ The result is classified deterministically as one of:
292
+
293
+ ```text
294
+ pilz_transfer_segment_planning_failed
295
+ pilz_place_segment_planning_failed
296
+ pilz_transfer_and_place_segment_planning_failed
297
+ pilz_transfer_place_sequence_composition_failed
298
+ ```
299
+
300
+ 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.
301
+
302
+ ## v1.8 truthful robot support + ABB IRB1200 visual runtime
303
+
304
+ v1.8 makes robot support explicit instead of implying that every built-in robot profile has the same simulator authority.
305
+
306
+ Support is exposed through:
307
+
308
+ ```bash
309
+ devagent robots
310
+ devagent robot doctor <robot>
311
+ devagent robot visualize <robot>
312
+ ```
313
+
314
+ The exact `abb_irb1200` profile adds an experimental visual runtime using Ubuntu 24.04, ROS 2 Jazzy, Gazebo Harmonic, `gz_ros2_control`, upstream ABB IRB1200 geometry, MoveIt, and RViz. Runtime readiness is bounded on controller state, `/joint_states`, FollowJointTrajectory, `move_group`, and RViz availability.
315
+
316
+ For the Golden ABB cell, DevAgent can load the waypoint seed, pre-plan every phase through MoveIt before sending any simulated trajectory, then execute the preview while Gazebo/RViz remain open for inspection.
317
+
318
+ This is intentionally **visual simulation availability**, not measured FAT qualification. ABB preview evidence is not promoted to a qualified physical measurement, and `real_execution_allowed` remains false. The normal One-Command ABB FAT path continues to fail closed until an exact-Twin measured ABB execution adapter is separately qualified.
319
+
320
+ Generic `abb_irb`, FANUC CRX, and KUKA KR profiles remain model-only until equivalent vendor/model visual runtimes are implemented and qualified.
321
+
266
322
  ## Qualified visual-execution scope
267
323
 
268
- The packaged visual executor remains intentionally narrow:
324
+ Measured report-test execution remains intentionally narrow:
269
325
 
270
326
  ```text
271
327
  robot: UR5e
@@ -276,7 +332,7 @@ runtime: Ubuntu 24.04 + ROS 2 Jazzy + Gazebo Harmonic + MoveIt/Pilz
276
332
 
277
333
  Unsupported customer Twins, unqualified robot profiles, boundary/fault cases outside the qualified scope, ambiguous case mappings, or incomplete lineage fail closed.
278
334
 
279
- 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.
335
+ ABB IRB1200 is separately exposed as `SIMULATION_AVAILABLE_EXPERIMENTAL`: Gazebo/MoveIt/RViz preview is available, but it does not silently enter the UR5e measured FAT executor and cannot promote physical evidence.
280
336
 
281
337
  ## Interactive engineering session
282
338
 
@@ -384,12 +440,12 @@ Ubuntu 24.04
384
440
  ROS 2 Jazzy
385
441
  Gazebo Harmonic
386
442
  gz_ros2_control
387
- Universal Robots ROS 2 driver
388
- ur_simulation_gz
389
- MoveIt 2 + Pilz Industrial Motion Planner
443
+ MoveIt 2
390
444
  ```
391
445
 
392
- Preview setup:
446
+ UR5e measured report-test execution additionally uses the Universal Robots ROS 2 driver, `ur_simulation_gz`, and Pilz Industrial Motion Planner.
447
+
448
+ Preview UR5e setup:
393
449
 
394
450
  ```bash
395
451
  devagent-physical setup --profile ur5e-sim --dry-run
@@ -401,12 +457,24 @@ Apply explicitly:
401
457
  devagent-physical setup --profile ur5e-sim --yes
402
458
  ```
403
459
 
404
- Check runtime:
460
+ Check the UR5e runtime:
405
461
 
406
462
  ```bash
407
463
  devagent-physical ros doctor
408
464
  ```
409
465
 
466
+ Check ABB IRB1200 visual runtime prerequisites:
467
+
468
+ ```bash
469
+ devagent robot doctor abb_irb1200
470
+ ```
471
+
472
+ Launch ABB IRB1200 Gazebo + MoveIt + RViz preview:
473
+
474
+ ```bash
475
+ devagent robot visualize abb_irb1200
476
+ ```
477
+
410
478
  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.
411
479
 
412
480
  ## Optional AI providers
@@ -433,7 +501,7 @@ Provider-backed interpretation cannot grant physical truth, site qualification,
433
501
  ## Installed CLIs
434
502
 
435
503
  ```text
436
- devagent one-command customer verification + interactive report testing
504
+ devagent one-command verification, interactive report testing, robot support/visualization
437
505
  devagent-commercial commercial/evidence workflow
438
506
  devagent-physical deterministic core + ROS/qualification tools
439
507
  devagent-physical-ai optional provider-backed engineering front end
@@ -451,9 +519,9 @@ devagent-physical-ai optional provider-backed engineering front end
451
519
 
452
520
  # Project status
453
521
 
454
- **v1.7.1 — Production/Stable software workflow**
522
+ **v1.8.0 — Production/Stable software workflow**
455
523
 
456
- v1.7.1 retains the v1.7 industrial Pilz PTP/LIN execution architecture and adds fail-closed adaptive blend selection for geometry-specific Pilz sequence failures. It also retains the cross-vendor profile gate so non-UR5e customer Twins cannot enter the UR5e-only qualified visual executor.
524
+ v1.8.0 retains the qualified UR5e measured report-test architecture and the v1.7.2 transfer/place diagnostics, while adding truthful robot support tiers and an exact ABB IRB1200 experimental Gazebo Harmonic + MoveIt + RViz visual runtime. ABB visualization is available for engineering preview, but measured FAT promotion remains fail-closed until the exact ABB execution adapter is separately qualified.
457
525
 
458
526
  Production-oriented software capabilities include:
459
527
 
@@ -465,9 +533,12 @@ optional provider-backed advisory criterion proposals
465
533
  requirement-driven nominal / boundary / fault case generation
466
534
  immutable project/Twin lineage
467
535
  exact Requirement → Mapping → Verification Plan → Case provenance
468
- qualified report-test visual execution contract
536
+ truthful robot support tiers
537
+ qualified UR5e report-test visual execution contract
538
+ experimental exact ABB IRB1200 Gazebo/MoveIt/RViz preview
469
539
  industrial Pilz PTP / LIN planning
470
540
  adaptive bounded blend selection
541
+ plan-only transfer/place segment diagnostics
471
542
  lift-only support-contact ACM lease + exact restore
472
543
  Gazebo/MoveIt selected-case visualization
473
544
  typed physical measurement binding
@@ -4,8 +4,8 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "devagent-physical-engine"
7
- version = "1.7.1"
8
- description = "Production-grade verification-first robotics evidence runtime with one-command customer intake, validated requirement mapping, adaptive industrial Pilz PTP/LIN report-test Gazebo execution, requirement-driven test generation, selective verification, deterministic Twin lineage, measured physical verification, replay inspection, regression, and FAT evidence."
7
+ version = "1.8.0"
8
+ description = "Production-grade verification-first robotics evidence runtime with one-command customer intake, truthful robot support tiers, qualified UR5e report-test Gazebo execution, experimental ABB IRB1200 Gazebo/MoveIt/RViz visualization, transfer/place diagnostics, requirement-driven test generation, selective verification, deterministic Twin lineage, measured physical verification, replay inspection, regression, and FAT evidence."
9
9
  readme = { file = "README.md", content-type = "text/markdown" }
10
10
  requires-python = ">=3.11"
11
11
  dependencies = ["PyYAML>=6.0,<7"]
@@ -47,7 +47,7 @@ Repository = "https://github.com/tomha85/devagent-physical-engine"
47
47
  Issues = "https://github.com/tomha85/devagent-physical-engine/issues"
48
48
 
49
49
  [project.scripts]
50
- devagent = "devagent_physical_engine.user_cli_v16:main"
50
+ devagent = "devagent_physical_engine.user_cli_v18:main"
51
51
  devagent-physical = "devagent_physical_engine.cli:main"
52
52
  devagent-physical-ai = "devagent_physical_engine.ai_cli:main"
53
53
  devagent-commercial = "devagent_physical_engine.commercial_cli:main"
@@ -75,11 +75,14 @@ omit = [
75
75
  "src/devagent_physical_engine/ros2/moveit_task_planner.py",
76
76
  "src/devagent_physical_engine/ros2/industrial_sequence_planner_v170.py",
77
77
  "src/devagent_physical_engine/ros2/industrial_sequence_planner_v171.py",
78
+ "src/devagent_physical_engine/ros2/industrial_sequence_planner_v172.py",
78
79
  "src/devagent_physical_engine/ros2/support_contact_lease_v170.py",
79
80
  "src/devagent_physical_engine/ros2/fk_pose.py",
80
81
  "src/devagent_physical_engine/ros2/gazebo_pose.py",
81
82
  "src/devagent_physical_engine/ros2/workpiece_follow.py",
82
83
  "src/devagent_physical_engine/ros2/workpiece_gazebo_follower.py",
84
+ "src/devagent_physical_engine/ros2/abb_irb1200.py",
85
+ "src/devagent_physical_engine/ros2/abb_irb1200_preview.py",
83
86
  ]
84
87
 
85
88
  [tool.coverage.report]
@@ -217,4 +217,4 @@ install_smooth_motion_hotfix_v162()
217
217
  install_industrial_motion_v170()
218
218
  install_one_command_runtime()
219
219
 
220
- __version__ = "1.7.1"
220
+ __version__ = "1.8.0"
@@ -24,23 +24,24 @@ def _patch_constructor(cls) -> None:
24
24
 
25
25
 
26
26
  def install_industrial_motion_v170() -> None:
27
- """Route report-test execution through v1.7 industrial motion runtime.
27
+ """Route report-test execution through the qualified v1.7 industrial runtime.
28
28
 
29
- v1.7.1 additionally swaps the target-stack planner symbol used by the visual
30
- runner for a fail-closed adaptive-blend planner. It retries only generic Pilz
31
- sequence planning failures with smaller internal blend radii; no geometry,
32
- collision, speed, scene, or execution-authority constraint is relaxed.
29
+ v1.7.1 retries only generic Pilz sequence-planning failures with smaller internal
30
+ blend radii. v1.7.2 retains that bounded fallback and, if transfer/place still
31
+ fails at zero blend, runs plan-only transfer PTP and place LIN probes against the
32
+ same attached-workpiece scene. The probes only improve diagnosis; they never grant
33
+ execution authority or relax geometry, collision, speed, scene, or Twin lineage.
33
34
  """
34
35
 
35
36
  from . import report_test_execution as base_exec
36
37
  from . import report_test_execution_strict as strict_exec
37
38
  from .ros2 import report_test_visualization as base_visual
38
39
  from .ros2 import report_test_visualization_v170 as visual_v170
39
- from .ros2.industrial_sequence_planner_v171 import (
40
- PilzIndustrialSequencePlannerV171,
40
+ from .ros2.industrial_sequence_planner_v172 import (
41
+ PilzIndustrialSequencePlannerV172,
41
42
  )
42
43
 
43
- visual_v170.PilzIndustrialSequencePlannerV170 = PilzIndustrialSequencePlannerV171
44
+ visual_v170.PilzIndustrialSequencePlannerV170 = PilzIndustrialSequencePlannerV172
44
45
 
45
46
  base_exec.run_report_test_visualization = run_report_test_visualization_v170
46
47
  strict_exec.run_report_test_visualization = run_report_test_visualization_v170
@@ -13,6 +13,10 @@ from .commercial_repository import CommercialProjectRepository
13
13
  from .one_command_v15 import OneCommandVerifier as OneCommandVerifierV15
14
14
  from .one_command_v15 import SimpleVerifyResult
15
15
  from .report_test_execution_strict import ReportTestFullExecutor
16
+ from .robot_support_v18 import ensure_v18_robot_profiles
17
+
18
+
19
+ ensure_v18_robot_profiles()
16
20
 
17
21
 
18
22
  class ProfileGatedReportTestFullExecutor(ReportTestFullExecutor):
@@ -23,6 +27,10 @@ class ProfileGatedReportTestFullExecutor(ReportTestFullExecutor):
23
27
  entering UR5e-specific request materialization so that One-Command can continue
24
28
  producing bounded campaign/FAT evidence instead of surfacing an executor
25
29
  traceback.
30
+
31
+ Exact profiles may expose an experimental visual runtime (for example ABB
32
+ IRB1200) while remaining blocked here until that runtime passes measured FAT
33
+ qualification. Availability is deliberately not treated as evidence authority.
26
34
  """
27
35
 
28
36
  def execute(
@@ -9,6 +9,17 @@ from .robots import CATALOG
9
9
  from .simulation import DeterministicSimulationBackend
10
10
 
11
11
 
12
+ # This is the original v1 cross-vendor *family* corpus. Exact model profiles added
13
+ # later (for example abb_irb1200) must not silently change the historical smoke
14
+ # baseline or turn a family-level qualification into a count of registry entries.
15
+ V1_ROBOT_FAMILIES = (
16
+ "ur5e",
17
+ "fanuc_crx",
18
+ "kuka_kr",
19
+ "abb_irb",
20
+ )
21
+
22
+
12
23
  @dataclass(frozen=True, slots=True)
13
24
  class QualificationCaseResult:
14
25
  robot: str
@@ -35,10 +46,24 @@ def run_cross_vendor_smoke() -> QualificationSummary:
35
46
  supervisor = ExecutionSupervisor()
36
47
  goal = Goal("G1", "load", "P17", "conveyor_a", "cnc_04")
37
48
  results: list[QualificationCaseResult] = []
38
- for robot_name, factory in CATALOG.items():
49
+ for robot_name in V1_ROBOT_FAMILIES:
50
+ factory = CATALOG[robot_name]
39
51
  resource = factory()
40
52
  graph = planner.plan(goal, [resource])
41
53
  world = WorldState(facts={"robot_ready", "object_available"})
42
- report = supervisor.execute(graph, [resource], world, DeterministicSimulationBackend(), ExecutionMode.SIMULATION)
43
- results.append(QualificationCaseResult(robot_name, report.completed, len(report.executed_tasks), len(report.issues)))
54
+ report = supervisor.execute(
55
+ graph,
56
+ [resource],
57
+ world,
58
+ DeterministicSimulationBackend(),
59
+ ExecutionMode.SIMULATION,
60
+ )
61
+ results.append(
62
+ QualificationCaseResult(
63
+ robot_name,
64
+ report.completed,
65
+ len(report.executed_tasks),
66
+ len(report.issues),
67
+ )
68
+ )
44
69
  return QualificationSummary(tuple(results))
@@ -0,0 +1,97 @@
1
+ from __future__ import annotations
2
+
3
+ from .robot_platform import (
4
+ ARM_CAPABILITIES,
5
+ BUILTIN_ROBOT_PROFILES,
6
+ QualificationState,
7
+ RobotProfile,
8
+ RobotQualification,
9
+ RosIntegration,
10
+ SimulationTier,
11
+ )
12
+
13
+ ABB_IRB1200_PROFILE_KEY = "abb_irb1200"
14
+
15
+
16
+ def _abb_irb1200_profile() -> RobotProfile:
17
+ """Exact ABB IRB 1200-5/0.9 profile.
18
+
19
+ The visual/physics runtime remains EXPERIMENTAL until target-workstation
20
+ acceptance proves the exact Gazebo/MoveIt integration. This makes the runtime
21
+ available without prematurely upgrading FAT evidence authority.
22
+ """
23
+
24
+ return RobotProfile(
25
+ key=ABB_IRB1200_PROFILE_KEY,
26
+ vendor="abb",
27
+ model="irb1200_5_90",
28
+ capabilities=ARM_CAPABILITIES,
29
+ qualification=RobotQualification(
30
+ {
31
+ SimulationTier.DETERMINISTIC: QualificationState.QUALIFIED,
32
+ SimulationTier.KINEMATIC: QualificationState.EXPERIMENTAL,
33
+ SimulationTier.PHYSICS: QualificationState.EXPERIMENTAL,
34
+ SimulationTier.VISUAL: QualificationState.EXPERIMENTAL,
35
+ }
36
+ ),
37
+ ros=RosIntegration(
38
+ ros2_compatible=True,
39
+ joint_state_interface="/joint_states",
40
+ trajectory_interface="joint_trajectory_controller/follow_joint_trajectory",
41
+ robot_description="abb_irb1200_support",
42
+ moveit_config="abb_irb1200_5_90_moveit_config",
43
+ hardware_driver="abb_ros2",
44
+ ),
45
+ aliases=(
46
+ "abb irb1200",
47
+ "abb irb 1200",
48
+ "abb irb 1200-5/0.9",
49
+ "abb irb1200-5/0.9",
50
+ "irb1200",
51
+ "irb1200 5 90",
52
+ ),
53
+ legacy_qualification="experimental",
54
+ notes=(
55
+ "Exact ABB IRB 1200-5/0.9 ROS2 profile.",
56
+ "Gazebo Harmonic + gz_ros2_control + MoveIt/RViz runtime is available "
57
+ "as an experimental visual path until laptop acceptance is recorded.",
58
+ "Visual preview motion is not FAT measurement evidence and real execution "
59
+ "remains locked.",
60
+ ),
61
+ )
62
+
63
+
64
+ def ensure_v18_robot_profiles() -> None:
65
+ """Idempotently extend the built-in registry with exact v1.8 profiles."""
66
+
67
+ try:
68
+ BUILTIN_ROBOT_PROFILES.get(ABB_IRB1200_PROFILE_KEY)
69
+ except Exception:
70
+ BUILTIN_ROBOT_PROFILES.register(_abb_irb1200_profile())
71
+
72
+
73
+ def robot_support_level(profile: RobotProfile) -> str:
74
+ """Return a user-facing support label that never overstates qualification."""
75
+
76
+ physics = profile.qualification.state_for(SimulationTier.PHYSICS)
77
+ visual = profile.qualification.state_for(SimulationTier.VISUAL)
78
+ kinematic = profile.qualification.state_for(SimulationTier.KINEMATIC)
79
+
80
+ if physics is QualificationState.QUALIFIED and visual is QualificationState.QUALIFIED:
81
+ return "SIMULATION_SUPPORTED"
82
+ if physics is QualificationState.EXPERIMENTAL and visual is QualificationState.EXPERIMENTAL:
83
+ return "SIMULATION_AVAILABLE_EXPERIMENTAL"
84
+ if visual is QualificationState.QUALIFIED or kinematic is QualificationState.QUALIFIED:
85
+ return "VISUAL_SUPPORTED"
86
+ if visual is QualificationState.EXPERIMENTAL or kinematic is QualificationState.EXPERIMENTAL:
87
+ return "VISUAL_AVAILABLE_EXPERIMENTAL"
88
+ return "MODEL_ONLY"
89
+
90
+
91
+ ensure_v18_robot_profiles()
92
+
93
+ __all__ = [
94
+ "ABB_IRB1200_PROFILE_KEY",
95
+ "ensure_v18_robot_profiles",
96
+ "robot_support_level",
97
+ ]
@@ -9,8 +9,10 @@ from .robot_platform import (
9
9
  RobotPlatformError,
10
10
  RobotProfileRegistry,
11
11
  )
12
+ from .robot_support_v18 import ensure_v18_robot_profiles
12
13
 
13
14
 
15
+ ensure_v18_robot_profiles()
14
16
  PROFILE_REGISTRY: RobotProfileRegistry = BUILTIN_ROBOT_PROFILES
15
17
 
16
18
 
@@ -34,6 +36,10 @@ def abb_irb(resource_id: str = "robot_01") -> Resource:
34
36
  return _resource("abb_irb", resource_id)
35
37
 
36
38
 
39
+ def abb_irb1200(resource_id: str = "robot_01") -> Resource:
40
+ return _resource("abb_irb1200", resource_id)
41
+
42
+
37
43
  class _RegistryBackedCatalog(Mapping[str, Callable[..., Resource]]):
38
44
  """Compatibility view for older core code that expects CATALOG[key]().
39
45