devagent-physical-engine 1.7.2__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.2/src/devagent_physical_engine.egg-info → devagent_physical_engine-1.8.0}/PKG-INFO +62 -15
  2. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/README.md +60 -13
  3. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/pyproject.toml +5 -3
  4. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/__init__.py +1 -1
  5. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/one_command_v16.py +8 -0
  6. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/qualification.py +28 -3
  7. devagent_physical_engine-1.8.0/src/devagent_physical_engine/robot_support_v18.py +97 -0
  8. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/robots.py +6 -0
  9. devagent_physical_engine-1.8.0/src/devagent_physical_engine/ros2/abb_irb1200.py +441 -0
  10. devagent_physical_engine-1.8.0/src/devagent_physical_engine/ros2/abb_irb1200_preview.py +203 -0
  11. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/doctor.py +9 -1
  12. devagent_physical_engine-1.8.0/src/devagent_physical_engine/user_cli_v18.py +283 -0
  13. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0/src/devagent_physical_engine.egg-info}/PKG-INFO +62 -15
  14. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine.egg-info/SOURCES.txt +5 -0
  15. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine.egg-info/entry_points.txt +1 -1
  16. devagent_physical_engine-1.8.0/tests/test_abb_irb1200_visual_v18.py +180 -0
  17. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_golden_abb_showcase.py +6 -2
  18. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_industrial_motion_v170.py +2 -2
  19. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_robot_platform_v08.py +26 -1
  20. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_transfer_place_diagnostic_v172.py +1 -1
  21. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/NOTICE +0 -0
  22. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/setup.cfg +0 -0
  23. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/agent/__init__.py +0 -0
  24. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/agent/compiler.py +0 -0
  25. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/agent/contracts.py +0 -0
  26. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/agent/coordinator.py +0 -0
  27. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/agent/critic.py +0 -0
  28. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/agent/evidence.py +0 -0
  29. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/agent/interpreter.py +0 -0
  30. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/agent/planner.py +0 -0
  31. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/agent/recovery.py +0 -0
  32. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/agent/routing.py +0 -0
  33. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/agent/runtime.py +0 -0
  34. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/agent/semantic.py +0 -0
  35. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/agent/structured.py +0 -0
  36. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ai_cli.py +0 -0
  37. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/cli.py +0 -0
  38. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/commercial.py +0 -0
  39. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/commercial_campaign.py +0 -0
  40. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/commercial_cli.py +0 -0
  41. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/commercial_importer.py +0 -0
  42. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/commercial_intelligence.py +0 -0
  43. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/commercial_readiness.py +0 -0
  44. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/commercial_repository.py +0 -0
  45. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/continuous_clearance.py +0 -0
  46. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/doctor.py +0 -0
  47. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/engineering_agent.py +0 -0
  48. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/engineering_request.py +0 -0
  49. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/evidence_replay.py +0 -0
  50. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/evidence_trust.py +0 -0
  51. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/execution.py +0 -0
  52. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/industrial_motion_hotfix_v170.py +0 -0
  53. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/industrial_motion_v170.py +0 -0
  54. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/models.py +0 -0
  55. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/one_command.py +0 -0
  56. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/one_command_runtime.py +0 -0
  57. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/one_command_v15.py +0 -0
  58. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/operating_envelope.py +0 -0
  59. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/optimization/__init__.py +0 -0
  60. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/optimization/benchmark.py +0 -0
  61. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/optimization/candidates.py +0 -0
  62. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/optimization/contracts.py +0 -0
  63. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/optimization/evaluator.py +0 -0
  64. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/optimization/evidence.py +0 -0
  65. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/optimization/experience.py +0 -0
  66. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/optimization/measured.py +0 -0
  67. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/optimization/optimizer.py +0 -0
  68. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/optimization/orchestrator.py +0 -0
  69. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/physical_campaign.py +0 -0
  70. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/physical_evidence.py +0 -0
  71. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/physical_motion.py +0 -0
  72. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/planning.py +0 -0
  73. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/pose_math.py +0 -0
  74. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/preexecution_contract.py +0 -0
  75. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/production_authority.py +0 -0
  76. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/production_grade.py +0 -0
  77. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/project.py +0 -0
  78. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/provider_adapters/__init__.py +0 -0
  79. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/provider_adapters/anthropic.py +0 -0
  80. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/provider_adapters/common.py +0 -0
  81. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/provider_adapters/factory.py +0 -0
  82. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/provider_adapters/gemini.py +0 -0
  83. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/provider_adapters/openai.py +0 -0
  84. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/provider_criterion.py +0 -0
  85. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/provider_qualification.py +0 -0
  86. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/providers.py +0 -0
  87. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/qualification_cli.py +0 -0
  88. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/qualification_harness.py +0 -0
  89. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/reference_workcell.py +0 -0
  90. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/report_test_execution.py +0 -0
  91. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/report_test_execution_strict.py +0 -0
  92. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/robot_platform.py +0 -0
  93. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/__init__.py +0 -0
  94. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/acceptance.py +0 -0
  95. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/commands.py +0 -0
  96. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/continuous_clearance_probe.py +0 -0
  97. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/fk_pose.py +0 -0
  98. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/fk_probe.py +0 -0
  99. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/frame_alignment.py +0 -0
  100. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/gazebo_cli.py +0 -0
  101. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/gazebo_pose.py +0 -0
  102. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/gazebo_world.py +0 -0
  103. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/industrial_sequence_planner_v170.py +0 -0
  104. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/industrial_sequence_planner_v171.py +0 -0
  105. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/industrial_sequence_planner_v172.py +0 -0
  106. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/joint_state_probe.py +0 -0
  107. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/joint_state_recorder.py +0 -0
  108. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/measured_motion.py +0 -0
  109. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/moveit_joint_plan_probe.py +0 -0
  110. {devagent_physical_engine-1.7.2 → 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.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/moveit_scene.py +0 -0
  112. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/moveit_task_planner.py +0 -0
  113. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/pilz_sequence_plan_probe.py +0 -0
  114. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/preexecution.py +0 -0
  115. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/qualification.py +0 -0
  116. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/qualification_v10.py +0 -0
  117. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/qualification_v11.py +0 -0
  118. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/qualification_v12.py +0 -0
  119. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/report_test_visualization.py +0 -0
  120. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/report_test_visualization_v170.py +0 -0
  121. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/scene_probe.py +0 -0
  122. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/state_validity_probe.py +0 -0
  123. {devagent_physical_engine-1.7.2 → 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.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/support_contact_lease_v170.py +0 -0
  125. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/support_contact_runner_v161.py +0 -0
  126. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/support_contact_v161.py +0 -0
  127. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/task_adapter.py +0 -0
  128. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/task_visualization.py +0 -0
  129. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/tf_probe.py +0 -0
  130. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/tool_scene.py +0 -0
  131. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/tool_scene_probe.py +0 -0
  132. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/trajectory.py +0 -0
  133. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/trajectory_action_probe.py +0 -0
  134. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/trajectory_tracking.py +0 -0
  135. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/ur5e.py +0 -0
  136. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/ur5e_adapter.py +0 -0
  137. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/ur5e_v10_adapter.py +0 -0
  138. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/workpiece_follow.py +0 -0
  139. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/workpiece_gazebo_follower.py +0 -0
  140. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/workpiece_scene.py +0 -0
  141. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/ros2/workpiece_scene_probe.py +0 -0
  142. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/selective_verification.py +0 -0
  143. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/selective_verification_v16.py +0 -0
  144. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/setup_profile.py +0 -0
  145. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/sim_real_qualification.py +0 -0
  146. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/simulation.py +0 -0
  147. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/simulation_platform.py +0 -0
  148. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/smooth_motion_hotfix_v162.py +0 -0
  149. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/support_contact_hotfix_v161.py +0 -0
  150. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/tool_collision.py +0 -0
  151. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/trajectory_qualification.py +0 -0
  152. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/twin.py +0 -0
  153. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/twin_builder.py +0 -0
  154. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/twin_codec.py +0 -0
  155. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/twin_materialization.py +0 -0
  156. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/user_cli.py +0 -0
  157. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/user_cli_v15.py +0 -0
  158. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/user_cli_v16.py +0 -0
  159. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/verification.py +0 -0
  160. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine/workpiece_lifecycle.py +0 -0
  161. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine.egg-info/dependency_links.txt +0 -0
  162. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine.egg-info/requires.txt +0 -0
  163. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/src/devagent_physical_engine.egg-info/top_level.txt +0 -0
  164. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_agent_core.py +0 -0
  165. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_agent_semantic_hardening.py +0 -0
  166. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_ai_cli.py +0 -0
  167. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_ai_cli_v07.py +0 -0
  168. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_commercial_importer_v1.py +0 -0
  169. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_commercial_intelligence_v15.py +0 -0
  170. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_commercial_readiness_v1.py +0 -0
  171. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_commercial_v1.py +0 -0
  172. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_continuous_clearance_v011.py +0 -0
  173. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_core.py +0 -0
  174. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_engineering_request_v07.py +0 -0
  175. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_evidence_replay_v12.py +0 -0
  176. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_evidence_trust_coverage_v12.py +0 -0
  177. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_evidence_trust_transport_v12.py +0 -0
  178. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_evidence_trust_v12.py +0 -0
  179. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_evidence_viewer_palette_v130.py +0 -0
  180. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_gazebo_cli_v0122.py +0 -0
  181. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_golden_abb_runner_v171.py +0 -0
  182. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_interpreter_profiles_v08.py +0 -0
  183. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_joint_state_probe_v0125.py +0 -0
  184. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_live_provider_qualification.py +0 -0
  185. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_measured_motion_v10.py +0 -0
  186. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_moveit_planning_diagnostics_v0125.py +0 -0
  187. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_moveit_scene_v0123.py +0 -0
  188. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_natural_language_agent_v07.py +0 -0
  189. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_one_command_hardening_v13.py +0 -0
  190. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_one_command_pose_hardening_v15.py +0 -0
  191. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_one_command_regression_v141.py +0 -0
  192. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_one_command_v13.py +0 -0
  193. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_openai_strict_schema_v0113.py +0 -0
  194. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_optimization_v05.py +0 -0
  195. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_physical_campaign_v09.py +0 -0
  196. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_physical_evidence_v09.py +0 -0
  197. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_physical_motion_v09.py +0 -0
  198. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_planning_fallback_v012.py +0 -0
  199. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_pose_math_v0125.py +0 -0
  200. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_preexecution_contract_v10.py +0 -0
  201. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_production_authority_v11.py +0 -0
  202. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_production_grade_coverage_v11.py +0 -0
  203. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_production_grade_v11.py +0 -0
  204. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_project_spine_v013.py +0 -0
  205. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_provider_and_qualification.py +0 -0
  206. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_provider_criterion_v15.py +0 -0
  207. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_qualification_cli_lifecycle_v06.py +0 -0
  208. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_qualification_harness_v06.py +0 -0
  209. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_readme_pypi.py +0 -0
  210. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_real_provider_adapters.py +0 -0
  211. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_reference_workcell_ros_frames_v0125.py +0 -0
  212. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_reference_workcell_v012.py +0 -0
  213. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_report_test_contract_coverage_v16.py +0 -0
  214. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_report_test_lineage_v16.py +0 -0
  215. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_report_test_visual_execution_v16.py +0 -0
  216. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_ros2_production_receipts_v011.py +0 -0
  217. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_ros2_simulation.py +0 -0
  218. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_ros_trajectory_v09.py +0 -0
  219. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_selective_verification_v14.py +0 -0
  220. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_setup_profile.py +0 -0
  221. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_sim_real_qualification_v011.py +0 -0
  222. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_simulation_platform_v08.py +0 -0
  223. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_smooth_motion_hotfix_v162.py +0 -0
  224. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_support_contact_hotfix_v161.py +0 -0
  225. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_tool_collision_v011.py +0 -0
  226. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_tool_scene_v0124.py +0 -0
  227. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_trajectory_action_probe_v0125.py +0 -0
  228. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_trajectory_qualification_v09.py +0 -0
  229. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_trajectory_tracking_v0125.py +0 -0
  230. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_twin_materialization_v10.py +0 -0
  231. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_twin_v08.py +0 -0
  232. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_ur5e_adapter_scopes_v09.py +0 -0
  233. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_ur5e_v10_adapter_scopes.py +0 -0
  234. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_user_cli_interactive_v131.py +0 -0
  235. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_user_cli_progress_v131.py +0 -0
  236. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_user_cli_report_visual_v16.py +0 -0
  237. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_user_cli_selective_v14.py +0 -0
  238. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_user_cli_v15.py +0 -0
  239. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_user_cli_v15_hotfix_inheritance.py +0 -0
  240. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_v052_stabilization.py +0 -0
  241. {devagent_physical_engine-1.7.2 → devagent_physical_engine-1.8.0}/tests/test_v08_catalog_mapping_regression.py +0 -0
  242. {devagent_physical_engine-1.7.2 → 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.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.
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.2
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.2
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
@@ -327,9 +340,29 @@ pilz_transfer_place_sequence_composition_failed
327
340
 
328
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.
329
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
+
330
363
  ## Qualified visual-execution scope
331
364
 
332
- The packaged visual executor remains intentionally narrow:
365
+ Measured report-test execution remains intentionally narrow:
333
366
 
334
367
  ```text
335
368
  robot: UR5e
@@ -340,7 +373,7 @@ runtime: Ubuntu 24.04 + ROS 2 Jazzy + Gazebo Harmonic + MoveIt/Pilz
340
373
 
341
374
  Unsupported customer Twins, unqualified robot profiles, boundary/fault cases outside the qualified scope, ambiguous case mappings, or incomplete lineage fail closed.
342
375
 
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.
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.
344
377
 
345
378
  ## Interactive engineering session
346
379
 
@@ -448,12 +481,12 @@ Ubuntu 24.04
448
481
  ROS 2 Jazzy
449
482
  Gazebo Harmonic
450
483
  gz_ros2_control
451
- Universal Robots ROS 2 driver
452
- ur_simulation_gz
453
- MoveIt 2 + Pilz Industrial Motion Planner
484
+ MoveIt 2
454
485
  ```
455
486
 
456
- 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:
457
490
 
458
491
  ```bash
459
492
  devagent-physical setup --profile ur5e-sim --dry-run
@@ -465,12 +498,24 @@ Apply explicitly:
465
498
  devagent-physical setup --profile ur5e-sim --yes
466
499
  ```
467
500
 
468
- Check runtime:
501
+ Check the UR5e runtime:
469
502
 
470
503
  ```bash
471
504
  devagent-physical ros doctor
472
505
  ```
473
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
+
474
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.
475
520
 
476
521
  ## Optional AI providers
@@ -497,7 +542,7 @@ Provider-backed interpretation cannot grant physical truth, site qualification,
497
542
  ## Installed CLIs
498
543
 
499
544
  ```text
500
- devagent one-command customer verification + interactive report testing
545
+ devagent one-command verification, interactive report testing, robot support/visualization
501
546
  devagent-commercial commercial/evidence workflow
502
547
  devagent-physical deterministic core + ROS/qualification tools
503
548
  devagent-physical-ai optional provider-backed engineering front end
@@ -515,9 +560,9 @@ devagent-physical-ai optional provider-backed engineering front end
515
560
 
516
561
  # Project status
517
562
 
518
- **v1.7.2 — Production/Stable software workflow**
563
+ **v1.8.0 — Production/Stable software workflow**
519
564
 
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.
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.
521
566
 
522
567
  Production-oriented software capabilities include:
523
568
 
@@ -529,7 +574,9 @@ optional provider-backed advisory criterion proposals
529
574
  requirement-driven nominal / boundary / fault case generation
530
575
  immutable project/Twin lineage
531
576
  exact Requirement → Mapping → Verification Plan → Case provenance
532
- 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
533
580
  industrial Pilz PTP / LIN planning
534
581
  adaptive bounded blend selection
535
582
  plan-only transfer/place segment diagnostics
@@ -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.2
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.2
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
@@ -286,9 +299,29 @@ pilz_transfer_place_sequence_composition_failed
286
299
 
287
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.
288
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
+
289
322
  ## Qualified visual-execution scope
290
323
 
291
- The packaged visual executor remains intentionally narrow:
324
+ Measured report-test execution remains intentionally narrow:
292
325
 
293
326
  ```text
294
327
  robot: UR5e
@@ -299,7 +332,7 @@ runtime: Ubuntu 24.04 + ROS 2 Jazzy + Gazebo Harmonic + MoveIt/Pilz
299
332
 
300
333
  Unsupported customer Twins, unqualified robot profiles, boundary/fault cases outside the qualified scope, ambiguous case mappings, or incomplete lineage fail closed.
301
334
 
302
- 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.
303
336
 
304
337
  ## Interactive engineering session
305
338
 
@@ -407,12 +440,12 @@ Ubuntu 24.04
407
440
  ROS 2 Jazzy
408
441
  Gazebo Harmonic
409
442
  gz_ros2_control
410
- Universal Robots ROS 2 driver
411
- ur_simulation_gz
412
- MoveIt 2 + Pilz Industrial Motion Planner
443
+ MoveIt 2
413
444
  ```
414
445
 
415
- 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:
416
449
 
417
450
  ```bash
418
451
  devagent-physical setup --profile ur5e-sim --dry-run
@@ -424,12 +457,24 @@ Apply explicitly:
424
457
  devagent-physical setup --profile ur5e-sim --yes
425
458
  ```
426
459
 
427
- Check runtime:
460
+ Check the UR5e runtime:
428
461
 
429
462
  ```bash
430
463
  devagent-physical ros doctor
431
464
  ```
432
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
+
433
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.
434
479
 
435
480
  ## Optional AI providers
@@ -456,7 +501,7 @@ Provider-backed interpretation cannot grant physical truth, site qualification,
456
501
  ## Installed CLIs
457
502
 
458
503
  ```text
459
- devagent one-command customer verification + interactive report testing
504
+ devagent one-command verification, interactive report testing, robot support/visualization
460
505
  devagent-commercial commercial/evidence workflow
461
506
  devagent-physical deterministic core + ROS/qualification tools
462
507
  devagent-physical-ai optional provider-backed engineering front end
@@ -474,9 +519,9 @@ devagent-physical-ai optional provider-backed engineering front end
474
519
 
475
520
  # Project status
476
521
 
477
- **v1.7.2 — Production/Stable software workflow**
522
+ **v1.8.0 — Production/Stable software workflow**
478
523
 
479
- 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.
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.
480
525
 
481
526
  Production-oriented software capabilities include:
482
527
 
@@ -488,7 +533,9 @@ optional provider-backed advisory criterion proposals
488
533
  requirement-driven nominal / boundary / fault case generation
489
534
  immutable project/Twin lineage
490
535
  exact Requirement → Mapping → Verification Plan → Case provenance
491
- 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
492
539
  industrial Pilz PTP / LIN planning
493
540
  adaptive bounded blend selection
494
541
  plan-only transfer/place segment diagnostics
@@ -4,8 +4,8 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "devagent-physical-engine"
7
- version = "1.7.2"
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, transfer/place segment diagnostics, 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"
@@ -81,6 +81,8 @@ omit = [
81
81
  "src/devagent_physical_engine/ros2/gazebo_pose.py",
82
82
  "src/devagent_physical_engine/ros2/workpiece_follow.py",
83
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",
84
86
  ]
85
87
 
86
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.2"
220
+ __version__ = "1.8.0"
@@ -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