devagent-physical-engine 2.1.0__tar.gz → 2.1.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.
- {devagent_physical_engine-2.1.0/src/devagent_physical_engine.egg-info → devagent_physical_engine-2.1.1}/PKG-INFO +10 -7
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/README.md +9 -6
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/pyproject.toml +1 -1
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/__init__.py +1 -1
- devagent_physical_engine-2.1.1/src/devagent_physical_engine/robot_simulation_promotion_v211.py +26 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/robot_support_industrial_v2.py +18 -12
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/robot_support_v18.py +16 -13
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/user_cli_v18.py +3 -3
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1/src/devagent_physical_engine.egg-info}/PKG-INFO +10 -7
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine.egg-info/SOURCES.txt +2 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_abb_irb1200_visual_v18.py +5 -5
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_industrial_motion_v170.py +1 -1
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_industrial_robot_simulation_v2.py +9 -9
- devagent_physical_engine-2.1.1/tests/test_multivendor_sim_promotion_v211.py +46 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_package_metadata_v184.py +2 -2
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_robot_platform_v08.py +8 -8
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_transfer_place_diagnostic_v172.py +2 -2
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/NOTICE +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/setup.cfg +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/agent/__init__.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/agent/compiler.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/agent/contracts.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/agent/coordinator.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/agent/critic.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/agent/evidence.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/agent/interpreter.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/agent/planner.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/agent/recovery.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/agent/routing.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/agent/runtime.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/agent/semantic.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/agent/structured.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ai_cli.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/cli.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/commercial.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/commercial_campaign.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/commercial_cli.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/commercial_importer.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/commercial_intelligence.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/commercial_readiness.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/commercial_repository.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/commissioning_evidence.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/commissioning_readiness.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/continuous_clearance.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/controller_runtime_hotfix_v181.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/doctor.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/dynamic_verification_runtime_v190.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/engineering_agent.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/engineering_findings.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/engineering_request.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/evidence_provider_cli.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/evidence_provider_gateway.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/evidence_provider_policy.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/evidence_replay.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/evidence_trust.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/execution.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/industrial_motion_hotfix_v170.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/industrial_motion_v170.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/industrial_motion_v182.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/models.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/one_command.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/one_command_runtime.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/one_command_v15.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/one_command_v16.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/operating_envelope.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/optimization/__init__.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/optimization/benchmark.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/optimization/candidates.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/optimization/contracts.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/optimization/evaluator.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/optimization/evidence.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/optimization/experience.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/optimization/measured.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/optimization/optimizer.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/optimization/orchestrator.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/physical_campaign.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/physical_evidence.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/physical_evidence_v190.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/physical_motion.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/planning.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/pose_math.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/preexecution_contract.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/production_authority.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/production_grade.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/project.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/provider_adapters/__init__.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/provider_adapters/anthropic.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/provider_adapters/common.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/provider_adapters/factory.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/provider_adapters/gemini.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/provider_adapters/openai.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/provider_criterion.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/provider_qualification.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/providers.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/qualification.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/qualification_cli.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/qualification_harness.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/reference_workcell.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/report_requirements_v190.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/report_test_execution.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/report_test_execution_strict.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/robot_exercise_cli.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/robot_platform.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/robot_qualification_acceptance.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/robot_qualification_acceptance_cli.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/robot_qualification_cli.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/robot_qualification_report_store.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/robot_support_contract.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/robots.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/__init__.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/abb_irb1200.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/abb_irb1200_preview.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/abb_irb1200_verified.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/abb_runtime_probe.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/acceptance.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/commands.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/continuous_clearance_probe.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/controller_action_probe.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/destination_support_contact_v182.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/direct_controller_discovery_runner.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/doctor.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/fanuc_crx10ia.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/fanuc_crx10ia_physics.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/fk_pose.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/fk_probe.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/frame_alignment.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/gazebo_cli.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/gazebo_overlay_support.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/gazebo_pose.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/gazebo_world.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/industrial_arm_runtime_gate.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/industrial_arm_runtime_probe.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/industrial_arm_task_adapters.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/industrial_arm_task_runtime.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/industrial_sequence_planner_v170.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/industrial_sequence_planner_v171.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/industrial_sequence_planner_v172.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/industrial_sequence_planner_v182.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/joint_state_probe.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/joint_state_recorder.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/kuka_kr6_r900_2.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/kuka_kr6_r900_2_verified.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/measured_motion.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/moveit_joint_plan_probe.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/moveit_joint_plan_v161_probe.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/moveit_scene.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/moveit_task_planner.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/pilz_sequence_plan_probe.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/pilz_sequence_plan_probe_v182.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/preexecution.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/qualification.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/qualification_multivendor.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/qualification_provenance.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/qualification_v10.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/qualification_v11.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/qualification_v12.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/report_test_visualization.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/report_test_visualization_v170.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/robot_description_probe.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/ros_gz_pose_service_probe.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/ros_python_runtime.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/runtime_quiescence.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/runtime_quiescence_probe.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/scene_probe.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/state_validity_probe.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/support_contact_acm_probe_v170.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/support_contact_acm_semantics_v189.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/support_contact_lease_v170.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/support_contact_runner_v161.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/support_contact_v161.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/task_adapter.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/task_adapter_v190.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/task_motion_diagnostics_v190.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/task_visualization.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/tf_probe.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/tool_scene.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/tool_scene_probe.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/trajectory.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/trajectory_action_probe.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/trajectory_feedback_tracking_v189.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/trajectory_runtime_v190.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/trajectory_tracking.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/ur5e.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/ur5e_adapter.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/ur5e_v10_adapter.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/workpiece_carrier_v190.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/workpiece_entity_replace_probe_v190.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/workpiece_follow.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/workpiece_gazebo_follower.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/workpiece_scene.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/workpiece_scene_probe.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/workpiece_scene_probe_v186.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/workpiece_scene_probe_v187.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/workpiece_scene_probe_v188.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/workpiece_scene_probe_v189.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/ros2/workpiece_transport.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/selective_verification.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/selective_verification_v16.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/selective_verification_v190.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/setup_profile.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/sim_real_qualification.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/simulation.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/simulation_platform.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/smooth_motion_hotfix_v162.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/support_contact_hotfix_v161.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/tool_collision.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/trajectory_qualification.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/twin.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/twin_builder.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/twin_codec.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/twin_materialization.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/user_cli.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/user_cli_v15.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/user_cli_v16.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/user_cli_v191.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/verification.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/verification_capabilities_v190.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/verification_scope_authority.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine/workpiece_lifecycle.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine.egg-info/dependency_links.txt +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine.egg-info/entry_points.txt +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine.egg-info/requires.txt +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/src/devagent_physical_engine.egg-info/top_level.txt +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_abb_clock_provenance_v2.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_abb_gazebo_resource_path_v2.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_abb_robot_description_bootstrap_v2.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_abb_robot_description_payload_gate_v2.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_abb_runtime_direct_probe_v2.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_abb_sim_clock_v2.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_agent_core.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_agent_semantic_hardening.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_ai_cli.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_ai_cli_v07.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_commercial_importer_v1.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_commercial_intelligence_v15.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_commercial_readiness_v1.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_commercial_v1.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_commissioning_core_v20.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_commissioning_evidence_graph_v20.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_continuous_clearance_v011.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_controller_failure_diagnostics_v190.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_controller_runtime_hotfix_v181.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_core.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_destination_support_contact_v182.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_dynamic_report_batch_v190.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_dynamic_report_contract_end_to_end_v190.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_dynamic_verification_capabilities_v190.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_engineering_request_v07.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_evidence_provider_gateway_v2.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_evidence_replay_v12.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_evidence_trust_coverage_v12.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_evidence_trust_transport_v12.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_evidence_trust_v12.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_evidence_viewer_palette_v130.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_explicit_detach_world_reassert_v189.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_external_evidence_campaign_authority_v2.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_fanuc_physics_tolerance_v2.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_fresh_simulation_cli_v191.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_fresh_simulation_service_v191.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_gazebo_cli_v0122.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_golden_abb_runner_v171.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_golden_abb_showcase.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_handoff_authority_v190.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_industrial_arm_functional_parity_v192.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_industrial_arm_replay_authority_v192.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_interpreter_profiles_v08.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_joint_state_metric_authority_v190.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_joint_state_probe_v0125.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_kuka_verified_runtime_v2.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_live_provider_qualification.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_loaded_place_stability_v190.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_measured_motion_v10.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_metric_authority_surface_v190.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_motion_handoff_stability_v190.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_moveit_planning_diagnostics_v0125.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_moveit_scene_v0123.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_multivendor_runtime_hardening_v2.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_multivendor_sim_qualification_v2.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_natural_language_agent_v07.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_one_command_hardening_v13.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_one_command_pose_hardening_v15.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_one_command_regression_v141.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_one_command_v13.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_one_command_v190_injection.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_openai_strict_schema_v0113.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_optimization_v05.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_physical_campaign_v09.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_physical_evidence_v09.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_physical_motion_v09.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_place_preexecution_acm_v189.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_planning_fallback_v012.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_pose_math_v0125.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_preexecution_contract_v10.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_production_authority_v11.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_production_external_evidence_v11.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_production_grade_coverage_v11.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_production_grade_v11.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_project_spine_v013.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_provider_and_qualification.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_provider_criterion_v15.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_qualification_cli_lifecycle_v06.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_qualification_harness_v06.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_readme_pypi.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_real_provider_adapters.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_reference_workcell_ros_frames_v0125.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_reference_workcell_v012.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_release_resting_pose_v189.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_release_transaction_v189.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_report_orchestration_v190.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_report_test_contract_coverage_v16.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_report_test_lineage_v16.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_report_test_visual_execution_v16.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_robot_qualification_acceptance_v2.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_robot_qualification_review_fixes_v2.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_robot_support_contract_v2.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_ros2_production_receipts_v011.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_ros2_simulation.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_ros_process_group_cleanup_v2.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_ros_trajectory_v09.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_runtime_quiescence_v2.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_selective_verification_v14.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_setup_profile.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_sim_real_qualification_v011.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_simulation_platform_v08.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_smooth_motion_hotfix_v162.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_support_contact_acm_semantics_v189.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_support_contact_hotfix_v161.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_tool_collision_v011.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_tool_scene_v0124.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_trajectory_action_contract_v189.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_trajectory_action_probe_v0125.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_trajectory_feedback_tracking_v189.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_trajectory_qualification_v09.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_trajectory_tracking_v0125.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_transfer_controller_policy_v189.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_twin_materialization_v10.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_twin_v08.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_ur5e_adapter_scopes_v09.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_ur5e_v10_adapter_scopes.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_user_cli_interactive_v131.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_user_cli_progress_v131.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_user_cli_report_visual_v16.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_user_cli_selective_v14.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_user_cli_v15.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_user_cli_v15_hotfix_inheritance.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_v052_stabilization.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_v08_catalog_mapping_regression.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_verification_scope_authority_v20.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_workpiece_attach_semantics_v183.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_workpiece_carrier_v190.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_workpiece_lifecycle_v011.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_workpiece_scene_probe_v185.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_workpiece_semantic_lifecycle_v186.py +0 -0
- {devagent_physical_engine-2.1.0 → devagent_physical_engine-2.1.1}/tests/test_workpiece_transport_v189.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: devagent-physical-engine
|
|
3
|
-
Version: 2.1.
|
|
3
|
+
Version: 2.1.1
|
|
4
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.
|
|
5
5
|
Author: Tom Ha
|
|
6
6
|
License: All Rights Reserved
|
|
@@ -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.1.
|
|
128
|
+
python -m pip install --upgrade devagent-physical-engine==2.1.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.
|
|
140
|
+
2.1.1
|
|
141
141
|
```
|
|
142
142
|
|
|
143
143
|
Run the normal customer workflow:
|
|
@@ -377,7 +377,7 @@ The target-proven UR5e path retains controller-manager/action readiness binding,
|
|
|
377
377
|
|
|
378
378
|
Unsupported customer Twins, unqualified robot profiles, boundary/fault cases outside the qualified scope, ambiguous case mappings, or incomplete lineage fail closed.
|
|
379
379
|
|
|
380
|
-
Exact ABB IRB1200, FANUC CRX-10iA, and KUKA KR6 R900-2
|
|
380
|
+
Exact ABB IRB1200, FANUC CRX-10iA, and KUKA KR6 R900-2 are `SIMULATION_SUPPORTED` in v2.1.1 after accepted 10× target-workstation qualification and a separate code-reviewed authority promotion. Generic ABB/FANUC/KUKA family profiles remain `MODEL_ONLY`; measured FAT, hardware/site, and real-execution authority remain locked.
|
|
381
381
|
|
|
382
382
|
Inspect robot support:
|
|
383
383
|
|
|
@@ -521,9 +521,9 @@ devagent-physical-ai optional provider-backed engineering front end
|
|
|
521
521
|
|
|
522
522
|
# Project status
|
|
523
523
|
|
|
524
|
-
**v2.1.
|
|
524
|
+
**v2.1.1 — Production/Stable software workflow; accepted ABB/FANUC/KUKA simulation authority promotion**
|
|
525
525
|
|
|
526
|
-
v2.1.
|
|
526
|
+
v2.1.1 promotes exact ABB IRB1200, FANUC CRX-10iA, and KUKA KR6 R900-2 kinematic/physics/visual simulation authority from the accepted v2.1 evidence. The promotion is bound to immutable report hashes and does not grant measured FAT, hardware-shadow, sim-real, site, safety, or real-execution authority.
|
|
527
527
|
|
|
528
528
|
Production-oriented software capabilities include:
|
|
529
529
|
|
|
@@ -554,7 +554,7 @@ immutable READY / NOT_READY pre-site commissioning decision
|
|
|
554
554
|
provider-neutral optional AI front end
|
|
555
555
|
```
|
|
556
556
|
|
|
557
|
-
Production/Stable describes the bounded software workflow. The target-proven UR5e claim remains limited to the qualified packaged scope and acceptance environment. v2.1.
|
|
557
|
+
Production/Stable describes the bounded software workflow. The target-proven UR5e claim remains limited to the qualified packaged scope and acceptance environment. v2.1.1 does not claim arbitrary customer cells are physically qualified, site-qualified, functionally safe, commissioned, or authorized for autonomous real execution.
|
|
558
558
|
|
|
559
559
|
Current hard authority boundaries remain:
|
|
560
560
|
|
|
@@ -569,6 +569,9 @@ unless separately proven by an appropriate qualified process.
|
|
|
569
569
|
|
|
570
570
|
## Documentation
|
|
571
571
|
|
|
572
|
+
v2.1.1 release notes:
|
|
573
|
+
https://github.com/tomha85/devagent-physical-engine/blob/main/docs/RELEASE_NOTES_V2_1_1.md
|
|
574
|
+
|
|
572
575
|
v2.1.0 release notes:
|
|
573
576
|
https://github.com/tomha85/devagent-physical-engine/blob/main/docs/RELEASE_NOTES_V2_1_0.md
|
|
574
577
|
|
|
@@ -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.1.
|
|
86
|
+
python -m pip install --upgrade devagent-physical-engine==2.1.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.
|
|
98
|
+
2.1.1
|
|
99
99
|
```
|
|
100
100
|
|
|
101
101
|
Run the normal customer workflow:
|
|
@@ -335,7 +335,7 @@ The target-proven UR5e path retains controller-manager/action readiness binding,
|
|
|
335
335
|
|
|
336
336
|
Unsupported customer Twins, unqualified robot profiles, boundary/fault cases outside the qualified scope, ambiguous case mappings, or incomplete lineage fail closed.
|
|
337
337
|
|
|
338
|
-
Exact ABB IRB1200, FANUC CRX-10iA, and KUKA KR6 R900-2
|
|
338
|
+
Exact ABB IRB1200, FANUC CRX-10iA, and KUKA KR6 R900-2 are `SIMULATION_SUPPORTED` in v2.1.1 after accepted 10× target-workstation qualification and a separate code-reviewed authority promotion. Generic ABB/FANUC/KUKA family profiles remain `MODEL_ONLY`; measured FAT, hardware/site, and real-execution authority remain locked.
|
|
339
339
|
|
|
340
340
|
Inspect robot support:
|
|
341
341
|
|
|
@@ -479,9 +479,9 @@ devagent-physical-ai optional provider-backed engineering front end
|
|
|
479
479
|
|
|
480
480
|
# Project status
|
|
481
481
|
|
|
482
|
-
**v2.1.
|
|
482
|
+
**v2.1.1 — Production/Stable software workflow; accepted ABB/FANUC/KUKA simulation authority promotion**
|
|
483
483
|
|
|
484
|
-
v2.1.
|
|
484
|
+
v2.1.1 promotes exact ABB IRB1200, FANUC CRX-10iA, and KUKA KR6 R900-2 kinematic/physics/visual simulation authority from the accepted v2.1 evidence. The promotion is bound to immutable report hashes and does not grant measured FAT, hardware-shadow, sim-real, site, safety, or real-execution authority.
|
|
485
485
|
|
|
486
486
|
Production-oriented software capabilities include:
|
|
487
487
|
|
|
@@ -512,7 +512,7 @@ immutable READY / NOT_READY pre-site commissioning decision
|
|
|
512
512
|
provider-neutral optional AI front end
|
|
513
513
|
```
|
|
514
514
|
|
|
515
|
-
Production/Stable describes the bounded software workflow. The target-proven UR5e claim remains limited to the qualified packaged scope and acceptance environment. v2.1.
|
|
515
|
+
Production/Stable describes the bounded software workflow. The target-proven UR5e claim remains limited to the qualified packaged scope and acceptance environment. v2.1.1 does not claim arbitrary customer cells are physically qualified, site-qualified, functionally safe, commissioned, or authorized for autonomous real execution.
|
|
516
516
|
|
|
517
517
|
Current hard authority boundaries remain:
|
|
518
518
|
|
|
@@ -527,6 +527,9 @@ unless separately proven by an appropriate qualified process.
|
|
|
527
527
|
|
|
528
528
|
## Documentation
|
|
529
529
|
|
|
530
|
+
v2.1.1 release notes:
|
|
531
|
+
https://github.com/tomha85/devagent-physical-engine/blob/main/docs/RELEASE_NOTES_V2_1_1.md
|
|
532
|
+
|
|
530
533
|
v2.1.0 release notes:
|
|
531
534
|
https://github.com/tomha85/devagent-physical-engine/blob/main/docs/RELEASE_NOTES_V2_1_0.md
|
|
532
535
|
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "devagent-physical-engine"
|
|
7
|
-
version = "2.1.
|
|
7
|
+
version = "2.1.1"
|
|
8
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."
|
|
9
9
|
readme = { file = "README.md", content-type = "text/markdown" }
|
|
10
10
|
requires-python = ">=3.11"
|
devagent_physical_engine-2.1.1/src/devagent_physical_engine/robot_simulation_promotion_v211.py
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from types import MappingProxyType
|
|
4
|
+
from typing import Final
|
|
5
|
+
|
|
6
|
+
SIMULATION_PROMOTION_SCHEMA: Final = "devagent_multivendor_sim_promotion_v1"
|
|
7
|
+
ACCEPTANCE_CANDIDATE_SHA: Final = "4da8c8899320e18580198b347fb9c1b1fe513ea7"
|
|
8
|
+
ACCEPTANCE_MANIFEST_HASH: Final = "1dd139747506371ca762ced91334eb86b628776ebb03d6aed7e44a6dbcb867d5"
|
|
9
|
+
PROMOTED_SIMULATION_TIERS: Final = ("kinematic", "physics", "visual")
|
|
10
|
+
QUALIFICATION_REPORT_HASHES = MappingProxyType({
|
|
11
|
+
"abb_irb1200": "29cdec994c45de549efd849db7f91af980870b44c2169dc46227628df74b9a18",
|
|
12
|
+
"fanuc_crx10ia": "346ea41cbb53af449f20071afa6261a0683158231ae9dea42dcf72e51f7817b7",
|
|
13
|
+
"kuka_kr6_r900_2": "692c6b1b9a990f3391099630a0d124359c991134cc887f28325026ff94574446",
|
|
14
|
+
})
|
|
15
|
+
PROMOTED_PROFILE_KEYS: Final = tuple(QUALIFICATION_REPORT_HASHES)
|
|
16
|
+
MEASURED_FAT_AUTHORITY_PROMOTED: Final = False
|
|
17
|
+
HARDWARE_SHADOW_PROMOTED: Final = False
|
|
18
|
+
SIM_REAL_PROMOTED: Final = False
|
|
19
|
+
SITE_QUALIFICATION_PROMOTED: Final = False
|
|
20
|
+
REAL_EXECUTION_ALLOWED: Final = False
|
|
21
|
+
|
|
22
|
+
def qualification_report_hash(profile_key: str) -> str:
|
|
23
|
+
try:
|
|
24
|
+
return QUALIFICATION_REPORT_HASHES[profile_key]
|
|
25
|
+
except KeyError as exc:
|
|
26
|
+
raise ValueError(f"simulation_promotion_profile_not_bound:{profile_key}") from exc
|
|
@@ -10,6 +10,10 @@ from .robot_platform import (
|
|
|
10
10
|
RosIntegration,
|
|
11
11
|
SimulationTier,
|
|
12
12
|
)
|
|
13
|
+
from .robot_simulation_promotion_v211 import (
|
|
14
|
+
ACCEPTANCE_MANIFEST_HASH,
|
|
15
|
+
qualification_report_hash,
|
|
16
|
+
)
|
|
13
17
|
|
|
14
18
|
FANUC_CRX10IA_PROFILE_KEY = "fanuc_crx10ia"
|
|
15
19
|
KUKA_KR6_R900_2_PROFILE_KEY = "kuka_kr6_r900_2"
|
|
@@ -47,9 +51,9 @@ def _fanuc_crx10ia_profile() -> RobotProfile:
|
|
|
47
51
|
model="crx10ia",
|
|
48
52
|
capabilities=ARM_CAPABILITIES,
|
|
49
53
|
qualification=_qualification(
|
|
50
|
-
kinematic=QualificationState.
|
|
51
|
-
physics=QualificationState.
|
|
52
|
-
visual=QualificationState.
|
|
54
|
+
kinematic=QualificationState.QUALIFIED,
|
|
55
|
+
physics=QualificationState.QUALIFIED,
|
|
56
|
+
visual=QualificationState.QUALIFIED,
|
|
53
57
|
),
|
|
54
58
|
ros=RosIntegration(
|
|
55
59
|
ros2_compatible=True,
|
|
@@ -65,12 +69,13 @@ def _fanuc_crx10ia_profile() -> RobotProfile:
|
|
|
65
69
|
"crx10ia",
|
|
66
70
|
"crx-10ia",
|
|
67
71
|
),
|
|
68
|
-
legacy_qualification="
|
|
72
|
+
legacy_qualification="simulation",
|
|
69
73
|
notes=(
|
|
70
74
|
"Exact FANUC CRX-10iA official ROS 2 description and MoveIt/mock-control path.",
|
|
71
75
|
"DevAgent-owned Gazebo Harmonic overlay reuses official FANUC geometry/inertials and adds only gz_ros2_control simulation plumbing.",
|
|
72
|
-
"Kinematic/physics/visual tiers
|
|
73
|
-
"
|
|
76
|
+
"Kinematic/physics/visual simulation tiers are qualified by accepted exact-workstation evidence; no third-party Gazebo CRX dependency is treated as authority.",
|
|
77
|
+
f"Promotion evidence: manifest {ACCEPTANCE_MANIFEST_HASH}; FANUC report {qualification_report_hash(FANUC_CRX10IA_PROFILE_KEY)}.",
|
|
78
|
+
"Measured FAT, hardware-shadow, sim-real, site and real execution authority remain locked.",
|
|
74
79
|
),
|
|
75
80
|
)
|
|
76
81
|
|
|
@@ -84,9 +89,9 @@ def _kuka_kr6_r900_2_profile() -> RobotProfile:
|
|
|
84
89
|
model="kr6_r900_2",
|
|
85
90
|
capabilities=ARM_CAPABILITIES,
|
|
86
91
|
qualification=_qualification(
|
|
87
|
-
kinematic=QualificationState.
|
|
88
|
-
physics=QualificationState.
|
|
89
|
-
visual=QualificationState.
|
|
92
|
+
kinematic=QualificationState.QUALIFIED,
|
|
93
|
+
physics=QualificationState.QUALIFIED,
|
|
94
|
+
visual=QualificationState.QUALIFIED,
|
|
90
95
|
),
|
|
91
96
|
ros=RosIntegration(
|
|
92
97
|
ros2_compatible=True,
|
|
@@ -101,12 +106,13 @@ def _kuka_kr6_r900_2_profile() -> RobotProfile:
|
|
|
101
106
|
"kr6 r900 2",
|
|
102
107
|
"kr6_r900_2",
|
|
103
108
|
),
|
|
104
|
-
legacy_qualification="
|
|
109
|
+
legacy_qualification="simulation",
|
|
105
110
|
notes=(
|
|
106
111
|
"Exact KUKA KR6 R900-2 Agilus ROS 2 profile.",
|
|
107
112
|
"Upstream KUKA Jazzy packages provide verified model data plus Gazebo and MoveIt integration for this model.",
|
|
108
|
-
"
|
|
109
|
-
"
|
|
113
|
+
"Kinematic/physics/visual simulation tiers are qualified by accepted exact-workstation evidence.",
|
|
114
|
+
f"Promotion evidence: manifest {ACCEPTANCE_MANIFEST_HASH}; KUKA report {qualification_report_hash(KUKA_KR6_R900_2_PROFILE_KEY)}.",
|
|
115
|
+
"Measured FAT, hardware-shadow, sim-real, site and real execution authority remain locked.",
|
|
110
116
|
),
|
|
111
117
|
)
|
|
112
118
|
|
|
@@ -10,6 +10,10 @@ from .robot_platform import (
|
|
|
10
10
|
RosIntegration,
|
|
11
11
|
SimulationTier,
|
|
12
12
|
)
|
|
13
|
+
from .robot_simulation_promotion_v211 import (
|
|
14
|
+
ACCEPTANCE_MANIFEST_HASH,
|
|
15
|
+
qualification_report_hash,
|
|
16
|
+
)
|
|
13
17
|
|
|
14
18
|
ABB_IRB1200_PROFILE_KEY = "abb_irb1200"
|
|
15
19
|
|
|
@@ -17,9 +21,9 @@ ABB_IRB1200_PROFILE_KEY = "abb_irb1200"
|
|
|
17
21
|
def _abb_irb1200_profile() -> RobotProfile:
|
|
18
22
|
"""Exact ABB IRB 1200-5/0.9 profile.
|
|
19
23
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
24
|
+
Accepted target-workstation evidence proves the exact Gazebo/MoveIt integration.
|
|
25
|
+
v2.1.1 promotes only kinematic/physics/visual simulation authority; measured FAT,
|
|
26
|
+
hardware-shadow, sim-real, site and real execution remain locked.
|
|
23
27
|
"""
|
|
24
28
|
|
|
25
29
|
return RobotProfile(
|
|
@@ -30,9 +34,9 @@ def _abb_irb1200_profile() -> RobotProfile:
|
|
|
30
34
|
qualification=RobotQualification(
|
|
31
35
|
{
|
|
32
36
|
SimulationTier.DETERMINISTIC: QualificationState.QUALIFIED,
|
|
33
|
-
SimulationTier.KINEMATIC: QualificationState.
|
|
34
|
-
SimulationTier.PHYSICS: QualificationState.
|
|
35
|
-
SimulationTier.VISUAL: QualificationState.
|
|
37
|
+
SimulationTier.KINEMATIC: QualificationState.QUALIFIED,
|
|
38
|
+
SimulationTier.PHYSICS: QualificationState.QUALIFIED,
|
|
39
|
+
SimulationTier.VISUAL: QualificationState.QUALIFIED,
|
|
36
40
|
}
|
|
37
41
|
),
|
|
38
42
|
ros=RosIntegration(
|
|
@@ -51,13 +55,12 @@ def _abb_irb1200_profile() -> RobotProfile:
|
|
|
51
55
|
"irb1200",
|
|
52
56
|
"irb1200 5 90",
|
|
53
57
|
),
|
|
54
|
-
legacy_qualification="
|
|
58
|
+
legacy_qualification="simulation",
|
|
55
59
|
notes=(
|
|
56
60
|
"Exact ABB IRB 1200-5/0.9 ROS2 profile.",
|
|
57
|
-
"Gazebo Harmonic + gz_ros2_control + MoveIt/RViz
|
|
58
|
-
"
|
|
59
|
-
"
|
|
60
|
-
"remains locked.",
|
|
61
|
+
"Gazebo Harmonic + gz_ros2_control + MoveIt/RViz kinematic/physics/visual simulation is qualified by accepted workstation evidence.",
|
|
62
|
+
f"Promotion evidence: manifest {ACCEPTANCE_MANIFEST_HASH}; ABB report {qualification_report_hash(ABB_IRB1200_PROFILE_KEY)}.",
|
|
63
|
+
"Measured FAT, hardware-shadow, sim-real, site and real execution authority remain locked.",
|
|
61
64
|
),
|
|
62
65
|
)
|
|
63
66
|
|
|
@@ -80,11 +83,11 @@ def robot_support_level(profile: RobotProfile) -> str:
|
|
|
80
83
|
|
|
81
84
|
if physics is QualificationState.QUALIFIED and visual is QualificationState.QUALIFIED:
|
|
82
85
|
return "SIMULATION_SUPPORTED"
|
|
83
|
-
if physics is QualificationState.
|
|
86
|
+
if physics is QualificationState.QUALIFIED and visual is QualificationState.QUALIFIED:
|
|
84
87
|
return "SIMULATION_AVAILABLE_EXPERIMENTAL"
|
|
85
88
|
if visual is QualificationState.QUALIFIED or kinematic is QualificationState.QUALIFIED:
|
|
86
89
|
return "VISUAL_SUPPORTED"
|
|
87
|
-
if visual is QualificationState.
|
|
90
|
+
if visual is QualificationState.QUALIFIED or kinematic is QualificationState.QUALIFIED:
|
|
88
91
|
return "VISUAL_AVAILABLE_EXPERIMENTAL"
|
|
89
92
|
return "MODEL_ONLY"
|
|
90
93
|
|
|
@@ -254,7 +254,7 @@ def _dry_run_visual(profile_key: str, trajectory_seed: str | None) -> int:
|
|
|
254
254
|
print("Physics candidate: " + " ".join(fanuc_crx10ia_physics_gazebo_command()))
|
|
255
255
|
print("Robot: exact FANUC CRX-10iA official geometry/inertials/joint limits")
|
|
256
256
|
print(
|
|
257
|
-
"Physics:
|
|
257
|
+
"Physics: QUALIFIED DevAgent-owned gz_ros2_control overlay; "
|
|
258
258
|
"no third-party FANUC Gazebo package is treated as authority"
|
|
259
259
|
)
|
|
260
260
|
print("Qualification: run `devagent robot qualify fanuc_crx10ia`")
|
|
@@ -334,8 +334,8 @@ def _robot_visualize(args: argparse.Namespace) -> int:
|
|
|
334
334
|
)
|
|
335
335
|
print("FANUC CRX-10iA official MoveIt/RViz mock simulation: READY")
|
|
336
336
|
print(
|
|
337
|
-
"
|
|
338
|
-
"
|
|
337
|
+
"Profile authority: KINEMATIC/VISUAL/PHYSICS SIMULATION QUALIFIED. "
|
|
338
|
+
"This command remains a preview path and does not create measured FAT evidence."
|
|
339
339
|
)
|
|
340
340
|
print("Measured FAT evidence is not promoted")
|
|
341
341
|
print("Real execution: False")
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: devagent-physical-engine
|
|
3
|
-
Version: 2.1.
|
|
3
|
+
Version: 2.1.1
|
|
4
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.
|
|
5
5
|
Author: Tom Ha
|
|
6
6
|
License: All Rights Reserved
|
|
@@ -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.1.
|
|
128
|
+
python -m pip install --upgrade devagent-physical-engine==2.1.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.
|
|
140
|
+
2.1.1
|
|
141
141
|
```
|
|
142
142
|
|
|
143
143
|
Run the normal customer workflow:
|
|
@@ -377,7 +377,7 @@ The target-proven UR5e path retains controller-manager/action readiness binding,
|
|
|
377
377
|
|
|
378
378
|
Unsupported customer Twins, unqualified robot profiles, boundary/fault cases outside the qualified scope, ambiguous case mappings, or incomplete lineage fail closed.
|
|
379
379
|
|
|
380
|
-
Exact ABB IRB1200, FANUC CRX-10iA, and KUKA KR6 R900-2
|
|
380
|
+
Exact ABB IRB1200, FANUC CRX-10iA, and KUKA KR6 R900-2 are `SIMULATION_SUPPORTED` in v2.1.1 after accepted 10× target-workstation qualification and a separate code-reviewed authority promotion. Generic ABB/FANUC/KUKA family profiles remain `MODEL_ONLY`; measured FAT, hardware/site, and real-execution authority remain locked.
|
|
381
381
|
|
|
382
382
|
Inspect robot support:
|
|
383
383
|
|
|
@@ -521,9 +521,9 @@ devagent-physical-ai optional provider-backed engineering front end
|
|
|
521
521
|
|
|
522
522
|
# Project status
|
|
523
523
|
|
|
524
|
-
**v2.1.
|
|
524
|
+
**v2.1.1 — Production/Stable software workflow; accepted ABB/FANUC/KUKA simulation authority promotion**
|
|
525
525
|
|
|
526
|
-
v2.1.
|
|
526
|
+
v2.1.1 promotes exact ABB IRB1200, FANUC CRX-10iA, and KUKA KR6 R900-2 kinematic/physics/visual simulation authority from the accepted v2.1 evidence. The promotion is bound to immutable report hashes and does not grant measured FAT, hardware-shadow, sim-real, site, safety, or real-execution authority.
|
|
527
527
|
|
|
528
528
|
Production-oriented software capabilities include:
|
|
529
529
|
|
|
@@ -554,7 +554,7 @@ immutable READY / NOT_READY pre-site commissioning decision
|
|
|
554
554
|
provider-neutral optional AI front end
|
|
555
555
|
```
|
|
556
556
|
|
|
557
|
-
Production/Stable describes the bounded software workflow. The target-proven UR5e claim remains limited to the qualified packaged scope and acceptance environment. v2.1.
|
|
557
|
+
Production/Stable describes the bounded software workflow. The target-proven UR5e claim remains limited to the qualified packaged scope and acceptance environment. v2.1.1 does not claim arbitrary customer cells are physically qualified, site-qualified, functionally safe, commissioned, or authorized for autonomous real execution.
|
|
558
558
|
|
|
559
559
|
Current hard authority boundaries remain:
|
|
560
560
|
|
|
@@ -569,6 +569,9 @@ unless separately proven by an appropriate qualified process.
|
|
|
569
569
|
|
|
570
570
|
## Documentation
|
|
571
571
|
|
|
572
|
+
v2.1.1 release notes:
|
|
573
|
+
https://github.com/tomha85/devagent-physical-engine/blob/main/docs/RELEASE_NOTES_V2_1_1.md
|
|
574
|
+
|
|
572
575
|
v2.1.0 release notes:
|
|
573
576
|
https://github.com/tomha85/devagent-physical-engine/blob/main/docs/RELEASE_NOTES_V2_1_0.md
|
|
574
577
|
|
|
@@ -61,6 +61,7 @@ src/devagent_physical_engine/robot_qualification_acceptance.py
|
|
|
61
61
|
src/devagent_physical_engine/robot_qualification_acceptance_cli.py
|
|
62
62
|
src/devagent_physical_engine/robot_qualification_cli.py
|
|
63
63
|
src/devagent_physical_engine/robot_qualification_report_store.py
|
|
64
|
+
src/devagent_physical_engine/robot_simulation_promotion_v211.py
|
|
64
65
|
src/devagent_physical_engine/robot_support_contract.py
|
|
65
66
|
src/devagent_physical_engine/robot_support_industrial_v2.py
|
|
66
67
|
src/devagent_physical_engine/robot_support_v18.py
|
|
@@ -268,6 +269,7 @@ tests/test_motion_handoff_stability_v190.py
|
|
|
268
269
|
tests/test_moveit_planning_diagnostics_v0125.py
|
|
269
270
|
tests/test_moveit_scene_v0123.py
|
|
270
271
|
tests/test_multivendor_runtime_hardening_v2.py
|
|
272
|
+
tests/test_multivendor_sim_promotion_v211.py
|
|
271
273
|
tests/test_multivendor_sim_qualification_v2.py
|
|
272
274
|
tests/test_natural_language_agent_v07.py
|
|
273
275
|
tests/test_one_command_hardening_v13.py
|
|
@@ -33,21 +33,21 @@ SEED = FIXTURE / "robot_program" / "trajectory_seed.yaml"
|
|
|
33
33
|
|
|
34
34
|
|
|
35
35
|
class ABBIRB1200SupportContractTests(unittest.TestCase):
|
|
36
|
-
def
|
|
36
|
+
def test_exact_profile_is_simulation_qualified_without_fat_or_real_authority(self) -> None:
|
|
37
37
|
profile = BUILTIN_ROBOT_PROFILES.get("abb_irb1200")
|
|
38
38
|
self.assertEqual(profile.vendor, "abb")
|
|
39
39
|
self.assertEqual(profile.model, "irb1200_5_90")
|
|
40
40
|
self.assertEqual(
|
|
41
41
|
robot_support_level(profile),
|
|
42
|
-
"
|
|
42
|
+
"SIMULATION_SUPPORTED",
|
|
43
43
|
)
|
|
44
44
|
self.assertIs(
|
|
45
45
|
profile.qualification.state_for(SimulationTier.PHYSICS),
|
|
46
|
-
QualificationState.
|
|
46
|
+
QualificationState.QUALIFIED,
|
|
47
47
|
)
|
|
48
48
|
self.assertIs(
|
|
49
49
|
profile.qualification.state_for(SimulationTier.VISUAL),
|
|
50
|
-
QualificationState.
|
|
50
|
+
QualificationState.QUALIFIED,
|
|
51
51
|
)
|
|
52
52
|
resource = profile.to_resource()
|
|
53
53
|
self.assertTrue(resource.metadata["real_execution_locked"])
|
|
@@ -138,7 +138,7 @@ class RobotVisualCLITests(unittest.TestCase):
|
|
|
138
138
|
by_key = {row["robot"]: row for row in rows}
|
|
139
139
|
self.assertEqual(
|
|
140
140
|
by_key["abb_irb1200"]["support"],
|
|
141
|
-
"
|
|
141
|
+
"SIMULATION_SUPPORTED",
|
|
142
142
|
)
|
|
143
143
|
self.assertTrue(by_key["abb_irb1200"]["rviz_moveit"])
|
|
144
144
|
self.assertTrue(by_key["abb_irb1200"]["gazebo"])
|
|
@@ -35,7 +35,7 @@ from devagent_physical_engine.ros2.report_test_visualization_v170 import (
|
|
|
35
35
|
|
|
36
36
|
class IndustrialMotionV170Tests(unittest.TestCase):
|
|
37
37
|
def test_release_version_is_v210(self) -> None:
|
|
38
|
-
self.assertEqual(package.__version__, "2.1.
|
|
38
|
+
self.assertEqual(package.__version__, "2.1.1")
|
|
39
39
|
|
|
40
40
|
def test_reference_groups_cover_every_task_phase_once_in_order(self) -> None:
|
|
41
41
|
groups = reference_industrial_groups()
|
|
@@ -123,7 +123,7 @@ class _ReadyRunner:
|
|
|
123
123
|
|
|
124
124
|
|
|
125
125
|
class ExactIndustrialProfileTests(unittest.TestCase):
|
|
126
|
-
def
|
|
126
|
+
def test_fanuc_exact_profile_is_simulation_qualified(self) -> None:
|
|
127
127
|
profile = BUILTIN_ROBOT_PROFILES.get("fanuc_crx10ia")
|
|
128
128
|
self.assertEqual(profile.vendor, "fanuc")
|
|
129
129
|
self.assertEqual(profile.model, "crx10ia")
|
|
@@ -134,11 +134,11 @@ class ExactIndustrialProfileTests(unittest.TestCase):
|
|
|
134
134
|
):
|
|
135
135
|
self.assertIs(
|
|
136
136
|
profile.qualification.state_for(tier),
|
|
137
|
-
QualificationState.
|
|
137
|
+
QualificationState.QUALIFIED,
|
|
138
138
|
)
|
|
139
139
|
self.assertEqual(
|
|
140
140
|
robot_support_level(profile),
|
|
141
|
-
"
|
|
141
|
+
"SIMULATION_SUPPORTED",
|
|
142
142
|
)
|
|
143
143
|
self.assertTrue(profile.to_resource().metadata["real_execution_locked"])
|
|
144
144
|
self.assertIs(
|
|
@@ -150,7 +150,7 @@ class ExactIndustrialProfileTests(unittest.TestCase):
|
|
|
150
150
|
QualificationState.NOT_QUALIFIED,
|
|
151
151
|
)
|
|
152
152
|
|
|
153
|
-
def
|
|
153
|
+
def test_kuka_exact_profile_is_simulation_qualified(self) -> None:
|
|
154
154
|
profile = BUILTIN_ROBOT_PROFILES.get("kuka_kr6_r900_2")
|
|
155
155
|
self.assertEqual(profile.vendor, "kuka")
|
|
156
156
|
self.assertEqual(profile.model, "kr6_r900_2")
|
|
@@ -161,11 +161,11 @@ class ExactIndustrialProfileTests(unittest.TestCase):
|
|
|
161
161
|
):
|
|
162
162
|
self.assertIs(
|
|
163
163
|
profile.qualification.state_for(tier),
|
|
164
|
-
QualificationState.
|
|
164
|
+
QualificationState.QUALIFIED,
|
|
165
165
|
)
|
|
166
166
|
self.assertEqual(
|
|
167
167
|
robot_support_level(profile),
|
|
168
|
-
"
|
|
168
|
+
"SIMULATION_SUPPORTED",
|
|
169
169
|
)
|
|
170
170
|
self.assertTrue(profile.to_resource().metadata["real_execution_locked"])
|
|
171
171
|
|
|
@@ -356,14 +356,14 @@ class IndustrialRobotCLITests(unittest.TestCase):
|
|
|
356
356
|
rows = {row["robot"]: row for row in json.loads(output.getvalue())}
|
|
357
357
|
|
|
358
358
|
fanuc = rows["fanuc_crx10ia"]
|
|
359
|
-
self.assertEqual(fanuc["support"], "
|
|
359
|
+
self.assertEqual(fanuc["support"], "SIMULATION_SUPPORTED")
|
|
360
360
|
self.assertTrue(fanuc["rviz_moveit"])
|
|
361
361
|
self.assertTrue(fanuc["gazebo"])
|
|
362
362
|
self.assertFalse(fanuc["fat_measured_qualified"])
|
|
363
363
|
self.assertFalse(fanuc["real_execution_allowed"])
|
|
364
364
|
|
|
365
365
|
kuka = rows["kuka_kr6_r900_2"]
|
|
366
|
-
self.assertEqual(kuka["support"], "
|
|
366
|
+
self.assertEqual(kuka["support"], "SIMULATION_SUPPORTED")
|
|
367
367
|
self.assertTrue(kuka["rviz_moveit"])
|
|
368
368
|
self.assertTrue(kuka["gazebo"])
|
|
369
369
|
self.assertFalse(kuka["fat_measured_qualified"])
|
|
@@ -377,7 +377,7 @@ class IndustrialRobotCLITests(unittest.TestCase):
|
|
|
377
377
|
text = output.getvalue()
|
|
378
378
|
self.assertIn("fanuc_moveit_config fanuc_moveit.launch.py", text)
|
|
379
379
|
self.assertIn("robot_model:=crx10ia", text)
|
|
380
|
-
self.assertIn("Physics:
|
|
380
|
+
self.assertIn("Physics: QUALIFIED", text)
|
|
381
381
|
self.assertIn("ros_gz_sim gz_sim.launch.py", text)
|
|
382
382
|
self.assertIn("DevAgent-owned", text)
|
|
383
383
|
self.assertIn("no third-party FANUC Gazebo package", text)
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
import unittest
|
|
3
|
+
from devagent_physical_engine.robot_platform import QualificationState, RobotLifecycleLevel, SimulationTier
|
|
4
|
+
from devagent_physical_engine.robot_simulation_promotion_v211 import (
|
|
5
|
+
ACCEPTANCE_CANDIDATE_SHA, ACCEPTANCE_MANIFEST_HASH, PROMOTED_PROFILE_KEYS,
|
|
6
|
+
PROMOTED_SIMULATION_TIERS, QUALIFICATION_REPORT_HASHES,
|
|
7
|
+
MEASURED_FAT_AUTHORITY_PROMOTED, HARDWARE_SHADOW_PROMOTED,
|
|
8
|
+
SIM_REAL_PROMOTED, SITE_QUALIFICATION_PROMOTED, REAL_EXECUTION_ALLOWED,
|
|
9
|
+
)
|
|
10
|
+
from devagent_physical_engine.robots import PROFILE_REGISTRY
|
|
11
|
+
|
|
12
|
+
class MultivendorSimulationPromotionV211Tests(unittest.TestCase):
|
|
13
|
+
def test_promotion_is_bound_to_exact_accepted_evidence(self):
|
|
14
|
+
self.assertEqual(ACCEPTANCE_CANDIDATE_SHA, "4da8c8899320e18580198b347fb9c1b1fe513ea7")
|
|
15
|
+
self.assertEqual(ACCEPTANCE_MANIFEST_HASH, "1dd139747506371ca762ced91334eb86b628776ebb03d6aed7e44a6dbcb867d5")
|
|
16
|
+
self.assertEqual(PROMOTED_SIMULATION_TIERS, ("kinematic", "physics", "visual"))
|
|
17
|
+
self.assertEqual(dict(QUALIFICATION_REPORT_HASHES), {
|
|
18
|
+
"abb_irb1200": "29cdec994c45de549efd849db7f91af980870b44c2169dc46227628df74b9a18",
|
|
19
|
+
"fanuc_crx10ia": "346ea41cbb53af449f20071afa6261a0683158231ae9dea42dcf72e51f7817b7",
|
|
20
|
+
"kuka_kr6_r900_2": "692c6b1b9a990f3391099630a0d124359c991134cc887f28325026ff94574446",
|
|
21
|
+
})
|
|
22
|
+
def test_exact_profiles_are_sim_qualified_but_other_authorities_stay_locked(self):
|
|
23
|
+
self.assertEqual(PROMOTED_PROFILE_KEYS, ("abb_irb1200", "fanuc_crx10ia", "kuka_kr6_r900_2"))
|
|
24
|
+
for key in PROMOTED_PROFILE_KEYS:
|
|
25
|
+
profile=PROFILE_REGISTRY.get(key)
|
|
26
|
+
for tier in (SimulationTier.KINEMATIC, SimulationTier.PHYSICS, SimulationTier.VISUAL):
|
|
27
|
+
self.assertIs(profile.qualification.state_for(tier), QualificationState.QUALIFIED)
|
|
28
|
+
self.assertIs(profile.lifecycle_level, RobotLifecycleLevel.SIM_QUALIFIED)
|
|
29
|
+
self.assertFalse(profile.measured_fat_authority)
|
|
30
|
+
self.assertIs(profile.qualification.hardware_shadow, QualificationState.NOT_QUALIFIED)
|
|
31
|
+
self.assertIs(profile.qualification.sim_real_correlation, QualificationState.NOT_QUALIFIED)
|
|
32
|
+
self.assertIs(profile.qualification.site_qualification, QualificationState.NOT_QUALIFIED)
|
|
33
|
+
self.assertTrue(profile.to_resource().metadata["real_execution_locked"])
|
|
34
|
+
self.assertFalse(MEASURED_FAT_AUTHORITY_PROMOTED)
|
|
35
|
+
self.assertFalse(HARDWARE_SHADOW_PROMOTED)
|
|
36
|
+
self.assertFalse(SIM_REAL_PROMOTED)
|
|
37
|
+
self.assertFalse(SITE_QUALIFICATION_PROMOTED)
|
|
38
|
+
self.assertFalse(REAL_EXECUTION_ALLOWED)
|
|
39
|
+
def test_generic_families_remain_model_only(self):
|
|
40
|
+
for key in ("abb_irb", "fanuc_crx", "kuka_kr"):
|
|
41
|
+
profile=PROFILE_REGISTRY.get(key)
|
|
42
|
+
for tier in (SimulationTier.KINEMATIC, SimulationTier.PHYSICS, SimulationTier.VISUAL):
|
|
43
|
+
self.assertIs(profile.qualification.state_for(tier), QualificationState.NOT_QUALIFIED)
|
|
44
|
+
|
|
45
|
+
if __name__ == "__main__":
|
|
46
|
+
unittest.main()
|
|
@@ -13,10 +13,10 @@ class PackageMetadataV184Tests(unittest.TestCase):
|
|
|
13
13
|
self.assertTrue(summary.strip())
|
|
14
14
|
self.assertLessEqual(len(summary), 512)
|
|
15
15
|
|
|
16
|
-
def
|
|
16
|
+
def test_package_version_is_v211(self) -> None:
|
|
17
17
|
root = Path(__file__).resolve().parents[1]
|
|
18
18
|
metadata = tomllib.loads((root / "pyproject.toml").read_text(encoding="utf-8"))
|
|
19
|
-
self.assertEqual(metadata["project"]["version"], "2.1.
|
|
19
|
+
self.assertEqual(metadata["project"]["version"], "2.1.1")
|
|
20
20
|
|
|
21
21
|
|
|
22
22
|
if __name__ == "__main__":
|