devagent-physical-engine 2.2.0__tar.gz → 2.3.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {devagent_physical_engine-2.2.0/src/devagent_physical_engine.egg-info → devagent_physical_engine-2.3.0}/PKG-INFO +126 -10
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/README.md +124 -8
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/pyproject.toml +3 -3
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/__init__.py +22 -2
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/commissioning_readiness.py +63 -1
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/evidence_trust.py +26 -0
- devagent_physical_engine-2.3.0/src/devagent_physical_engine/guided_intake_cli.py +65 -0
- devagent_physical_engine-2.3.0/src/devagent_physical_engine/guided_intake_v23.py +663 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/one_command.py +13 -5
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/one_command_v15.py +16 -9
- devagent_physical_engine-2.3.0/src/devagent_physical_engine/one_command_v23.py +307 -0
- devagent_physical_engine-2.3.0/src/devagent_physical_engine/user_cli_v23.py +74 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0/src/devagent_physical_engine.egg-info}/PKG-INFO +126 -10
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine.egg-info/SOURCES.txt +5 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine.egg-info/entry_points.txt +1 -1
- devagent_physical_engine-2.3.0/tests/test_guided_intake_v23.py +472 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/NOTICE +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/setup.cfg +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/agent/__init__.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/agent/compiler.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/agent/contracts.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/agent/coordinator.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/agent/critic.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/agent/evidence.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/agent/interpreter.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/agent/planner.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/agent/recovery.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/agent/routing.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/agent/runtime.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/agent/semantic.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/agent/structured.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ai_cli.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/cli.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/commercial.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/commercial_campaign.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/commercial_cli.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/commercial_importer.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/commercial_intelligence.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/commercial_readiness.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/commercial_repository.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/commissioning_agent.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/commissioning_agent_cli.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/commissioning_evidence.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/continuous_clearance.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/controller_runtime_hotfix_v181.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/doctor.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/dynamic_verification_runtime_v190.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/engineering_agent.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/engineering_findings.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/engineering_request.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/evidence_provider_cli.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/evidence_provider_gateway.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/evidence_provider_policy.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/evidence_replay.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/execution.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/industrial_motion_hotfix_v170.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/industrial_motion_v170.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/industrial_motion_v182.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/models.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/one_command_runtime.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/one_command_v16.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/one_command_v22.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/operating_envelope.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/optimization/__init__.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/optimization/benchmark.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/optimization/candidates.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/optimization/contracts.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/optimization/evaluator.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/optimization/evidence.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/optimization/experience.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/optimization/measured.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/optimization/optimizer.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/optimization/orchestrator.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/physical_campaign.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/physical_evidence.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/physical_evidence_v190.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/physical_motion.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/planning.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/pose_math.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/preexecution_contract.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/production_authority.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/production_grade.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/project.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/provider_adapters/__init__.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/provider_adapters/anthropic.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/provider_adapters/common.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/provider_adapters/factory.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/provider_adapters/gemini.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/provider_adapters/openai.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/provider_criterion.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/provider_qualification.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/providers.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/qualification.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/qualification_cli.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/qualification_harness.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/reference_workcell.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/report_requirements_v190.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/report_test_execution.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/report_test_execution_strict.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/robot_exercise_cli.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/robot_platform.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/robot_qualification_acceptance.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/robot_qualification_acceptance_cli.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/robot_qualification_cli.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/robot_qualification_report_store.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/robot_simulation_promotion_v211.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/robot_support_contract.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/robot_support_industrial_v2.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/robot_support_v18.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/robots.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/__init__.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/abb_irb1200.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/abb_irb1200_preview.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/abb_irb1200_verified.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/abb_runtime_probe.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/acceptance.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/commands.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/continuous_clearance_probe.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/controller_action_probe.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/destination_support_contact_v182.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/direct_controller_discovery_runner.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/doctor.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/fanuc_crx10ia.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/fanuc_crx10ia_physics.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/fk_pose.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/fk_probe.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/frame_alignment.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/gazebo_cli.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/gazebo_overlay_support.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/gazebo_pose.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/gazebo_world.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/industrial_arm_runtime_gate.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/industrial_arm_runtime_probe.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/industrial_arm_task_adapters.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/industrial_arm_task_runtime.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/industrial_sequence_planner_v170.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/industrial_sequence_planner_v171.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/industrial_sequence_planner_v172.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/industrial_sequence_planner_v182.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/joint_state_probe.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/joint_state_recorder.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/kuka_kr6_r900_2.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/kuka_kr6_r900_2_verified.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/measured_motion.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/moveit_joint_plan_probe.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/moveit_joint_plan_v161_probe.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/moveit_scene.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/moveit_task_planner.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/pilz_sequence_plan_probe.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/pilz_sequence_plan_probe_v182.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/preexecution.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/qualification.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/qualification_multivendor.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/qualification_provenance.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/qualification_v10.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/qualification_v11.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/qualification_v12.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/report_test_visualization.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/report_test_visualization_v170.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/robot_description_probe.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/ros_gz_pose_service_probe.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/ros_python_runtime.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/runtime_quiescence.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/runtime_quiescence_probe.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/scene_probe.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/state_validity_probe.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/support_contact_acm_probe_v170.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/support_contact_acm_semantics_v189.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/support_contact_lease_v170.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/support_contact_runner_v161.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/support_contact_v161.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/task_adapter.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/task_adapter_v190.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/task_motion_diagnostics_v190.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/task_visualization.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/tf_probe.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/tool_scene.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/tool_scene_probe.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/trajectory.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/trajectory_action_probe.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/trajectory_feedback_tracking_v189.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/trajectory_runtime_v190.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/trajectory_tracking.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/ur5e.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/ur5e_adapter.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/ur5e_v10_adapter.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/workpiece_carrier_v190.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/workpiece_entity_replace_probe_v190.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/workpiece_follow.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/workpiece_gazebo_follower.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/workpiece_scene.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/workpiece_scene_probe.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/workpiece_scene_probe_v186.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/workpiece_scene_probe_v187.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/workpiece_scene_probe_v188.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/workpiece_scene_probe_v189.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/ros2/workpiece_transport.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/selective_verification.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/selective_verification_v16.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/selective_verification_v190.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/setup_profile.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/sim_real_qualification.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/simulation.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/simulation_platform.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/smooth_motion_hotfix_v162.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/support_contact_hotfix_v161.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/tool_collision.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/trajectory_qualification.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/twin.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/twin_builder.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/twin_codec.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/twin_materialization.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/user_cli.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/user_cli_v15.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/user_cli_v16.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/user_cli_v18.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/user_cli_v191.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/user_cli_v22.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/verification.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/verification_capabilities_v190.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/verification_scope_authority.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine/workpiece_lifecycle.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine.egg-info/dependency_links.txt +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine.egg-info/requires.txt +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/src/devagent_physical_engine.egg-info/top_level.txt +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_abb_clock_provenance_v2.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_abb_gazebo_resource_path_v2.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_abb_irb1200_visual_v18.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_abb_robot_description_bootstrap_v2.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_abb_robot_description_payload_gate_v2.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_abb_runtime_direct_probe_v2.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_abb_sim_clock_v2.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_agent_core.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_agent_semantic_hardening.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_ai_cli.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_ai_cli_v07.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_commercial_importer_v1.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_commercial_intelligence_v15.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_commercial_readiness_v1.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_commercial_v1.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_commissioning_agent_orchestrator_v22.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_commissioning_core_v20.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_commissioning_evidence_graph_v20.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_continuous_clearance_v011.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_controller_failure_diagnostics_v190.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_controller_runtime_hotfix_v181.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_core.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_destination_support_contact_v182.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_dynamic_report_batch_v190.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_dynamic_report_contract_end_to_end_v190.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_dynamic_verification_capabilities_v190.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_engineering_request_v07.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_evidence_provider_gateway_v2.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_evidence_replay_v12.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_evidence_trust_coverage_v12.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_evidence_trust_transport_v12.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_evidence_trust_v12.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_evidence_viewer_palette_v130.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_explicit_detach_world_reassert_v189.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_external_evidence_campaign_authority_v2.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_fanuc_physics_tolerance_v2.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_fresh_simulation_cli_v191.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_fresh_simulation_service_v191.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_gazebo_cli_v0122.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_golden_abb_runner_v171.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_golden_abb_showcase.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_handoff_authority_v190.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_industrial_arm_functional_parity_v192.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_industrial_arm_replay_authority_v192.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_industrial_motion_v170.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_industrial_robot_simulation_v2.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_interpreter_profiles_v08.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_joint_state_metric_authority_v190.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_joint_state_probe_v0125.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_kuka_verified_runtime_v2.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_live_provider_qualification.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_loaded_place_stability_v190.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_measured_motion_v10.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_metric_authority_surface_v190.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_motion_handoff_stability_v190.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_moveit_planning_diagnostics_v0125.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_moveit_scene_v0123.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_multivendor_runtime_hardening_v2.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_multivendor_sim_promotion_v211.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_multivendor_sim_qualification_v2.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_natural_language_agent_v07.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_one_command_hardening_v13.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_one_command_pose_hardening_v15.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_one_command_regression_v141.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_one_command_v13.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_one_command_v190_injection.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_openai_strict_schema_v0113.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_optimization_v05.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_package_metadata_v184.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_physical_campaign_v09.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_physical_evidence_v09.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_physical_motion_v09.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_place_preexecution_acm_v189.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_planning_fallback_v012.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_pose_math_v0125.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_preexecution_contract_v10.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_production_authority_v11.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_production_external_evidence_v11.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_production_grade_coverage_v11.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_production_grade_v11.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_project_spine_v013.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_provider_and_qualification.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_provider_criterion_v15.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_qualification_cli_lifecycle_v06.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_qualification_harness_v06.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_readme_pypi.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_real_provider_adapters.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_reference_workcell_ros_frames_v0125.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_reference_workcell_v012.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_release_resting_pose_v189.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_release_transaction_v189.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_report_orchestration_v190.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_report_test_contract_coverage_v16.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_report_test_lineage_v16.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_report_test_visual_execution_v16.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_robot_platform_v08.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_robot_qualification_acceptance_v2.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_robot_qualification_review_fixes_v2.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_robot_support_contract_v2.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_ros2_production_receipts_v011.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_ros2_simulation.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_ros_process_group_cleanup_v2.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_ros_trajectory_v09.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_runtime_quiescence_v2.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_selective_verification_v14.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_setup_profile.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_sim_real_qualification_v011.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_simulation_platform_v08.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_smooth_motion_hotfix_v162.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_support_contact_acm_semantics_v189.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_support_contact_hotfix_v161.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_tool_collision_v011.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_tool_scene_v0124.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_trajectory_action_contract_v189.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_trajectory_action_probe_v0125.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_trajectory_feedback_tracking_v189.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_trajectory_qualification_v09.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_trajectory_tracking_v0125.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_transfer_controller_policy_v189.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_transfer_place_diagnostic_v172.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_twin_materialization_v10.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_twin_v08.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_ur5e_adapter_scopes_v09.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_ur5e_v10_adapter_scopes.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_user_cli_interactive_v131.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_user_cli_progress_v131.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_user_cli_report_visual_v16.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_user_cli_selective_v14.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_user_cli_v15.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_user_cli_v15_hotfix_inheritance.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_v052_stabilization.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_v08_catalog_mapping_regression.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_verification_scope_authority_v20.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_workpiece_attach_semantics_v183.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_workpiece_carrier_v190.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_workpiece_lifecycle_v011.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_workpiece_scene_probe_v185.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/tests/test_workpiece_semantic_lifecycle_v186.py +0 -0
- {devagent_physical_engine-2.2.0 → devagent_physical_engine-2.3.0}/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.
|
|
4
|
-
Summary: Verification-first
|
|
3
|
+
Version: 2.3.0
|
|
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.
|
|
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.
|
|
128
|
+
python -m pip install --upgrade devagent-physical-engine==2.3.0
|
|
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.
|
|
140
|
+
2.3.0
|
|
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.
|
|
651
|
+
**v2.3.0 — Production/Stable software workflow; Flexible Guided Multi-Vendor Intake + deterministic commissioning authority**
|
|
652
|
+
|
|
653
|
+
v2.3.0 makes the customer entry workflow flexible without weakening verification authority. Customers can provide the engineering files they already have instead of conforming to one mandatory DevAgent project schema. DevAgent inventories and hashes the raw sources, recognizes supported vendor/file roles, detects exact duplicates and source ambiguity, validates current intake provenance, and exposes which verification capabilities are available before the existing deterministic commissioning workflow continues.
|
|
551
654
|
|
|
552
|
-
|
|
655
|
+
Missing files are allowed. Missing evidence reduces verification scope or remains `NOT_TESTED`; it never becomes a synthetic `FAIL` or an invented PASS. Multiple distinct same-vendor source sets require confirmation instead of being selected from filenames such as `final`, `latest`, or `backup`. Source changes during verification invalidate the current intake snapshot and block readiness until the project is rerun from a stable source state.
|
|
656
|
+
|
|
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
|
-
|
|
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.
|
|
696
|
+
Production/Stable describes the bounded software workflow. The target-proven UR5e claim remains limited to the qualified packaged scope and acceptance environment. v2.3.0 does not claim arbitrary customer cells are physically qualified, site-qualified, functionally safe, commissioned, or authorized for autonomous real execution. Flexible intake changes how customer artifacts enter the workflow; it does not weaken evidence authority. The AI agent remains advisory and cannot grant PASS/FAIL/NOT_TESTED, evidence qualification, pre-site readiness, or real-execution authority.
|
|
587
697
|
|
|
588
698
|
Current hard authority boundaries remain:
|
|
589
699
|
|
|
@@ -598,9 +708,15 @@ 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.0 release notes:
|
|
718
|
+
https://github.com/tomha85/devagent-physical-engine/blob/main/docs/RELEASE_NOTES_V2_3_0.md
|
|
719
|
+
|
|
604
720
|
v2.2.0 release notes:
|
|
605
721
|
https://github.com/tomha85/devagent-physical-engine/blob/main/docs/RELEASE_NOTES_V2_2_0.md
|
|
606
722
|
|
|
@@ -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.
|
|
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.
|
|
86
|
+
python -m pip install --upgrade devagent-physical-engine==2.3.0
|
|
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.
|
|
98
|
+
2.3.0
|
|
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.
|
|
609
|
+
**v2.3.0 — Production/Stable software workflow; Flexible Guided Multi-Vendor Intake + deterministic commissioning authority**
|
|
610
|
+
|
|
611
|
+
v2.3.0 makes the customer entry workflow flexible without weakening verification authority. Customers can provide the engineering files they already have instead of conforming to one mandatory DevAgent project schema. DevAgent inventories and hashes the raw sources, recognizes supported vendor/file roles, detects exact duplicates and source ambiguity, validates current intake provenance, and exposes which verification capabilities are available before the existing deterministic commissioning workflow continues.
|
|
509
612
|
|
|
510
|
-
|
|
613
|
+
Missing files are allowed. Missing evidence reduces verification scope or remains `NOT_TESTED`; it never becomes a synthetic `FAIL` or an invented PASS. Multiple distinct same-vendor source sets require confirmation instead of being selected from filenames such as `final`, `latest`, or `backup`. Source changes during verification invalidate the current intake snapshot and block readiness until the project is rerun from a stable source state.
|
|
614
|
+
|
|
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
|
-
|
|
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.
|
|
654
|
+
Production/Stable describes the bounded software workflow. The target-proven UR5e claim remains limited to the qualified packaged scope and acceptance environment. v2.3.0 does not claim arbitrary customer cells are physically qualified, site-qualified, functionally safe, commissioned, or authorized for autonomous real execution. Flexible intake changes how customer artifacts enter the workflow; it does not weaken evidence authority. The AI agent remains advisory and cannot grant PASS/FAIL/NOT_TESTED, evidence qualification, pre-site readiness, or real-execution authority.
|
|
545
655
|
|
|
546
656
|
Current hard authority boundaries remain:
|
|
547
657
|
|
|
@@ -556,9 +666,15 @@ 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.0 release notes:
|
|
676
|
+
https://github.com/tomha85/devagent-physical-engine/blob/main/docs/RELEASE_NOTES_V2_3_0.md
|
|
677
|
+
|
|
562
678
|
v2.2.0 release notes:
|
|
563
679
|
https://github.com/tomha85/devagent-physical-engine/blob/main/docs/RELEASE_NOTES_V2_2_0.md
|
|
564
680
|
|
|
@@ -4,8 +4,8 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "devagent-physical-engine"
|
|
7
|
-
version = "2.
|
|
8
|
-
description = "Verification-first
|
|
7
|
+
version = "2.3.0"
|
|
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.
|
|
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 .
|
|
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.
|
|
301
|
+
__version__ = "2.3.0"
|
|
@@ -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 [
|
|
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())
|