devagent-physical-engine 1.2.0__tar.gz → 1.3.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (195) hide show
  1. devagent_physical_engine-1.3.1/PKG-INFO +1290 -0
  2. devagent_physical_engine-1.3.1/README.md +1249 -0
  3. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/pyproject.toml +3 -2
  4. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/__init__.py +15 -1
  5. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/evidence_trust.py +6 -6
  6. devagent_physical_engine-1.3.1/src/devagent_physical_engine/one_command.py +961 -0
  7. devagent_physical_engine-1.3.1/src/devagent_physical_engine/user_cli.py +589 -0
  8. devagent_physical_engine-1.3.1/src/devagent_physical_engine.egg-info/PKG-INFO +1290 -0
  9. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine.egg-info/SOURCES.txt +7 -0
  10. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine.egg-info/entry_points.txt +1 -0
  11. devagent_physical_engine-1.3.1/tests/test_evidence_viewer_palette_v130.py +21 -0
  12. devagent_physical_engine-1.3.1/tests/test_one_command_hardening_v13.py +88 -0
  13. devagent_physical_engine-1.3.1/tests/test_one_command_v13.py +232 -0
  14. devagent_physical_engine-1.3.1/tests/test_user_cli_interactive_v131.py +237 -0
  15. devagent_physical_engine-1.3.1/tests/test_user_cli_progress_v131.py +148 -0
  16. devagent_physical_engine-1.2.0/PKG-INFO +0 -976
  17. devagent_physical_engine-1.2.0/README.md +0 -935
  18. devagent_physical_engine-1.2.0/src/devagent_physical_engine.egg-info/PKG-INFO +0 -976
  19. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/NOTICE +0 -0
  20. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/setup.cfg +0 -0
  21. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/agent/__init__.py +0 -0
  22. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/agent/compiler.py +0 -0
  23. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/agent/contracts.py +0 -0
  24. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/agent/coordinator.py +0 -0
  25. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/agent/critic.py +0 -0
  26. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/agent/evidence.py +0 -0
  27. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/agent/interpreter.py +0 -0
  28. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/agent/planner.py +0 -0
  29. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/agent/recovery.py +0 -0
  30. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/agent/routing.py +0 -0
  31. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/agent/runtime.py +0 -0
  32. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/agent/semantic.py +0 -0
  33. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/agent/structured.py +0 -0
  34. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ai_cli.py +0 -0
  35. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/cli.py +0 -0
  36. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/commercial.py +0 -0
  37. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/commercial_campaign.py +0 -0
  38. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/commercial_cli.py +0 -0
  39. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/commercial_importer.py +0 -0
  40. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/commercial_readiness.py +0 -0
  41. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/commercial_repository.py +0 -0
  42. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/continuous_clearance.py +0 -0
  43. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/doctor.py +0 -0
  44. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/engineering_agent.py +0 -0
  45. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/engineering_request.py +0 -0
  46. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/evidence_replay.py +0 -0
  47. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/execution.py +0 -0
  48. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/models.py +0 -0
  49. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/operating_envelope.py +0 -0
  50. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/optimization/__init__.py +0 -0
  51. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/optimization/benchmark.py +0 -0
  52. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/optimization/candidates.py +0 -0
  53. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/optimization/contracts.py +0 -0
  54. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/optimization/evaluator.py +0 -0
  55. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/optimization/evidence.py +0 -0
  56. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/optimization/experience.py +0 -0
  57. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/optimization/measured.py +0 -0
  58. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/optimization/optimizer.py +0 -0
  59. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/optimization/orchestrator.py +0 -0
  60. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/physical_campaign.py +0 -0
  61. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/physical_evidence.py +0 -0
  62. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/physical_motion.py +0 -0
  63. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/planning.py +0 -0
  64. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/pose_math.py +0 -0
  65. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/preexecution_contract.py +0 -0
  66. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/production_authority.py +0 -0
  67. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/production_grade.py +0 -0
  68. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/project.py +0 -0
  69. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/provider_adapters/__init__.py +0 -0
  70. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/provider_adapters/anthropic.py +0 -0
  71. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/provider_adapters/common.py +0 -0
  72. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/provider_adapters/factory.py +0 -0
  73. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/provider_adapters/gemini.py +0 -0
  74. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/provider_adapters/openai.py +0 -0
  75. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/provider_qualification.py +0 -0
  76. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/providers.py +0 -0
  77. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/qualification.py +0 -0
  78. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/qualification_cli.py +0 -0
  79. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/qualification_harness.py +0 -0
  80. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/reference_workcell.py +0 -0
  81. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/robot_platform.py +0 -0
  82. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/robots.py +0 -0
  83. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/__init__.py +0 -0
  84. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/acceptance.py +0 -0
  85. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/commands.py +0 -0
  86. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/continuous_clearance_probe.py +0 -0
  87. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/doctor.py +0 -0
  88. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/fk_pose.py +0 -0
  89. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/fk_probe.py +0 -0
  90. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/frame_alignment.py +0 -0
  91. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/gazebo_cli.py +0 -0
  92. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/gazebo_pose.py +0 -0
  93. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/gazebo_world.py +0 -0
  94. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/joint_state_probe.py +0 -0
  95. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/joint_state_recorder.py +0 -0
  96. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/measured_motion.py +0 -0
  97. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/moveit_joint_plan_probe.py +0 -0
  98. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/moveit_scene.py +0 -0
  99. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/moveit_task_planner.py +0 -0
  100. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/preexecution.py +0 -0
  101. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/qualification.py +0 -0
  102. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/qualification_v10.py +0 -0
  103. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/qualification_v11.py +0 -0
  104. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/qualification_v12.py +0 -0
  105. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/scene_probe.py +0 -0
  106. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/state_validity_probe.py +0 -0
  107. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/task_adapter.py +0 -0
  108. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/task_visualization.py +0 -0
  109. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/tf_probe.py +0 -0
  110. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/tool_scene.py +0 -0
  111. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/tool_scene_probe.py +0 -0
  112. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/trajectory.py +0 -0
  113. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/trajectory_action_probe.py +0 -0
  114. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/trajectory_tracking.py +0 -0
  115. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/ur5e.py +0 -0
  116. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/ur5e_adapter.py +0 -0
  117. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/ur5e_v10_adapter.py +0 -0
  118. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/workpiece_follow.py +0 -0
  119. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/workpiece_gazebo_follower.py +0 -0
  120. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/workpiece_scene.py +0 -0
  121. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/workpiece_scene_probe.py +0 -0
  122. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/setup_profile.py +0 -0
  123. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/sim_real_qualification.py +0 -0
  124. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/simulation.py +0 -0
  125. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/simulation_platform.py +0 -0
  126. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/tool_collision.py +0 -0
  127. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/trajectory_qualification.py +0 -0
  128. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/twin.py +0 -0
  129. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/twin_builder.py +0 -0
  130. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/twin_materialization.py +0 -0
  131. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/verification.py +0 -0
  132. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/workpiece_lifecycle.py +0 -0
  133. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine.egg-info/dependency_links.txt +0 -0
  134. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine.egg-info/requires.txt +0 -0
  135. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine.egg-info/top_level.txt +0 -0
  136. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_agent_core.py +0 -0
  137. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_agent_semantic_hardening.py +0 -0
  138. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_ai_cli.py +0 -0
  139. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_ai_cli_v07.py +0 -0
  140. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_commercial_importer_v1.py +0 -0
  141. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_commercial_readiness_v1.py +0 -0
  142. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_commercial_v1.py +0 -0
  143. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_continuous_clearance_v011.py +0 -0
  144. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_core.py +0 -0
  145. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_engineering_request_v07.py +0 -0
  146. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_evidence_replay_v12.py +0 -0
  147. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_evidence_trust_coverage_v12.py +0 -0
  148. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_evidence_trust_transport_v12.py +0 -0
  149. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_evidence_trust_v12.py +0 -0
  150. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_gazebo_cli_v0122.py +0 -0
  151. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_interpreter_profiles_v08.py +0 -0
  152. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_joint_state_probe_v0125.py +0 -0
  153. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_live_provider_qualification.py +0 -0
  154. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_measured_motion_v10.py +0 -0
  155. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_moveit_planning_diagnostics_v0125.py +0 -0
  156. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_moveit_scene_v0123.py +0 -0
  157. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_natural_language_agent_v07.py +0 -0
  158. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_openai_strict_schema_v0113.py +0 -0
  159. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_optimization_v05.py +0 -0
  160. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_physical_campaign_v09.py +0 -0
  161. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_physical_evidence_v09.py +0 -0
  162. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_physical_motion_v09.py +0 -0
  163. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_planning_fallback_v012.py +0 -0
  164. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_pose_math_v0125.py +0 -0
  165. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_preexecution_contract_v10.py +0 -0
  166. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_production_authority_v11.py +0 -0
  167. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_production_grade_coverage_v11.py +0 -0
  168. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_production_grade_v11.py +0 -0
  169. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_project_spine_v013.py +0 -0
  170. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_provider_and_qualification.py +0 -0
  171. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_qualification_cli_lifecycle_v06.py +0 -0
  172. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_qualification_harness_v06.py +0 -0
  173. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_readme_pypi.py +0 -0
  174. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_real_provider_adapters.py +0 -0
  175. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_reference_workcell_ros_frames_v0125.py +0 -0
  176. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_reference_workcell_v012.py +0 -0
  177. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_robot_platform_v08.py +0 -0
  178. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_ros2_production_receipts_v011.py +0 -0
  179. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_ros2_simulation.py +0 -0
  180. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_ros_trajectory_v09.py +0 -0
  181. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_setup_profile.py +0 -0
  182. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_sim_real_qualification_v011.py +0 -0
  183. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_simulation_platform_v08.py +0 -0
  184. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_tool_collision_v011.py +0 -0
  185. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_tool_scene_v0124.py +0 -0
  186. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_trajectory_action_probe_v0125.py +0 -0
  187. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_trajectory_qualification_v09.py +0 -0
  188. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_trajectory_tracking_v0125.py +0 -0
  189. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_twin_materialization_v10.py +0 -0
  190. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_twin_v08.py +0 -0
  191. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_ur5e_adapter_scopes_v09.py +0 -0
  192. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_ur5e_v10_adapter_scopes.py +0 -0
  193. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_v052_stabilization.py +0 -0
  194. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_v08_catalog_mapping_regression.py +0 -0
  195. {devagent_physical_engine-1.2.0 → devagent_physical_engine-1.3.1}/tests/test_workpiece_lifecycle_v011.py +0 -0
@@ -0,0 +1,1290 @@
1
+ Metadata-Version: 2.4
2
+ Name: devagent-physical-engine
3
+ Version: 1.3.1
4
+ Summary: Production-grade verification-first robotics evidence runtime with one-command customer intake, 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,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, traceable verification workflow:
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 + replayable lineage
68
+ ```
69
+
70
+ > **AI proposes. Deterministic engines validate, compile, verify, measure, and gate promotion. OEM robot controllers, PLCs, safety PLCs, and certified safety systems remain authoritative.**
71
+
72
+ DevAgent is designed to answer a practical commissioning question before engineers travel onsite:
73
+
74
+ > **What can be proven about this cell, what failed, what is still unknown, what changed, and what evidence supports the conclusion?**
75
+
76
+ ---
77
+
78
+ ## Quick start
79
+
80
+ Python 3.11+ is required.
81
+
82
+ Install:
83
+
84
+ ```bash
85
+ python -m pip install --upgrade devagent-physical-engine==1.3.1
86
+ ```
87
+
88
+ Verify the installed version:
89
+
90
+ ```bash
91
+ python -c "import devagent_physical_engine as d; print(d.__version__)"
92
+ ```
93
+
94
+ Expected:
95
+
96
+ ```text
97
+ 1.3.1
98
+ ```
99
+
100
+ Run DevAgent on the customer project folder:
101
+
102
+ ```bash
103
+ devagent verify ./customer-project
104
+ ```
105
+
106
+ That is the normal starting point.
107
+
108
+ You do **not** need to manually initialize a DevAgent project, choose artifact IDs, convert an XLSX sheet to CSV, or understand the internal evidence database before using Simple Mode.
109
+
110
+ Request physical simulation when an exact qualified execution path exists:
111
+
112
+ ```bash
113
+ devagent verify ./customer-project --simulate
114
+ ```
115
+
116
+ Open the generated Evidence Viewer after verification:
117
+
118
+ ```bash
119
+ devagent verify ./customer-project --simulate --open
120
+ ```
121
+
122
+ `--open` requests the report in a **new browser tab** after the terminal verification summary is complete. DevAgent requests that the browser not raise itself over the terminal, then the CLI returns so the same terminal can be used for replay and inspection commands. Desktop/browser policy may still choose to focus the new tab.
123
+
124
+ For machine-readable output:
125
+
126
+ ```bash
127
+ devagent verify ./customer-project --json
128
+ ```
129
+
130
+ Use a dedicated evidence database and results directory when required:
131
+
132
+ ```bash
133
+ devagent verify ./customer-project \
134
+ --db ./customer-projects.db \
135
+ --output ./verification-results \
136
+ --json
137
+ ```
138
+
139
+ Default locations:
140
+
141
+ ```text
142
+ Evidence database: ~/.devagent/projects.db
143
+ Results: <customer-project>/devagent-results/
144
+ ```
145
+
146
+ ---
147
+
148
+ # What the user sees in the terminal
149
+
150
+ Human Simple Mode keeps the terminal as the primary run surface. Example:
151
+
152
+ ```text
153
+ [DevAgent + 0.00s] START RUNNING source=ACME_CNC_CELL_TEST
154
+ [DevAgent + 0.00s] INTAKE RUNNING scanning and classifying customer engineering files
155
+ [DevAgent + 0.42s] REQUIREMENTS READY customer requirements normalized
156
+ [DevAgent + 0.61s] TWIN NORMALIZED customer Twin draft normalized
157
+ [DevAgent + 0.85s] PROJECT READY project_id=acme-cell
158
+ [DevAgent + 0.91s] PLAN READY artifact=...
159
+ [DevAgent + 1.02s] SIMULATION BLOCKED imported_customer_twin_execution_adapter_not_yet_qualified
160
+ [DevAgent + 1.11s] CAMPAIGN COMPLETE artifact=...
161
+ [DevAgent + 1.18s] FAT COMPLETE artifact=...
162
+ [DevAgent + 1.24s] EVIDENCE COMPLETE bundle=...
163
+ [DevAgent + 1.25s] COMPLETE DONE state=verification_incomplete release_ready=False real_execution_allowed=False
164
+ [DevAgent + 1.25s] REPORT OPENING new tab requested; terminal will remain available: .../EVIDENCE.html
165
+ [DevAgent + 1.26s] REPORT DISPATCHED browser request completed; terminal is available
166
+ ```
167
+
168
+ If verification runs longer than five seconds, DevAgent emits a heartbeat such as:
169
+
170
+ ```text
171
+ [DevAgent + 5.00s] ENGINE RUNNING verification is still active
172
+ ```
173
+
174
+ The same human progress trace is persisted to:
175
+
176
+ ```text
177
+ <customer-project>/devagent-results/RUN.log
178
+ ```
179
+
180
+ After an Evidence Bundle exists, DevAgent prints a copy/paste replay command. Example:
181
+
182
+ ```bash
183
+ devagent-commercial --db ~/.devagent/projects.db replay \
184
+ acme-cell \
185
+ EVIDENCE_BUNDLE_ARTIFACT \
186
+ --output ./devagent-results/REPLAY.json
187
+ ```
188
+
189
+ If simulation was blocked and no measured runtime case exists, replay is expected to fail closed. If qualified simulation runtime evidence exists, replay reconstructs and verifies that exact persisted case without commanding a robot.
190
+
191
+ To suppress human progress while keeping the final human summary:
192
+
193
+ ```bash
194
+ devagent verify ./customer-project --no-progress
195
+ ```
196
+
197
+ `--json` remains machine-clean and suppresses human progress automatically.
198
+
199
+ ---
200
+
201
+ # How to use the engine
202
+
203
+ ## 1. Give DevAgent the engineering folder you already have
204
+
205
+ A typical project may look like this:
206
+
207
+ ```text
208
+ ACME_CNC_CELL_TEST/
209
+ ├── project.yaml
210
+ ├── requirements.xlsx
211
+ ├── ur5e.urdf
212
+ ├── tcp.yaml
213
+ ├── layout.yaml
214
+ ├── robot_program/
215
+ │ └── mission.yaml
216
+ ├── drawings.step
217
+ ├── safety_requirements.pdf
218
+ └── expected/
219
+ └── expected_findings.json
220
+ ```
221
+
222
+ The filenames do not all have to match this example. DevAgent inventories the source tree, fingerprints files with SHA-256, assigns bounded roles, and normalizes supported structured evidence.
223
+
224
+ Important rule:
225
+
226
+ ```text
227
+ file discovered != engineering fact proven
228
+ ```
229
+
230
+ A URDF, Xacro, STEP, STL, PDF, YAML, or JSON file does not automatically prove pose, TCP, calibration, collision geometry, physics, safety, or production readiness.
231
+
232
+ ### What DevAgent does during intake
233
+
234
+ ```text
235
+ CUSTOMER FOLDER
236
+ |
237
+ v
238
+ FILE INVENTORY + SHA-256
239
+ |
240
+ v
241
+ ROLE CLASSIFICATION
242
+ |
243
+ +--> expected/ test data -> NEVER engineering authority
244
+ |
245
+ v
246
+ REQUIREMENT NORMALIZATION
247
+ |
248
+ v
249
+ EXPLICIT FACT EXTRACTION
250
+ |
251
+ v
252
+ PROPOSED TWIN NORMALIZATION
253
+ |
254
+ v
255
+ DETERMINISTIC TWIN VALIDATION
256
+ |
257
+ +--> missing or ambiguous facts -> QUESTIONS.md
258
+ |
259
+ v
260
+ VERIFICATION PLAN / CAMPAIGN / FAT
261
+ |
262
+ v
263
+ EVIDENCE VIEWER + RUN LOG + REPLAY HANDOFF
264
+ ```
265
+
266
+ Unknown facts remain unknown. DevAgent does not fill engineering gaps with guesses.
267
+
268
+ ---
269
+
270
+ ## 2. First-run example: incomplete customer information
271
+
272
+ Assume the customer provides this `project.yaml`:
273
+
274
+ ```yaml
275
+ project_id: acme-cell
276
+ name: ACME Cell
277
+ site_id: atl-01
278
+ workcell_id: cell-01
279
+ ```
280
+
281
+ and also provides robot/layout/TCP/requirements files, but does not say exactly what task the robot must perform.
282
+
283
+ Run:
284
+
285
+ ```bash
286
+ devagent verify ./ACME_CNC_CELL_TEST
287
+ ```
288
+
289
+ DevAgent creates the project automatically and may return:
290
+
291
+ ```text
292
+ State: needs_information
293
+ ```
294
+
295
+ Typical questions may include:
296
+
297
+ ```text
298
+ engineering_request_operation_missing
299
+ engineering_request_object_id_missing
300
+ engineering_request_source_missing
301
+ engineering_request_destination_missing
302
+ ```
303
+
304
+ The questions are also written to:
305
+
306
+ ```text
307
+ ACME_CNC_CELL_TEST/devagent-results/QUESTIONS.md
308
+ ```
309
+
310
+ This is expected fail-closed behavior. DevAgent will not invent the operation, workpiece, source, or destination simply to produce a green report.
311
+
312
+ Typical first-run output:
313
+
314
+ ```text
315
+ ACME_CNC_CELL_TEST/
316
+ └── devagent-results/
317
+ ├── RUN.log
318
+ ├── SUMMARY.json
319
+ ├── INTAKE.json
320
+ ├── QUESTIONS.md
321
+ └── normalized/
322
+ └── requirements.csv
323
+ ```
324
+
325
+ Fix the source engineering information, then run the same command again.
326
+
327
+ ---
328
+
329
+ ## 3. Complete ACME example
330
+
331
+ The following example uses the same input shape exercised by the v1.3 one-command acceptance tests.
332
+
333
+ ### `project.yaml`
334
+
335
+ ```yaml
336
+ project_id: acme-cell
337
+ name: ACME Cell
338
+ site_id: atl-01
339
+ workcell_id: cell-01
340
+
341
+ robot_base_pose:
342
+ x: 0
343
+ y: 0
344
+ z: 0
345
+ roll: 0
346
+ pitch: 0
347
+ yaw: 0
348
+
349
+ engineering_request:
350
+ robot: ur5e
351
+ operation: load
352
+ object_id: BOX_101
353
+ source: conveyor_a
354
+ destination: cnc_04
355
+ tool: gripper
356
+ payload_kg: 1.5
357
+ ```
358
+
359
+ ### `tcp.yaml`
360
+
361
+ ```yaml
362
+ tcp:
363
+ x: 0
364
+ y: 0
365
+ z: 180
366
+ roll: 0
367
+ pitch: 0
368
+ yaw: 0
369
+ ```
370
+
371
+ ### `layout.yaml`
372
+
373
+ ```yaml
374
+ entities:
375
+ - id: conveyor_a
376
+ type: conveyor
377
+ pose:
378
+ x: 700
379
+ y: 0
380
+ z: 850
381
+ geometry:
382
+ kind: box
383
+ dimensions: [2000, 600, 800]
384
+
385
+ - id: cnc_04
386
+ type: machine
387
+ pose:
388
+ x: 1200
389
+ y: 400
390
+ z: 0
391
+ geometry:
392
+ kind: box
393
+ dimensions: [1400, 1200, 1800]
394
+
395
+ - id: BOX_101
396
+ type: workpiece
397
+ pose:
398
+ x: 700
399
+ y: 0
400
+ z: 900
401
+ geometry:
402
+ kind: box
403
+ dimensions: [200, 100, 50]
404
+ ```
405
+
406
+ ### `ur5e.urdf`
407
+
408
+ Use the customer's real robot model. A minimal test fixture can look like:
409
+
410
+ ```xml
411
+ <robot name="ur5e"/>
412
+ ```
413
+
414
+ Do not treat a placeholder URDF as production geometry evidence.
415
+
416
+ ### `requirements.xlsx`
417
+
418
+ A conventional first worksheet can contain columns such as:
419
+
420
+ | requirement_id | text | check | target | expected | severity |
421
+ | --- | --- | --- | ---: | --- | --- |
422
+ | REQ-101 | Cycle time <= 8 s | cycle_time_max_s | 8.0 | true | must |
423
+ | REQ-102 | E-stop accessible | | | true | must |
424
+
425
+ Simple Mode can normalize common requirement ID, text, check, threshold/target, expected-value, and severity/criticality column names without requiring OpenPyXL at runtime.
426
+
427
+ If the spreadsheet columns are ambiguous, DevAgent asks for clarification rather than guessing which column is authoritative.
428
+
429
+ Run:
430
+
431
+ ```bash
432
+ devagent verify ./ACME_CNC_CELL_TEST
433
+ ```
434
+
435
+ When enough explicit evidence exists to build the Twin and deterministic campaign, the results directory can expand to:
436
+
437
+ ```text
438
+ ACME_CNC_CELL_TEST/
439
+ └── devagent-results/
440
+ ├── RUN.log
441
+ ├── SUMMARY.json
442
+ ├── INTAKE.json
443
+ ├── QUESTIONS.md
444
+ ├── normalized/
445
+ │ ├── requirements.csv
446
+ │ └── devagent-twin.yaml
447
+ ├── FAT_REPORT.html
448
+ ├── EVIDENCE.html
449
+ └── REPLAY.json # when replay succeeds with --output
450
+ ```
451
+
452
+ `normalized/devagent-twin.yaml` is generated evidence mapping. It is not an independent source of truth and does not bypass Twin validation.
453
+
454
+ ---
455
+
456
+ ## 4. Request simulation
457
+
458
+ Run:
459
+
460
+ ```bash
461
+ devagent verify ./ACME_CNC_CELL_TEST --simulate
462
+ ```
463
+
464
+ `--simulate` means:
465
+
466
+ ```text
467
+ request measured physical simulation if the exact imported-Twin execution path is qualified
468
+ ```
469
+
470
+ It does **not** mean:
471
+
472
+ ```text
473
+ run any available demo and label it customer evidence
474
+ ```
475
+
476
+ The current one-command safety boundary is:
477
+
478
+ ```text
479
+ IMPORTED CUSTOMER TWIN
480
+ |
481
+ v
482
+ EXACT QUALIFIED EXECUTION ADAPTER?
483
+ |
484
+ +----+----+
485
+ | |
486
+ YES NO
487
+ | |
488
+ execute simulation_state=blocked
489
+ measure exit 31 when --simulate was requested
490
+ record no fake measurement
491
+ ```
492
+
493
+ For example, the repository contains a UR5e reference simulation stack, but:
494
+
495
+ ```text
496
+ reference UR5e demo != customer imported Twin evidence
497
+ ```
498
+
499
+ If the exact imported-customer execution adapter is not qualified, DevAgent reports a bounded reason such as:
500
+
501
+ ```text
502
+ imported_customer_twin_execution_adapter_not_yet_qualified
503
+ ```
504
+
505
+ or:
506
+
507
+ ```text
508
+ twin_not_ready_for_physics
509
+ ```
510
+
511
+ That is intentional. A blocked simulation is more trustworthy than a visually impressive but unrelated demo.
512
+
513
+ ---
514
+
515
+ ## 5. Open the Evidence Viewer and continue in the terminal
516
+
517
+ When evidence lineage can be rendered:
518
+
519
+ ```bash
520
+ devagent verify ./ACME_CNC_CELL_TEST --open
521
+ ```
522
+
523
+ or:
524
+
525
+ ```bash
526
+ devagent verify ./ACME_CNC_CELL_TEST --simulate --open
527
+ ```
528
+
529
+ The sequence is intentionally:
530
+
531
+ ```text
532
+ terminal verification completes
533
+
534
+ final summary printed
535
+
536
+ replay command printed
537
+
538
+ Evidence Viewer requested in a new browser tab
539
+
540
+ CLI returns
541
+
542
+ same terminal is available for replay / artifact inspection / next command
543
+ ```
544
+
545
+ The viewer is read-only and is intended to answer:
546
+
547
+ - Which requirement was evaluated?
548
+ - What was the verdict?
549
+ - What value was observed?
550
+ - What threshold or expected value was used?
551
+ - Which Twin revision was evaluated?
552
+ - Which evidence artifact supports the result?
553
+ - Which SHA-256 hashes bind the evidence?
554
+ - What is still blocked or not tested?
555
+
556
+ The trust principle is simple:
557
+
558
+ > **Do not trust a PASS label by itself. Inspect the evidence behind it.**
559
+
560
+ ---
561
+
562
+ # Understanding the results
563
+
564
+ ## `RUN.log`
565
+
566
+ Persistent copy of the human terminal progress trace. It is presentation/debug evidence and does not replace immutable engineering artifacts.
567
+
568
+ Inspect it later:
569
+
570
+ ```bash
571
+ cat ./customer-project/devagent-results/RUN.log
572
+ ```
573
+
574
+ or follow it while another process is running:
575
+
576
+ ```bash
577
+ tail -f ./customer-project/devagent-results/RUN.log
578
+ ```
579
+
580
+ ## `SUMMARY.json`
581
+
582
+ This is the primary machine-readable result of Simple Mode.
583
+
584
+ Important fields include:
585
+
586
+ ```text
587
+ project_id
588
+ state
589
+ twin_revision_id
590
+ twin_state
591
+ requirements_file
592
+ verification_plan_artifact_id
593
+ campaign_artifact_id
594
+ fat_artifact_id
595
+ evidence_bundle_artifact_id
596
+ evidence_viewer
597
+ simulation_requested
598
+ simulation_state
599
+ simulation_reason
600
+ release_ready
601
+ real_execution_allowed
602
+ questions
603
+ ```
604
+
605
+ A green software workflow never changes this hard safety boundary by itself:
606
+
607
+ ```text
608
+ real_execution_allowed = false
609
+ ```
610
+
611
+ ## `INTAKE.json`
612
+
613
+ Records the source-file inventory and SHA-256 fingerprints so the customer can see exactly what DevAgent inspected.
614
+
615
+ Each discovered file is associated with a bounded role and authority decision.
616
+
617
+ Examples:
618
+
619
+ ```text
620
+ requirements.xlsx -> requirements
621
+ layout.yaml -> engineering_data
622
+ ur5e.urdf -> robot_model
623
+ safety_requirements.pdf -> manual engineering document
624
+ expected/... -> test_oracle, used_for_authority=false
625
+ ```
626
+
627
+ ## `QUESTIONS.md`
628
+
629
+ Contains missing or ambiguous engineering facts that prevented deterministic promotion.
630
+
631
+ Use it as an engineering punch list, update the original customer files, and rerun:
632
+
633
+ ```bash
634
+ devagent verify ./ACME_CNC_CELL_TEST
635
+ ```
636
+
637
+ ## `FAT_REPORT.html`
638
+
639
+ Customer-readable verification report generated when a campaign can be built.
640
+
641
+ A missing metric or unsupported requirement is not silently changed to PASS. It remains `NOT_TESTED` or otherwise blocks readiness.
642
+
643
+ ## `EVIDENCE.html`
644
+
645
+ Read-only evidence view of requirement/Twin/artifact lineage.
646
+
647
+ ## `REPLAY.json`
648
+
649
+ Written only when replay reconstruction succeeds and `--output` was supplied. It is a canonical replay manifest, not a new robot or simulator execution.
650
+
651
+ ---
652
+
653
+ # Requirements and verdicts
654
+
655
+ Supported deterministic structural/Twin checks include:
656
+
657
+ ```text
658
+ planning_allowed
659
+ physics_allowed
660
+ entity_present
661
+ validation_issue_absent
662
+ twin_state
663
+ ```
664
+
665
+ Measured physical checks include:
666
+
667
+ ```text
668
+ cycle_time_max_s
669
+ minimum_clearance_m
670
+ final_tcp_error_max_m
671
+ max_tracking_error_rad
672
+ collision_free
673
+ physical_completed
674
+ ```
675
+
676
+ The verdict model is intentionally bounded:
677
+
678
+ ```text
679
+ PASS
680
+ FAIL
681
+ NOT_TESTED
682
+ ```
683
+
684
+ A requirement that needs measured physical evidence cannot PASS from prose, a CAD filename, or a generated verification plan.
685
+
686
+ Example:
687
+
688
+ ```text
689
+ Requirement: cycle time <= 8.0 s
690
+ Measurement available: no
691
+ Verdict: NOT_TESTED
692
+ ```
693
+
694
+ When exact-Twin measured evidence exists:
695
+
696
+ ```text
697
+ Requirement: cycle time <= 8.0 s
698
+ Observed: 7.42 s
699
+ Threshold: 8.0 s
700
+ Verdict: PASS
701
+ Evidence: exact measurement artifact + Twin revision/hash
702
+ ```
703
+
704
+ ---
705
+
706
+ # XLSX, PDF, and expected-data policies
707
+
708
+ ## XLSX requirements
709
+
710
+ Simple Mode supports conventional `requirements.xlsx` first-worksheet normalization.
711
+
712
+ Common semantic columns include:
713
+
714
+ ```text
715
+ requirement ID
716
+ requirement text / description
717
+ check / metric
718
+ target / threshold
719
+ expected value
720
+ severity / criticality / priority
721
+ ```
722
+
723
+ If multiple requirement sources are present and authority becomes ambiguous, DevAgent fails closed rather than silently merging them.
724
+
725
+ ## PDF documents
726
+
727
+ PDFs are inventoried and fingerprinted for review.
728
+
729
+ v1.3 does **not** silently OCR arbitrary safety PDFs and convert extracted prose into deterministic PASS evidence.
730
+
731
+ A safety requirement without a supported deterministic check remains manual/`NOT_TESTED` until appropriate evidence exists.
732
+
733
+ ## `expected/` folders
734
+
735
+ A root `expected/` folder is treated as test-fixture oracle data:
736
+
737
+ ```text
738
+ expected/
739
+ -> inventoried
740
+ -> SHA-256 recorded
741
+ -> role = test_oracle
742
+ -> used_for_authority = false
743
+ ```
744
+
745
+ This prevents a fixture from proving its own expected answer.
746
+
747
+ ---
748
+
749
+ # Simple Mode exit codes
750
+
751
+ | Exit | Meaning |
752
+ | ---: | --- |
753
+ | `0` | bounded verification is release-ready |
754
+ | `10` | customer input or operational contract failure |
755
+ | `30` | more engineering information is required |
756
+ | `31` | simulation was requested but the exact execution path is blocked/unqualified |
757
+ | `32` | verification completed but release readiness is still false |
758
+
759
+ Non-zero engineering exits are intentional and machine-friendly.
760
+
761
+ Example CI use:
762
+
763
+ ```bash
764
+ devagent verify ./customer-project --json > devagent-result.json
765
+ rc=$?
766
+
767
+ case "$rc" in
768
+ 0) echo "bounded verification ready" ;;
769
+ 30) echo "customer information required" ;;
770
+ 31) echo "simulation path blocked" ;;
771
+ 32) echo "verification complete but not release-ready" ;;
772
+ *) echo "input or operational failure" ;;
773
+ esac
774
+ ```
775
+
776
+ ---
777
+
778
+ # When to use Simple Mode vs Expert Mode
779
+
780
+ Use **Simple Mode** for the normal customer workflow:
781
+
782
+ ```bash
783
+ devagent verify ./customer-project
784
+ ```
785
+
786
+ Use **Expert Mode** when you need explicit control over:
787
+
788
+ - project identity;
789
+ - immutable Twin revisions;
790
+ - explicit requirement artifacts;
791
+ - measurement binding;
792
+ - campaign artifact IDs;
793
+ - regression baselines;
794
+ - Evidence Bundle generation;
795
+ - replay reconstruction;
796
+ - external CI/orchestration;
797
+ - qualification workflows.
798
+
799
+ Installed CLIs:
800
+
801
+ ```text
802
+ devagent one-command customer verification
803
+ devagent-commercial expert commercial/evidence workflow
804
+ devagent-physical deterministic core + ROS/qualification tools
805
+ devagent-physical-ai optional provider-backed engineering front end
806
+ ```
807
+
808
+ ---
809
+
810
+ # Expert Mode example
811
+
812
+ The default project/evidence database is:
813
+
814
+ ```text
815
+ ~/.devagent/projects.db
816
+ ```
817
+
818
+ ## 1. Create project identity
819
+
820
+ ```bash
821
+ devagent-commercial init warehouse-cnc-04 \
822
+ --name "Warehouse CNC Loading Cell 04" \
823
+ --site atl-01 \
824
+ --workcell cnc-04
825
+ ```
826
+
827
+ ## 2. Import explicit customer Twin evidence
828
+
829
+ ```bash
830
+ devagent-commercial import-twin warehouse-cnc-04 ./customer-cell \
831
+ | tee twin-import.json
832
+ ```
833
+
834
+ List immutable revisions:
835
+
836
+ ```bash
837
+ devagent-physical project \
838
+ --db ~/.devagent/projects.db \
839
+ revisions warehouse-cnc-04
840
+ ```
841
+
842
+ Twin manifest example:
843
+
844
+ https://github.com/tomha85/devagent-physical-engine/blob/main/examples/commercial/devagent-twin.yaml
845
+
846
+ Do not use template values as customer evidence.
847
+
848
+ ## 3. Load requirements
849
+
850
+ ```bash
851
+ devagent-commercial requirements warehouse-cnc-04 \
852
+ examples/commercial/requirements-production.csv
853
+ ```
854
+
855
+ Example requirements file:
856
+
857
+ https://github.com/tomha85/devagent-physical-engine/blob/main/examples/commercial/requirements-production.csv
858
+
859
+ ## 4. Generate verification plan
860
+
861
+ ```bash
862
+ devagent-commercial verification-plan warehouse-cnc-04 \
863
+ examples/commercial/verification-plan.yaml \
864
+ --revision twin-r0001
865
+ ```
866
+
867
+ Planning creates bounded test intent. It is not execution evidence.
868
+
869
+ ## 5. Record measured evidence
870
+
871
+ ```bash
872
+ devagent-commercial record-measurement warehouse-cnc-04 \
873
+ physical-measurement.json \
874
+ --revision twin-r0001
875
+ ```
876
+
877
+ Example schema:
878
+
879
+ https://github.com/tomha85/devagent-physical-engine/blob/main/examples/commercial/physical-measurement.json
880
+
881
+ Preferred integrations use the typed `PhysicalEvidenceRecorder.record_motion_metrics(...)` path so measurement, canonical motion, planner/source graph, qualification reference, and Twin hash remain bound together.
882
+
883
+ ## 6. Run deterministic campaign
884
+
885
+ ```bash
886
+ devagent-commercial campaign warehouse-cnc-04 \
887
+ examples/commercial/requirements-production.csv \
888
+ --revision twin-r0001 \
889
+ --measurement ARTIFACT_ID
890
+ ```
891
+
892
+ ## 7. Generate FAT report
893
+
894
+ ```bash
895
+ devagent-commercial fat-report warehouse-cnc-04 \
896
+ CAMPAIGN_ARTIFACT \
897
+ --output FAT_REPORT.html
898
+ ```
899
+
900
+ ## 8. Build Evidence Bundle
901
+
902
+ ```bash
903
+ devagent-commercial evidence-bundle \
904
+ warehouse-cnc-04 \
905
+ CAMPAIGN_ARTIFACT
906
+ ```
907
+
908
+ The bundle binds requirement results to exact artifact IDs, artifact hashes, Twin revision, and Twin hash.
909
+
910
+ ## 9. Inspect evidence graph
911
+
912
+ ```bash
913
+ devagent-commercial evidence-graph warehouse-cnc-04 \
914
+ > evidence-graph.json
915
+ ```
916
+
917
+ ## 10. Generate static Evidence Viewer
918
+
919
+ ```bash
920
+ devagent-commercial evidence-viewer warehouse-cnc-04 \
921
+ --output DEVAGENT_EVIDENCE.html
922
+ ```
923
+
924
+ ## 11. Replay persisted lineage
925
+
926
+ Read-only inspection first:
927
+
928
+ ```bash
929
+ devagent-commercial replay \
930
+ warehouse-cnc-04 \
931
+ EVIDENCE_BUNDLE \
932
+ --qualification-root ~/.devagent/physical-qualification \
933
+ --output replay-manifest.json
934
+ ```
935
+
936
+ Optionally record immutable `replay_verification` evidence after a successful reconstruction:
937
+
938
+ ```bash
939
+ devagent-commercial replay \
940
+ warehouse-cnc-04 \
941
+ EVIDENCE_BUNDLE \
942
+ --qualification-root ~/.devagent/physical-qualification \
943
+ --output replay-manifest.json \
944
+ --record
945
+ ```
946
+
947
+ Replay verifies persisted identity before reconstruction:
948
+
949
+ ```text
950
+ artifact ID
951
+ artifact type
952
+ artifact SHA-256
953
+ Twin revision/hash
954
+ run_id
955
+ case_id
956
+ case evidence hash
957
+ seed
958
+ reset state
959
+ parameters
960
+ canonical motion fingerprint
961
+ ```
962
+
963
+ A successful replay inspection reports:
964
+
965
+ ```text
966
+ replayable = true
967
+ execution_performed = false
968
+ ```
969
+
970
+ Replay reconstruction does not command Gazebo, MoveIt, a robot, PLC, or safety PLC.
971
+
972
+ ## 12. Change impact
973
+
974
+ After importing a new Twin revision:
975
+
976
+ ```bash
977
+ devagent-commercial impact warehouse-cnc-04 \
978
+ twin-r0001 twin-r0002 \
979
+ examples/commercial/requirements-production.csv
980
+ ```
981
+
982
+ ## 13. Regression
983
+
984
+ ```bash
985
+ devagent-commercial regression warehouse-cnc-04 \
986
+ BASELINE_CAMPAIGN CURRENT_CAMPAIGN \
987
+ --impact CHANGE_IMPACT_ARTIFACT
988
+ ```
989
+
990
+ A previous PASS does not remain authoritative after a changed Twin unless the required evidence chain remains valid for the new revision.
991
+
992
+ ## 14. Project status
993
+
994
+ ```bash
995
+ devagent-commercial status warehouse-cnc-04
996
+ ```
997
+
998
+ Inspect artifacts:
999
+
1000
+ ```bash
1001
+ devagent-commercial artifacts warehouse-cnc-04
1002
+ ```
1003
+
1004
+ Useful artifact types include:
1005
+
1006
+ ```text
1007
+ customer_twin_import
1008
+ one_command_twin_normalization
1009
+ requirement_set
1010
+ verification_plan
1011
+ physical_measurement
1012
+ physical_motion_plan
1013
+ runtime_measurement_binding
1014
+ commercial_campaign
1015
+ change_impact
1016
+ commercial_regression
1017
+ fat_report
1018
+ evidence_bundle
1019
+ replay_verification
1020
+ ```
1021
+
1022
+ ---
1023
+
1024
+ # Physical simulation setup
1025
+
1026
+ `pip install` does **not** install ROS 2, Gazebo, MoveIt, OEM drivers, or privileged operating-system packages.
1027
+
1028
+ Reference stack:
1029
+
1030
+ ```text
1031
+ Ubuntu 24.04
1032
+ ROS 2 Jazzy
1033
+ Gazebo Harmonic
1034
+ gz_ros2_control
1035
+ Universal Robots ROS 2 driver
1036
+ ur_simulation_gz
1037
+ MoveIt 2
1038
+ ```
1039
+
1040
+ Preview setup changes:
1041
+
1042
+ ```bash
1043
+ devagent-physical setup --profile ur5e-sim --dry-run
1044
+ ```
1045
+
1046
+ Apply explicitly:
1047
+
1048
+ ```bash
1049
+ devagent-physical setup --profile ur5e-sim --yes
1050
+ ```
1051
+
1052
+ Check runtime readiness:
1053
+
1054
+ ```bash
1055
+ devagent-physical ros doctor
1056
+ ```
1057
+
1058
+ Qualify trajectory runtime:
1059
+
1060
+ ```bash
1061
+ devagent-physical ros qualify-trajectory-runtime
1062
+ ```
1063
+
1064
+ Other reference commands:
1065
+
1066
+ ```bash
1067
+ devagent-physical ros launch --dry-run
1068
+ devagent-physical ros acceptance
1069
+ devagent-physical ros demo
1070
+ devagent-physical qualify
1071
+ ```
1072
+
1073
+ Hosted Python CI cannot prove a graphical Gazebo runtime, MoveIt `move_group`, TF, controller actions, OEM drivers, or an arbitrary imported workcell. Physical qualification must run on the exact workstation/adapter stack.
1074
+
1075
+ ---
1076
+
1077
+ # Optional AI providers
1078
+
1079
+ AI is optional and remains outside deterministic authority.
1080
+
1081
+ Install one provider:
1082
+
1083
+ ```bash
1084
+ python -m pip install "devagent-physical-engine[openai]"
1085
+ ```
1086
+
1087
+ ```bash
1088
+ python -m pip install "devagent-physical-engine[anthropic]"
1089
+ ```
1090
+
1091
+ ```bash
1092
+ python -m pip install "devagent-physical-engine[gemini]"
1093
+ ```
1094
+
1095
+ Or all provider SDKs:
1096
+
1097
+ ```bash
1098
+ python -m pip install "devagent-physical-engine[ai]"
1099
+ ```
1100
+
1101
+ Typical credentials:
1102
+
1103
+ ```bash
1104
+ export OPENAI_API_KEY="..."
1105
+ export ANTHROPIC_API_KEY="..."
1106
+ export GEMINI_API_KEY="..."
1107
+ ```
1108
+
1109
+ Check provider setup without using the provider as physical authority:
1110
+
1111
+ ```bash
1112
+ devagent-physical-ai doctor --provider openai
1113
+ ```
1114
+
1115
+ Example natural-language engineering request:
1116
+
1117
+ ```bash
1118
+ devagent-physical-ai engineer \
1119
+ "Use a UR5e to load BOX_101 from conveyor_a to cnc_04. Simulate and verify the plan." \
1120
+ --provider openai \
1121
+ --model YOUR_MODEL
1122
+ ```
1123
+
1124
+ The model can help interpret and propose engineering intent. It cannot grant deterministic safety, physical qualification, site qualification, or real-execution authority.
1125
+
1126
+ ---
1127
+
1128
+ # Evidence and authority model
1129
+
1130
+ DevAgent deliberately separates four things that are often incorrectly mixed together:
1131
+
1132
+ ```text
1133
+ 1. requirement
1134
+ 2. test intent
1135
+ 3. measured evidence
1136
+ 4. authority/readiness
1137
+ ```
1138
+
1139
+ A verification plan proves only that a test was planned.
1140
+
1141
+ A model-only result proves only the model-level property that was actually evaluated.
1142
+
1143
+ A physical requirement requires physical measurement evidence.
1144
+
1145
+ A replay reconstruction proves persisted evidence lineage can be reconstructed; it is not a new simulation run.
1146
+
1147
+ A simulation PASS does not equal site commissioning.
1148
+
1149
+ A complete customer FAT report does not equal functional-safety certification.
1150
+
1151
+ Current hard boundary:
1152
+
1153
+ ```text
1154
+ physical_qualification = false unless separately qualified evidence says otherwise
1155
+ site_qualification = false
1156
+ real_execution_allowed = false
1157
+ ```
1158
+
1159
+ This architecture is intentional:
1160
+
1161
+ ```text
1162
+ Agents propose.
1163
+ Deterministic engines compile and verify.
1164
+ Existing certified controllers execute.
1165
+ ```
1166
+
1167
+ ---
1168
+
1169
+ # What DevAgent should be used for
1170
+
1171
+ DevAgent is designed to help engineering teams:
1172
+
1173
+ - reduce FAT preparation and verification effort;
1174
+ - discover missing engineering information before travel;
1175
+ - identify requirement failures before onsite commissioning;
1176
+ - create repeatable deterministic test plans;
1177
+ - bind physical measurements to exact Twin revisions;
1178
+ - detect regression after engineering changes;
1179
+ - preserve evidence provenance;
1180
+ - produce customer-readable FAT evidence;
1181
+ - reduce dependence on manual artifact bookkeeping;
1182
+ - make verification results inspectable rather than opaque.
1183
+
1184
+ It is **not** a replacement for:
1185
+
1186
+ - OEM robot controllers;
1187
+ - PLC logic authority;
1188
+ - safety PLCs;
1189
+ - certified safety functions;
1190
+ - site acceptance responsibility;
1191
+ - functional-safety engineering;
1192
+ - real-world commissioning judgment.
1193
+
1194
+ ---
1195
+
1196
+ # Project status
1197
+
1198
+ **v1.3.1 — Production/Stable software workflow**
1199
+
1200
+ The bounded software/evidence workflow is production-oriented and continuously tested across Python 3.11, 3.12, and 3.13.
1201
+
1202
+ The v1.3.1 patch release includes:
1203
+
1204
+ ```text
1205
+ one-command customer intake
1206
+ XLSX requirement normalization
1207
+ immutable project/Twin lineage
1208
+ deterministic verification campaigns
1209
+ measured evidence binding
1210
+ FAT generation
1211
+ professional Evidence Viewer report palette
1212
+ terminal stage-by-stage progress + RUN.log
1213
+ new-tab report handoff without intentionally raising over terminal
1214
+ copy/paste replay command after Evidence Bundle generation
1215
+ Evidence Bundle
1216
+ replay reconstruction
1217
+ change impact
1218
+ regression
1219
+ provider-neutral optional AI front end
1220
+ ```
1221
+
1222
+ Software quality gates include dedicated coverage thresholds for:
1223
+
1224
+ ```text
1225
+ One-Command customer workflow
1226
+ Production Authority
1227
+ Evidence Trust / Replay
1228
+ ```
1229
+
1230
+ Production/Stable describes the bounded software workflow. It does not claim arbitrary customer cells are physically or site qualified.
1231
+
1232
+ ---
1233
+
1234
+ # Documentation
1235
+
1236
+ One-command verification:
1237
+
1238
+ https://github.com/tomha85/devagent-physical-engine/blob/main/docs/ONE_COMMAND_VERIFY_V13.md
1239
+
1240
+ Evidence Trust / replay / viewer:
1241
+
1242
+ https://github.com/tomha85/devagent-physical-engine/blob/main/docs/EVIDENCE_TRUST_V12.md
1243
+
1244
+ Measured physical runtime:
1245
+
1246
+ https://github.com/tomha85/devagent-physical-engine/blob/main/docs/MEASURED_PHYSICAL_RUNTIME.md
1247
+
1248
+ Commercial project spine:
1249
+
1250
+ https://github.com/tomha85/devagent-physical-engine/blob/main/docs/COMMERCIAL_PROJECT_SPINE.md
1251
+
1252
+ Commercial workflow:
1253
+
1254
+ https://github.com/tomha85/devagent-physical-engine/blob/main/docs/COMMERCIAL_V1.md
1255
+
1256
+ Natural-language engineering:
1257
+
1258
+ https://github.com/tomha85/devagent-physical-engine/blob/main/docs/NATURAL_LANGUAGE_ENGINEERING.md
1259
+
1260
+ AI providers:
1261
+
1262
+ https://github.com/tomha85/devagent-physical-engine/blob/main/docs/AI_PROVIDERS.md
1263
+
1264
+ Architecture:
1265
+
1266
+ https://github.com/tomha85/devagent-physical-engine/blob/main/docs/ARCHITECTURE.md
1267
+
1268
+ Canonical Twin runtime:
1269
+
1270
+ https://github.com/tomha85/devagent-physical-engine/blob/main/docs/CANONICAL_TWIN_RUNTIME.md
1271
+
1272
+ Laptop acceptance:
1273
+
1274
+ https://github.com/tomha85/devagent-physical-engine/blob/main/docs/LAPTOP_ACCEPTANCE.md
1275
+
1276
+ Optimization:
1277
+
1278
+ https://github.com/tomha85/devagent-physical-engine/blob/main/docs/OPTIMIZATION.md
1279
+
1280
+ ---
1281
+
1282
+ # Ownership
1283
+
1284
+ DevAgent Smart Physical Engine
1285
+ Copyright © 2026 Tom Ha
1286
+ Original creator: Tom Ha
1287
+ Original project: https://github.com/tomha85/devagent-physical-engine
1288
+ All rights reserved.
1289
+
1290
+ See repository `LICENSE`, `NOTICE`, and `COPYRIGHT` for the complete ownership and usage terms.