devagent-physical-engine 1.3.0__tar.gz → 1.4.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (199) hide show
  1. devagent_physical_engine-1.4.0/PKG-INFO +798 -0
  2. devagent_physical_engine-1.4.0/README.md +757 -0
  3. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/pyproject.toml +3 -3
  4. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/__init__.py +21 -1
  5. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/evidence_trust.py +6 -6
  6. devagent_physical_engine-1.4.0/src/devagent_physical_engine/selective_verification.py +809 -0
  7. devagent_physical_engine-1.4.0/src/devagent_physical_engine/user_cli.py +699 -0
  8. devagent_physical_engine-1.4.0/src/devagent_physical_engine.egg-info/PKG-INFO +798 -0
  9. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine.egg-info/SOURCES.txt +6 -0
  10. devagent_physical_engine-1.4.0/tests/test_evidence_viewer_palette_v130.py +21 -0
  11. devagent_physical_engine-1.4.0/tests/test_selective_verification_v14.py +464 -0
  12. devagent_physical_engine-1.4.0/tests/test_user_cli_interactive_v131.py +266 -0
  13. devagent_physical_engine-1.4.0/tests/test_user_cli_progress_v131.py +148 -0
  14. devagent_physical_engine-1.4.0/tests/test_user_cli_selective_v14.py +212 -0
  15. devagent_physical_engine-1.3.0/PKG-INFO +0 -1181
  16. devagent_physical_engine-1.3.0/README.md +0 -1140
  17. devagent_physical_engine-1.3.0/src/devagent_physical_engine/user_cli.py +0 -107
  18. devagent_physical_engine-1.3.0/src/devagent_physical_engine.egg-info/PKG-INFO +0 -1181
  19. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/NOTICE +0 -0
  20. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/setup.cfg +0 -0
  21. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/agent/__init__.py +0 -0
  22. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/agent/compiler.py +0 -0
  23. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/agent/contracts.py +0 -0
  24. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/agent/coordinator.py +0 -0
  25. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/agent/critic.py +0 -0
  26. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/agent/evidence.py +0 -0
  27. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/agent/interpreter.py +0 -0
  28. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/agent/planner.py +0 -0
  29. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/agent/recovery.py +0 -0
  30. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/agent/routing.py +0 -0
  31. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/agent/runtime.py +0 -0
  32. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/agent/semantic.py +0 -0
  33. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/agent/structured.py +0 -0
  34. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ai_cli.py +0 -0
  35. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/cli.py +0 -0
  36. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/commercial.py +0 -0
  37. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/commercial_campaign.py +0 -0
  38. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/commercial_cli.py +0 -0
  39. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/commercial_importer.py +0 -0
  40. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/commercial_readiness.py +0 -0
  41. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/commercial_repository.py +0 -0
  42. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/continuous_clearance.py +0 -0
  43. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/doctor.py +0 -0
  44. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/engineering_agent.py +0 -0
  45. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/engineering_request.py +0 -0
  46. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/evidence_replay.py +0 -0
  47. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/execution.py +0 -0
  48. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/models.py +0 -0
  49. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/one_command.py +0 -0
  50. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/operating_envelope.py +0 -0
  51. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/optimization/__init__.py +0 -0
  52. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/optimization/benchmark.py +0 -0
  53. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/optimization/candidates.py +0 -0
  54. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/optimization/contracts.py +0 -0
  55. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/optimization/evaluator.py +0 -0
  56. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/optimization/evidence.py +0 -0
  57. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/optimization/experience.py +0 -0
  58. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/optimization/measured.py +0 -0
  59. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/optimization/optimizer.py +0 -0
  60. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/optimization/orchestrator.py +0 -0
  61. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/physical_campaign.py +0 -0
  62. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/physical_evidence.py +0 -0
  63. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/physical_motion.py +0 -0
  64. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/planning.py +0 -0
  65. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/pose_math.py +0 -0
  66. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/preexecution_contract.py +0 -0
  67. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/production_authority.py +0 -0
  68. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/production_grade.py +0 -0
  69. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/project.py +0 -0
  70. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/provider_adapters/__init__.py +0 -0
  71. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/provider_adapters/anthropic.py +0 -0
  72. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/provider_adapters/common.py +0 -0
  73. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/provider_adapters/factory.py +0 -0
  74. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/provider_adapters/gemini.py +0 -0
  75. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/provider_adapters/openai.py +0 -0
  76. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/provider_qualification.py +0 -0
  77. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/providers.py +0 -0
  78. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/qualification.py +0 -0
  79. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/qualification_cli.py +0 -0
  80. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/qualification_harness.py +0 -0
  81. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/reference_workcell.py +0 -0
  82. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/robot_platform.py +0 -0
  83. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/robots.py +0 -0
  84. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/__init__.py +0 -0
  85. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/acceptance.py +0 -0
  86. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/commands.py +0 -0
  87. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/continuous_clearance_probe.py +0 -0
  88. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/doctor.py +0 -0
  89. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/fk_pose.py +0 -0
  90. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/fk_probe.py +0 -0
  91. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/frame_alignment.py +0 -0
  92. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/gazebo_cli.py +0 -0
  93. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/gazebo_pose.py +0 -0
  94. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/gazebo_world.py +0 -0
  95. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/joint_state_probe.py +0 -0
  96. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/joint_state_recorder.py +0 -0
  97. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/measured_motion.py +0 -0
  98. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/moveit_joint_plan_probe.py +0 -0
  99. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/moveit_scene.py +0 -0
  100. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/moveit_task_planner.py +0 -0
  101. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/preexecution.py +0 -0
  102. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/qualification.py +0 -0
  103. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/qualification_v10.py +0 -0
  104. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/qualification_v11.py +0 -0
  105. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/qualification_v12.py +0 -0
  106. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/scene_probe.py +0 -0
  107. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/state_validity_probe.py +0 -0
  108. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/task_adapter.py +0 -0
  109. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/task_visualization.py +0 -0
  110. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/tf_probe.py +0 -0
  111. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/tool_scene.py +0 -0
  112. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/tool_scene_probe.py +0 -0
  113. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/trajectory.py +0 -0
  114. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/trajectory_action_probe.py +0 -0
  115. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/trajectory_tracking.py +0 -0
  116. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/ur5e.py +0 -0
  117. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/ur5e_adapter.py +0 -0
  118. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/ur5e_v10_adapter.py +0 -0
  119. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/workpiece_follow.py +0 -0
  120. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/workpiece_gazebo_follower.py +0 -0
  121. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/workpiece_scene.py +0 -0
  122. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/workpiece_scene_probe.py +0 -0
  123. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/setup_profile.py +0 -0
  124. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/sim_real_qualification.py +0 -0
  125. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/simulation.py +0 -0
  126. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/simulation_platform.py +0 -0
  127. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/tool_collision.py +0 -0
  128. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/trajectory_qualification.py +0 -0
  129. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/twin.py +0 -0
  130. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/twin_builder.py +0 -0
  131. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/twin_materialization.py +0 -0
  132. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/verification.py +0 -0
  133. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/workpiece_lifecycle.py +0 -0
  134. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine.egg-info/dependency_links.txt +0 -0
  135. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine.egg-info/entry_points.txt +0 -0
  136. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine.egg-info/requires.txt +0 -0
  137. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine.egg-info/top_level.txt +0 -0
  138. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_agent_core.py +0 -0
  139. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_agent_semantic_hardening.py +0 -0
  140. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_ai_cli.py +0 -0
  141. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_ai_cli_v07.py +0 -0
  142. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_commercial_importer_v1.py +0 -0
  143. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_commercial_readiness_v1.py +0 -0
  144. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_commercial_v1.py +0 -0
  145. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_continuous_clearance_v011.py +0 -0
  146. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_core.py +0 -0
  147. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_engineering_request_v07.py +0 -0
  148. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_evidence_replay_v12.py +0 -0
  149. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_evidence_trust_coverage_v12.py +0 -0
  150. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_evidence_trust_transport_v12.py +0 -0
  151. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_evidence_trust_v12.py +0 -0
  152. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_gazebo_cli_v0122.py +0 -0
  153. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_interpreter_profiles_v08.py +0 -0
  154. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_joint_state_probe_v0125.py +0 -0
  155. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_live_provider_qualification.py +0 -0
  156. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_measured_motion_v10.py +0 -0
  157. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_moveit_planning_diagnostics_v0125.py +0 -0
  158. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_moveit_scene_v0123.py +0 -0
  159. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_natural_language_agent_v07.py +0 -0
  160. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_one_command_hardening_v13.py +0 -0
  161. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_one_command_v13.py +0 -0
  162. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_openai_strict_schema_v0113.py +0 -0
  163. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_optimization_v05.py +0 -0
  164. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_physical_campaign_v09.py +0 -0
  165. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_physical_evidence_v09.py +0 -0
  166. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_physical_motion_v09.py +0 -0
  167. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_planning_fallback_v012.py +0 -0
  168. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_pose_math_v0125.py +0 -0
  169. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_preexecution_contract_v10.py +0 -0
  170. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_production_authority_v11.py +0 -0
  171. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_production_grade_coverage_v11.py +0 -0
  172. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_production_grade_v11.py +0 -0
  173. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_project_spine_v013.py +0 -0
  174. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_provider_and_qualification.py +0 -0
  175. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_qualification_cli_lifecycle_v06.py +0 -0
  176. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_qualification_harness_v06.py +0 -0
  177. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_readme_pypi.py +0 -0
  178. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_real_provider_adapters.py +0 -0
  179. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_reference_workcell_ros_frames_v0125.py +0 -0
  180. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_reference_workcell_v012.py +0 -0
  181. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_robot_platform_v08.py +0 -0
  182. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_ros2_production_receipts_v011.py +0 -0
  183. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_ros2_simulation.py +0 -0
  184. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_ros_trajectory_v09.py +0 -0
  185. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_setup_profile.py +0 -0
  186. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_sim_real_qualification_v011.py +0 -0
  187. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_simulation_platform_v08.py +0 -0
  188. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_tool_collision_v011.py +0 -0
  189. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_tool_scene_v0124.py +0 -0
  190. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_trajectory_action_probe_v0125.py +0 -0
  191. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_trajectory_qualification_v09.py +0 -0
  192. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_trajectory_tracking_v0125.py +0 -0
  193. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_twin_materialization_v10.py +0 -0
  194. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_twin_v08.py +0 -0
  195. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_ur5e_adapter_scopes_v09.py +0 -0
  196. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_ur5e_v10_adapter_scopes.py +0 -0
  197. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_v052_stabilization.py +0 -0
  198. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_v08_catalog_mapping_regression.py +0 -0
  199. {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_workpiece_lifecycle_v011.py +0 -0
@@ -0,0 +1,798 @@
1
+ Metadata-Version: 2.4
2
+ Name: devagent-physical-engine
3
+ Version: 1.4.0
4
+ Summary: Production-grade verification-first robotics evidence runtime with one-command customer intake, selective verification execution, 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,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 an ordinary customer engineering folder into a bounded verification workflow with immutable Twin lineage, deterministic requirement verdicts, measured evidence, replay inspection, FAT reporting, and selective retesting.
51
+
52
+ ```text
53
+ customer files
54
+
55
+ intake + SHA-256 inventory
56
+
57
+ requirements + explicit engineering facts
58
+
59
+ immutable Digital Twin revision
60
+
61
+ deterministic verification plan
62
+
63
+ measured evidence when a qualified execution path exists
64
+
65
+ PASS / FAIL / NOT_TESTED
66
+
67
+ FAT report + Evidence Viewer
68
+
69
+ selective retest / replay / regression
70
+ ```
71
+
72
+ > **AI proposes. Deterministic engines validate, compile, verify, measure, and gate promotion. OEM robot controllers, PLCs, safety PLCs, and certified safety systems remain authoritative.**
73
+
74
+ 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?**
75
+
76
+ ---
77
+
78
+ ## Quick start
79
+
80
+ Python 3.11+ is required.
81
+
82
+ ```bash
83
+ python -m pip install --upgrade devagent-physical-engine==1.4.0
84
+ ```
85
+
86
+ Verify the package:
87
+
88
+ ```bash
89
+ python -c "import devagent_physical_engine as d; print(d.__version__)"
90
+ ```
91
+
92
+ Expected:
93
+
94
+ ```text
95
+ 1.4.0
96
+ ```
97
+
98
+ Run the normal customer workflow:
99
+
100
+ ```bash
101
+ devagent verify ./customer-project
102
+ ```
103
+
104
+ Request simulation when the exact imported-Twin execution path is qualified:
105
+
106
+ ```bash
107
+ devagent verify ./customer-project --simulate
108
+ ```
109
+
110
+ Open the Evidence Viewer and keep a human engineering terminal session:
111
+
112
+ ```bash
113
+ devagent verify ./customer-project --simulate --open
114
+ ```
115
+
116
+ For machine-readable CI output:
117
+
118
+ ```bash
119
+ devagent verify ./customer-project --json
120
+ ```
121
+
122
+ Simple Mode automatically handles project identity, customer-file inventory, supported XLSX requirement normalization, bounded Twin normalization, deterministic campaign generation, FAT generation, and evidence rendering. The user does not need to manually manage artifact IDs for the normal workflow.
123
+
124
+ Default locations:
125
+
126
+ ```text
127
+ Evidence database: ~/.devagent/projects.db
128
+ Results: <customer-project>/devagent-results/
129
+ ```
130
+
131
+ ---
132
+
133
+ # Customer input
134
+
135
+ A customer folder can contain the engineering material the team already has:
136
+
137
+ ```text
138
+ ACME_CNC_CELL_TEST/
139
+ ├── project.yaml
140
+ ├── requirements.xlsx
141
+ ├── ur5e.urdf
142
+ ├── robot.urdf.xacro
143
+ ├── ur5e_robotiq.srdf
144
+ ├── tcp.yaml
145
+ ├── calibration.yaml
146
+ ├── layout/
147
+ │ ├── cell_layout.yaml
148
+ │ └── meshes/
149
+ ├── robot_program/
150
+ │ └── mission.yaml
151
+ ├── safety_requirements.pdf
152
+ └── expected/
153
+ └── expected_findings.json
154
+ ```
155
+
156
+ Important rule:
157
+
158
+ ```text
159
+ file discovered != engineering fact proven
160
+ ```
161
+
162
+ 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.
163
+
164
+ The root `expected/` folder is test-oracle material and is never promoted as engineering authority. PDF documents can be inventoried for review, but arbitrary PDF prose is not silently converted into deterministic PASS evidence.
165
+
166
+ If critical information is missing or ambiguous, DevAgent creates:
167
+
168
+ ```text
169
+ <customer-project>/devagent-results/QUESTIONS.md
170
+ ```
171
+
172
+ Update the original customer engineering information and rerun the same command.
173
+
174
+ ---
175
+
176
+ # What the terminal shows
177
+
178
+ Human Simple Mode keeps the terminal as the primary progress surface:
179
+
180
+ ```text
181
+ [DevAgent + 0.00s] START RUNNING source=ACME_CNC_CELL_TEST
182
+ [DevAgent + 0.00s] INTAKE RUNNING scanning and classifying customer engineering files
183
+ [DevAgent + 0.42s] REQUIREMENTS READY customer requirements normalized
184
+ [DevAgent + 0.61s] TWIN NORMALIZED customer Twin draft normalized
185
+ [DevAgent + 0.85s] PROJECT READY project_id=acme-cell
186
+ [DevAgent + 0.91s] PLAN READY artifact=...
187
+ [DevAgent + 1.02s] SIMULATION BLOCKED imported_customer_twin_execution_adapter_not_yet_qualified
188
+ [DevAgent + 1.11s] CAMPAIGN COMPLETE artifact=...
189
+ [DevAgent + 1.18s] FAT COMPLETE artifact=...
190
+ [DevAgent + 1.24s] EVIDENCE COMPLETE bundle=...
191
+ [DevAgent + 1.25s] COMPLETE DONE state=verification_incomplete release_ready=False real_execution_allowed=False
192
+ [DevAgent + 1.25s] REPORT OPENING new tab requested; terminal remains active
193
+ ```
194
+
195
+ Progress is also persisted to:
196
+
197
+ ```text
198
+ <customer-project>/devagent-results/RUN.log
199
+ ```
200
+
201
+ If the browser chooses to take focus, the DevAgent process still remains alive in the terminal. Return to the terminal and continue with the interactive session.
202
+
203
+ Use `--no-progress` to suppress human progress. `--json` remains machine-clean and never enters the interactive prompt.
204
+
205
+ ---
206
+
207
+ # Interactive engineering session
208
+
209
+ With `--open` in a real TTY, or with explicit `--interactive`, DevAgent keeps a bounded engineering prompt after the full verification run:
210
+
211
+ ```text
212
+ Interactive engineering session
213
+ Type 'help' for commands.
214
+
215
+ devagent>
216
+ ```
217
+
218
+ Useful commands:
219
+
220
+ ```text
221
+ status
222
+ tests
223
+ test SELECTOR
224
+ simulate [SELECTOR]
225
+ rerun [SELECTOR]
226
+ rerun failed
227
+ rerun blocked
228
+ rerun affected
229
+ replay
230
+ report
231
+ log
232
+ help
233
+ quit
234
+ ```
235
+
236
+ Examples:
237
+
238
+ ```text
239
+ devagent> tests
240
+ devagent> test REQ-CAL-001
241
+ devagent> test TEST-CAL-001
242
+ devagent> simulate REQ-FUN-001
243
+ devagent> rerun failed
244
+ devagent> rerun blocked
245
+ devagent> rerun affected
246
+ ```
247
+
248
+ Use `--no-interactive` when `--open` should open the report but the CLI should exit afterward.
249
+
250
+ ---
251
+
252
+ # v1.4 selective verification
253
+
254
+ Selective verification reduces unnecessary FAT/retest work without changing the authority model.
255
+
256
+ ## Stable Requirement → Test identity
257
+
258
+ DevAgent derives a stable deterministic test identity from a requirement identity:
259
+
260
+ ```text
261
+ REQ-FUN-001 → TEST-FUN-001
262
+ REQ-CAL-001 → TEST-CAL-001
263
+ ```
264
+
265
+ The mapping identifies the verification criterion. It does **not** by itself authorize a physical simulation case.
266
+
267
+ ## `test SELECTOR`
268
+
269
+ Example:
270
+
271
+ ```text
272
+ devagent> test REQ-CAL-001
273
+ ```
274
+
275
+ or:
276
+
277
+ ```text
278
+ devagent> test TEST-CAL-001
279
+ ```
280
+
281
+ `test` re-evaluates only the selected requirement/test scope using the exact Twin and currently available immutable evidence. It does not launch a robot or simulator.
282
+
283
+ The result is recorded separately as:
284
+
285
+ ```text
286
+ selective_verification_run
287
+ ```
288
+
289
+ A selective artifact includes:
290
+
291
+ ```text
292
+ requested selector
293
+ selector kind
294
+ parent campaign ID/hash
295
+ Twin revision/hash
296
+ resolved requirement IDs
297
+ resolved test IDs
298
+ verification contracts
299
+ dependencies
300
+ measurement/evidence references
301
+ verdicts
302
+ ```
303
+
304
+ Every selective run explicitly preserves:
305
+
306
+ ```text
307
+ full_campaign_executed = false
308
+ release_ready = false
309
+ real_execution_allowed = false
310
+ ```
311
+
312
+ A selective PASS is therefore not silently promoted into a full FAT PASS.
313
+
314
+ ## `simulate SELECTOR`
315
+
316
+ Example:
317
+
318
+ ```text
319
+ devagent> simulate REQ-CAL-001
320
+ ```
321
+
322
+ Selective physical execution is stricter than deterministic `test`.
323
+
324
+ The required chain is:
325
+
326
+ ```text
327
+ Requirement
328
+
329
+ stable Test contract
330
+
331
+ explicit verification-test mapping
332
+
333
+ exact physical case ID(s)
334
+
335
+ qualified selective execution adapter
336
+
337
+ measured simulation artifact
338
+
339
+ selective verdict
340
+ ```
341
+
342
+ DevAgent never guesses a physical case from requirement prose. Requirement/Test → physical case mapping must be explicit engineering provenance.
343
+
344
+ If no mapping exists:
345
+
346
+ ```text
347
+ state = blocked
348
+ reason = requirement_has_no_qualified_physical_test_mapping
349
+ execution_performed = false
350
+ ```
351
+
352
+ If the mapping exists but the selective executor is not qualified:
353
+
354
+ ```text
355
+ state = blocked
356
+ reason = selective_execution_adapter_not_qualified
357
+ execution_performed = false
358
+ ```
359
+
360
+ Current v1.4 qualification intentionally supports one explicitly mapped physical case per selective execution. Multiple mapped cases remain fail-closed until aggregation semantics are separately qualified:
361
+
362
+ ```text
363
+ selective_multi_case_aggregation_not_yet_qualified
364
+ ```
365
+
366
+ ## Explicit physical test mapping
367
+
368
+ Expert integrations can use the public API:
369
+
370
+ ```python
371
+ from devagent_physical_engine import VerificationTestMappingRecorder
372
+
373
+ mapping = VerificationTestMappingRecorder(repository).record(
374
+ project_id="acme-cell",
375
+ revision_id="twin-r0001",
376
+ verification_plan_artifact_id="art-plan",
377
+ bindings={
378
+ "REQ-CAL-001": ["case-0001"],
379
+ },
380
+ source_ref="engineering-map.yaml",
381
+ )
382
+ ```
383
+
384
+ The recorder validates that the requirement is a physical requirement, the plan belongs to the exact Twin revision, and every case ID exists in that immutable verification plan.
385
+
386
+ The mapping itself has:
387
+
388
+ ```text
389
+ execution_authority = false
390
+ physical_qualification = false
391
+ site_qualification = false
392
+ real_execution_allowed = false
393
+ ```
394
+
395
+ ## Selectors
396
+
397
+ Supported selectors are:
398
+
399
+ ```text
400
+ REQ-... one requirement
401
+ TEST-... one deterministic test identity
402
+ failed requirements that failed the parent campaign
403
+ blocked NOT_TESTED requirements plus currently blocked selective scope
404
+ affected requirements selected by latest exact-Twin change-impact evidence
405
+ all all requirements in the parent campaign
406
+ ```
407
+
408
+ For example:
409
+
410
+ ```text
411
+ devagent> rerun failed
412
+ ```
413
+
414
+ re-evaluates only the requirements that failed instead of rerunning the entire campaign.
415
+
416
+ ```text
417
+ devagent> rerun affected
418
+ ```
419
+
420
+ uses change-impact evidence to retest only affected requirements.
421
+
422
+ A selector is resolved deterministically. Unknown selectors fail closed.
423
+
424
+ ---
425
+
426
+ # Full simulation vs selective simulation vs replay
427
+
428
+ These operations are intentionally different:
429
+
430
+ | Command | Meaning |
431
+ | --- | --- |
432
+ | `simulate` | rerun the full one-command verification with simulation requested |
433
+ | `simulate REQ-X` | request only the explicitly mapped physical selective test |
434
+ | `test REQ-X` | re-evaluate one requirement/test using existing immutable evidence; no simulation |
435
+ | `replay` | reconstruct/verify persisted case identity; no new simulation |
436
+ | `rerun failed` | retest failed requirement subset |
437
+ | `rerun affected` | retest change-impact-selected requirement subset |
438
+
439
+ Replay never commands Gazebo, MoveIt, a robot, PLC, or safety PLC.
440
+
441
+ Selective verification never upgrades real-execution authority.
442
+
443
+ ---
444
+
445
+ # Results directory
446
+
447
+ A normal project can produce:
448
+
449
+ ```text
450
+ customer-project/
451
+ └── devagent-results/
452
+ ├── RUN.log
453
+ ├── SUMMARY.json
454
+ ├── INTAKE.json
455
+ ├── QUESTIONS.md
456
+ ├── normalized/
457
+ │ ├── requirements.csv
458
+ │ └── devagent-twin.yaml
459
+ ├── FAT_REPORT.html
460
+ └── EVIDENCE.html
461
+ ```
462
+
463
+ `EVIDENCE.html` is a read-only professional evidence viewer. It shows requirement verdicts, observed/expected values, blockers, artifact IDs/hashes, and Twin revision hashes. The viewer can be refreshed after selective runs so the new immutable selective artifacts are inspectable.
464
+
465
+ `RUN.log` is the human progress/debug trace. It does not replace immutable engineering evidence.
466
+
467
+ ---
468
+
469
+ # Requirement verdict model
470
+
471
+ Supported deterministic structural/Twin checks include:
472
+
473
+ ```text
474
+ planning_allowed
475
+ physics_allowed
476
+ entity_present
477
+ validation_issue_absent
478
+ twin_state
479
+ ```
480
+
481
+ Measured physical checks include:
482
+
483
+ ```text
484
+ cycle_time_max_s
485
+ minimum_clearance_m
486
+ final_tcp_error_max_m
487
+ max_tracking_error_rad
488
+ collision_free
489
+ physical_completed
490
+ ```
491
+
492
+ Verdicts remain bounded:
493
+
494
+ ```text
495
+ PASS
496
+ FAIL
497
+ NOT_TESTED
498
+ ```
499
+
500
+ A requirement requiring measured physical evidence cannot PASS from prose, a CAD filename, a generated plan, or AI interpretation.
501
+
502
+ Example:
503
+
504
+ ```text
505
+ Requirement: cycle time <= 8.0 s
506
+ Measurement available: no
507
+ Verdict: NOT_TESTED
508
+ ```
509
+
510
+ With exact-Twin measured evidence:
511
+
512
+ ```text
513
+ Requirement: cycle time <= 8.0 s
514
+ Observed: 7.42 s
515
+ Threshold: 8.0 s
516
+ Verdict: PASS
517
+ Evidence: exact measurement artifact + Twin revision/hash
518
+ ```
519
+
520
+ ---
521
+
522
+ # Simple Mode exit codes
523
+
524
+ | Exit | Meaning |
525
+ | ---: | --- |
526
+ | `0` | bounded full verification is release-ready |
527
+ | `10` | customer input or operational contract failure |
528
+ | `30` | more engineering information is required |
529
+ | `31` | full simulation was requested but the exact execution path is blocked/unqualified |
530
+ | `32` | verification completed but full release readiness is false |
531
+
532
+ Selective results are represented by immutable artifacts inside the interactive session; they do not rewrite the full-run exit contract.
533
+
534
+ ---
535
+
536
+ # Expert Mode
537
+
538
+ Installed CLIs:
539
+
540
+ ```text
541
+ devagent one-command customer verification + interactive selective retesting
542
+ devagent-commercial expert commercial/evidence workflow
543
+ devagent-physical deterministic core + ROS/qualification tools
544
+ devagent-physical-ai optional provider-backed engineering front end
545
+ ```
546
+
547
+ Typical Expert Mode flow:
548
+
549
+ ```text
550
+ project identity
551
+
552
+ customer Twin import
553
+
554
+ requirements
555
+
556
+ verification plan
557
+
558
+ measured evidence
559
+
560
+ commercial campaign
561
+
562
+ FAT report
563
+
564
+ Evidence Bundle
565
+
566
+ replay / change impact / regression
567
+ ```
568
+
569
+ Example commands:
570
+
571
+ ```bash
572
+ devagent-commercial init warehouse-cnc-04 \
573
+ --name "Warehouse CNC Loading Cell 04" \
574
+ --site atl-01 \
575
+ --workcell cnc-04
576
+
577
+ devagent-commercial import-twin warehouse-cnc-04 ./customer-cell
578
+
579
+ devagent-commercial requirements warehouse-cnc-04 \
580
+ examples/commercial/requirements-production.csv
581
+
582
+ devagent-commercial verification-plan warehouse-cnc-04 \
583
+ examples/commercial/verification-plan.yaml \
584
+ --revision twin-r0001
585
+
586
+ devagent-commercial record-measurement warehouse-cnc-04 \
587
+ physical-measurement.json \
588
+ --revision twin-r0001
589
+
590
+ devagent-commercial campaign warehouse-cnc-04 \
591
+ examples/commercial/requirements-production.csv \
592
+ --revision twin-r0001 \
593
+ --measurement ARTIFACT_ID
594
+
595
+ devagent-commercial fat-report warehouse-cnc-04 \
596
+ CAMPAIGN_ARTIFACT \
597
+ --output FAT_REPORT.html
598
+
599
+ devagent-commercial evidence-bundle warehouse-cnc-04 CAMPAIGN_ARTIFACT
600
+
601
+ devagent-commercial evidence-graph warehouse-cnc-04 > evidence-graph.json
602
+
603
+ devagent-commercial evidence-viewer warehouse-cnc-04 \
604
+ --output DEVAGENT_EVIDENCE.html
605
+
606
+ devagent-commercial replay warehouse-cnc-04 EVIDENCE_BUNDLE \
607
+ --qualification-root ~/.devagent/physical-qualification \
608
+ --output replay-manifest.json
609
+ ```
610
+
611
+ Replay reconstruction reports `execution_performed=false` and never substitutes for a new simulation run.
612
+
613
+ ---
614
+
615
+ # Physical simulation setup
616
+
617
+ `pip install` does not install ROS 2, Gazebo, MoveIt, OEM drivers, or privileged operating-system packages.
618
+
619
+ Reference stack:
620
+
621
+ ```text
622
+ Ubuntu 24.04
623
+ ROS 2 Jazzy
624
+ Gazebo Harmonic
625
+ gz_ros2_control
626
+ Universal Robots ROS 2 driver
627
+ ur_simulation_gz
628
+ MoveIt 2
629
+ ```
630
+
631
+ Preview setup:
632
+
633
+ ```bash
634
+ devagent-physical setup --profile ur5e-sim --dry-run
635
+ ```
636
+
637
+ Apply explicitly:
638
+
639
+ ```bash
640
+ devagent-physical setup --profile ur5e-sim --yes
641
+ ```
642
+
643
+ Check runtime:
644
+
645
+ ```bash
646
+ devagent-physical ros doctor
647
+ ```
648
+
649
+ Qualify trajectory runtime:
650
+
651
+ ```bash
652
+ devagent-physical ros qualify-trajectory-runtime
653
+ ```
654
+
655
+ Hosted Python CI does not prove a graphical Gazebo runtime, `move_group`, TF, controller actions, OEM drivers, or an arbitrary customer cell. Physical qualification must run on the exact workstation/adapter stack.
656
+
657
+ ---
658
+
659
+ # Optional AI providers
660
+
661
+ AI is optional and remains outside deterministic authority.
662
+
663
+ ```bash
664
+ python -m pip install "devagent-physical-engine[openai]"
665
+ python -m pip install "devagent-physical-engine[anthropic]"
666
+ python -m pip install "devagent-physical-engine[gemini]"
667
+ ```
668
+
669
+ Or:
670
+
671
+ ```bash
672
+ python -m pip install "devagent-physical-engine[ai]"
673
+ ```
674
+
675
+ Typical credentials:
676
+
677
+ ```bash
678
+ export OPENAI_API_KEY="..."
679
+ export ANTHROPIC_API_KEY="..."
680
+ export GEMINI_API_KEY="..."
681
+ ```
682
+
683
+ Provider-backed engineering interpretation can propose intent and mappings. It cannot grant deterministic safety, physical qualification, site qualification, or real-execution authority.
684
+
685
+ ---
686
+
687
+ # Evidence and authority model
688
+
689
+ DevAgent separates:
690
+
691
+ ```text
692
+ requirement
693
+ verification intent
694
+ physical execution case
695
+ measured evidence
696
+ verdict
697
+ authority/readiness
698
+ ```
699
+
700
+ A plan proves that a test was planned. A mapping proves which case an engineer bound to a physical requirement. A measurement proves only what was actually measured. A replay proves persisted identity can be reconstructed. None of those alone equals site commissioning or functional-safety certification.
701
+
702
+ Current hard boundary remains:
703
+
704
+ ```text
705
+ site_qualification = false
706
+ real_execution_allowed = false
707
+ ```
708
+
709
+ Physical qualification is true only when separately qualified evidence explicitly establishes it.
710
+
711
+ The operating principle remains:
712
+
713
+ ```text
714
+ Agents propose.
715
+ Deterministic engines compile and verify.
716
+ Existing certified controllers execute.
717
+ ```
718
+
719
+ ---
720
+
721
+ # Project status
722
+
723
+ **v1.4.0 — Production/Stable software workflow**
724
+
725
+ v1.4.0 adds selective verification execution while preserving the existing fail-closed authority model.
726
+
727
+ Production-oriented software capabilities include:
728
+
729
+ ```text
730
+ one-command customer intake
731
+ XLSX requirement normalization
732
+ immutable project/Twin lineage
733
+ deterministic full campaigns
734
+ measured evidence binding
735
+ professional FAT/Evidence Viewer
736
+ terminal progress + RUN.log
737
+ interactive engineering session
738
+ Requirement → Test selectors
739
+ selective deterministic retest
740
+ selective physical execution contract
741
+ explicit Requirement/Test → Case mapping
742
+ failed / blocked / affected retest selectors
743
+ Evidence Bundle + replay
744
+ change impact + regression
745
+ provider-neutral optional AI front end
746
+ ```
747
+
748
+ Quality gates include Python 3.11/3.12/3.13 regression, package clean-install, dependency audit, global branch coverage, One-Command coverage, **Selective Verification coverage**, Production Authority coverage, and Evidence Trust/Replay coverage.
749
+
750
+ Production/Stable describes the bounded software workflow. It does not claim arbitrary customer cells are physically qualified, site-qualified, or safe for autonomous real execution.
751
+
752
+ ---
753
+
754
+ # Documentation
755
+
756
+ One-command verification:
757
+
758
+ https://github.com/tomha85/devagent-physical-engine/blob/main/docs/ONE_COMMAND_VERIFY_V13.md
759
+
760
+ Evidence Trust / replay / viewer:
761
+
762
+ https://github.com/tomha85/devagent-physical-engine/blob/main/docs/EVIDENCE_TRUST_V12.md
763
+
764
+ Measured physical runtime:
765
+
766
+ https://github.com/tomha85/devagent-physical-engine/blob/main/docs/MEASURED_PHYSICAL_RUNTIME.md
767
+
768
+ Commercial project spine:
769
+
770
+ https://github.com/tomha85/devagent-physical-engine/blob/main/docs/COMMERCIAL_PROJECT_SPINE.md
771
+
772
+ Commercial workflow:
773
+
774
+ https://github.com/tomha85/devagent-physical-engine/blob/main/docs/COMMERCIAL_V1.md
775
+
776
+ Architecture:
777
+
778
+ https://github.com/tomha85/devagent-physical-engine/blob/main/docs/ARCHITECTURE.md
779
+
780
+ Canonical Twin runtime:
781
+
782
+ https://github.com/tomha85/devagent-physical-engine/blob/main/docs/CANONICAL_TWIN_RUNTIME.md
783
+
784
+ Laptop acceptance:
785
+
786
+ https://github.com/tomha85/devagent-physical-engine/blob/main/docs/LAPTOP_ACCEPTANCE.md
787
+
788
+ ---
789
+
790
+ # Ownership
791
+
792
+ DevAgent Smart Physical Engine
793
+ Copyright © 2026 Tom Ha
794
+ Original creator: Tom Ha
795
+ Original project: https://github.com/tomha85/devagent-physical-engine
796
+ All rights reserved.
797
+
798
+ See repository `LICENSE`, `NOTICE`, and `COPYRIGHT` for complete ownership and usage terms.