devagent-physical-engine 2.2.0__tar.gz → 2.3.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (364) hide show
  1. {devagent_physical_engine-2.2.0/src/devagent_physical_engine.egg-info → devagent_physical_engine-2.3.1}/PKG-INFO +129 -10
  2. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/README.md +127 -8
  3. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/pyproject.toml +3 -3
  4. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/__init__.py +22 -2
  5. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/commissioning_readiness.py +63 -1
  6. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/evidence_trust.py +26 -0
  7. devagent_physical_engine-2.3.1/src/devagent_physical_engine/guided_intake_cli.py +65 -0
  8. devagent_physical_engine-2.3.1/src/devagent_physical_engine/guided_intake_v23.py +663 -0
  9. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/one_command.py +13 -5
  10. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/one_command_v15.py +16 -9
  11. devagent_physical_engine-2.3.1/src/devagent_physical_engine/one_command_v23.py +307 -0
  12. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/report_test_execution.py +11 -4
  13. devagent_physical_engine-2.3.1/src/devagent_physical_engine/user_cli_v23.py +74 -0
  14. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1/src/devagent_physical_engine.egg-info}/PKG-INFO +129 -10
  15. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine.egg-info/SOURCES.txt +5 -0
  16. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine.egg-info/entry_points.txt +1 -1
  17. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_golden_abb_showcase.py +48 -0
  18. devagent_physical_engine-2.3.1/tests/test_guided_intake_v23.py +472 -0
  19. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/NOTICE +0 -0
  20. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/setup.cfg +0 -0
  21. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/agent/__init__.py +0 -0
  22. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/agent/compiler.py +0 -0
  23. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/agent/contracts.py +0 -0
  24. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/agent/coordinator.py +0 -0
  25. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/agent/critic.py +0 -0
  26. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/agent/evidence.py +0 -0
  27. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/agent/interpreter.py +0 -0
  28. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/agent/planner.py +0 -0
  29. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/agent/recovery.py +0 -0
  30. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/agent/routing.py +0 -0
  31. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/agent/runtime.py +0 -0
  32. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/agent/semantic.py +0 -0
  33. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/agent/structured.py +0 -0
  34. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ai_cli.py +0 -0
  35. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/cli.py +0 -0
  36. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/commercial.py +0 -0
  37. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/commercial_campaign.py +0 -0
  38. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/commercial_cli.py +0 -0
  39. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/commercial_importer.py +0 -0
  40. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/commercial_intelligence.py +0 -0
  41. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/commercial_readiness.py +0 -0
  42. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/commercial_repository.py +0 -0
  43. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/commissioning_agent.py +0 -0
  44. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/commissioning_agent_cli.py +0 -0
  45. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/commissioning_evidence.py +0 -0
  46. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/continuous_clearance.py +0 -0
  47. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/controller_runtime_hotfix_v181.py +0 -0
  48. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/doctor.py +0 -0
  49. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/dynamic_verification_runtime_v190.py +0 -0
  50. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/engineering_agent.py +0 -0
  51. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/engineering_findings.py +0 -0
  52. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/engineering_request.py +0 -0
  53. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/evidence_provider_cli.py +0 -0
  54. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/evidence_provider_gateway.py +0 -0
  55. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/evidence_provider_policy.py +0 -0
  56. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/evidence_replay.py +0 -0
  57. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/execution.py +0 -0
  58. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/industrial_motion_hotfix_v170.py +0 -0
  59. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/industrial_motion_v170.py +0 -0
  60. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/industrial_motion_v182.py +0 -0
  61. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/models.py +0 -0
  62. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/one_command_runtime.py +0 -0
  63. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/one_command_v16.py +0 -0
  64. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/one_command_v22.py +0 -0
  65. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/operating_envelope.py +0 -0
  66. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/optimization/__init__.py +0 -0
  67. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/optimization/benchmark.py +0 -0
  68. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/optimization/candidates.py +0 -0
  69. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/optimization/contracts.py +0 -0
  70. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/optimization/evaluator.py +0 -0
  71. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/optimization/evidence.py +0 -0
  72. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/optimization/experience.py +0 -0
  73. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/optimization/measured.py +0 -0
  74. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/optimization/optimizer.py +0 -0
  75. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/optimization/orchestrator.py +0 -0
  76. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/physical_campaign.py +0 -0
  77. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/physical_evidence.py +0 -0
  78. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/physical_evidence_v190.py +0 -0
  79. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/physical_motion.py +0 -0
  80. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/planning.py +0 -0
  81. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/pose_math.py +0 -0
  82. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/preexecution_contract.py +0 -0
  83. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/production_authority.py +0 -0
  84. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/production_grade.py +0 -0
  85. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/project.py +0 -0
  86. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/provider_adapters/__init__.py +0 -0
  87. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/provider_adapters/anthropic.py +0 -0
  88. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/provider_adapters/common.py +0 -0
  89. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/provider_adapters/factory.py +0 -0
  90. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/provider_adapters/gemini.py +0 -0
  91. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/provider_adapters/openai.py +0 -0
  92. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/provider_criterion.py +0 -0
  93. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/provider_qualification.py +0 -0
  94. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/providers.py +0 -0
  95. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/qualification.py +0 -0
  96. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/qualification_cli.py +0 -0
  97. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/qualification_harness.py +0 -0
  98. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/reference_workcell.py +0 -0
  99. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/report_requirements_v190.py +0 -0
  100. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/report_test_execution_strict.py +0 -0
  101. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/robot_exercise_cli.py +0 -0
  102. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/robot_platform.py +0 -0
  103. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/robot_qualification_acceptance.py +0 -0
  104. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/robot_qualification_acceptance_cli.py +0 -0
  105. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/robot_qualification_cli.py +0 -0
  106. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/robot_qualification_report_store.py +0 -0
  107. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/robot_simulation_promotion_v211.py +0 -0
  108. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/robot_support_contract.py +0 -0
  109. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/robot_support_industrial_v2.py +0 -0
  110. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/robot_support_v18.py +0 -0
  111. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/robots.py +0 -0
  112. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/__init__.py +0 -0
  113. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/abb_irb1200.py +0 -0
  114. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/abb_irb1200_preview.py +0 -0
  115. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/abb_irb1200_verified.py +0 -0
  116. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/abb_runtime_probe.py +0 -0
  117. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/acceptance.py +0 -0
  118. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/commands.py +0 -0
  119. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/continuous_clearance_probe.py +0 -0
  120. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/controller_action_probe.py +0 -0
  121. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/destination_support_contact_v182.py +0 -0
  122. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/direct_controller_discovery_runner.py +0 -0
  123. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/doctor.py +0 -0
  124. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/fanuc_crx10ia.py +0 -0
  125. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/fanuc_crx10ia_physics.py +0 -0
  126. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/fk_pose.py +0 -0
  127. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/fk_probe.py +0 -0
  128. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/frame_alignment.py +0 -0
  129. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/gazebo_cli.py +0 -0
  130. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/gazebo_overlay_support.py +0 -0
  131. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/gazebo_pose.py +0 -0
  132. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/gazebo_world.py +0 -0
  133. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/industrial_arm_runtime_gate.py +0 -0
  134. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/industrial_arm_runtime_probe.py +0 -0
  135. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/industrial_arm_task_adapters.py +0 -0
  136. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/industrial_arm_task_runtime.py +0 -0
  137. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/industrial_sequence_planner_v170.py +0 -0
  138. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/industrial_sequence_planner_v171.py +0 -0
  139. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/industrial_sequence_planner_v172.py +0 -0
  140. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/industrial_sequence_planner_v182.py +0 -0
  141. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/joint_state_probe.py +0 -0
  142. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/joint_state_recorder.py +0 -0
  143. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/kuka_kr6_r900_2.py +0 -0
  144. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/kuka_kr6_r900_2_verified.py +0 -0
  145. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/measured_motion.py +0 -0
  146. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/moveit_joint_plan_probe.py +0 -0
  147. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/moveit_joint_plan_v161_probe.py +0 -0
  148. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/moveit_scene.py +0 -0
  149. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/moveit_task_planner.py +0 -0
  150. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/pilz_sequence_plan_probe.py +0 -0
  151. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/pilz_sequence_plan_probe_v182.py +0 -0
  152. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/preexecution.py +0 -0
  153. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/qualification.py +0 -0
  154. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/qualification_multivendor.py +0 -0
  155. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/qualification_provenance.py +0 -0
  156. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/qualification_v10.py +0 -0
  157. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/qualification_v11.py +0 -0
  158. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/qualification_v12.py +0 -0
  159. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/report_test_visualization.py +0 -0
  160. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/report_test_visualization_v170.py +0 -0
  161. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/robot_description_probe.py +0 -0
  162. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/ros_gz_pose_service_probe.py +0 -0
  163. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/ros_python_runtime.py +0 -0
  164. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/runtime_quiescence.py +0 -0
  165. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/runtime_quiescence_probe.py +0 -0
  166. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/scene_probe.py +0 -0
  167. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/state_validity_probe.py +0 -0
  168. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/support_contact_acm_probe_v170.py +0 -0
  169. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/support_contact_acm_semantics_v189.py +0 -0
  170. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/support_contact_lease_v170.py +0 -0
  171. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/support_contact_runner_v161.py +0 -0
  172. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/support_contact_v161.py +0 -0
  173. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/task_adapter.py +0 -0
  174. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/task_adapter_v190.py +0 -0
  175. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/task_motion_diagnostics_v190.py +0 -0
  176. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/task_visualization.py +0 -0
  177. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/tf_probe.py +0 -0
  178. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/tool_scene.py +0 -0
  179. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/tool_scene_probe.py +0 -0
  180. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/trajectory.py +0 -0
  181. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/trajectory_action_probe.py +0 -0
  182. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/trajectory_feedback_tracking_v189.py +0 -0
  183. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/trajectory_runtime_v190.py +0 -0
  184. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/trajectory_tracking.py +0 -0
  185. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/ur5e.py +0 -0
  186. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/ur5e_adapter.py +0 -0
  187. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/ur5e_v10_adapter.py +0 -0
  188. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/workpiece_carrier_v190.py +0 -0
  189. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/workpiece_entity_replace_probe_v190.py +0 -0
  190. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/workpiece_follow.py +0 -0
  191. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/workpiece_gazebo_follower.py +0 -0
  192. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/workpiece_scene.py +0 -0
  193. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/workpiece_scene_probe.py +0 -0
  194. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/workpiece_scene_probe_v186.py +0 -0
  195. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/workpiece_scene_probe_v187.py +0 -0
  196. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/workpiece_scene_probe_v188.py +0 -0
  197. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/workpiece_scene_probe_v189.py +0 -0
  198. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/ros2/workpiece_transport.py +0 -0
  199. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/selective_verification.py +0 -0
  200. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/selective_verification_v16.py +0 -0
  201. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/selective_verification_v190.py +0 -0
  202. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/setup_profile.py +0 -0
  203. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/sim_real_qualification.py +0 -0
  204. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/simulation.py +0 -0
  205. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/simulation_platform.py +0 -0
  206. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/smooth_motion_hotfix_v162.py +0 -0
  207. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/support_contact_hotfix_v161.py +0 -0
  208. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/tool_collision.py +0 -0
  209. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/trajectory_qualification.py +0 -0
  210. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/twin.py +0 -0
  211. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/twin_builder.py +0 -0
  212. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/twin_codec.py +0 -0
  213. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/twin_materialization.py +0 -0
  214. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/user_cli.py +0 -0
  215. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/user_cli_v15.py +0 -0
  216. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/user_cli_v16.py +0 -0
  217. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/user_cli_v18.py +0 -0
  218. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/user_cli_v191.py +0 -0
  219. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/user_cli_v22.py +0 -0
  220. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/verification.py +0 -0
  221. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/verification_capabilities_v190.py +0 -0
  222. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/verification_scope_authority.py +0 -0
  223. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine/workpiece_lifecycle.py +0 -0
  224. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine.egg-info/dependency_links.txt +0 -0
  225. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine.egg-info/requires.txt +0 -0
  226. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/src/devagent_physical_engine.egg-info/top_level.txt +0 -0
  227. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_abb_clock_provenance_v2.py +0 -0
  228. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_abb_gazebo_resource_path_v2.py +0 -0
  229. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_abb_irb1200_visual_v18.py +0 -0
  230. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_abb_robot_description_bootstrap_v2.py +0 -0
  231. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_abb_robot_description_payload_gate_v2.py +0 -0
  232. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_abb_runtime_direct_probe_v2.py +0 -0
  233. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_abb_sim_clock_v2.py +0 -0
  234. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_agent_core.py +0 -0
  235. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_agent_semantic_hardening.py +0 -0
  236. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_ai_cli.py +0 -0
  237. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_ai_cli_v07.py +0 -0
  238. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_commercial_importer_v1.py +0 -0
  239. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_commercial_intelligence_v15.py +0 -0
  240. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_commercial_readiness_v1.py +0 -0
  241. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_commercial_v1.py +0 -0
  242. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_commissioning_agent_orchestrator_v22.py +0 -0
  243. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_commissioning_core_v20.py +0 -0
  244. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_commissioning_evidence_graph_v20.py +0 -0
  245. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_continuous_clearance_v011.py +0 -0
  246. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_controller_failure_diagnostics_v190.py +0 -0
  247. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_controller_runtime_hotfix_v181.py +0 -0
  248. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_core.py +0 -0
  249. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_destination_support_contact_v182.py +0 -0
  250. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_dynamic_report_batch_v190.py +0 -0
  251. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_dynamic_report_contract_end_to_end_v190.py +0 -0
  252. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_dynamic_verification_capabilities_v190.py +0 -0
  253. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_engineering_request_v07.py +0 -0
  254. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_evidence_provider_gateway_v2.py +0 -0
  255. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_evidence_replay_v12.py +0 -0
  256. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_evidence_trust_coverage_v12.py +0 -0
  257. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_evidence_trust_transport_v12.py +0 -0
  258. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_evidence_trust_v12.py +0 -0
  259. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_evidence_viewer_palette_v130.py +0 -0
  260. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_explicit_detach_world_reassert_v189.py +0 -0
  261. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_external_evidence_campaign_authority_v2.py +0 -0
  262. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_fanuc_physics_tolerance_v2.py +0 -0
  263. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_fresh_simulation_cli_v191.py +0 -0
  264. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_fresh_simulation_service_v191.py +0 -0
  265. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_gazebo_cli_v0122.py +0 -0
  266. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_golden_abb_runner_v171.py +0 -0
  267. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_handoff_authority_v190.py +0 -0
  268. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_industrial_arm_functional_parity_v192.py +0 -0
  269. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_industrial_arm_replay_authority_v192.py +0 -0
  270. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_industrial_motion_v170.py +0 -0
  271. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_industrial_robot_simulation_v2.py +0 -0
  272. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_interpreter_profiles_v08.py +0 -0
  273. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_joint_state_metric_authority_v190.py +0 -0
  274. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_joint_state_probe_v0125.py +0 -0
  275. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_kuka_verified_runtime_v2.py +0 -0
  276. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_live_provider_qualification.py +0 -0
  277. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_loaded_place_stability_v190.py +0 -0
  278. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_measured_motion_v10.py +0 -0
  279. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_metric_authority_surface_v190.py +0 -0
  280. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_motion_handoff_stability_v190.py +0 -0
  281. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_moveit_planning_diagnostics_v0125.py +0 -0
  282. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_moveit_scene_v0123.py +0 -0
  283. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_multivendor_runtime_hardening_v2.py +0 -0
  284. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_multivendor_sim_promotion_v211.py +0 -0
  285. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_multivendor_sim_qualification_v2.py +0 -0
  286. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_natural_language_agent_v07.py +0 -0
  287. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_one_command_hardening_v13.py +0 -0
  288. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_one_command_pose_hardening_v15.py +0 -0
  289. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_one_command_regression_v141.py +0 -0
  290. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_one_command_v13.py +0 -0
  291. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_one_command_v190_injection.py +0 -0
  292. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_openai_strict_schema_v0113.py +0 -0
  293. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_optimization_v05.py +0 -0
  294. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_package_metadata_v184.py +0 -0
  295. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_physical_campaign_v09.py +0 -0
  296. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_physical_evidence_v09.py +0 -0
  297. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_physical_motion_v09.py +0 -0
  298. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_place_preexecution_acm_v189.py +0 -0
  299. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_planning_fallback_v012.py +0 -0
  300. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_pose_math_v0125.py +0 -0
  301. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_preexecution_contract_v10.py +0 -0
  302. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_production_authority_v11.py +0 -0
  303. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_production_external_evidence_v11.py +0 -0
  304. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_production_grade_coverage_v11.py +0 -0
  305. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_production_grade_v11.py +0 -0
  306. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_project_spine_v013.py +0 -0
  307. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_provider_and_qualification.py +0 -0
  308. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_provider_criterion_v15.py +0 -0
  309. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_qualification_cli_lifecycle_v06.py +0 -0
  310. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_qualification_harness_v06.py +0 -0
  311. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_readme_pypi.py +0 -0
  312. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_real_provider_adapters.py +0 -0
  313. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_reference_workcell_ros_frames_v0125.py +0 -0
  314. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_reference_workcell_v012.py +0 -0
  315. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_release_resting_pose_v189.py +0 -0
  316. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_release_transaction_v189.py +0 -0
  317. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_report_orchestration_v190.py +0 -0
  318. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_report_test_contract_coverage_v16.py +0 -0
  319. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_report_test_lineage_v16.py +0 -0
  320. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_report_test_visual_execution_v16.py +0 -0
  321. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_robot_platform_v08.py +0 -0
  322. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_robot_qualification_acceptance_v2.py +0 -0
  323. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_robot_qualification_review_fixes_v2.py +0 -0
  324. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_robot_support_contract_v2.py +0 -0
  325. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_ros2_production_receipts_v011.py +0 -0
  326. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_ros2_simulation.py +0 -0
  327. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_ros_process_group_cleanup_v2.py +0 -0
  328. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_ros_trajectory_v09.py +0 -0
  329. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_runtime_quiescence_v2.py +0 -0
  330. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_selective_verification_v14.py +0 -0
  331. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_setup_profile.py +0 -0
  332. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_sim_real_qualification_v011.py +0 -0
  333. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_simulation_platform_v08.py +0 -0
  334. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_smooth_motion_hotfix_v162.py +0 -0
  335. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_support_contact_acm_semantics_v189.py +0 -0
  336. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_support_contact_hotfix_v161.py +0 -0
  337. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_tool_collision_v011.py +0 -0
  338. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_tool_scene_v0124.py +0 -0
  339. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_trajectory_action_contract_v189.py +0 -0
  340. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_trajectory_action_probe_v0125.py +0 -0
  341. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_trajectory_feedback_tracking_v189.py +0 -0
  342. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_trajectory_qualification_v09.py +0 -0
  343. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_trajectory_tracking_v0125.py +0 -0
  344. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_transfer_controller_policy_v189.py +0 -0
  345. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_transfer_place_diagnostic_v172.py +0 -0
  346. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_twin_materialization_v10.py +0 -0
  347. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_twin_v08.py +0 -0
  348. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_ur5e_adapter_scopes_v09.py +0 -0
  349. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_ur5e_v10_adapter_scopes.py +0 -0
  350. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_user_cli_interactive_v131.py +0 -0
  351. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_user_cli_progress_v131.py +0 -0
  352. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_user_cli_report_visual_v16.py +0 -0
  353. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_user_cli_selective_v14.py +0 -0
  354. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_user_cli_v15.py +0 -0
  355. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_user_cli_v15_hotfix_inheritance.py +0 -0
  356. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_v052_stabilization.py +0 -0
  357. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_v08_catalog_mapping_regression.py +0 -0
  358. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_verification_scope_authority_v20.py +0 -0
  359. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_workpiece_attach_semantics_v183.py +0 -0
  360. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_workpiece_carrier_v190.py +0 -0
  361. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_workpiece_lifecycle_v011.py +0 -0
  362. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_workpiece_scene_probe_v185.py +0 -0
  363. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_workpiece_semantic_lifecycle_v186.py +0 -0
  364. {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.1}/tests/test_workpiece_transport_v189.py +0 -0
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: devagent-physical-engine
3
- Version: 2.2.0
4
- Summary: Verification-first robotics commissioning control plane with immutable engineering findings, deterministic pre-site readiness, evidence authority, exact-Twin lineage, selective simulation, regression, replay, and FAT reporting.
3
+ Version: 2.3.1
4
+ Summary: Verification-first multi-vendor commissioning control plane with flexible guided customer-file intake, deterministic source/evidence authority, exact-Twin lineage, regression, FAT reporting, and pre-site readiness.
5
5
  Author: Tom Ha
6
6
  License: All Rights Reserved
7
7
  Project-URL: Homepage, https://github.com/tomha85/devagent-physical-engine
@@ -81,7 +81,7 @@ DevAgent turns customer engineering inputs into a bounded, evidence-driven pre-s
81
81
 
82
82
  <p align="center"><sub><b>Real engine screenshots — not product renders.</b> ROS 2 Jazzy · Gazebo Harmonic · MoveIt 2 · Pilz · UR5e exact-Twin verification.</sub></p>
83
83
 
84
- ## v2.1 commissioning verification flow
84
+ ## v2.3 commissioning verification flow
85
85
 
86
86
  ```text
87
87
  Customer engineering files
@@ -125,7 +125,7 @@ That decision means the declared pre-site engineering scope has complete, curren
125
125
  Python 3.11+ is required.
126
126
 
127
127
  ```bash
128
- python -m pip install --upgrade devagent-physical-engine==2.2.0
128
+ python -m pip install --upgrade devagent-physical-engine==2.3.1
129
129
  ```
130
130
 
131
131
  Verify the installed package:
@@ -137,7 +137,7 @@ python -c "import devagent_physical_engine as d; print(d.__version__)"
137
137
  Expected:
138
138
 
139
139
  ```text
140
- 2.1.1
140
+ 2.3.1
141
141
  ```
142
142
 
143
143
  Run the normal customer workflow:
@@ -171,6 +171,107 @@ Evidence database: ~/.devagent/projects.db
171
171
  Results: <customer-project>/devagent-results/
172
172
  ```
173
173
 
174
+ ## Flexible guided project intake
175
+
176
+ **You do not need to prepare a special DevAgent project format.** Put the engineering files you already have into one customer project folder and run:
177
+
178
+ ```bash
179
+ devagent verify ./customer-project
180
+ ```
181
+
182
+ That is the normal workflow. `devagent verify` performs guided intake automatically before verification.
183
+
184
+ If you only want to inspect what DevAgent can use, without running the full verification workflow:
185
+
186
+ ```bash
187
+ devagent intake ./customer-project
188
+ ```
189
+
190
+ ### What files should I provide?
191
+
192
+ Provide whatever is available. More current engineering sources can increase verification coverage, but there is no global mandatory checklist.
193
+
194
+ Typical inputs may include:
195
+
196
+ ```text
197
+ customer-project/
198
+ ├── requirements.xlsx # optional
199
+ ├── PLC/ # optional Siemens/Rockwell/Schneider exports
200
+ ├── Robot/ # optional ABB/FANUC/KUKA exports
201
+ ├── cell.step # optional CAD / geometry
202
+ ├── FAT_results.xlsx # optional existing test evidence
203
+ ├── calibration/ # optional TCP / frame / calibration data
204
+ ├── drawings.pdf # optional engineering documentation
205
+ └── anything_else_the_customer_has/
206
+ ```
207
+
208
+ A project with only requirements can still be reviewed and normalized. A project without PLC, robot, CAD, or existing FAT evidence is still accepted; DevAgent simply limits the verification scope to what the supplied sources can prove.
209
+
210
+ ### Missing files do not become failures
211
+
212
+ DevAgent keeps these meanings separate:
213
+
214
+ ```text
215
+ authoritative evidence disproves a criterion -> FAIL
216
+ required evidence is unavailable -> NOT_TESTED / reduced scope
217
+ evidence belongs to an old project revision -> STALE
218
+ multiple possible current source revisions -> NEEDS_CONFIRMATION
219
+ unsupported file -> inventoried, not authority
220
+ optional file missing -> no intake failure
221
+ ```
222
+
223
+ DevAgent does not invent substitute evidence to make a project pass.
224
+
225
+ ### How source authority is handled
226
+
227
+ Every raw customer file is hashed and inventoried. DevAgent recognizes common Siemens, Rockwell, Schneider, ABB, FANUC, and KUKA exports together with requirements, CAD/model files, structured engineering data, PDFs, and existing FAT/test evidence.
228
+
229
+ When one source is unambiguous, DevAgent can use it automatically. Multi-file PLC or robot projects are kept as a bounded source set.
230
+
231
+ If multiple distinct source sets from the same vendor could represent different revisions, DevAgent **does not guess** using names such as `final`, `latest`, `backup`, or filesystem modification time. The affected source role becomes `NEEDS_CONFIRMATION`; unrelated verification scope can still continue.
232
+
233
+ For an ambiguous project, an optional `devagent-intake.yaml` can explicitly select the current sources:
234
+
235
+ ```yaml
236
+ authoritative_sources:
237
+ requirements: requirements_rev_c.xlsx
238
+
239
+ plc_project:
240
+ - PLC/current_controller.L5X
241
+ - PLC/current_tags.L5X
242
+
243
+ robot_project:
244
+ - Robot/MainModule.mod
245
+ - Robot/ToolModule.mod
246
+ ```
247
+
248
+ This file is optional. Normal unambiguous projects do not need it.
249
+
250
+ ### What DevAgent creates
251
+
252
+ The customer source files remain read-only. DevAgent writes its own outputs under `devagent-results/`:
253
+
254
+ ```text
255
+ devagent-results/
256
+ ├── SOURCE_MANIFEST.json
257
+ ├── INTAKE_READINESS.json
258
+ ├── INTAKE_GUIDE.md
259
+ ├── SUMMARY.json
260
+ ├── PRE_SITE_READINESS.json
261
+ ├── FAT_REPORT.html # when current FAT lineage exists
262
+ └── EVIDENCE.html
263
+ ```
264
+
265
+ `SOURCE_MANIFEST.json` records hashes and source provenance. `INTAKE_READINESS.json` shows which source roles are usable or need confirmation. `INTAKE_GUIDE.md` explains optional files that could strengthen coverage.
266
+
267
+ If customer files change while verification is running, the run is marked as a stale source snapshot and cannot be promoted as current readiness. Add or replace files when needed, then rerun the same command:
268
+
269
+ ```bash
270
+ devagent verify ./customer-project
271
+ ```
272
+
273
+ See `docs/FLEXIBLE_GUIDED_INTAKE_V23.md` for the full intake authority contract.
274
+
174
275
  ## Commercial commissioning workflow
175
276
 
176
277
  The normal end-to-end customer path is `devagent verify`. It performs requirement normalization, deterministic mapping, requirement-driven case planning/mapping, verification orchestration, evidence recording, regression, and reporting within the qualified scope.
@@ -529,7 +630,7 @@ See `docs/COMMISSIONING_AGENT_ORCHESTRATOR_V1.md`.
529
630
  ## Installed CLIs
530
631
 
531
632
  ```text
532
- devagent one-command verification, commissioning agent, interactive report testing, robot support/visualization
633
+ devagent guided project intake, one-command verification, commissioning agent, interactive report testing, robot support/visualization
533
634
  devagent-commercial project, evidence, findings, FAT, regression, commissioning-readiness workflow
534
635
  devagent-physical deterministic core + ROS/qualification tools
535
636
  devagent-physical-ai optional provider-backed engineering front end
@@ -547,14 +648,23 @@ devagent-physical-ai optional provider-backed engineering front end
547
648
 
548
649
  # Project status
549
650
 
550
- **v2.2.0 — Production/Stable software workflow; Commissioning Agent Orchestrator + deterministic pre-site readiness lifecycle**
651
+ **v2.3.1 — Production/Stable software workflow; Flexible Guided Multi-Vendor Intake + selective-simulation fail-closed hardening**
652
+
653
+ v2.3.1 retains the v2.3 flexible customer entry workflow and hardens selective physical simulation so unsupported robot profiles fail closed as bounded `BLOCKED` results instead of surfacing runtime exceptions. v2.3.0 made the customer entry workflow flexible without weakening verification authority. Customers can provide the engineering files they already have instead of conforming to one mandatory DevAgent project schema. DevAgent inventories and hashes the raw sources, recognizes supported vendor/file roles, detects exact duplicates and source ambiguity, validates current intake provenance, and exposes which verification capabilities are available before the existing deterministic commissioning workflow continues.
654
+
655
+ Missing files are allowed. Missing evidence reduces verification scope or remains `NOT_TESTED`; it never becomes a synthetic `FAIL` or an invented PASS. Multiple distinct same-vendor source sets require confirmation instead of being selected from filenames such as `final`, `latest`, or `backup`. Source changes during verification invalidate the current intake snapshot and block readiness until the project is rerun from a stable source state.
551
656
 
552
- v2.2.0 adds the bounded project-aware Commissioning Agent Orchestrator while keeping engineering authority in the deterministic core. It reconciles engineering review, exact change impact, regression, FAT, Evidence Bundle, immutable multi-context snapshots, stale-context abort, bounded reviewer/critic revisions, full agent traces, deterministic recovery recommendations, and opt-in human-promoted advisory memory. The previously accepted ABB/FANUC/KUKA simulation authority remains unchanged and does not grant measured FAT, hardware-shadow, sim-real, site, safety, or real-execution authority.
657
+ The v2.2 Commissioning Agent Orchestrator remains advisory-only above the deterministic core. Existing ABB/FANUC/KUKA bounded simulation authority remains unchanged and does not grant measured FAT, hardware-shadow, sim-real, site, safety, commissioning-completed, or real-execution authority.
553
658
 
554
659
  Production-oriented software capabilities include:
555
660
 
556
661
  ```text
557
- one-command customer intake
662
+ flexible guided multi-vendor customer intake
663
+ read-only source inventory + SHA256 provenance
664
+ optional source files; partial verification allowed
665
+ deterministic source ambiguity / duplicate handling
666
+ stable inventory + authority fingerprints
667
+ source-mutation detection during verification
558
668
  XLSX/CSV/YAML/JSON requirement normalization
559
669
  immutable project/Twin lineage
560
670
  engineering review + first-class risk findings
@@ -583,7 +693,7 @@ immutable multi-context agent snapshots + stale-context abort
583
693
  opt-in human-promoted advisory engineering memory
584
694
  ```
585
695
 
586
- Production/Stable describes the bounded software workflow. The target-proven UR5e claim remains limited to the qualified packaged scope and acceptance environment. v2.2.0 does not claim arbitrary customer cells are physically qualified, site-qualified, functionally safe, commissioned, or authorized for autonomous real execution. The AI agent remains advisory and cannot grant PASS/FAIL/NOT_TESTED, evidence qualification, pre-site readiness, or real-execution authority.
696
+ Production/Stable describes the bounded software workflow. The target-proven UR5e claim remains limited to the qualified packaged scope and acceptance environment. v2.3.1 does not claim arbitrary customer cells are physically qualified, site-qualified, functionally safe, commissioned, or authorized for autonomous real execution. Flexible intake changes how customer artifacts enter the workflow; it does not weaken evidence authority. The AI agent remains advisory and cannot grant PASS/FAIL/NOT_TESTED, evidence qualification, pre-site readiness, or real-execution authority.
587
697
 
588
698
  Current hard authority boundaries remain:
589
699
 
@@ -598,9 +708,18 @@ unless separately proven by an appropriate qualified process.
598
708
 
599
709
  ## Documentation
600
710
 
711
+ Flexible Guided Intake:
712
+ https://github.com/tomha85/devagent-physical-engine/blob/main/docs/FLEXIBLE_GUIDED_INTAKE_V23.md
713
+
601
714
  Commissioning Agent Orchestrator:
602
715
  https://github.com/tomha85/devagent-physical-engine/blob/main/docs/COMMISSIONING_AGENT_ORCHESTRATOR_V1.md
603
716
 
717
+ v2.3.1 release notes:
718
+ https://github.com/tomha85/devagent-physical-engine/blob/main/docs/RELEASE_NOTES_V2_3_1.md
719
+
720
+ v2.3.0 release notes:
721
+ https://github.com/tomha85/devagent-physical-engine/blob/main/docs/RELEASE_NOTES_V2_3_0.md
722
+
604
723
  v2.2.0 release notes:
605
724
  https://github.com/tomha85/devagent-physical-engine/blob/main/docs/RELEASE_NOTES_V2_2_0.md
606
725
 
@@ -39,7 +39,7 @@ DevAgent turns customer engineering inputs into a bounded, evidence-driven pre-s
39
39
 
40
40
  <p align="center"><sub><b>Real engine screenshots — not product renders.</b> ROS 2 Jazzy · Gazebo Harmonic · MoveIt 2 · Pilz · UR5e exact-Twin verification.</sub></p>
41
41
 
42
- ## v2.1 commissioning verification flow
42
+ ## v2.3 commissioning verification flow
43
43
 
44
44
  ```text
45
45
  Customer engineering files
@@ -83,7 +83,7 @@ That decision means the declared pre-site engineering scope has complete, curren
83
83
  Python 3.11+ is required.
84
84
 
85
85
  ```bash
86
- python -m pip install --upgrade devagent-physical-engine==2.2.0
86
+ python -m pip install --upgrade devagent-physical-engine==2.3.1
87
87
  ```
88
88
 
89
89
  Verify the installed package:
@@ -95,7 +95,7 @@ python -c "import devagent_physical_engine as d; print(d.__version__)"
95
95
  Expected:
96
96
 
97
97
  ```text
98
- 2.1.1
98
+ 2.3.1
99
99
  ```
100
100
 
101
101
  Run the normal customer workflow:
@@ -129,6 +129,107 @@ Evidence database: ~/.devagent/projects.db
129
129
  Results: <customer-project>/devagent-results/
130
130
  ```
131
131
 
132
+ ## Flexible guided project intake
133
+
134
+ **You do not need to prepare a special DevAgent project format.** Put the engineering files you already have into one customer project folder and run:
135
+
136
+ ```bash
137
+ devagent verify ./customer-project
138
+ ```
139
+
140
+ That is the normal workflow. `devagent verify` performs guided intake automatically before verification.
141
+
142
+ If you only want to inspect what DevAgent can use, without running the full verification workflow:
143
+
144
+ ```bash
145
+ devagent intake ./customer-project
146
+ ```
147
+
148
+ ### What files should I provide?
149
+
150
+ Provide whatever is available. More current engineering sources can increase verification coverage, but there is no global mandatory checklist.
151
+
152
+ Typical inputs may include:
153
+
154
+ ```text
155
+ customer-project/
156
+ ├── requirements.xlsx # optional
157
+ ├── PLC/ # optional Siemens/Rockwell/Schneider exports
158
+ ├── Robot/ # optional ABB/FANUC/KUKA exports
159
+ ├── cell.step # optional CAD / geometry
160
+ ├── FAT_results.xlsx # optional existing test evidence
161
+ ├── calibration/ # optional TCP / frame / calibration data
162
+ ├── drawings.pdf # optional engineering documentation
163
+ └── anything_else_the_customer_has/
164
+ ```
165
+
166
+ A project with only requirements can still be reviewed and normalized. A project without PLC, robot, CAD, or existing FAT evidence is still accepted; DevAgent simply limits the verification scope to what the supplied sources can prove.
167
+
168
+ ### Missing files do not become failures
169
+
170
+ DevAgent keeps these meanings separate:
171
+
172
+ ```text
173
+ authoritative evidence disproves a criterion -> FAIL
174
+ required evidence is unavailable -> NOT_TESTED / reduced scope
175
+ evidence belongs to an old project revision -> STALE
176
+ multiple possible current source revisions -> NEEDS_CONFIRMATION
177
+ unsupported file -> inventoried, not authority
178
+ optional file missing -> no intake failure
179
+ ```
180
+
181
+ DevAgent does not invent substitute evidence to make a project pass.
182
+
183
+ ### How source authority is handled
184
+
185
+ Every raw customer file is hashed and inventoried. DevAgent recognizes common Siemens, Rockwell, Schneider, ABB, FANUC, and KUKA exports together with requirements, CAD/model files, structured engineering data, PDFs, and existing FAT/test evidence.
186
+
187
+ When one source is unambiguous, DevAgent can use it automatically. Multi-file PLC or robot projects are kept as a bounded source set.
188
+
189
+ If multiple distinct source sets from the same vendor could represent different revisions, DevAgent **does not guess** using names such as `final`, `latest`, `backup`, or filesystem modification time. The affected source role becomes `NEEDS_CONFIRMATION`; unrelated verification scope can still continue.
190
+
191
+ For an ambiguous project, an optional `devagent-intake.yaml` can explicitly select the current sources:
192
+
193
+ ```yaml
194
+ authoritative_sources:
195
+ requirements: requirements_rev_c.xlsx
196
+
197
+ plc_project:
198
+ - PLC/current_controller.L5X
199
+ - PLC/current_tags.L5X
200
+
201
+ robot_project:
202
+ - Robot/MainModule.mod
203
+ - Robot/ToolModule.mod
204
+ ```
205
+
206
+ This file is optional. Normal unambiguous projects do not need it.
207
+
208
+ ### What DevAgent creates
209
+
210
+ The customer source files remain read-only. DevAgent writes its own outputs under `devagent-results/`:
211
+
212
+ ```text
213
+ devagent-results/
214
+ ├── SOURCE_MANIFEST.json
215
+ ├── INTAKE_READINESS.json
216
+ ├── INTAKE_GUIDE.md
217
+ ├── SUMMARY.json
218
+ ├── PRE_SITE_READINESS.json
219
+ ├── FAT_REPORT.html # when current FAT lineage exists
220
+ └── EVIDENCE.html
221
+ ```
222
+
223
+ `SOURCE_MANIFEST.json` records hashes and source provenance. `INTAKE_READINESS.json` shows which source roles are usable or need confirmation. `INTAKE_GUIDE.md` explains optional files that could strengthen coverage.
224
+
225
+ If customer files change while verification is running, the run is marked as a stale source snapshot and cannot be promoted as current readiness. Add or replace files when needed, then rerun the same command:
226
+
227
+ ```bash
228
+ devagent verify ./customer-project
229
+ ```
230
+
231
+ See `docs/FLEXIBLE_GUIDED_INTAKE_V23.md` for the full intake authority contract.
232
+
132
233
  ## Commercial commissioning workflow
133
234
 
134
235
  The normal end-to-end customer path is `devagent verify`. It performs requirement normalization, deterministic mapping, requirement-driven case planning/mapping, verification orchestration, evidence recording, regression, and reporting within the qualified scope.
@@ -487,7 +588,7 @@ See `docs/COMMISSIONING_AGENT_ORCHESTRATOR_V1.md`.
487
588
  ## Installed CLIs
488
589
 
489
590
  ```text
490
- devagent one-command verification, commissioning agent, interactive report testing, robot support/visualization
591
+ devagent guided project intake, one-command verification, commissioning agent, interactive report testing, robot support/visualization
491
592
  devagent-commercial project, evidence, findings, FAT, regression, commissioning-readiness workflow
492
593
  devagent-physical deterministic core + ROS/qualification tools
493
594
  devagent-physical-ai optional provider-backed engineering front end
@@ -505,14 +606,23 @@ devagent-physical-ai optional provider-backed engineering front end
505
606
 
506
607
  # Project status
507
608
 
508
- **v2.2.0 — Production/Stable software workflow; Commissioning Agent Orchestrator + deterministic pre-site readiness lifecycle**
609
+ **v2.3.1 — Production/Stable software workflow; Flexible Guided Multi-Vendor Intake + selective-simulation fail-closed hardening**
610
+
611
+ v2.3.1 retains the v2.3 flexible customer entry workflow and hardens selective physical simulation so unsupported robot profiles fail closed as bounded `BLOCKED` results instead of surfacing runtime exceptions. v2.3.0 made the customer entry workflow flexible without weakening verification authority. Customers can provide the engineering files they already have instead of conforming to one mandatory DevAgent project schema. DevAgent inventories and hashes the raw sources, recognizes supported vendor/file roles, detects exact duplicates and source ambiguity, validates current intake provenance, and exposes which verification capabilities are available before the existing deterministic commissioning workflow continues.
612
+
613
+ Missing files are allowed. Missing evidence reduces verification scope or remains `NOT_TESTED`; it never becomes a synthetic `FAIL` or an invented PASS. Multiple distinct same-vendor source sets require confirmation instead of being selected from filenames such as `final`, `latest`, or `backup`. Source changes during verification invalidate the current intake snapshot and block readiness until the project is rerun from a stable source state.
509
614
 
510
- v2.2.0 adds the bounded project-aware Commissioning Agent Orchestrator while keeping engineering authority in the deterministic core. It reconciles engineering review, exact change impact, regression, FAT, Evidence Bundle, immutable multi-context snapshots, stale-context abort, bounded reviewer/critic revisions, full agent traces, deterministic recovery recommendations, and opt-in human-promoted advisory memory. The previously accepted ABB/FANUC/KUKA simulation authority remains unchanged and does not grant measured FAT, hardware-shadow, sim-real, site, safety, or real-execution authority.
615
+ The v2.2 Commissioning Agent Orchestrator remains advisory-only above the deterministic core. Existing ABB/FANUC/KUKA bounded simulation authority remains unchanged and does not grant measured FAT, hardware-shadow, sim-real, site, safety, commissioning-completed, or real-execution authority.
511
616
 
512
617
  Production-oriented software capabilities include:
513
618
 
514
619
  ```text
515
- one-command customer intake
620
+ flexible guided multi-vendor customer intake
621
+ read-only source inventory + SHA256 provenance
622
+ optional source files; partial verification allowed
623
+ deterministic source ambiguity / duplicate handling
624
+ stable inventory + authority fingerprints
625
+ source-mutation detection during verification
516
626
  XLSX/CSV/YAML/JSON requirement normalization
517
627
  immutable project/Twin lineage
518
628
  engineering review + first-class risk findings
@@ -541,7 +651,7 @@ immutable multi-context agent snapshots + stale-context abort
541
651
  opt-in human-promoted advisory engineering memory
542
652
  ```
543
653
 
544
- Production/Stable describes the bounded software workflow. The target-proven UR5e claim remains limited to the qualified packaged scope and acceptance environment. v2.2.0 does not claim arbitrary customer cells are physically qualified, site-qualified, functionally safe, commissioned, or authorized for autonomous real execution. The AI agent remains advisory and cannot grant PASS/FAIL/NOT_TESTED, evidence qualification, pre-site readiness, or real-execution authority.
654
+ Production/Stable describes the bounded software workflow. The target-proven UR5e claim remains limited to the qualified packaged scope and acceptance environment. v2.3.1 does not claim arbitrary customer cells are physically qualified, site-qualified, functionally safe, commissioned, or authorized for autonomous real execution. Flexible intake changes how customer artifacts enter the workflow; it does not weaken evidence authority. The AI agent remains advisory and cannot grant PASS/FAIL/NOT_TESTED, evidence qualification, pre-site readiness, or real-execution authority.
545
655
 
546
656
  Current hard authority boundaries remain:
547
657
 
@@ -556,9 +666,18 @@ unless separately proven by an appropriate qualified process.
556
666
 
557
667
  ## Documentation
558
668
 
669
+ Flexible Guided Intake:
670
+ https://github.com/tomha85/devagent-physical-engine/blob/main/docs/FLEXIBLE_GUIDED_INTAKE_V23.md
671
+
559
672
  Commissioning Agent Orchestrator:
560
673
  https://github.com/tomha85/devagent-physical-engine/blob/main/docs/COMMISSIONING_AGENT_ORCHESTRATOR_V1.md
561
674
 
675
+ v2.3.1 release notes:
676
+ https://github.com/tomha85/devagent-physical-engine/blob/main/docs/RELEASE_NOTES_V2_3_1.md
677
+
678
+ v2.3.0 release notes:
679
+ https://github.com/tomha85/devagent-physical-engine/blob/main/docs/RELEASE_NOTES_V2_3_0.md
680
+
562
681
  v2.2.0 release notes:
563
682
  https://github.com/tomha85/devagent-physical-engine/blob/main/docs/RELEASE_NOTES_V2_2_0.md
564
683
 
@@ -4,8 +4,8 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "devagent-physical-engine"
7
- version = "2.2.0"
8
- description = "Verification-first robotics commissioning control plane with immutable engineering findings, deterministic pre-site readiness, evidence authority, exact-Twin lineage, selective simulation, regression, replay, and FAT reporting."
7
+ version = "2.3.1"
8
+ description = "Verification-first multi-vendor commissioning control plane with flexible guided customer-file intake, deterministic source/evidence authority, exact-Twin lineage, regression, FAT reporting, and pre-site readiness."
9
9
  readme = { file = "README.md", content-type = "text/markdown" }
10
10
  requires-python = ">=3.11"
11
11
  dependencies = ["PyYAML>=6.0,<7"]
@@ -48,7 +48,7 @@ Issues = "https://github.com/tomha85/devagent-physical-engine/issues"
48
48
  Sponsor = "https://github.com/sponsors/tomha85"
49
49
 
50
50
  [project.scripts]
51
- devagent = "devagent_physical_engine.user_cli_v22:main"
51
+ devagent = "devagent_physical_engine.user_cli_v23:main"
52
52
  devagent-physical = "devagent_physical_engine.cli:main"
53
53
  devagent-physical-ai = "devagent_physical_engine.ai_cli:main"
54
54
  devagent-commercial = "devagent_physical_engine.commercial_cli:main"
@@ -84,7 +84,18 @@ from .one_command import (
84
84
  OneCommandError,
85
85
  )
86
86
  from .one_command_runtime import install_one_command_runtime
87
- from .one_command_v22 import CommissioningVerifyResult, OneCommandVerifier, SimpleVerifyResult
87
+ from .guided_intake_v23 import (
88
+ GUIDED_INTAKE_SCHEMA_VERSION,
89
+ AuthorityGroup,
90
+ Capability as IntakeCapability,
91
+ GuidedIntakeError,
92
+ IntakeAnalysis,
93
+ SourceRecord,
94
+ analyze_source,
95
+ write_intake_reports,
96
+ )
97
+ from .one_command_v22 import CommissioningVerifyResult, SimpleVerifyResult
98
+ from .one_command_v23 import FlexibleVerifyResult, OneCommandVerifier
88
99
  from .physical_motion import JointTrajectoryPoint, MotionExecutionMetrics, PhysicalMotionPlan
89
100
  from .production_authority import (
90
101
  PhysicalEvidenceRecorder,
@@ -235,6 +246,15 @@ __all__ = [
235
246
  "OneCommandVerifier",
236
247
  "SimpleVerifyResult",
237
248
  "CommissioningVerifyResult",
249
+ "FlexibleVerifyResult",
250
+ "GUIDED_INTAKE_SCHEMA_VERSION",
251
+ "GuidedIntakeError",
252
+ "IntakeAnalysis",
253
+ "SourceRecord",
254
+ "AuthorityGroup",
255
+ "IntakeCapability",
256
+ "analyze_source",
257
+ "write_intake_reports",
238
258
  "COMMERCIAL_INTELLIGENCE_SCHEMA_VERSION",
239
259
  "CommercialIntelligenceRecorder",
240
260
  "CriterionProposal",
@@ -278,4 +298,4 @@ install_industrial_motion_v170()
278
298
  install_controller_runtime_hotfix_v181()
279
299
  install_one_command_runtime()
280
300
 
281
- __version__ = "2.2.0"
301
+ __version__ = "2.3.1"
@@ -36,6 +36,8 @@ _STATE_HEAD_TYPES = (
36
36
  "commercial_regression",
37
37
  "fat_report",
38
38
  "evidence_bundle",
39
+ "project_source_manifest",
40
+ "guided_intake_readiness",
39
41
  )
40
42
 
41
43
 
@@ -227,6 +229,56 @@ class PreSiteCommissioningReadinessEvaluator:
227
229
  blockers: list[str] = []
228
230
  warnings: list[str] = []
229
231
 
232
+ intake_readiness = _latest(
233
+ self.repository,
234
+ project_id,
235
+ "guided_intake_readiness",
236
+ )
237
+ source_manifest = None
238
+ if intake_readiness is not None:
239
+ source_manifest = _get_optional(
240
+ self.repository,
241
+ project_id,
242
+ intake_readiness.payload.get("source_manifest_artifact_id"),
243
+ "project_source_manifest",
244
+ )
245
+ if source_manifest is None:
246
+ self._append(blockers, "intake_source_manifest_missing")
247
+ else:
248
+ if (
249
+ source_manifest.artifact_hash
250
+ != intake_readiness.payload.get("source_manifest_artifact_hash")
251
+ ):
252
+ self._append(blockers, "intake_source_manifest_hash_mismatch")
253
+ if (
254
+ source_manifest.payload.get("inventory_fingerprint")
255
+ != intake_readiness.payload.get("inventory_fingerprint")
256
+ ):
257
+ self._append(blockers, "intake_inventory_fingerprint_mismatch")
258
+ if (
259
+ source_manifest.payload.get("authority_fingerprint")
260
+ != intake_readiness.payload.get("authority_fingerprint")
261
+ ):
262
+ self._append(blockers, "intake_authority_fingerprint_mismatch")
263
+ if latest_revision is not None and (
264
+ intake_readiness.twin_revision_id != latest_revision.revision_id
265
+ or source_manifest is None
266
+ or source_manifest.twin_revision_id != latest_revision.revision_id
267
+ ):
268
+ self._append(blockers, "intake_readiness_stale_for_current_twin")
269
+ if intake_readiness.payload.get("source_changed_during_verification") is True:
270
+ self._append(blockers, "intake_source_changed_during_verification")
271
+ if intake_readiness.payload.get("authority_ready") is not True:
272
+ self._append(blockers, "intake_source_authority_unresolved")
273
+ unresolved_roles = intake_readiness.payload.get("unresolved_roles", [])
274
+ if isinstance(unresolved_roles, list):
275
+ for role in unresolved_roles:
276
+ self._append(blockers, f"intake_source_needs_confirmation:{role}")
277
+ configuration_issues = intake_readiness.payload.get("configuration_issues", [])
278
+ if isinstance(configuration_issues, list):
279
+ for issue in configuration_issues:
280
+ self._append(blockers, f"intake_configuration_issue:{issue}")
281
+
230
282
  if latest_revision is None:
231
283
  self._append(blockers, "latest_twin_revision_missing")
232
284
  elif latest_revision.build_state not in _READY_TWIN_STATES:
@@ -565,7 +617,15 @@ class PreSiteCommissioningReadinessEvaluator:
565
617
  if isinstance(references, list)
566
618
  else set()
567
619
  )
568
- for expected in [requirement_set, plan, measurement, regression, fat_report]:
620
+ for expected in [
621
+ source_manifest,
622
+ intake_readiness,
623
+ requirement_set,
624
+ plan,
625
+ measurement,
626
+ regression,
627
+ fat_report,
628
+ ]:
569
629
  if expected is not None and expected.artifact_id not in ref_ids:
570
630
  self._append(
571
631
  blockers,
@@ -593,6 +653,8 @@ class PreSiteCommissioningReadinessEvaluator:
593
653
  "regression": _artifact_ref(regression),
594
654
  "fat_report": _artifact_ref(fat_report),
595
655
  "evidence_bundle": _artifact_ref(evidence_bundle),
656
+ "project_source_manifest": _artifact_ref(source_manifest),
657
+ "guided_intake_readiness": _artifact_ref(intake_readiness),
596
658
  }
597
659
  state_snapshot = _scope_state_snapshot(self.repository, project_id)
598
660
  payload = {
@@ -296,7 +296,33 @@ class EvidenceBundleBuilder:
296
296
  "site_measurement": "SITE_MEASURED",
297
297
  }.get(source_kind, "MODEL_ONLY")
298
298
 
299
+ intake_readiness = _latest_matching(
300
+ self.repository,
301
+ project_id,
302
+ "guided_intake_readiness",
303
+ lambda item: item.twin_revision_id == revision.revision_id,
304
+ )
305
+ source_manifest = None
306
+ if intake_readiness is not None:
307
+ source_manifest_id = str(
308
+ intake_readiness.payload.get("source_manifest_artifact_id") or ""
309
+ ).strip()
310
+ if source_manifest_id:
311
+ candidate_manifest = _require_artifact(
312
+ self.repository,
313
+ project_id,
314
+ source_manifest_id,
315
+ "project_source_manifest",
316
+ )
317
+ if (
318
+ candidate_manifest.twin_revision_id == revision.revision_id
319
+ and candidate_manifest.artifact_hash
320
+ == intake_readiness.payload.get("source_manifest_artifact_hash")
321
+ ):
322
+ source_manifest = candidate_manifest
299
323
  ordered = [
324
+ source_manifest,
325
+ intake_readiness,
300
326
  campaign,
301
327
  requirement_set,
302
328
  verification_plan,
@@ -0,0 +1,65 @@
1
+ from __future__ import annotations
2
+
3
+ import argparse
4
+ import json
5
+ from pathlib import Path
6
+
7
+ from .guided_intake_v23 import GuidedIntakeError, analyze_source, write_intake_reports
8
+
9
+
10
+ def _parser() -> argparse.ArgumentParser:
11
+ parser = argparse.ArgumentParser(
12
+ prog="devagent intake",
13
+ description="Inspect customer engineering files without requiring a fixed project format.",
14
+ )
15
+ parser.add_argument("source", help="Customer project folder")
16
+ parser.add_argument("--output", default=None, help="Results directory; defaults to <source>/devagent-results")
17
+ parser.add_argument("--json", action="store_true", dest="json_only")
18
+ return parser
19
+
20
+
21
+ def main(argv: list[str] | None = None) -> int:
22
+ args = _parser().parse_args(argv)
23
+ root = Path(args.source).expanduser().resolve()
24
+ output = Path(args.output).expanduser().resolve() if args.output else root / "devagent-results"
25
+ try:
26
+ analysis = analyze_source(root, exclude_paths=(output,))
27
+ manifest, readiness, guide = write_intake_reports(analysis, output)
28
+ except (GuidedIntakeError, OSError) as exc:
29
+ print(json.dumps({"intake_status": "ERROR", "failure_code": str(exc)}, indent=2))
30
+ return 10
31
+
32
+ payload = {
33
+ **analysis.readiness(),
34
+ "source_manifest": str(manifest),
35
+ "intake_readiness": str(readiness),
36
+ "intake_guide": str(guide),
37
+ "inventory_fingerprint": analysis.inventory_fingerprint,
38
+ "authority_fingerprint": analysis.authority_fingerprint,
39
+ }
40
+ if args.json_only:
41
+ print(json.dumps(payload, indent=2, sort_keys=True))
42
+ return 0
43
+
44
+ print("DevAgent Guided Intake")
45
+ print("=" * 28)
46
+ print(f"Status: {analysis.intake_status}")
47
+ print(f"Authority resolved: {analysis.authority_ready}")
48
+ print(f"Recognized files: {analysis.recognized_files}")
49
+ print(f"Unknown files: {analysis.unknown_files}")
50
+ print(f"Duplicate groups: {len(analysis.duplicate_groups)}")
51
+ print(f"Source manifest: {manifest}")
52
+ print(f"Intake guide: {guide}")
53
+ print("\nVerification capabilities:")
54
+ for item in analysis.capabilities:
55
+ print(f" {item.capability:<20} {item.state:<20} {item.reason}")
56
+ if analysis.unresolved_roles:
57
+ print("\nOptional confirmation:")
58
+ for role in analysis.unresolved_roles:
59
+ print(f" - Select the authoritative {role.replace('_', ' ')} source.")
60
+ print("\nMissing files do not fail intake. Add more files later if stronger verification coverage is desired.")
61
+ return 0
62
+
63
+
64
+ if __name__ == "__main__":
65
+ raise SystemExit(main())