devagent-physical-engine 1.5.0__tar.gz → 1.6.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 (226) hide show
  1. devagent_physical_engine-1.6.1/PKG-INFO +599 -0
  2. devagent_physical_engine-1.6.1/README.md +558 -0
  3. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/pyproject.toml +6 -5
  4. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/__init__.py +27 -3
  5. devagent_physical_engine-1.6.1/src/devagent_physical_engine/one_command_v16.py +28 -0
  6. devagent_physical_engine-1.6.1/src/devagent_physical_engine/report_test_execution.py +490 -0
  7. devagent_physical_engine-1.6.1/src/devagent_physical_engine/report_test_execution_strict.py +273 -0
  8. devagent_physical_engine-1.6.1/src/devagent_physical_engine/ros2/moveit_joint_plan_v161_probe.py +154 -0
  9. devagent_physical_engine-1.6.1/src/devagent_physical_engine/ros2/report_test_visualization.py +549 -0
  10. devagent_physical_engine-1.6.1/src/devagent_physical_engine/ros2/support_contact_runner_v161.py +41 -0
  11. devagent_physical_engine-1.6.1/src/devagent_physical_engine/ros2/support_contact_v161.py +165 -0
  12. devagent_physical_engine-1.6.1/src/devagent_physical_engine/selective_verification_v16.py +128 -0
  13. devagent_physical_engine-1.6.1/src/devagent_physical_engine/support_contact_hotfix_v161.py +12 -0
  14. devagent_physical_engine-1.6.1/src/devagent_physical_engine/twin_codec.py +283 -0
  15. devagent_physical_engine-1.6.1/src/devagent_physical_engine/user_cli_v16.py +207 -0
  16. devagent_physical_engine-1.6.1/src/devagent_physical_engine.egg-info/PKG-INFO +599 -0
  17. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine.egg-info/SOURCES.txt +17 -0
  18. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine.egg-info/entry_points.txt +1 -1
  19. devagent_physical_engine-1.6.1/tests/test_golden_abb_showcase.py +102 -0
  20. devagent_physical_engine-1.6.1/tests/test_report_test_contract_coverage_v16.py +292 -0
  21. devagent_physical_engine-1.6.1/tests/test_report_test_lineage_v16.py +164 -0
  22. devagent_physical_engine-1.6.1/tests/test_report_test_visual_execution_v16.py +289 -0
  23. devagent_physical_engine-1.6.1/tests/test_support_contact_hotfix_v161.py +169 -0
  24. devagent_physical_engine-1.6.1/tests/test_user_cli_report_visual_v16.py +169 -0
  25. devagent_physical_engine-1.5.0/PKG-INFO +0 -857
  26. devagent_physical_engine-1.5.0/README.md +0 -816
  27. devagent_physical_engine-1.5.0/src/devagent_physical_engine.egg-info/PKG-INFO +0 -857
  28. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/NOTICE +0 -0
  29. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/setup.cfg +0 -0
  30. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/agent/__init__.py +0 -0
  31. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/agent/compiler.py +0 -0
  32. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/agent/contracts.py +0 -0
  33. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/agent/coordinator.py +0 -0
  34. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/agent/critic.py +0 -0
  35. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/agent/evidence.py +0 -0
  36. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/agent/interpreter.py +0 -0
  37. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/agent/planner.py +0 -0
  38. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/agent/recovery.py +0 -0
  39. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/agent/routing.py +0 -0
  40. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/agent/runtime.py +0 -0
  41. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/agent/semantic.py +0 -0
  42. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/agent/structured.py +0 -0
  43. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/ai_cli.py +0 -0
  44. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/cli.py +0 -0
  45. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/commercial.py +0 -0
  46. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/commercial_campaign.py +0 -0
  47. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/commercial_cli.py +0 -0
  48. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/commercial_importer.py +0 -0
  49. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/commercial_intelligence.py +0 -0
  50. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/commercial_readiness.py +0 -0
  51. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/commercial_repository.py +0 -0
  52. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/continuous_clearance.py +0 -0
  53. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/doctor.py +0 -0
  54. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/engineering_agent.py +0 -0
  55. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/engineering_request.py +0 -0
  56. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/evidence_replay.py +0 -0
  57. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/evidence_trust.py +0 -0
  58. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/execution.py +0 -0
  59. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/models.py +0 -0
  60. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/one_command.py +0 -0
  61. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/one_command_runtime.py +0 -0
  62. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/one_command_v15.py +0 -0
  63. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/operating_envelope.py +0 -0
  64. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/optimization/__init__.py +0 -0
  65. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/optimization/benchmark.py +0 -0
  66. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/optimization/candidates.py +0 -0
  67. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/optimization/contracts.py +0 -0
  68. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/optimization/evaluator.py +0 -0
  69. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/optimization/evidence.py +0 -0
  70. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/optimization/experience.py +0 -0
  71. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/optimization/measured.py +0 -0
  72. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/optimization/optimizer.py +0 -0
  73. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/optimization/orchestrator.py +0 -0
  74. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/physical_campaign.py +0 -0
  75. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/physical_evidence.py +0 -0
  76. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/physical_motion.py +0 -0
  77. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/planning.py +0 -0
  78. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/pose_math.py +0 -0
  79. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/preexecution_contract.py +0 -0
  80. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/production_authority.py +0 -0
  81. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/production_grade.py +0 -0
  82. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/project.py +0 -0
  83. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/provider_adapters/__init__.py +0 -0
  84. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/provider_adapters/anthropic.py +0 -0
  85. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/provider_adapters/common.py +0 -0
  86. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/provider_adapters/factory.py +0 -0
  87. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/provider_adapters/gemini.py +0 -0
  88. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/provider_adapters/openai.py +0 -0
  89. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/provider_criterion.py +0 -0
  90. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/provider_qualification.py +0 -0
  91. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/providers.py +0 -0
  92. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/qualification.py +0 -0
  93. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/qualification_cli.py +0 -0
  94. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/qualification_harness.py +0 -0
  95. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/reference_workcell.py +0 -0
  96. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/robot_platform.py +0 -0
  97. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/robots.py +0 -0
  98. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/ros2/__init__.py +0 -0
  99. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/ros2/acceptance.py +0 -0
  100. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/ros2/commands.py +0 -0
  101. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/ros2/continuous_clearance_probe.py +0 -0
  102. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/ros2/doctor.py +0 -0
  103. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/ros2/fk_pose.py +0 -0
  104. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/ros2/fk_probe.py +0 -0
  105. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/ros2/frame_alignment.py +0 -0
  106. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/ros2/gazebo_cli.py +0 -0
  107. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/ros2/gazebo_pose.py +0 -0
  108. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/ros2/gazebo_world.py +0 -0
  109. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/ros2/joint_state_probe.py +0 -0
  110. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/ros2/joint_state_recorder.py +0 -0
  111. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/ros2/measured_motion.py +0 -0
  112. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/ros2/moveit_joint_plan_probe.py +0 -0
  113. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/ros2/moveit_scene.py +0 -0
  114. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/ros2/moveit_task_planner.py +0 -0
  115. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/ros2/preexecution.py +0 -0
  116. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/ros2/qualification.py +0 -0
  117. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/ros2/qualification_v10.py +0 -0
  118. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/ros2/qualification_v11.py +0 -0
  119. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/ros2/qualification_v12.py +0 -0
  120. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/ros2/scene_probe.py +0 -0
  121. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/ros2/state_validity_probe.py +0 -0
  122. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/ros2/task_adapter.py +0 -0
  123. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/ros2/task_visualization.py +0 -0
  124. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/ros2/tf_probe.py +0 -0
  125. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/ros2/tool_scene.py +0 -0
  126. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/ros2/tool_scene_probe.py +0 -0
  127. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/ros2/trajectory.py +0 -0
  128. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/ros2/trajectory_action_probe.py +0 -0
  129. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/ros2/trajectory_tracking.py +0 -0
  130. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/ros2/ur5e.py +0 -0
  131. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/ros2/ur5e_adapter.py +0 -0
  132. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/ros2/ur5e_v10_adapter.py +0 -0
  133. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/ros2/workpiece_follow.py +0 -0
  134. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/ros2/workpiece_gazebo_follower.py +0 -0
  135. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/ros2/workpiece_scene.py +0 -0
  136. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/ros2/workpiece_scene_probe.py +0 -0
  137. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/selective_verification.py +0 -0
  138. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/setup_profile.py +0 -0
  139. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/sim_real_qualification.py +0 -0
  140. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/simulation.py +0 -0
  141. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/simulation_platform.py +0 -0
  142. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/tool_collision.py +0 -0
  143. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/trajectory_qualification.py +0 -0
  144. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/twin.py +0 -0
  145. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/twin_builder.py +0 -0
  146. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/twin_materialization.py +0 -0
  147. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/user_cli.py +0 -0
  148. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/user_cli_v15.py +0 -0
  149. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/verification.py +0 -0
  150. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine/workpiece_lifecycle.py +0 -0
  151. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine.egg-info/dependency_links.txt +0 -0
  152. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine.egg-info/requires.txt +0 -0
  153. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/src/devagent_physical_engine.egg-info/top_level.txt +0 -0
  154. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_agent_core.py +0 -0
  155. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_agent_semantic_hardening.py +0 -0
  156. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_ai_cli.py +0 -0
  157. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_ai_cli_v07.py +0 -0
  158. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_commercial_importer_v1.py +0 -0
  159. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_commercial_intelligence_v15.py +0 -0
  160. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_commercial_readiness_v1.py +0 -0
  161. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_commercial_v1.py +0 -0
  162. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_continuous_clearance_v011.py +0 -0
  163. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_core.py +0 -0
  164. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_engineering_request_v07.py +0 -0
  165. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_evidence_replay_v12.py +0 -0
  166. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_evidence_trust_coverage_v12.py +0 -0
  167. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_evidence_trust_transport_v12.py +0 -0
  168. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_evidence_trust_v12.py +0 -0
  169. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_evidence_viewer_palette_v130.py +0 -0
  170. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_gazebo_cli_v0122.py +0 -0
  171. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_interpreter_profiles_v08.py +0 -0
  172. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_joint_state_probe_v0125.py +0 -0
  173. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_live_provider_qualification.py +0 -0
  174. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_measured_motion_v10.py +0 -0
  175. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_moveit_planning_diagnostics_v0125.py +0 -0
  176. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_moveit_scene_v0123.py +0 -0
  177. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_natural_language_agent_v07.py +0 -0
  178. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_one_command_hardening_v13.py +0 -0
  179. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_one_command_pose_hardening_v15.py +0 -0
  180. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_one_command_regression_v141.py +0 -0
  181. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_one_command_v13.py +0 -0
  182. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_openai_strict_schema_v0113.py +0 -0
  183. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_optimization_v05.py +0 -0
  184. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_physical_campaign_v09.py +0 -0
  185. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_physical_evidence_v09.py +0 -0
  186. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_physical_motion_v09.py +0 -0
  187. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_planning_fallback_v012.py +0 -0
  188. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_pose_math_v0125.py +0 -0
  189. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_preexecution_contract_v10.py +0 -0
  190. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_production_authority_v11.py +0 -0
  191. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_production_grade_coverage_v11.py +0 -0
  192. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_production_grade_v11.py +0 -0
  193. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_project_spine_v013.py +0 -0
  194. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_provider_and_qualification.py +0 -0
  195. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_provider_criterion_v15.py +0 -0
  196. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_qualification_cli_lifecycle_v06.py +0 -0
  197. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_qualification_harness_v06.py +0 -0
  198. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_readme_pypi.py +0 -0
  199. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_real_provider_adapters.py +0 -0
  200. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_reference_workcell_ros_frames_v0125.py +0 -0
  201. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_reference_workcell_v012.py +0 -0
  202. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_robot_platform_v08.py +0 -0
  203. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_ros2_production_receipts_v011.py +0 -0
  204. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_ros2_simulation.py +0 -0
  205. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_ros_trajectory_v09.py +0 -0
  206. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_selective_verification_v14.py +0 -0
  207. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_setup_profile.py +0 -0
  208. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_sim_real_qualification_v011.py +0 -0
  209. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_simulation_platform_v08.py +0 -0
  210. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_tool_collision_v011.py +0 -0
  211. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_tool_scene_v0124.py +0 -0
  212. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_trajectory_action_probe_v0125.py +0 -0
  213. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_trajectory_qualification_v09.py +0 -0
  214. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_trajectory_tracking_v0125.py +0 -0
  215. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_twin_materialization_v10.py +0 -0
  216. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_twin_v08.py +0 -0
  217. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_ur5e_adapter_scopes_v09.py +0 -0
  218. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_ur5e_v10_adapter_scopes.py +0 -0
  219. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_user_cli_interactive_v131.py +0 -0
  220. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_user_cli_progress_v131.py +0 -0
  221. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_user_cli_selective_v14.py +0 -0
  222. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_user_cli_v15.py +0 -0
  223. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_user_cli_v15_hotfix_inheritance.py +0 -0
  224. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_v052_stabilization.py +0 -0
  225. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_v08_catalog_mapping_regression.py +0 -0
  226. {devagent_physical_engine-1.5.0 → devagent_physical_engine-1.6.1}/tests/test_workpiece_lifecycle_v011.py +0 -0
@@ -0,0 +1,599 @@
1
+ Metadata-Version: 2.4
2
+ Name: devagent-physical-engine
3
+ Version: 1.6.1
4
+ Summary: Production-grade verification-first robotics evidence runtime with one-command customer intake, validated requirement mapping, report-test Gazebo visualization, requirement-driven test generation, selective verification, deterministic Twin lineage, measured physical verification, replay inspection, regression, and FAT evidence.
5
+ Author: Tom Ha
6
+ License: All Rights Reserved
7
+ Project-URL: Homepage, https://github.com/tomha85/devagent-physical-engine
8
+ Project-URL: Repository, https://github.com/tomha85/devagent-physical-engine
9
+ Project-URL: Issues, https://github.com/tomha85/devagent-physical-engine/issues
10
+ Keywords: robotics,industrial-automation,agentic-ai,ros2,gazebo,verification,selective-testing,digital-twin,fat-testing,regression,evidence,replay
11
+ Classifier: Development Status :: 5 - Production/Stable
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: Operating System :: OS Independent
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.11
16
+ Classifier: Programming Language :: Python :: 3.12
17
+ Classifier: Programming Language :: Python :: 3.13
18
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
19
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
20
+ Requires-Python: >=3.11
21
+ Description-Content-Type: text/markdown
22
+ License-File: NOTICE
23
+ Requires-Dist: PyYAML<7,>=6.0
24
+ Provides-Extra: openai
25
+ Requires-Dist: openai<4,>=3.0; extra == "openai"
26
+ Provides-Extra: anthropic
27
+ Requires-Dist: anthropic<2,>=1.0; extra == "anthropic"
28
+ Provides-Extra: gemini
29
+ Requires-Dist: google-genai<3,>=2.0; extra == "gemini"
30
+ Provides-Extra: ai
31
+ Requires-Dist: openai<4,>=3.0; extra == "ai"
32
+ Requires-Dist: anthropic<2,>=1.0; extra == "ai"
33
+ Requires-Dist: google-genai<3,>=2.0; extra == "ai"
34
+ Provides-Extra: dev
35
+ Requires-Dist: build==1.6.0; extra == "dev"
36
+ Requires-Dist: twine==7.0.0; extra == "dev"
37
+ Requires-Dist: coverage[toml]<8,>=7.6; extra == "dev"
38
+ Requires-Dist: ruff<1,>=0.12; extra == "dev"
39
+ Requires-Dist: pip-audit<3,>=2.9; extra == "dev"
40
+ Dynamic: license-file
41
+
42
+ # DevAgent Smart Physical Engine
43
+
44
+ [![PyPI](https://img.shields.io/pypi/v/devagent-physical-engine.svg)](https://pypi.org/project/devagent-physical-engine/)
45
+ [![Python](https://img.shields.io/pypi/pyversions/devagent-physical-engine.svg)](https://pypi.org/project/devagent-physical-engine/)
46
+ [![Status: Production/Stable](https://img.shields.io/badge/status-production%2Fstable-blue.svg)](#project-status)
47
+
48
+ **Verification-first commissioning engineering for robotics and industrial automation.**
49
+
50
+ DevAgent turns a customer engineering folder into a bounded verification workflow with immutable Digital Twin lineage, deterministic requirement verdicts, requirement-driven test cases, exact-Twin measured simulation evidence, regression analysis, FAT reporting, replay inspection, and selective retesting.
51
+
52
+ ```text
53
+ customer engineering files
54
+ ↓
55
+ intake + SHA-256 inventory
56
+ ↓
57
+ validated Requirement → Criterion mapping
58
+ ↓
59
+ immutable Digital Twin revision
60
+ ↓
61
+ requirement-driven nominal / boundary / fault cases
62
+ ↓
63
+ qualified exact-Twin simulation when supported
64
+ ↓
65
+ measured evidence
66
+ ↓
67
+ PASS / FAIL / NOT_TESTED
68
+ ↓
69
+ regression + FAT report + Evidence Viewer
70
+ ↓
71
+ selective retest / replay
72
+ ```
73
+
74
+ > **AI proposes. Deterministic engines validate, compile, verify, measure, and gate promotion. OEM robot controllers, PLCs, safety PLCs, and certified safety systems remain authoritative.**
75
+
76
+ DevAgent is designed to answer: **What can be proven about this cell, what failed, what remains unknown, what changed, and what evidence supports the conclusion?**
77
+
78
+ ---
79
+
80
+ ## Quick start
81
+
82
+ Python 3.11+ is required.
83
+
84
+ ```bash
85
+ python -m pip install --upgrade devagent-physical-engine==1.6.1
86
+ ```
87
+
88
+ Verify the installed package:
89
+
90
+ ```bash
91
+ python -c "import devagent_physical_engine as d; print(d.__version__)"
92
+ ```
93
+
94
+ Expected:
95
+
96
+ ```text
97
+ 1.6.1
98
+ ```
99
+
100
+ Run the normal customer workflow:
101
+
102
+ ```bash
103
+ devagent verify ./customer-project
104
+ ```
105
+
106
+ Request simulation:
107
+
108
+ ```bash
109
+ devagent verify ./customer-project --simulate
110
+ ```
111
+
112
+ Open the Evidence Viewer and retain an interactive engineering session:
113
+
114
+ ```bash
115
+ devagent verify ./customer-project --simulate --open
116
+ ```
117
+
118
+ For machine-readable CI output:
119
+
120
+ ```bash
121
+ devagent verify ./customer-project --json
122
+ ```
123
+
124
+ Default locations:
125
+
126
+ ```text
127
+ Evidence database: ~/.devagent/projects.db
128
+ Results: <customer-project>/devagent-results/
129
+ ```
130
+
131
+ ---
132
+
133
+ # v1.6 report-test visual execution
134
+
135
+ v1.6 closes the gap between report test cases and the previously separate ROS/Gazebo reference visualization path.
136
+
137
+ A physical report test can now follow this bounded chain:
138
+
139
+ ```text
140
+ Requirement
141
+ ↓
142
+ stable Test identity
143
+ ↓
144
+ immutable Requirement → Case mapping
145
+ ↓
146
+ exact Verification Plan ID/hash
147
+ ↓
148
+ exact Case ID
149
+ ↓
150
+ exact Twin revision/hash
151
+ ↓
152
+ qualified report execution profile
153
+ ↓
154
+ Gazebo + MoveIt visible execution
155
+ ↓
156
+ typed physical_measurement artifact
157
+ ↓
158
+ deterministic PASS / FAIL / NOT_TESTED
159
+ ↓
160
+ refreshed Evidence Viewer
161
+ ```
162
+
163
+ Interactive example:
164
+
165
+ ```text
166
+ devagent> tests
167
+ REQ-PERF-001 TEST-PERF-001 NOT_TESTED case-0001
168
+
169
+ devagent> simulate TEST-PERF-001
170
+ ```
171
+
172
+ For a supported qualified case, DevAgent materializes the **exact immutable report Twin** in the visual runtime. It does not run a separate demo Twin and relabel that result as customer evidence.
173
+
174
+ The execution runtime binds measured metrics such as:
175
+
176
+ ```text
177
+ cycle_time_s
178
+ minimum_clearance_m
179
+ final_tcp_error_m
180
+ max_tracking_error_rad
181
+ collision_free
182
+ completed
183
+ sample_count
184
+ ```
185
+
186
+ The resulting `physical_measurement` remains scoped to the exact Twin revision/hash and case lineage that produced it.
187
+
188
+ ## Qualified scope
189
+
190
+ The initial packaged visual-execution qualification is intentionally narrow:
191
+
192
+ ```text
193
+ robot: UR5e
194
+ operation: load
195
+ profile: packaged qualified report-execution profile
196
+ case scope: one nominal mapped physical case
197
+ runtime: ROS 2 Jazzy + Gazebo Harmonic + MoveIt 2
198
+ ```
199
+
200
+ Unsupported customer Twins, boundary/fault cases, multiple mapped cases, incomplete mappings, ambiguous case IDs, mismatched verification plans, or unqualified execution profiles fail closed.
201
+
202
+ DevAgent never substitutes:
203
+
204
+ ```text
205
+ devagent-physical ros demo
206
+ ```
207
+
208
+ for report evidence.
209
+
210
+ ## v1.6.1 support-contact lift hotfix
211
+
212
+ The qualified reference load profile starts with the workpiece physically resting on its source support. During the first attached-object `lift` preflight, v1.6.1 preserves the complete live MoveIt Allowed Collision Matrix and enables exactly one temporary request-local pair:
213
+
214
+ ```text
215
+ attached workpiece ↔ conveyor_a support surface
216
+ ```
217
+
218
+ That allowance is scoped to lift departure only. Transfer/place keep normal collision checking, no global PlanningScene collision policy is disabled, and the live ACM is never replaced by a sparse two-object matrix.
219
+
220
+ ## Exact lineage hardening
221
+
222
+ A case ID such as `case-0001` is local to its verification plan. v1.6 therefore requires the complete lineage:
223
+
224
+ ```text
225
+ Requirement
226
+ → mapping artifact
227
+ → exact Verification Plan ID/hash
228
+ → exact Case ID
229
+ → exact Twin revision/hash
230
+ → execution
231
+ → measurement
232
+ ```
233
+
234
+ If another plan reuses the same case ID, or the mapping references a different plan, report execution is blocked instead of guessing.
235
+
236
+ Full `--simulate` also fails closed if any physical requirement lacks an exact case mapping, or if the union of mapped physical cases is outside the currently qualified single-case scope.
237
+
238
+ ---
239
+
240
+ # Requirement intelligence and test generation
241
+
242
+ DevAgent maps supported requirement language into deterministic criteria only when the mapping can be validated. Supported measured physical checks include:
243
+
244
+ ```text
245
+ cycle_time_max_s
246
+ minimum_clearance_m
247
+ final_tcp_error_max_m
248
+ max_tracking_error_rad
249
+ collision_free
250
+ physical_completed
251
+ ```
252
+
253
+ Supported structural/Twin checks include:
254
+
255
+ ```text
256
+ planning_allowed
257
+ physics_allowed
258
+ entity_present
259
+ validation_issue_absent
260
+ twin_state
261
+ ```
262
+
263
+ Provider-backed OpenAI, Anthropic, or Gemini proposals are advisory. They cannot create physical truth, site qualification, or real-execution authority.
264
+
265
+ Requirement-driven case generation can derive bounded variations and fault cases from explicit engineering requirements, including payload ranges, TCP offset boundaries, missing-workpiece faults, and grasp-verification failures.
266
+
267
+ A requirement with no deterministic criterion or required measurement remains:
268
+
269
+ ```text
270
+ NOT_TESTED
271
+ ```
272
+
273
+ It is never auto-passed from prose, CAD filenames, generated plans, or AI interpretation.
274
+
275
+ ---
276
+
277
+ # Interactive engineering session
278
+
279
+ With `--open` in a real TTY, or with explicit `--interactive`, DevAgent keeps a bounded engineering prompt:
280
+
281
+ ```text
282
+ status
283
+ tests
284
+ test SELECTOR
285
+ simulate [SELECTOR]
286
+ rerun [SELECTOR]
287
+ rerun failed
288
+ rerun blocked
289
+ rerun affected
290
+ replay
291
+ report
292
+ log
293
+ help
294
+ quit
295
+ ```
296
+
297
+ Selectors can be requirement IDs, test IDs, or bounded groups:
298
+
299
+ ```text
300
+ REQ-PERF-001
301
+ TEST-PERF-001
302
+ failed
303
+ blocked
304
+ affected
305
+ all
306
+ ```
307
+
308
+ `test SELECTOR` re-evaluates existing immutable evidence and does not command a simulator.
309
+
310
+ `simulate TEST-X` requests qualified execution of the selected mapped physical report case.
311
+
312
+ `replay` reconstructs and verifies persisted identity only; it never commands Gazebo, MoveIt, a robot, PLC, or safety PLC.
313
+
314
+ Selective runs never silently promote full FAT readiness.
315
+
316
+ ---
317
+
318
+ # Customer input
319
+
320
+ A customer folder can contain the engineering material the team already has:
321
+
322
+ ```text
323
+ ACME_CNC_CELL_TEST/
324
+ ├── project.yaml
325
+ ├── requirements.xlsx
326
+ ├── devagent-twin.yaml
327
+ ├── ur5e.urdf
328
+ ├── robot.urdf.xacro
329
+ ├── ur5e_robotiq.srdf
330
+ ├── tcp.yaml
331
+ ├── calibration.yaml
332
+ ├── layout/
333
+ │ ├── cell_layout.yaml
334
+ │ └── meshes/
335
+ ├── robot_program/
336
+ │ └── mission.yaml
337
+ └── expected/
338
+ └── expected_findings.json
339
+ ```
340
+
341
+ Important rule:
342
+
343
+ ```text
344
+ file discovered != engineering fact proven
345
+ ```
346
+
347
+ DevAgent fingerprints and classifies files, but it does not treat a filename as proof of pose, TCP, calibration, collision geometry, safety behavior, or physical performance.
348
+
349
+ The root `expected/` folder is test-oracle material and is never promoted as engineering authority.
350
+
351
+ If critical information is missing or ambiguous, DevAgent creates:
352
+
353
+ ```text
354
+ <customer-project>/devagent-results/QUESTIONS.md
355
+ ```
356
+
357
+ Update the original customer engineering information and rerun the same command.
358
+
359
+ ---
360
+
361
+ # Results and evidence
362
+
363
+ A normal project can produce:
364
+
365
+ ```text
366
+ customer-project/
367
+ └── devagent-results/
368
+ ├── RUN.log
369
+ ├── SUMMARY.json
370
+ ├── INTAKE.json
371
+ ├── QUESTIONS.md
372
+ ├── normalized/
373
+ │ ├── requirements.csv
374
+ │ └── devagent-twin.yaml
375
+ ├── report-test-visualization/
376
+ ├── FAT_REPORT.html
377
+ └── EVIDENCE.html
378
+ ```
379
+
380
+ `EVIDENCE.html` is read-only engineering evidence. It exposes requirement verdicts, observed/expected values, blockers, artifact IDs/hashes, Twin revision hashes, selective runs, and measurement lineage.
381
+
382
+ `RUN.log` is the human progress/debug trace. It does not replace immutable engineering evidence.
383
+
384
+ Repeat runs on the same project automatically compare the immediately previous campaign with the current campaign before the new FAT artifact is generated.
385
+
386
+ ---
387
+
388
+ # Authority model
389
+
390
+ DevAgent separates:
391
+
392
+ ```text
393
+ requirement
394
+ verification intent
395
+ physical execution case
396
+ measured evidence
397
+ verdict
398
+ authority/readiness
399
+ ```
400
+
401
+ A plan proves that a test was planned. A mapping proves which case is bound to a requirement. A measurement proves only what was actually measured. A replay proves persisted identity can be reconstructed.
402
+
403
+ None of those alone equals site commissioning or functional-safety certification.
404
+
405
+ Current hard boundaries remain:
406
+
407
+ ```text
408
+ physical_qualification = false unless separately proven
409
+ site_qualification = false
410
+ real_execution_allowed = false
411
+ ```
412
+
413
+ The operating principle remains:
414
+
415
+ ```text
416
+ Agents propose.
417
+ Deterministic engines compile and verify.
418
+ Qualified simulators measure bounded scopes.
419
+ Existing certified controllers execute real equipment.
420
+ ```
421
+
422
+ ---
423
+
424
+ # Physical simulation setup
425
+
426
+ `pip install` does not install ROS 2, Gazebo, MoveIt, OEM drivers, or privileged operating-system packages.
427
+
428
+ Reference stack:
429
+
430
+ ```text
431
+ Ubuntu 24.04
432
+ ROS 2 Jazzy
433
+ Gazebo Harmonic
434
+ gz_ros2_control
435
+ Universal Robots ROS 2 driver
436
+ ur_simulation_gz
437
+ MoveIt 2
438
+ ```
439
+
440
+ Preview setup:
441
+
442
+ ```bash
443
+ devagent-physical setup --profile ur5e-sim --dry-run
444
+ ```
445
+
446
+ Apply explicitly:
447
+
448
+ ```bash
449
+ devagent-physical setup --profile ur5e-sim --yes
450
+ ```
451
+
452
+ Check runtime:
453
+
454
+ ```bash
455
+ devagent-physical ros doctor
456
+ ```
457
+
458
+ Hosted Python CI validates software contracts and deterministic execution boundaries. It does not by itself prove a graphical Gazebo runtime, `move_group`, TF, controller actions, OEM drivers, or an arbitrary customer cell. Physical target-stack qualification must run on the intended workstation/adapter stack.
459
+
460
+ ---
461
+
462
+ # Optional AI providers
463
+
464
+ AI is optional and remains outside deterministic authority.
465
+
466
+ ```bash
467
+ python -m pip install "devagent-physical-engine[openai]"
468
+ python -m pip install "devagent-physical-engine[anthropic]"
469
+ python -m pip install "devagent-physical-engine[gemini]"
470
+ ```
471
+
472
+ Or install all provider adapters:
473
+
474
+ ```bash
475
+ python -m pip install "devagent-physical-engine[ai]"
476
+ ```
477
+
478
+ Typical credentials:
479
+
480
+ ```bash
481
+ export OPENAI_API_KEY="..."
482
+ export ANTHROPIC_API_KEY="..."
483
+ export GEMINI_API_KEY="..."
484
+ ```
485
+
486
+ Provider-backed interpretation can propose intent or criterion mappings. It cannot grant deterministic safety, physical qualification, site qualification, or real-execution authority.
487
+
488
+ ---
489
+
490
+ # Installed CLIs
491
+
492
+ ```text
493
+ devagent one-command customer verification + interactive report testing
494
+ devagent-commercial expert commercial/evidence workflow
495
+ devagent-physical deterministic core + ROS/qualification tools
496
+ devagent-physical-ai optional provider-backed engineering front end
497
+ ```
498
+
499
+ ---
500
+
501
+ # Simple Mode exit codes
502
+
503
+ | Exit | Meaning |
504
+ | ---: | --- |
505
+ | `0` | bounded full verification is release-ready |
506
+ | `10` | customer input or operational contract failure |
507
+ | `30` | more engineering information is required |
508
+ | `31` | full simulation was requested but the exact execution path is blocked/unqualified |
509
+ | `32` | verification completed but full release readiness is false |
510
+
511
+ ---
512
+
513
+ # Project status
514
+
515
+ **v1.6.1 — Production/Stable software workflow**
516
+
517
+ v1.6.1 hotfixes the qualified UR5e report-test lift preflight by preserving the complete live MoveIt Allowed Collision Matrix and allowing only the attached workpiece/source-support contact during lift departure. It retains v1.6 exact-Twin report execution, immutable Requirement→Mapping→Verification Plan→Case lineage, typed simulation measurements, interactive report-case visualization, and fail-closed unsupported scopes.
518
+
519
+ Production-oriented software capabilities include:
520
+
521
+ ```text
522
+ one-command customer intake
523
+ XLSX requirement normalization
524
+ validated Requirement → Criterion mapping
525
+ optional provider-backed advisory criterion proposals
526
+ requirement-driven nominal / boundary / fault case generation
527
+ immutable project/Twin lineage
528
+ exact Requirement → Case provenance
529
+ qualified report-test visual execution contract
530
+ Gazebo/MoveIt selected-case visualization
531
+ typed physical measurement binding
532
+ deterministic full campaigns
533
+ repeat-run regression orchestration
534
+ professional FAT/Evidence Viewer
535
+ terminal progress + RUN.log
536
+ interactive engineering session
537
+ Requirement → Test selectors
538
+ selective deterministic retest
539
+ failed / blocked / affected selectors
540
+ Evidence Bundle + replay
541
+ change impact + regression
542
+ provider-neutral optional AI front end
543
+ ```
544
+
545
+ Quality gates include Python 3.11/3.12/3.13 regression, compilation, Ruff correctness checks, package build/clean-install, runtime dependency audit, global branch coverage, One-Command coverage, Commercial Intelligence coverage, report-test visual execution qualification tests, Selective Verification coverage, Production Authority coverage, and Evidence Trust/Replay coverage.
546
+
547
+ Production/Stable describes the bounded software workflow. It does not claim arbitrary customer cells are physically qualified, site-qualified, functionally safe, or authorized for autonomous real execution.
548
+
549
+ ---
550
+
551
+ # Documentation
552
+
553
+ One-command verification:
554
+
555
+ https://github.com/tomha85/devagent-physical-engine/blob/main/docs/ONE_COMMAND_VERIFY_V13.md
556
+
557
+ v1.6 report-test visual execution:
558
+
559
+ https://github.com/tomha85/devagent-physical-engine/blob/main/docs/REPORT_TEST_VISUAL_EXECUTION_V16.md
560
+
561
+ Evidence Trust / replay / viewer:
562
+
563
+ https://github.com/tomha85/devagent-physical-engine/blob/main/docs/EVIDENCE_TRUST_V12.md
564
+
565
+ Measured physical runtime:
566
+
567
+ https://github.com/tomha85/devagent-physical-engine/blob/main/docs/MEASURED_PHYSICAL_RUNTIME.md
568
+
569
+ Commercial project spine:
570
+
571
+ https://github.com/tomha85/devagent-physical-engine/blob/main/docs/COMMERCIAL_PROJECT_SPINE.md
572
+
573
+ Commercial workflow:
574
+
575
+ https://github.com/tomha85/devagent-physical-engine/blob/main/docs/COMMERCIAL_V1.md
576
+
577
+ Architecture:
578
+
579
+ https://github.com/tomha85/devagent-physical-engine/blob/main/docs/ARCHITECTURE.md
580
+
581
+ Canonical Twin runtime:
582
+
583
+ https://github.com/tomha85/devagent-physical-engine/blob/main/docs/CANONICAL_TWIN_RUNTIME.md
584
+
585
+ Laptop acceptance:
586
+
587
+ https://github.com/tomha85/devagent-physical-engine/blob/main/docs/LAPTOP_ACCEPTANCE.md
588
+
589
+ ---
590
+
591
+ # Ownership
592
+
593
+ DevAgent Smart Physical Engine
594
+ Copyright © 2026 Tom Ha
595
+ Original creator: Tom Ha
596
+ Original project: https://github.com/tomha85/devagent-physical-engine
597
+ All rights reserved.
598
+
599
+ See repository `LICENSE`, `NOTICE`, and `COPYRIGHT` for complete ownership and usage terms.