devagent-physical-engine 2.3.0__tar.gz → 2.3.1__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 (364) hide show
  1. {devagent_physical_engine-2.3.0/src/devagent_physical_engine.egg-info → devagent_physical_engine-2.3.1}/PKG-INFO +9 -6
  2. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/README.md +8 -5
  3. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/pyproject.toml +1 -1
  4. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/__init__.py +1 -1
  5. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/report_test_execution.py +11 -4
  6. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1/src/devagent_physical_engine.egg-info}/PKG-INFO +9 -6
  7. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_golden_abb_showcase.py +48 -0
  8. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/NOTICE +0 -0
  9. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/setup.cfg +0 -0
  10. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/agent/__init__.py +0 -0
  11. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/agent/compiler.py +0 -0
  12. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/agent/contracts.py +0 -0
  13. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/agent/coordinator.py +0 -0
  14. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/agent/critic.py +0 -0
  15. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/agent/evidence.py +0 -0
  16. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/agent/interpreter.py +0 -0
  17. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/agent/planner.py +0 -0
  18. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/agent/recovery.py +0 -0
  19. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/agent/routing.py +0 -0
  20. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/agent/runtime.py +0 -0
  21. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/agent/semantic.py +0 -0
  22. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/agent/structured.py +0 -0
  23. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ai_cli.py +0 -0
  24. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/cli.py +0 -0
  25. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/commercial.py +0 -0
  26. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/commercial_campaign.py +0 -0
  27. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/commercial_cli.py +0 -0
  28. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/commercial_importer.py +0 -0
  29. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/commercial_intelligence.py +0 -0
  30. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/commercial_readiness.py +0 -0
  31. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/commercial_repository.py +0 -0
  32. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/commissioning_agent.py +0 -0
  33. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/commissioning_agent_cli.py +0 -0
  34. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/commissioning_evidence.py +0 -0
  35. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/commissioning_readiness.py +0 -0
  36. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/continuous_clearance.py +0 -0
  37. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/controller_runtime_hotfix_v181.py +0 -0
  38. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/doctor.py +0 -0
  39. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/dynamic_verification_runtime_v190.py +0 -0
  40. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/engineering_agent.py +0 -0
  41. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/engineering_findings.py +0 -0
  42. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/engineering_request.py +0 -0
  43. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/evidence_provider_cli.py +0 -0
  44. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/evidence_provider_gateway.py +0 -0
  45. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/evidence_provider_policy.py +0 -0
  46. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/evidence_replay.py +0 -0
  47. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/evidence_trust.py +0 -0
  48. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/execution.py +0 -0
  49. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/guided_intake_cli.py +0 -0
  50. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/guided_intake_v23.py +0 -0
  51. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/industrial_motion_hotfix_v170.py +0 -0
  52. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/industrial_motion_v170.py +0 -0
  53. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/industrial_motion_v182.py +0 -0
  54. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/models.py +0 -0
  55. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/one_command.py +0 -0
  56. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/one_command_runtime.py +0 -0
  57. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/one_command_v15.py +0 -0
  58. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/one_command_v16.py +0 -0
  59. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/one_command_v22.py +0 -0
  60. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/one_command_v23.py +0 -0
  61. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/operating_envelope.py +0 -0
  62. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/optimization/__init__.py +0 -0
  63. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/optimization/benchmark.py +0 -0
  64. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/optimization/candidates.py +0 -0
  65. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/optimization/contracts.py +0 -0
  66. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/optimization/evaluator.py +0 -0
  67. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/optimization/evidence.py +0 -0
  68. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/optimization/experience.py +0 -0
  69. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/optimization/measured.py +0 -0
  70. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/optimization/optimizer.py +0 -0
  71. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/optimization/orchestrator.py +0 -0
  72. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/physical_campaign.py +0 -0
  73. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/physical_evidence.py +0 -0
  74. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/physical_evidence_v190.py +0 -0
  75. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/physical_motion.py +0 -0
  76. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/planning.py +0 -0
  77. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/pose_math.py +0 -0
  78. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/preexecution_contract.py +0 -0
  79. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/production_authority.py +0 -0
  80. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/production_grade.py +0 -0
  81. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/project.py +0 -0
  82. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/provider_adapters/__init__.py +0 -0
  83. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/provider_adapters/anthropic.py +0 -0
  84. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/provider_adapters/common.py +0 -0
  85. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/provider_adapters/factory.py +0 -0
  86. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/provider_adapters/gemini.py +0 -0
  87. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/provider_adapters/openai.py +0 -0
  88. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/provider_criterion.py +0 -0
  89. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/provider_qualification.py +0 -0
  90. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/providers.py +0 -0
  91. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/qualification.py +0 -0
  92. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/qualification_cli.py +0 -0
  93. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/qualification_harness.py +0 -0
  94. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/reference_workcell.py +0 -0
  95. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/report_requirements_v190.py +0 -0
  96. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/report_test_execution_strict.py +0 -0
  97. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/robot_exercise_cli.py +0 -0
  98. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/robot_platform.py +0 -0
  99. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/robot_qualification_acceptance.py +0 -0
  100. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/robot_qualification_acceptance_cli.py +0 -0
  101. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/robot_qualification_cli.py +0 -0
  102. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/robot_qualification_report_store.py +0 -0
  103. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/robot_simulation_promotion_v211.py +0 -0
  104. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/robot_support_contract.py +0 -0
  105. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/robot_support_industrial_v2.py +0 -0
  106. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/robot_support_v18.py +0 -0
  107. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/robots.py +0 -0
  108. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/__init__.py +0 -0
  109. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/abb_irb1200.py +0 -0
  110. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/abb_irb1200_preview.py +0 -0
  111. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/abb_irb1200_verified.py +0 -0
  112. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/abb_runtime_probe.py +0 -0
  113. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/acceptance.py +0 -0
  114. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/commands.py +0 -0
  115. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/continuous_clearance_probe.py +0 -0
  116. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/controller_action_probe.py +0 -0
  117. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/destination_support_contact_v182.py +0 -0
  118. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/direct_controller_discovery_runner.py +0 -0
  119. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/doctor.py +0 -0
  120. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/fanuc_crx10ia.py +0 -0
  121. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/fanuc_crx10ia_physics.py +0 -0
  122. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/fk_pose.py +0 -0
  123. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/fk_probe.py +0 -0
  124. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/frame_alignment.py +0 -0
  125. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/gazebo_cli.py +0 -0
  126. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/gazebo_overlay_support.py +0 -0
  127. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/gazebo_pose.py +0 -0
  128. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/gazebo_world.py +0 -0
  129. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/industrial_arm_runtime_gate.py +0 -0
  130. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/industrial_arm_runtime_probe.py +0 -0
  131. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/industrial_arm_task_adapters.py +0 -0
  132. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/industrial_arm_task_runtime.py +0 -0
  133. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/industrial_sequence_planner_v170.py +0 -0
  134. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/industrial_sequence_planner_v171.py +0 -0
  135. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/industrial_sequence_planner_v172.py +0 -0
  136. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/industrial_sequence_planner_v182.py +0 -0
  137. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/joint_state_probe.py +0 -0
  138. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/joint_state_recorder.py +0 -0
  139. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/kuka_kr6_r900_2.py +0 -0
  140. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/kuka_kr6_r900_2_verified.py +0 -0
  141. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/measured_motion.py +0 -0
  142. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/moveit_joint_plan_probe.py +0 -0
  143. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/moveit_joint_plan_v161_probe.py +0 -0
  144. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/moveit_scene.py +0 -0
  145. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/moveit_task_planner.py +0 -0
  146. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/pilz_sequence_plan_probe.py +0 -0
  147. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/pilz_sequence_plan_probe_v182.py +0 -0
  148. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/preexecution.py +0 -0
  149. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/qualification.py +0 -0
  150. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/qualification_multivendor.py +0 -0
  151. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/qualification_provenance.py +0 -0
  152. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/qualification_v10.py +0 -0
  153. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/qualification_v11.py +0 -0
  154. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/qualification_v12.py +0 -0
  155. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/report_test_visualization.py +0 -0
  156. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/report_test_visualization_v170.py +0 -0
  157. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/robot_description_probe.py +0 -0
  158. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/ros_gz_pose_service_probe.py +0 -0
  159. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/ros_python_runtime.py +0 -0
  160. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/runtime_quiescence.py +0 -0
  161. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/runtime_quiescence_probe.py +0 -0
  162. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/scene_probe.py +0 -0
  163. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/state_validity_probe.py +0 -0
  164. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/support_contact_acm_probe_v170.py +0 -0
  165. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/support_contact_acm_semantics_v189.py +0 -0
  166. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/support_contact_lease_v170.py +0 -0
  167. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/support_contact_runner_v161.py +0 -0
  168. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/support_contact_v161.py +0 -0
  169. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/task_adapter.py +0 -0
  170. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/task_adapter_v190.py +0 -0
  171. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/task_motion_diagnostics_v190.py +0 -0
  172. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/task_visualization.py +0 -0
  173. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/tf_probe.py +0 -0
  174. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/tool_scene.py +0 -0
  175. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/tool_scene_probe.py +0 -0
  176. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/trajectory.py +0 -0
  177. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/trajectory_action_probe.py +0 -0
  178. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/trajectory_feedback_tracking_v189.py +0 -0
  179. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/trajectory_runtime_v190.py +0 -0
  180. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/trajectory_tracking.py +0 -0
  181. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/ur5e.py +0 -0
  182. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/ur5e_adapter.py +0 -0
  183. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/ur5e_v10_adapter.py +0 -0
  184. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/workpiece_carrier_v190.py +0 -0
  185. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/workpiece_entity_replace_probe_v190.py +0 -0
  186. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/workpiece_follow.py +0 -0
  187. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/workpiece_gazebo_follower.py +0 -0
  188. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/workpiece_scene.py +0 -0
  189. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/workpiece_scene_probe.py +0 -0
  190. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/workpiece_scene_probe_v186.py +0 -0
  191. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/workpiece_scene_probe_v187.py +0 -0
  192. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/workpiece_scene_probe_v188.py +0 -0
  193. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/workpiece_scene_probe_v189.py +0 -0
  194. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/workpiece_transport.py +0 -0
  195. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/selective_verification.py +0 -0
  196. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/selective_verification_v16.py +0 -0
  197. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/selective_verification_v190.py +0 -0
  198. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/setup_profile.py +0 -0
  199. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/sim_real_qualification.py +0 -0
  200. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/simulation.py +0 -0
  201. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/simulation_platform.py +0 -0
  202. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/smooth_motion_hotfix_v162.py +0 -0
  203. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/support_contact_hotfix_v161.py +0 -0
  204. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/tool_collision.py +0 -0
  205. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/trajectory_qualification.py +0 -0
  206. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/twin.py +0 -0
  207. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/twin_builder.py +0 -0
  208. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/twin_codec.py +0 -0
  209. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/twin_materialization.py +0 -0
  210. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/user_cli.py +0 -0
  211. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/user_cli_v15.py +0 -0
  212. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/user_cli_v16.py +0 -0
  213. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/user_cli_v18.py +0 -0
  214. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/user_cli_v191.py +0 -0
  215. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/user_cli_v22.py +0 -0
  216. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/user_cli_v23.py +0 -0
  217. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/verification.py +0 -0
  218. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/verification_capabilities_v190.py +0 -0
  219. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/verification_scope_authority.py +0 -0
  220. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/workpiece_lifecycle.py +0 -0
  221. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine.egg-info/SOURCES.txt +0 -0
  222. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine.egg-info/dependency_links.txt +0 -0
  223. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine.egg-info/entry_points.txt +0 -0
  224. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine.egg-info/requires.txt +0 -0
  225. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine.egg-info/top_level.txt +0 -0
  226. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_abb_clock_provenance_v2.py +0 -0
  227. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_abb_gazebo_resource_path_v2.py +0 -0
  228. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_abb_irb1200_visual_v18.py +0 -0
  229. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_abb_robot_description_bootstrap_v2.py +0 -0
  230. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_abb_robot_description_payload_gate_v2.py +0 -0
  231. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_abb_runtime_direct_probe_v2.py +0 -0
  232. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_abb_sim_clock_v2.py +0 -0
  233. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_agent_core.py +0 -0
  234. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_agent_semantic_hardening.py +0 -0
  235. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_ai_cli.py +0 -0
  236. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_ai_cli_v07.py +0 -0
  237. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_commercial_importer_v1.py +0 -0
  238. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_commercial_intelligence_v15.py +0 -0
  239. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_commercial_readiness_v1.py +0 -0
  240. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_commercial_v1.py +0 -0
  241. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_commissioning_agent_orchestrator_v22.py +0 -0
  242. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_commissioning_core_v20.py +0 -0
  243. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_commissioning_evidence_graph_v20.py +0 -0
  244. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_continuous_clearance_v011.py +0 -0
  245. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_controller_failure_diagnostics_v190.py +0 -0
  246. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_controller_runtime_hotfix_v181.py +0 -0
  247. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_core.py +0 -0
  248. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_destination_support_contact_v182.py +0 -0
  249. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_dynamic_report_batch_v190.py +0 -0
  250. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_dynamic_report_contract_end_to_end_v190.py +0 -0
  251. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_dynamic_verification_capabilities_v190.py +0 -0
  252. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_engineering_request_v07.py +0 -0
  253. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_evidence_provider_gateway_v2.py +0 -0
  254. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_evidence_replay_v12.py +0 -0
  255. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_evidence_trust_coverage_v12.py +0 -0
  256. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_evidence_trust_transport_v12.py +0 -0
  257. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_evidence_trust_v12.py +0 -0
  258. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_evidence_viewer_palette_v130.py +0 -0
  259. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_explicit_detach_world_reassert_v189.py +0 -0
  260. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_external_evidence_campaign_authority_v2.py +0 -0
  261. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_fanuc_physics_tolerance_v2.py +0 -0
  262. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_fresh_simulation_cli_v191.py +0 -0
  263. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_fresh_simulation_service_v191.py +0 -0
  264. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_gazebo_cli_v0122.py +0 -0
  265. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_golden_abb_runner_v171.py +0 -0
  266. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_guided_intake_v23.py +0 -0
  267. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_handoff_authority_v190.py +0 -0
  268. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_industrial_arm_functional_parity_v192.py +0 -0
  269. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_industrial_arm_replay_authority_v192.py +0 -0
  270. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_industrial_motion_v170.py +0 -0
  271. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_industrial_robot_simulation_v2.py +0 -0
  272. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_interpreter_profiles_v08.py +0 -0
  273. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_joint_state_metric_authority_v190.py +0 -0
  274. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_joint_state_probe_v0125.py +0 -0
  275. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_kuka_verified_runtime_v2.py +0 -0
  276. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_live_provider_qualification.py +0 -0
  277. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_loaded_place_stability_v190.py +0 -0
  278. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_measured_motion_v10.py +0 -0
  279. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_metric_authority_surface_v190.py +0 -0
  280. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_motion_handoff_stability_v190.py +0 -0
  281. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_moveit_planning_diagnostics_v0125.py +0 -0
  282. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_moveit_scene_v0123.py +0 -0
  283. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_multivendor_runtime_hardening_v2.py +0 -0
  284. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_multivendor_sim_promotion_v211.py +0 -0
  285. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_multivendor_sim_qualification_v2.py +0 -0
  286. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_natural_language_agent_v07.py +0 -0
  287. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_one_command_hardening_v13.py +0 -0
  288. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_one_command_pose_hardening_v15.py +0 -0
  289. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_one_command_regression_v141.py +0 -0
  290. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_one_command_v13.py +0 -0
  291. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_one_command_v190_injection.py +0 -0
  292. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_openai_strict_schema_v0113.py +0 -0
  293. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_optimization_v05.py +0 -0
  294. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_package_metadata_v184.py +0 -0
  295. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_physical_campaign_v09.py +0 -0
  296. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_physical_evidence_v09.py +0 -0
  297. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_physical_motion_v09.py +0 -0
  298. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_place_preexecution_acm_v189.py +0 -0
  299. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_planning_fallback_v012.py +0 -0
  300. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_pose_math_v0125.py +0 -0
  301. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_preexecution_contract_v10.py +0 -0
  302. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_production_authority_v11.py +0 -0
  303. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_production_external_evidence_v11.py +0 -0
  304. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_production_grade_coverage_v11.py +0 -0
  305. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_production_grade_v11.py +0 -0
  306. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_project_spine_v013.py +0 -0
  307. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_provider_and_qualification.py +0 -0
  308. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_provider_criterion_v15.py +0 -0
  309. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_qualification_cli_lifecycle_v06.py +0 -0
  310. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_qualification_harness_v06.py +0 -0
  311. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_readme_pypi.py +0 -0
  312. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_real_provider_adapters.py +0 -0
  313. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_reference_workcell_ros_frames_v0125.py +0 -0
  314. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_reference_workcell_v012.py +0 -0
  315. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_release_resting_pose_v189.py +0 -0
  316. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_release_transaction_v189.py +0 -0
  317. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_report_orchestration_v190.py +0 -0
  318. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_report_test_contract_coverage_v16.py +0 -0
  319. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_report_test_lineage_v16.py +0 -0
  320. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_report_test_visual_execution_v16.py +0 -0
  321. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_robot_platform_v08.py +0 -0
  322. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_robot_qualification_acceptance_v2.py +0 -0
  323. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_robot_qualification_review_fixes_v2.py +0 -0
  324. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_robot_support_contract_v2.py +0 -0
  325. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_ros2_production_receipts_v011.py +0 -0
  326. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_ros2_simulation.py +0 -0
  327. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_ros_process_group_cleanup_v2.py +0 -0
  328. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_ros_trajectory_v09.py +0 -0
  329. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_runtime_quiescence_v2.py +0 -0
  330. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_selective_verification_v14.py +0 -0
  331. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_setup_profile.py +0 -0
  332. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_sim_real_qualification_v011.py +0 -0
  333. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_simulation_platform_v08.py +0 -0
  334. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_smooth_motion_hotfix_v162.py +0 -0
  335. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_support_contact_acm_semantics_v189.py +0 -0
  336. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_support_contact_hotfix_v161.py +0 -0
  337. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_tool_collision_v011.py +0 -0
  338. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_tool_scene_v0124.py +0 -0
  339. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_trajectory_action_contract_v189.py +0 -0
  340. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_trajectory_action_probe_v0125.py +0 -0
  341. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_trajectory_feedback_tracking_v189.py +0 -0
  342. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_trajectory_qualification_v09.py +0 -0
  343. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_trajectory_tracking_v0125.py +0 -0
  344. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_transfer_controller_policy_v189.py +0 -0
  345. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_transfer_place_diagnostic_v172.py +0 -0
  346. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_twin_materialization_v10.py +0 -0
  347. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_twin_v08.py +0 -0
  348. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_ur5e_adapter_scopes_v09.py +0 -0
  349. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_ur5e_v10_adapter_scopes.py +0 -0
  350. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_user_cli_interactive_v131.py +0 -0
  351. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_user_cli_progress_v131.py +0 -0
  352. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_user_cli_report_visual_v16.py +0 -0
  353. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_user_cli_selective_v14.py +0 -0
  354. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_user_cli_v15.py +0 -0
  355. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_user_cli_v15_hotfix_inheritance.py +0 -0
  356. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_v052_stabilization.py +0 -0
  357. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_v08_catalog_mapping_regression.py +0 -0
  358. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_verification_scope_authority_v20.py +0 -0
  359. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_workpiece_attach_semantics_v183.py +0 -0
  360. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_workpiece_carrier_v190.py +0 -0
  361. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_workpiece_lifecycle_v011.py +0 -0
  362. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_workpiece_scene_probe_v185.py +0 -0
  363. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_workpiece_semantic_lifecycle_v186.py +0 -0
  364. {devagent_physical_engine-2.3.0 → devagent_physical_engine-2.3.1}/tests/test_workpiece_transport_v189.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: devagent-physical-engine
3
- Version: 2.3.0
3
+ Version: 2.3.1
4
4
  Summary: Verification-first multi-vendor commissioning control plane with flexible guided customer-file intake, deterministic source/evidence authority, exact-Twin lineage, regression, FAT reporting, and pre-site readiness.
5
5
  Author: Tom Ha
6
6
  License: All Rights Reserved
@@ -125,7 +125,7 @@ That decision means the declared pre-site engineering scope has complete, curren
125
125
  Python 3.11+ is required.
126
126
 
127
127
  ```bash
128
- python -m pip install --upgrade devagent-physical-engine==2.3.0
128
+ python -m pip install --upgrade devagent-physical-engine==2.3.1
129
129
  ```
130
130
 
131
131
  Verify the installed package:
@@ -137,7 +137,7 @@ python -c "import devagent_physical_engine as d; print(d.__version__)"
137
137
  Expected:
138
138
 
139
139
  ```text
140
- 2.3.0
140
+ 2.3.1
141
141
  ```
142
142
 
143
143
  Run the normal customer workflow:
@@ -648,9 +648,9 @@ devagent-physical-ai optional provider-backed engineering front end
648
648
 
649
649
  # Project status
650
650
 
651
- **v2.3.0 — Production/Stable software workflow; Flexible Guided Multi-Vendor Intake + deterministic commissioning authority**
651
+ **v2.3.1 — Production/Stable software workflow; Flexible Guided Multi-Vendor Intake + selective-simulation fail-closed hardening**
652
652
 
653
- v2.3.0 makes the customer entry workflow flexible without weakening verification authority. Customers can provide the engineering files they already have instead of conforming to one mandatory DevAgent project schema. DevAgent inventories and hashes the raw sources, recognizes supported vendor/file roles, detects exact duplicates and source ambiguity, validates current intake provenance, and exposes which verification capabilities are available before the existing deterministic commissioning workflow continues.
653
+ v2.3.1 retains the v2.3 flexible customer entry workflow and hardens selective physical simulation so unsupported robot profiles fail closed as bounded `BLOCKED` results instead of surfacing runtime exceptions. v2.3.0 made the customer entry workflow flexible without weakening verification authority. Customers can provide the engineering files they already have instead of conforming to one mandatory DevAgent project schema. DevAgent inventories and hashes the raw sources, recognizes supported vendor/file roles, detects exact duplicates and source ambiguity, validates current intake provenance, and exposes which verification capabilities are available before the existing deterministic commissioning workflow continues.
654
654
 
655
655
  Missing files are allowed. Missing evidence reduces verification scope or remains `NOT_TESTED`; it never becomes a synthetic `FAIL` or an invented PASS. Multiple distinct same-vendor source sets require confirmation instead of being selected from filenames such as `final`, `latest`, or `backup`. Source changes during verification invalidate the current intake snapshot and block readiness until the project is rerun from a stable source state.
656
656
 
@@ -693,7 +693,7 @@ immutable multi-context agent snapshots + stale-context abort
693
693
  opt-in human-promoted advisory engineering memory
694
694
  ```
695
695
 
696
- Production/Stable describes the bounded software workflow. The target-proven UR5e claim remains limited to the qualified packaged scope and acceptance environment. v2.3.0 does not claim arbitrary customer cells are physically qualified, site-qualified, functionally safe, commissioned, or authorized for autonomous real execution. Flexible intake changes how customer artifacts enter the workflow; it does not weaken evidence authority. The AI agent remains advisory and cannot grant PASS/FAIL/NOT_TESTED, evidence qualification, pre-site readiness, or real-execution authority.
696
+ Production/Stable describes the bounded software workflow. The target-proven UR5e claim remains limited to the qualified packaged scope and acceptance environment. v2.3.1 does not claim arbitrary customer cells are physically qualified, site-qualified, functionally safe, commissioned, or authorized for autonomous real execution. Flexible intake changes how customer artifacts enter the workflow; it does not weaken evidence authority. The AI agent remains advisory and cannot grant PASS/FAIL/NOT_TESTED, evidence qualification, pre-site readiness, or real-execution authority.
697
697
 
698
698
  Current hard authority boundaries remain:
699
699
 
@@ -714,6 +714,9 @@ https://github.com/tomha85/devagent-physical-engine/blob/main/docs/FLEXIBLE_GUID
714
714
  Commissioning Agent Orchestrator:
715
715
  https://github.com/tomha85/devagent-physical-engine/blob/main/docs/COMMISSIONING_AGENT_ORCHESTRATOR_V1.md
716
716
 
717
+ v2.3.1 release notes:
718
+ https://github.com/tomha85/devagent-physical-engine/blob/main/docs/RELEASE_NOTES_V2_3_1.md
719
+
717
720
  v2.3.0 release notes:
718
721
  https://github.com/tomha85/devagent-physical-engine/blob/main/docs/RELEASE_NOTES_V2_3_0.md
719
722
 
@@ -83,7 +83,7 @@ That decision means the declared pre-site engineering scope has complete, curren
83
83
  Python 3.11+ is required.
84
84
 
85
85
  ```bash
86
- python -m pip install --upgrade devagent-physical-engine==2.3.0
86
+ python -m pip install --upgrade devagent-physical-engine==2.3.1
87
87
  ```
88
88
 
89
89
  Verify the installed package:
@@ -95,7 +95,7 @@ python -c "import devagent_physical_engine as d; print(d.__version__)"
95
95
  Expected:
96
96
 
97
97
  ```text
98
- 2.3.0
98
+ 2.3.1
99
99
  ```
100
100
 
101
101
  Run the normal customer workflow:
@@ -606,9 +606,9 @@ devagent-physical-ai optional provider-backed engineering front end
606
606
 
607
607
  # Project status
608
608
 
609
- **v2.3.0 — Production/Stable software workflow; Flexible Guided Multi-Vendor Intake + deterministic commissioning authority**
609
+ **v2.3.1 — Production/Stable software workflow; Flexible Guided Multi-Vendor Intake + selective-simulation fail-closed hardening**
610
610
 
611
- v2.3.0 makes the customer entry workflow flexible without weakening verification authority. Customers can provide the engineering files they already have instead of conforming to one mandatory DevAgent project schema. DevAgent inventories and hashes the raw sources, recognizes supported vendor/file roles, detects exact duplicates and source ambiguity, validates current intake provenance, and exposes which verification capabilities are available before the existing deterministic commissioning workflow continues.
611
+ v2.3.1 retains the v2.3 flexible customer entry workflow and hardens selective physical simulation so unsupported robot profiles fail closed as bounded `BLOCKED` results instead of surfacing runtime exceptions. v2.3.0 made the customer entry workflow flexible without weakening verification authority. Customers can provide the engineering files they already have instead of conforming to one mandatory DevAgent project schema. DevAgent inventories and hashes the raw sources, recognizes supported vendor/file roles, detects exact duplicates and source ambiguity, validates current intake provenance, and exposes which verification capabilities are available before the existing deterministic commissioning workflow continues.
612
612
 
613
613
  Missing files are allowed. Missing evidence reduces verification scope or remains `NOT_TESTED`; it never becomes a synthetic `FAIL` or an invented PASS. Multiple distinct same-vendor source sets require confirmation instead of being selected from filenames such as `final`, `latest`, or `backup`. Source changes during verification invalidate the current intake snapshot and block readiness until the project is rerun from a stable source state.
614
614
 
@@ -651,7 +651,7 @@ immutable multi-context agent snapshots + stale-context abort
651
651
  opt-in human-promoted advisory engineering memory
652
652
  ```
653
653
 
654
- Production/Stable describes the bounded software workflow. The target-proven UR5e claim remains limited to the qualified packaged scope and acceptance environment. v2.3.0 does not claim arbitrary customer cells are physically qualified, site-qualified, functionally safe, commissioned, or authorized for autonomous real execution. Flexible intake changes how customer artifacts enter the workflow; it does not weaken evidence authority. The AI agent remains advisory and cannot grant PASS/FAIL/NOT_TESTED, evidence qualification, pre-site readiness, or real-execution authority.
654
+ Production/Stable describes the bounded software workflow. The target-proven UR5e claim remains limited to the qualified packaged scope and acceptance environment. v2.3.1 does not claim arbitrary customer cells are physically qualified, site-qualified, functionally safe, commissioned, or authorized for autonomous real execution. Flexible intake changes how customer artifacts enter the workflow; it does not weaken evidence authority. The AI agent remains advisory and cannot grant PASS/FAIL/NOT_TESTED, evidence qualification, pre-site readiness, or real-execution authority.
655
655
 
656
656
  Current hard authority boundaries remain:
657
657
 
@@ -672,6 +672,9 @@ https://github.com/tomha85/devagent-physical-engine/blob/main/docs/FLEXIBLE_GUID
672
672
  Commissioning Agent Orchestrator:
673
673
  https://github.com/tomha85/devagent-physical-engine/blob/main/docs/COMMISSIONING_AGENT_ORCHESTRATOR_V1.md
674
674
 
675
+ v2.3.1 release notes:
676
+ https://github.com/tomha85/devagent-physical-engine/blob/main/docs/RELEASE_NOTES_V2_3_1.md
677
+
675
678
  v2.3.0 release notes:
676
679
  https://github.com/tomha85/devagent-physical-engine/blob/main/docs/RELEASE_NOTES_V2_3_0.md
677
680
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "devagent-physical-engine"
7
- version = "2.3.0"
7
+ version = "2.3.1"
8
8
  description = "Verification-first multi-vendor commissioning control plane with flexible guided customer-file intake, deterministic source/evidence authority, exact-Twin lineage, regression, FAT reporting, and pre-site readiness."
9
9
  readme = { file = "README.md", content-type = "text/markdown" }
10
10
  requires-python = ">=3.11"
@@ -298,4 +298,4 @@ install_industrial_motion_v170()
298
298
  install_controller_runtime_hotfix_v181()
299
299
  install_one_command_runtime()
300
300
 
301
- __version__ = "2.3.0"
301
+ __version__ = "2.3.1"
@@ -10,6 +10,7 @@ from .commercial_intelligence import SimulationExecutionReceipt
10
10
  from .commercial_repository import CommercialProjectRepository
11
11
  from .production_authority import PhysicalEvidenceRecorder
12
12
  from .project import EvidenceArtifactRecord, ProjectError, TwinRevisionRecord
13
+ from .simulation_platform import SimulationPlatformError
13
14
  from .twin_codec import twin_from_revision
14
15
  from .ros2.commands import SubprocessRosRunner
15
16
  from .ros2.report_test_visualization import (
@@ -238,10 +239,16 @@ class ReportTestExecutionRuntime:
238
239
  )
239
240
  _require_nominal_case(case)
240
241
  twin = twin_from_revision(revision)
241
- request = request_from_report_twin(
242
- twin,
243
- request_id=f"REQ-REPORT-{project_id}-{revision_id}-{case_id}",
244
- )
242
+ try:
243
+ request = request_from_report_twin(
244
+ twin,
245
+ request_id=f"REQ-REPORT-{project_id}-{revision_id}-{case_id}",
246
+ )
247
+ except SimulationPlatformError as exc:
248
+ code = str(exc).split(":", 1)[0] or type(exc).__name__
249
+ if code == "report_visual_profile_requires_ur5e":
250
+ code = "imported_customer_twin_execution_adapter_not_yet_qualified"
251
+ raise ReportTestExecutionBlocked(code) from exc
245
252
  try:
246
253
  profile_hash = require_qualified_report_profile(twin, request)
247
254
  except Exception as exc:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: devagent-physical-engine
3
- Version: 2.3.0
3
+ Version: 2.3.1
4
4
  Summary: Verification-first multi-vendor commissioning control plane with flexible guided customer-file intake, deterministic source/evidence authority, exact-Twin lineage, regression, FAT reporting, and pre-site readiness.
5
5
  Author: Tom Ha
6
6
  License: All Rights Reserved
@@ -125,7 +125,7 @@ That decision means the declared pre-site engineering scope has complete, curren
125
125
  Python 3.11+ is required.
126
126
 
127
127
  ```bash
128
- python -m pip install --upgrade devagent-physical-engine==2.3.0
128
+ python -m pip install --upgrade devagent-physical-engine==2.3.1
129
129
  ```
130
130
 
131
131
  Verify the installed package:
@@ -137,7 +137,7 @@ python -c "import devagent_physical_engine as d; print(d.__version__)"
137
137
  Expected:
138
138
 
139
139
  ```text
140
- 2.3.0
140
+ 2.3.1
141
141
  ```
142
142
 
143
143
  Run the normal customer workflow:
@@ -648,9 +648,9 @@ devagent-physical-ai optional provider-backed engineering front end
648
648
 
649
649
  # Project status
650
650
 
651
- **v2.3.0 — Production/Stable software workflow; Flexible Guided Multi-Vendor Intake + deterministic commissioning authority**
651
+ **v2.3.1 — Production/Stable software workflow; Flexible Guided Multi-Vendor Intake + selective-simulation fail-closed hardening**
652
652
 
653
- v2.3.0 makes the customer entry workflow flexible without weakening verification authority. Customers can provide the engineering files they already have instead of conforming to one mandatory DevAgent project schema. DevAgent inventories and hashes the raw sources, recognizes supported vendor/file roles, detects exact duplicates and source ambiguity, validates current intake provenance, and exposes which verification capabilities are available before the existing deterministic commissioning workflow continues.
653
+ v2.3.1 retains the v2.3 flexible customer entry workflow and hardens selective physical simulation so unsupported robot profiles fail closed as bounded `BLOCKED` results instead of surfacing runtime exceptions. v2.3.0 made the customer entry workflow flexible without weakening verification authority. Customers can provide the engineering files they already have instead of conforming to one mandatory DevAgent project schema. DevAgent inventories and hashes the raw sources, recognizes supported vendor/file roles, detects exact duplicates and source ambiguity, validates current intake provenance, and exposes which verification capabilities are available before the existing deterministic commissioning workflow continues.
654
654
 
655
655
  Missing files are allowed. Missing evidence reduces verification scope or remains `NOT_TESTED`; it never becomes a synthetic `FAIL` or an invented PASS. Multiple distinct same-vendor source sets require confirmation instead of being selected from filenames such as `final`, `latest`, or `backup`. Source changes during verification invalidate the current intake snapshot and block readiness until the project is rerun from a stable source state.
656
656
 
@@ -693,7 +693,7 @@ immutable multi-context agent snapshots + stale-context abort
693
693
  opt-in human-promoted advisory engineering memory
694
694
  ```
695
695
 
696
- Production/Stable describes the bounded software workflow. The target-proven UR5e claim remains limited to the qualified packaged scope and acceptance environment. v2.3.0 does not claim arbitrary customer cells are physically qualified, site-qualified, functionally safe, commissioned, or authorized for autonomous real execution. Flexible intake changes how customer artifacts enter the workflow; it does not weaken evidence authority. The AI agent remains advisory and cannot grant PASS/FAIL/NOT_TESTED, evidence qualification, pre-site readiness, or real-execution authority.
696
+ Production/Stable describes the bounded software workflow. The target-proven UR5e claim remains limited to the qualified packaged scope and acceptance environment. v2.3.1 does not claim arbitrary customer cells are physically qualified, site-qualified, functionally safe, commissioned, or authorized for autonomous real execution. Flexible intake changes how customer artifacts enter the workflow; it does not weaken evidence authority. The AI agent remains advisory and cannot grant PASS/FAIL/NOT_TESTED, evidence qualification, pre-site readiness, or real-execution authority.
697
697
 
698
698
  Current hard authority boundaries remain:
699
699
 
@@ -714,6 +714,9 @@ https://github.com/tomha85/devagent-physical-engine/blob/main/docs/FLEXIBLE_GUID
714
714
  Commissioning Agent Orchestrator:
715
715
  https://github.com/tomha85/devagent-physical-engine/blob/main/docs/COMMISSIONING_AGENT_ORCHESTRATOR_V1.md
716
716
 
717
+ v2.3.1 release notes:
718
+ https://github.com/tomha85/devagent-physical-engine/blob/main/docs/RELEASE_NOTES_V2_3_1.md
719
+
717
720
  v2.3.0 release notes:
718
721
  https://github.com/tomha85/devagent-physical-engine/blob/main/docs/RELEASE_NOTES_V2_3_0.md
719
722
 
@@ -8,6 +8,8 @@ import unittest
8
8
  import xml.etree.ElementTree as ET
9
9
 
10
10
  from devagent_physical_engine.one_command_v16 import OneCommandVerifier
11
+ from devagent_physical_engine.report_test_execution_strict import ReportTestSelectiveExecutor
12
+ from devagent_physical_engine.selective_verification_v190 import SelectiveVerificationServiceV190
11
13
 
12
14
 
13
15
  FIXTURE = (
@@ -99,5 +101,51 @@ class GoldenAbbIrb1200ShowcaseTests(unittest.TestCase):
99
101
  )
100
102
 
101
103
 
104
+ def test_selective_physical_simulation_for_abb_fails_closed_without_runtime_execution(self) -> None:
105
+ with tempfile.TemporaryDirectory() as tmp:
106
+ root = Path(tmp)
107
+ source = root / "GOLDEN_ABB_IRB1200_CNC_CELL"
108
+ shutil.copytree(FIXTURE, source)
109
+ output = root / "results"
110
+ verifier = OneCommandVerifier(root / "projects.db")
111
+ result = verifier.verify(source, output_dir=output, simulate=False)
112
+
113
+ visual_calls: list[str] = []
114
+
115
+ def unexpected_visual_runner(*_args, **_kwargs):
116
+ visual_calls.append("called")
117
+ self.fail("UR5e-only report visual runtime must not execute for ABB")
118
+
119
+ executor = ReportTestSelectiveExecutor(
120
+ verifier.repository,
121
+ source_root=source,
122
+ keep_open=False,
123
+ visual_runner=unexpected_visual_runner,
124
+ runner_factory=lambda: object(),
125
+ )
126
+ service = SelectiveVerificationServiceV190(verifier.repository)
127
+
128
+ for selector in ("REQ-ABB-101", "TEST-ABB-101", "all"):
129
+ artifact = service.run_simulation(
130
+ project_id=result.project_id,
131
+ selector=selector,
132
+ parent_campaign_artifact_id=result.campaign_artifact_id,
133
+ executor=executor,
134
+ )
135
+ self.assertEqual(artifact.payload["state"], "blocked")
136
+ self.assertIn(
137
+ "imported_customer_twin_execution_adapter_not_yet_qualified",
138
+ artifact.payload["reason"],
139
+ )
140
+ self.assertFalse(artifact.payload["execution_performed"])
141
+ self.assertFalse(artifact.payload["release_ready"])
142
+ self.assertFalse(artifact.payload["real_execution_allowed"])
143
+ self.assertIsNone(
144
+ artifact.payload.get("physical_measurement_artifact_id")
145
+ )
146
+
147
+ self.assertEqual(visual_calls, [])
148
+
149
+
102
150
  if __name__ == "__main__":
103
151
  unittest.main()