devagent-physical-engine 1.9.0__tar.gz → 1.9.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-1.9.0/src/devagent_physical_engine.egg-info → devagent_physical_engine-1.9.1}/PKG-INFO +45 -8
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/README.md +45 -8
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/pyproject.toml +2 -2
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/__init__.py +1 -1
- devagent_physical_engine-1.9.1/src/devagent_physical_engine/user_cli_v191.py +194 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1/src/devagent_physical_engine.egg-info}/PKG-INFO +45 -8
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine.egg-info/SOURCES.txt +3 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine.egg-info/entry_points.txt +1 -1
- devagent_physical_engine-1.9.1/tests/test_fresh_simulation_cli_v191.py +99 -0
- devagent_physical_engine-1.9.1/tests/test_fresh_simulation_service_v191.py +90 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_industrial_motion_v170.py +2 -2
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_package_metadata_v184.py +2 -2
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_transfer_place_diagnostic_v172.py +2 -2
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/NOTICE +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/setup.cfg +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/agent/__init__.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/agent/compiler.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/agent/contracts.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/agent/coordinator.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/agent/critic.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/agent/evidence.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/agent/interpreter.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/agent/planner.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/agent/recovery.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/agent/routing.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/agent/runtime.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/agent/semantic.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/agent/structured.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ai_cli.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/cli.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/commercial.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/commercial_campaign.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/commercial_cli.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/commercial_importer.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/commercial_intelligence.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/commercial_readiness.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/commercial_repository.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/continuous_clearance.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/controller_runtime_hotfix_v181.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/doctor.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/dynamic_verification_runtime_v190.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/engineering_agent.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/engineering_request.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/evidence_replay.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/evidence_trust.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/execution.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/industrial_motion_hotfix_v170.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/industrial_motion_v170.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/industrial_motion_v182.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/models.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/one_command.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/one_command_runtime.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/one_command_v15.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/one_command_v16.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/operating_envelope.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/optimization/__init__.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/optimization/benchmark.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/optimization/candidates.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/optimization/contracts.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/optimization/evaluator.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/optimization/evidence.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/optimization/experience.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/optimization/measured.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/optimization/optimizer.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/optimization/orchestrator.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/physical_campaign.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/physical_evidence.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/physical_evidence_v190.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/physical_motion.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/planning.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/pose_math.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/preexecution_contract.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/production_authority.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/production_grade.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/project.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/provider_adapters/__init__.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/provider_adapters/anthropic.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/provider_adapters/common.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/provider_adapters/factory.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/provider_adapters/gemini.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/provider_adapters/openai.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/provider_criterion.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/provider_qualification.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/providers.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/qualification.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/qualification_cli.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/qualification_harness.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/reference_workcell.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/report_requirements_v190.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/report_test_execution.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/report_test_execution_strict.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/robot_platform.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/robot_support_v18.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/robots.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/__init__.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/abb_irb1200.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/abb_irb1200_preview.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/acceptance.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/commands.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/continuous_clearance_probe.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/controller_action_probe.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/destination_support_contact_v182.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/doctor.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/fk_pose.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/fk_probe.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/frame_alignment.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/gazebo_cli.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/gazebo_pose.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/gazebo_world.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/industrial_sequence_planner_v170.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/industrial_sequence_planner_v171.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/industrial_sequence_planner_v172.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/industrial_sequence_planner_v182.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/joint_state_probe.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/joint_state_recorder.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/measured_motion.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/moveit_joint_plan_probe.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/moveit_joint_plan_v161_probe.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/moveit_scene.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/moveit_task_planner.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/pilz_sequence_plan_probe.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/pilz_sequence_plan_probe_v182.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/preexecution.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/qualification.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/qualification_v10.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/qualification_v11.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/qualification_v12.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/report_test_visualization.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/report_test_visualization_v170.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/ros_gz_pose_service_probe.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/scene_probe.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/state_validity_probe.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/support_contact_acm_probe_v170.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/support_contact_acm_semantics_v189.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/support_contact_lease_v170.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/support_contact_runner_v161.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/support_contact_v161.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/task_adapter.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/task_adapter_v190.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/task_motion_diagnostics_v190.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/task_visualization.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/tf_probe.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/tool_scene.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/tool_scene_probe.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/trajectory.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/trajectory_action_probe.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/trajectory_feedback_tracking_v189.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/trajectory_runtime_v190.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/trajectory_tracking.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/ur5e.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/ur5e_adapter.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/ur5e_v10_adapter.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/workpiece_carrier_v190.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/workpiece_entity_replace_probe_v190.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/workpiece_follow.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/workpiece_gazebo_follower.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/workpiece_scene.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/workpiece_scene_probe.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/workpiece_scene_probe_v186.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/workpiece_scene_probe_v187.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/workpiece_scene_probe_v188.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/workpiece_scene_probe_v189.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/ros2/workpiece_transport.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/selective_verification.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/selective_verification_v16.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/selective_verification_v190.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/setup_profile.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/sim_real_qualification.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/simulation.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/simulation_platform.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/smooth_motion_hotfix_v162.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/support_contact_hotfix_v161.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/tool_collision.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/trajectory_qualification.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/twin.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/twin_builder.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/twin_codec.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/twin_materialization.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/user_cli.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/user_cli_v15.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/user_cli_v16.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/user_cli_v18.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/verification.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/verification_capabilities_v190.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine/workpiece_lifecycle.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine.egg-info/dependency_links.txt +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine.egg-info/requires.txt +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/src/devagent_physical_engine.egg-info/top_level.txt +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_abb_irb1200_visual_v18.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_agent_core.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_agent_semantic_hardening.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_ai_cli.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_ai_cli_v07.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_commercial_importer_v1.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_commercial_intelligence_v15.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_commercial_readiness_v1.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_commercial_v1.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_continuous_clearance_v011.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_controller_failure_diagnostics_v190.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_controller_runtime_hotfix_v181.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_core.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_destination_support_contact_v182.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_dynamic_report_batch_v190.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_dynamic_report_contract_end_to_end_v190.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_dynamic_verification_capabilities_v190.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_engineering_request_v07.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_evidence_replay_v12.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_evidence_trust_coverage_v12.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_evidence_trust_transport_v12.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_evidence_trust_v12.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_evidence_viewer_palette_v130.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_explicit_detach_world_reassert_v189.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_gazebo_cli_v0122.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_golden_abb_runner_v171.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_golden_abb_showcase.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_handoff_authority_v190.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_interpreter_profiles_v08.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_joint_state_metric_authority_v190.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_joint_state_probe_v0125.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_live_provider_qualification.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_loaded_place_stability_v190.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_measured_motion_v10.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_metric_authority_surface_v190.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_motion_handoff_stability_v190.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_moveit_planning_diagnostics_v0125.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_moveit_scene_v0123.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_natural_language_agent_v07.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_one_command_hardening_v13.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_one_command_pose_hardening_v15.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_one_command_regression_v141.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_one_command_v13.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_one_command_v190_injection.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_openai_strict_schema_v0113.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_optimization_v05.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_physical_campaign_v09.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_physical_evidence_v09.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_physical_motion_v09.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_place_preexecution_acm_v189.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_planning_fallback_v012.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_pose_math_v0125.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_preexecution_contract_v10.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_production_authority_v11.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_production_grade_coverage_v11.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_production_grade_v11.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_project_spine_v013.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_provider_and_qualification.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_provider_criterion_v15.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_qualification_cli_lifecycle_v06.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_qualification_harness_v06.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_readme_pypi.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_real_provider_adapters.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_reference_workcell_ros_frames_v0125.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_reference_workcell_v012.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_release_resting_pose_v189.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_release_transaction_v189.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_report_orchestration_v190.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_report_test_contract_coverage_v16.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_report_test_lineage_v16.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_report_test_visual_execution_v16.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_robot_platform_v08.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_ros2_production_receipts_v011.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_ros2_simulation.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_ros_trajectory_v09.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_selective_verification_v14.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_setup_profile.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_sim_real_qualification_v011.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_simulation_platform_v08.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_smooth_motion_hotfix_v162.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_support_contact_acm_semantics_v189.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_support_contact_hotfix_v161.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_tool_collision_v011.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_tool_scene_v0124.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_trajectory_action_contract_v189.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_trajectory_action_probe_v0125.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_trajectory_feedback_tracking_v189.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_trajectory_qualification_v09.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_trajectory_tracking_v0125.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_transfer_controller_policy_v189.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_twin_materialization_v10.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_twin_v08.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_ur5e_adapter_scopes_v09.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_ur5e_v10_adapter_scopes.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_user_cli_interactive_v131.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_user_cli_progress_v131.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_user_cli_report_visual_v16.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_user_cli_selective_v14.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_user_cli_v15.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_user_cli_v15_hotfix_inheritance.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_v052_stabilization.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_v08_catalog_mapping_regression.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_workpiece_attach_semantics_v183.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_workpiece_carrier_v190.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_workpiece_lifecycle_v011.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_workpiece_scene_probe_v185.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.1}/tests/test_workpiece_semantic_lifecycle_v186.py +0 -0
- {devagent_physical_engine-1.9.0 → devagent_physical_engine-1.9.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: 1.9.
|
|
3
|
+
Version: 1.9.1
|
|
4
4
|
Summary: Verification-first robotics commissioning runtime with declarative customer report tests, case-centric evidence reuse, qualified UR5e Gazebo/MoveIt execution, exact-Twin lineage, selective verification, regression, replay, and FAT reporting.
|
|
5
5
|
Author: Tom Ha
|
|
6
6
|
License: All Rights Reserved
|
|
@@ -110,7 +110,7 @@ regression + FAT report + Evidence Viewer
|
|
|
110
110
|
Python 3.11+ is required.
|
|
111
111
|
|
|
112
112
|
```bash
|
|
113
|
-
python -m pip install --upgrade devagent-physical-engine==1.9.
|
|
113
|
+
python -m pip install --upgrade devagent-physical-engine==1.9.1
|
|
114
114
|
```
|
|
115
115
|
|
|
116
116
|
Verify the installed package:
|
|
@@ -122,7 +122,7 @@ python -c "import devagent_physical_engine as d; print(d.__version__)"
|
|
|
122
122
|
Expected:
|
|
123
123
|
|
|
124
124
|
```text
|
|
125
|
-
1.9.
|
|
125
|
+
1.9.1
|
|
126
126
|
```
|
|
127
127
|
|
|
128
128
|
Run the normal customer workflow:
|
|
@@ -552,6 +552,32 @@ Hosted regression includes an arbitrary customer report test using `FAT-CUSTOM-9
|
|
|
552
552
|
|
|
553
553
|
Full release notes: https://github.com/tomha85/devagent-physical-engine/blob/main/docs/RELEASE_NOTES_V1_9_0.md
|
|
554
554
|
|
|
555
|
+
## v1.9.1 repeatable fresh physical simulation
|
|
556
|
+
|
|
557
|
+
v1.9.1 makes evidence reuse and operator-requested fresh execution explicit without changing physical authority boundaries.
|
|
558
|
+
|
|
559
|
+
```text
|
|
560
|
+
devagent> simulate TEST-PERF-001
|
|
561
|
+
→ reuse exact qualified case evidence when available
|
|
562
|
+
→ execute only when the mapped case evidence is missing
|
|
563
|
+
|
|
564
|
+
devagent> simulate --fresh TEST-PERF-001
|
|
565
|
+
→ force a new execution of the selected unique physical case
|
|
566
|
+
→ append a new immutable measurement artifact
|
|
567
|
+
|
|
568
|
+
devagent> simulate --fresh all
|
|
569
|
+
→ force every unique mapped physical case once
|
|
570
|
+
→ still deduplicate shared case IDs across report criteria
|
|
571
|
+
```
|
|
572
|
+
|
|
573
|
+
`rerun TEST-X`, `rerun failed`, `rerun blocked`, `rerun affected`, and `rerun all` use the same fresh-execution contract for physical selectors. Deterministic selectors remain evidence-only and never command Gazebo.
|
|
574
|
+
|
|
575
|
+
Interactive verification now owns its Gazebo/MoveIt lifecycle. After an executed verification case captures its evidence, that verification-owned stack is closed so the next fresh command starts from a clean runtime instead of competing with a stale simulator in the same ROS domain. Persistent visualization is a separate intent and remains available through `devagent robot visualize`.
|
|
576
|
+
|
|
577
|
+
The lifecycle change does not relax MoveIt preexecution, canonical start-state compatibility, FollowJointTrajectory result handling, controller-feedback tracking, Twin lineage, site qualification, or real-robot execution locks.
|
|
578
|
+
|
|
579
|
+
Full release notes: https://github.com/tomha85/devagent-physical-engine/blob/main/docs/RELEASE_NOTES_V1_9_1.md
|
|
580
|
+
|
|
555
581
|
## Qualified visual-execution scope
|
|
556
582
|
|
|
557
583
|
Measured report-test execution remains intentionally narrow:
|
|
@@ -575,11 +601,15 @@ Use `--interactive`, or `--open` from a real terminal, to keep a bounded prompt:
|
|
|
575
601
|
status
|
|
576
602
|
tests
|
|
577
603
|
test SELECTOR
|
|
578
|
-
simulate
|
|
579
|
-
|
|
604
|
+
simulate SELECTOR
|
|
605
|
+
simulate all
|
|
606
|
+
simulate --fresh SELECTOR
|
|
607
|
+
simulate --fresh all
|
|
608
|
+
rerun SELECTOR
|
|
580
609
|
rerun failed
|
|
581
610
|
rerun blocked
|
|
582
611
|
rerun affected
|
|
612
|
+
rerun all
|
|
583
613
|
replay
|
|
584
614
|
report
|
|
585
615
|
log
|
|
@@ -604,6 +634,8 @@ all
|
|
|
604
634
|
|
|
605
635
|
`simulate all` creates a report-wide capability execution plan, evaluates deterministic rows directly, deduplicates physical cases, reuses exact qualified evidence first, and executes only missing unique qualified cases.
|
|
606
636
|
|
|
637
|
+
`simulate --fresh TEST-X` and `rerun TEST-X` explicitly request a new physical execution; fresh report-wide execution still deduplicates physical case IDs.
|
|
638
|
+
|
|
607
639
|
`replay` reconstructs persisted evidence identity; it never commands Gazebo, MoveIt, a robot, PLC, or safety PLC.
|
|
608
640
|
|
|
609
641
|
## Customer input
|
|
@@ -754,11 +786,11 @@ devagent-physical-ai optional provider-backed engineering front end
|
|
|
754
786
|
|
|
755
787
|
# Project status
|
|
756
788
|
|
|
757
|
-
**v1.9.
|
|
789
|
+
**v1.9.1 — Production/Stable software workflow; repeatable fresh physical simulation with owned verification lifecycle**
|
|
758
790
|
|
|
759
|
-
v1.9.0
|
|
791
|
+
v1.9.1 preserves v1.9.0's declarative customer report verification and case-centric evidence reuse, while adding explicit fresh physical execution and deterministic simulator lifecycle ownership. Normal `simulate` remains evidence-first; `simulate --fresh ...` and physical `rerun ...` force new execution, and report-wide fresh runs still execute each unique mapped case only once.
|
|
760
792
|
|
|
761
|
-
The physical qualification claim
|
|
793
|
+
The physical qualification claim remains grounded in the target-proven bounded UR5e nominal report lifecycle. v1.9.1 does not expand that claim to arbitrary customer cells and does not grant site qualification, functional-safety certification, or autonomous real-robot execution authority.
|
|
762
794
|
|
|
763
795
|
Production-oriented software capabilities include:
|
|
764
796
|
|
|
@@ -774,6 +806,8 @@ requirement-driven nominal / boundary / fault case generation
|
|
|
774
806
|
immutable project/Twin lineage
|
|
775
807
|
exact Requirement → Mapping → Verification Plan → Case provenance
|
|
776
808
|
case-centric qualified evidence reuse
|
|
809
|
+
explicit fresh physical execution
|
|
810
|
+
verification-owned simulator lifecycle cleanup
|
|
777
811
|
report-wide physical-case deduplication
|
|
778
812
|
mixed deterministic + physical `simulate all` orchestration
|
|
779
813
|
truthful NOT_TESTED for unavailable/unsupported evidence
|
|
@@ -809,6 +843,9 @@ Production/Stable describes the bounded software workflow. The target-proven UR5
|
|
|
809
843
|
|
|
810
844
|
## Documentation
|
|
811
845
|
|
|
846
|
+
v1.9.1 release notes:
|
|
847
|
+
https://github.com/tomha85/devagent-physical-engine/blob/main/docs/RELEASE_NOTES_V1_9_1.md
|
|
848
|
+
|
|
812
849
|
v1.9.0 release notes:
|
|
813
850
|
https://github.com/tomha85/devagent-physical-engine/blob/main/docs/RELEASE_NOTES_V1_9_0.md
|
|
814
851
|
|
|
@@ -68,7 +68,7 @@ regression + FAT report + Evidence Viewer
|
|
|
68
68
|
Python 3.11+ is required.
|
|
69
69
|
|
|
70
70
|
```bash
|
|
71
|
-
python -m pip install --upgrade devagent-physical-engine==1.9.
|
|
71
|
+
python -m pip install --upgrade devagent-physical-engine==1.9.1
|
|
72
72
|
```
|
|
73
73
|
|
|
74
74
|
Verify the installed package:
|
|
@@ -80,7 +80,7 @@ python -c "import devagent_physical_engine as d; print(d.__version__)"
|
|
|
80
80
|
Expected:
|
|
81
81
|
|
|
82
82
|
```text
|
|
83
|
-
1.9.
|
|
83
|
+
1.9.1
|
|
84
84
|
```
|
|
85
85
|
|
|
86
86
|
Run the normal customer workflow:
|
|
@@ -510,6 +510,32 @@ Hosted regression includes an arbitrary customer report test using `FAT-CUSTOM-9
|
|
|
510
510
|
|
|
511
511
|
Full release notes: https://github.com/tomha85/devagent-physical-engine/blob/main/docs/RELEASE_NOTES_V1_9_0.md
|
|
512
512
|
|
|
513
|
+
## v1.9.1 repeatable fresh physical simulation
|
|
514
|
+
|
|
515
|
+
v1.9.1 makes evidence reuse and operator-requested fresh execution explicit without changing physical authority boundaries.
|
|
516
|
+
|
|
517
|
+
```text
|
|
518
|
+
devagent> simulate TEST-PERF-001
|
|
519
|
+
→ reuse exact qualified case evidence when available
|
|
520
|
+
→ execute only when the mapped case evidence is missing
|
|
521
|
+
|
|
522
|
+
devagent> simulate --fresh TEST-PERF-001
|
|
523
|
+
→ force a new execution of the selected unique physical case
|
|
524
|
+
→ append a new immutable measurement artifact
|
|
525
|
+
|
|
526
|
+
devagent> simulate --fresh all
|
|
527
|
+
→ force every unique mapped physical case once
|
|
528
|
+
→ still deduplicate shared case IDs across report criteria
|
|
529
|
+
```
|
|
530
|
+
|
|
531
|
+
`rerun TEST-X`, `rerun failed`, `rerun blocked`, `rerun affected`, and `rerun all` use the same fresh-execution contract for physical selectors. Deterministic selectors remain evidence-only and never command Gazebo.
|
|
532
|
+
|
|
533
|
+
Interactive verification now owns its Gazebo/MoveIt lifecycle. After an executed verification case captures its evidence, that verification-owned stack is closed so the next fresh command starts from a clean runtime instead of competing with a stale simulator in the same ROS domain. Persistent visualization is a separate intent and remains available through `devagent robot visualize`.
|
|
534
|
+
|
|
535
|
+
The lifecycle change does not relax MoveIt preexecution, canonical start-state compatibility, FollowJointTrajectory result handling, controller-feedback tracking, Twin lineage, site qualification, or real-robot execution locks.
|
|
536
|
+
|
|
537
|
+
Full release notes: https://github.com/tomha85/devagent-physical-engine/blob/main/docs/RELEASE_NOTES_V1_9_1.md
|
|
538
|
+
|
|
513
539
|
## Qualified visual-execution scope
|
|
514
540
|
|
|
515
541
|
Measured report-test execution remains intentionally narrow:
|
|
@@ -533,11 +559,15 @@ Use `--interactive`, or `--open` from a real terminal, to keep a bounded prompt:
|
|
|
533
559
|
status
|
|
534
560
|
tests
|
|
535
561
|
test SELECTOR
|
|
536
|
-
simulate
|
|
537
|
-
|
|
562
|
+
simulate SELECTOR
|
|
563
|
+
simulate all
|
|
564
|
+
simulate --fresh SELECTOR
|
|
565
|
+
simulate --fresh all
|
|
566
|
+
rerun SELECTOR
|
|
538
567
|
rerun failed
|
|
539
568
|
rerun blocked
|
|
540
569
|
rerun affected
|
|
570
|
+
rerun all
|
|
541
571
|
replay
|
|
542
572
|
report
|
|
543
573
|
log
|
|
@@ -562,6 +592,8 @@ all
|
|
|
562
592
|
|
|
563
593
|
`simulate all` creates a report-wide capability execution plan, evaluates deterministic rows directly, deduplicates physical cases, reuses exact qualified evidence first, and executes only missing unique qualified cases.
|
|
564
594
|
|
|
595
|
+
`simulate --fresh TEST-X` and `rerun TEST-X` explicitly request a new physical execution; fresh report-wide execution still deduplicates physical case IDs.
|
|
596
|
+
|
|
565
597
|
`replay` reconstructs persisted evidence identity; it never commands Gazebo, MoveIt, a robot, PLC, or safety PLC.
|
|
566
598
|
|
|
567
599
|
## Customer input
|
|
@@ -712,11 +744,11 @@ devagent-physical-ai optional provider-backed engineering front end
|
|
|
712
744
|
|
|
713
745
|
# Project status
|
|
714
746
|
|
|
715
|
-
**v1.9.
|
|
747
|
+
**v1.9.1 — Production/Stable software workflow; repeatable fresh physical simulation with owned verification lifecycle**
|
|
716
748
|
|
|
717
|
-
v1.9.0
|
|
749
|
+
v1.9.1 preserves v1.9.0's declarative customer report verification and case-centric evidence reuse, while adding explicit fresh physical execution and deterministic simulator lifecycle ownership. Normal `simulate` remains evidence-first; `simulate --fresh ...` and physical `rerun ...` force new execution, and report-wide fresh runs still execute each unique mapped case only once.
|
|
718
750
|
|
|
719
|
-
The physical qualification claim
|
|
751
|
+
The physical qualification claim remains grounded in the target-proven bounded UR5e nominal report lifecycle. v1.9.1 does not expand that claim to arbitrary customer cells and does not grant site qualification, functional-safety certification, or autonomous real-robot execution authority.
|
|
720
752
|
|
|
721
753
|
Production-oriented software capabilities include:
|
|
722
754
|
|
|
@@ -732,6 +764,8 @@ requirement-driven nominal / boundary / fault case generation
|
|
|
732
764
|
immutable project/Twin lineage
|
|
733
765
|
exact Requirement → Mapping → Verification Plan → Case provenance
|
|
734
766
|
case-centric qualified evidence reuse
|
|
767
|
+
explicit fresh physical execution
|
|
768
|
+
verification-owned simulator lifecycle cleanup
|
|
735
769
|
report-wide physical-case deduplication
|
|
736
770
|
mixed deterministic + physical `simulate all` orchestration
|
|
737
771
|
truthful NOT_TESTED for unavailable/unsupported evidence
|
|
@@ -767,6 +801,9 @@ Production/Stable describes the bounded software workflow. The target-proven UR5
|
|
|
767
801
|
|
|
768
802
|
## Documentation
|
|
769
803
|
|
|
804
|
+
v1.9.1 release notes:
|
|
805
|
+
https://github.com/tomha85/devagent-physical-engine/blob/main/docs/RELEASE_NOTES_V1_9_1.md
|
|
806
|
+
|
|
770
807
|
v1.9.0 release notes:
|
|
771
808
|
https://github.com/tomha85/devagent-physical-engine/blob/main/docs/RELEASE_NOTES_V1_9_0.md
|
|
772
809
|
|
|
@@ -802,4 +839,4 @@ Original creator: Tom Ha
|
|
|
802
839
|
Original project: https://github.com/tomha85/devagent-physical-engine
|
|
803
840
|
All rights reserved.
|
|
804
841
|
|
|
805
|
-
See repository `LICENSE`, `NOTICE`, and `COPYRIGHT` for complete ownership and usage terms.
|
|
842
|
+
See repository `LICENSE`, `NOTICE`, and `COPYRIGHT` for complete ownership and usage terms.
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "devagent-physical-engine"
|
|
7
|
-
version = "1.9.
|
|
7
|
+
version = "1.9.1"
|
|
8
8
|
description = "Verification-first robotics commissioning runtime with declarative customer report tests, case-centric evidence reuse, qualified UR5e Gazebo/MoveIt execution, exact-Twin lineage, selective verification, regression, replay, and FAT reporting."
|
|
9
9
|
readme = { file = "README.md", content-type = "text/markdown" }
|
|
10
10
|
requires-python = ">=3.11"
|
|
@@ -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_v191: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"
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import sys
|
|
4
|
+
|
|
5
|
+
from . import user_cli_v16 as _v16
|
|
6
|
+
from . import user_cli_v18 as _v18
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class InteractiveSessionV191(_v16.InteractiveSessionV16):
|
|
10
|
+
"""Interactive console with explicit reuse-vs-fresh physical execution semantics.
|
|
11
|
+
|
|
12
|
+
``simulate SELECTOR`` keeps the v1.9 evidence-first behavior: an exact qualified
|
|
13
|
+
case measurement is reused when one already exists. ``simulate --fresh SELECTOR``
|
|
14
|
+
and ``rerun SELECTOR`` express a different operator intent: execute each selected
|
|
15
|
+
unique physical case again and append new immutable evidence. Deterministic rows
|
|
16
|
+
remain evidence-only and never launch a simulator.
|
|
17
|
+
|
|
18
|
+
Interactive verification owns the simulator lifecycle for every executed case. A
|
|
19
|
+
successful case is therefore closed after evidence capture instead of leaving an
|
|
20
|
+
unmanaged Gazebo/MoveIt stack behind for the next interactive command. Persistent
|
|
21
|
+
visualization belongs to ``devagent robot visualize`` rather than verification.
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
def _executor(self, repository):
|
|
25
|
+
# Verification must be repeatable. Keeping a successful simulator open makes the
|
|
26
|
+
# next fresh command launch a second Gazebo/MoveIt stack into the same ROS domain,
|
|
27
|
+
# which can produce stale model read-back or startup-timeout failures. The case
|
|
28
|
+
# runner remains visible while it executes, but it is stopped after evidence is
|
|
29
|
+
# captured so the next command starts from a clean owned lifecycle.
|
|
30
|
+
return _v16.ReportTestSelectiveExecutor(
|
|
31
|
+
repository,
|
|
32
|
+
source_root=self.source,
|
|
33
|
+
keep_open=False,
|
|
34
|
+
progress=lambda stage, message: self.tracker.emit(
|
|
35
|
+
stage, "RUNNING", message
|
|
36
|
+
),
|
|
37
|
+
)
|
|
38
|
+
|
|
39
|
+
def _fresh_simulation(self, selector: str, *, action: str) -> None:
|
|
40
|
+
self.tracker.emit(
|
|
41
|
+
"SELECTIVE",
|
|
42
|
+
"RUNNING",
|
|
43
|
+
f"fresh visual {action} selector={selector}",
|
|
44
|
+
)
|
|
45
|
+
repository = self._repository()
|
|
46
|
+
try:
|
|
47
|
+
artifact = self._service(repository).run_simulation(
|
|
48
|
+
project_id=self.result.project_id,
|
|
49
|
+
selector=selector,
|
|
50
|
+
parent_campaign_artifact_id=self.result.campaign_artifact_id,
|
|
51
|
+
executor=self._executor(repository),
|
|
52
|
+
force_execution=True,
|
|
53
|
+
)
|
|
54
|
+
except (_v16.CommercialError, _v16.ProjectError, OSError) as exc:
|
|
55
|
+
self.tracker.emit("SELECTIVE", "BLOCKED", str(exc))
|
|
56
|
+
print(f"Fresh selective simulation blocked: {exc}")
|
|
57
|
+
print("No unqualified simulator or robot command was substituted.")
|
|
58
|
+
return
|
|
59
|
+
|
|
60
|
+
state = str(artifact.payload.get("state") or "complete").upper()
|
|
61
|
+
reason = str(artifact.payload.get("reason") or "")
|
|
62
|
+
self.tracker.emit(
|
|
63
|
+
"SELECTIVE",
|
|
64
|
+
state,
|
|
65
|
+
f"artifact={artifact.artifact_id} selector={selector} fresh=true"
|
|
66
|
+
+ (f" reason={reason}" if reason else ""),
|
|
67
|
+
)
|
|
68
|
+
self._refresh_viewer(repository)
|
|
69
|
+
self._print_selective(artifact.payload)
|
|
70
|
+
if reason == "report_capability_execution_plan_v190":
|
|
71
|
+
self._print_batch_plan(artifact.payload)
|
|
72
|
+
|
|
73
|
+
if artifact.payload.get("state") == "blocked":
|
|
74
|
+
print("No unqualified simulator or robot command was executed.")
|
|
75
|
+
return
|
|
76
|
+
if reason == "simulation_not_required_deterministic_evidence":
|
|
77
|
+
print(
|
|
78
|
+
"Fresh execution is not applicable to this deterministic test; "
|
|
79
|
+
"immutable Twin evidence was evaluated directly."
|
|
80
|
+
)
|
|
81
|
+
return
|
|
82
|
+
|
|
83
|
+
contracts = artifact.payload.get("contracts")
|
|
84
|
+
physical_selected = (
|
|
85
|
+
any(
|
|
86
|
+
isinstance(item, dict) and item.get("mode") == "physical"
|
|
87
|
+
for item in contracts
|
|
88
|
+
)
|
|
89
|
+
if isinstance(contracts, list)
|
|
90
|
+
else False
|
|
91
|
+
)
|
|
92
|
+
if physical_selected and not artifact.payload.get("execution_performed"):
|
|
93
|
+
# A fresh physical request must never silently degrade into evidence reuse.
|
|
94
|
+
self.tracker.emit(
|
|
95
|
+
"SELECTIVE",
|
|
96
|
+
"ERROR",
|
|
97
|
+
f"fresh execution contract not satisfied selector={selector}",
|
|
98
|
+
)
|
|
99
|
+
print(
|
|
100
|
+
"Fresh physical execution was requested but no physical case was "
|
|
101
|
+
"executed. Treat this result as invalid and inspect RUN.log."
|
|
102
|
+
)
|
|
103
|
+
return
|
|
104
|
+
|
|
105
|
+
if artifact.payload.get("execution_performed"):
|
|
106
|
+
print(
|
|
107
|
+
"Fresh physical execution completed; prior qualified measurements were "
|
|
108
|
+
"not reused for the requested case execution."
|
|
109
|
+
)
|
|
110
|
+
print(
|
|
111
|
+
"The new measurement is appended as immutable evidence; previous "
|
|
112
|
+
"measurements remain available for audit/replay."
|
|
113
|
+
)
|
|
114
|
+
print(
|
|
115
|
+
"The verification-owned Gazebo/MoveIt runtime was closed after evidence "
|
|
116
|
+
"capture so the next execution starts cleanly."
|
|
117
|
+
)
|
|
118
|
+
|
|
119
|
+
def _simulate(self, extra: list[str]) -> None:
|
|
120
|
+
fresh_count = sum(item == "--fresh" for item in extra)
|
|
121
|
+
if not fresh_count:
|
|
122
|
+
super()._simulate(extra)
|
|
123
|
+
return
|
|
124
|
+
selectors = [item for item in extra if item != "--fresh"]
|
|
125
|
+
if fresh_count != 1 or len(selectors) != 1 or len(extra) != 2:
|
|
126
|
+
print("Usage: simulate [--fresh] SELECTOR")
|
|
127
|
+
return
|
|
128
|
+
self._fresh_simulation(selectors[0], action="simulate")
|
|
129
|
+
|
|
130
|
+
def _rerun(self, extra: list[str]) -> None:
|
|
131
|
+
if len(extra) > 1:
|
|
132
|
+
print("Usage: rerun [SELECTOR]")
|
|
133
|
+
return
|
|
134
|
+
if extra:
|
|
135
|
+
self._fresh_simulation(extra[0], action="rerun")
|
|
136
|
+
return
|
|
137
|
+
self._verify_again(
|
|
138
|
+
simulate=self.result.simulation_requested,
|
|
139
|
+
action="RERUN",
|
|
140
|
+
)
|
|
141
|
+
|
|
142
|
+
@staticmethod
|
|
143
|
+
def _help() -> None:
|
|
144
|
+
print(
|
|
145
|
+
"""Commands:
|
|
146
|
+
status show the latest bounded full-verification summary
|
|
147
|
+
tests show the live report matrix and evidence authority
|
|
148
|
+
test SELECTOR evaluate selected criteria from existing evidence only
|
|
149
|
+
simulate SELECTOR reuse exact qualified case evidence, else execute missing case(s)
|
|
150
|
+
simulate all dedupe/reuse report cases and execute only missing case(s)
|
|
151
|
+
simulate --fresh SELECTOR force fresh execution of selected unique physical case(s)
|
|
152
|
+
simulate --fresh all force every unique mapped physical case once
|
|
153
|
+
rerun SELECTOR alias for fresh selective execution for physical selectors
|
|
154
|
+
rerun failed freshly execute physical cases behind failed criteria
|
|
155
|
+
rerun blocked freshly execute physical cases behind NOT_TESTED/blocked criteria
|
|
156
|
+
rerun affected freshly execute physical cases selected by change impact
|
|
157
|
+
rerun all freshly execute every unique mapped physical case once
|
|
158
|
+
rerun repeat the prior full-verification mode
|
|
159
|
+
replay inspect/reconstruct stored evidence; never commands a robot
|
|
160
|
+
report open the current Evidence Viewer in a browser tab
|
|
161
|
+
log [N] show the last N RUN.log lines (default 40, maximum 500)
|
|
162
|
+
help show this command list
|
|
163
|
+
quit leave the interactive session
|
|
164
|
+
|
|
165
|
+
A report TEST-ID is a verification criterion, not a robot-run identity. Multiple tests
|
|
166
|
+
may consume the same physical case measurement. Normal `simulate` therefore reuses exact
|
|
167
|
+
qualified evidence by design. Use `--fresh` or `rerun SELECTOR` when the operator
|
|
168
|
+
explicitly wants a new physical execution. Fresh report-wide execution still deduplicates
|
|
169
|
+
case IDs so one physical scenario is never repeated merely because several criteria
|
|
170
|
+
consume its evidence. Deterministic tests remain evidence-only and never launch Gazebo.
|
|
171
|
+
Verification-owned Gazebo/MoveIt sessions are closed after each executed case; use
|
|
172
|
+
`devagent robot visualize` when a persistent visual session is desired.
|
|
173
|
+
"""
|
|
174
|
+
)
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
def _run_v191(argv: list[str]) -> int:
|
|
178
|
+
original_session = _v16.InteractiveSessionV16
|
|
179
|
+
_v16.InteractiveSessionV16 = InteractiveSessionV191
|
|
180
|
+
try:
|
|
181
|
+
return _v16.main(argv)
|
|
182
|
+
finally:
|
|
183
|
+
_v16.InteractiveSessionV16 = original_session
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
def main(argv: list[str] | None = None) -> int:
|
|
187
|
+
effective = list(sys.argv[1:] if argv is None else argv)
|
|
188
|
+
if effective and effective[0] in {"robots", "robot"}:
|
|
189
|
+
return _v18.main(effective)
|
|
190
|
+
return _run_v191(effective)
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
if __name__ == "__main__":
|
|
194
|
+
raise SystemExit(main())
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: devagent-physical-engine
|
|
3
|
-
Version: 1.9.
|
|
3
|
+
Version: 1.9.1
|
|
4
4
|
Summary: Verification-first robotics commissioning runtime with declarative customer report tests, case-centric evidence reuse, qualified UR5e Gazebo/MoveIt execution, exact-Twin lineage, selective verification, regression, replay, and FAT reporting.
|
|
5
5
|
Author: Tom Ha
|
|
6
6
|
License: All Rights Reserved
|
|
@@ -110,7 +110,7 @@ regression + FAT report + Evidence Viewer
|
|
|
110
110
|
Python 3.11+ is required.
|
|
111
111
|
|
|
112
112
|
```bash
|
|
113
|
-
python -m pip install --upgrade devagent-physical-engine==1.9.
|
|
113
|
+
python -m pip install --upgrade devagent-physical-engine==1.9.1
|
|
114
114
|
```
|
|
115
115
|
|
|
116
116
|
Verify the installed package:
|
|
@@ -122,7 +122,7 @@ python -c "import devagent_physical_engine as d; print(d.__version__)"
|
|
|
122
122
|
Expected:
|
|
123
123
|
|
|
124
124
|
```text
|
|
125
|
-
1.9.
|
|
125
|
+
1.9.1
|
|
126
126
|
```
|
|
127
127
|
|
|
128
128
|
Run the normal customer workflow:
|
|
@@ -552,6 +552,32 @@ Hosted regression includes an arbitrary customer report test using `FAT-CUSTOM-9
|
|
|
552
552
|
|
|
553
553
|
Full release notes: https://github.com/tomha85/devagent-physical-engine/blob/main/docs/RELEASE_NOTES_V1_9_0.md
|
|
554
554
|
|
|
555
|
+
## v1.9.1 repeatable fresh physical simulation
|
|
556
|
+
|
|
557
|
+
v1.9.1 makes evidence reuse and operator-requested fresh execution explicit without changing physical authority boundaries.
|
|
558
|
+
|
|
559
|
+
```text
|
|
560
|
+
devagent> simulate TEST-PERF-001
|
|
561
|
+
→ reuse exact qualified case evidence when available
|
|
562
|
+
→ execute only when the mapped case evidence is missing
|
|
563
|
+
|
|
564
|
+
devagent> simulate --fresh TEST-PERF-001
|
|
565
|
+
→ force a new execution of the selected unique physical case
|
|
566
|
+
→ append a new immutable measurement artifact
|
|
567
|
+
|
|
568
|
+
devagent> simulate --fresh all
|
|
569
|
+
→ force every unique mapped physical case once
|
|
570
|
+
→ still deduplicate shared case IDs across report criteria
|
|
571
|
+
```
|
|
572
|
+
|
|
573
|
+
`rerun TEST-X`, `rerun failed`, `rerun blocked`, `rerun affected`, and `rerun all` use the same fresh-execution contract for physical selectors. Deterministic selectors remain evidence-only and never command Gazebo.
|
|
574
|
+
|
|
575
|
+
Interactive verification now owns its Gazebo/MoveIt lifecycle. After an executed verification case captures its evidence, that verification-owned stack is closed so the next fresh command starts from a clean runtime instead of competing with a stale simulator in the same ROS domain. Persistent visualization is a separate intent and remains available through `devagent robot visualize`.
|
|
576
|
+
|
|
577
|
+
The lifecycle change does not relax MoveIt preexecution, canonical start-state compatibility, FollowJointTrajectory result handling, controller-feedback tracking, Twin lineage, site qualification, or real-robot execution locks.
|
|
578
|
+
|
|
579
|
+
Full release notes: https://github.com/tomha85/devagent-physical-engine/blob/main/docs/RELEASE_NOTES_V1_9_1.md
|
|
580
|
+
|
|
555
581
|
## Qualified visual-execution scope
|
|
556
582
|
|
|
557
583
|
Measured report-test execution remains intentionally narrow:
|
|
@@ -575,11 +601,15 @@ Use `--interactive`, or `--open` from a real terminal, to keep a bounded prompt:
|
|
|
575
601
|
status
|
|
576
602
|
tests
|
|
577
603
|
test SELECTOR
|
|
578
|
-
simulate
|
|
579
|
-
|
|
604
|
+
simulate SELECTOR
|
|
605
|
+
simulate all
|
|
606
|
+
simulate --fresh SELECTOR
|
|
607
|
+
simulate --fresh all
|
|
608
|
+
rerun SELECTOR
|
|
580
609
|
rerun failed
|
|
581
610
|
rerun blocked
|
|
582
611
|
rerun affected
|
|
612
|
+
rerun all
|
|
583
613
|
replay
|
|
584
614
|
report
|
|
585
615
|
log
|
|
@@ -604,6 +634,8 @@ all
|
|
|
604
634
|
|
|
605
635
|
`simulate all` creates a report-wide capability execution plan, evaluates deterministic rows directly, deduplicates physical cases, reuses exact qualified evidence first, and executes only missing unique qualified cases.
|
|
606
636
|
|
|
637
|
+
`simulate --fresh TEST-X` and `rerun TEST-X` explicitly request a new physical execution; fresh report-wide execution still deduplicates physical case IDs.
|
|
638
|
+
|
|
607
639
|
`replay` reconstructs persisted evidence identity; it never commands Gazebo, MoveIt, a robot, PLC, or safety PLC.
|
|
608
640
|
|
|
609
641
|
## Customer input
|
|
@@ -754,11 +786,11 @@ devagent-physical-ai optional provider-backed engineering front end
|
|
|
754
786
|
|
|
755
787
|
# Project status
|
|
756
788
|
|
|
757
|
-
**v1.9.
|
|
789
|
+
**v1.9.1 — Production/Stable software workflow; repeatable fresh physical simulation with owned verification lifecycle**
|
|
758
790
|
|
|
759
|
-
v1.9.0
|
|
791
|
+
v1.9.1 preserves v1.9.0's declarative customer report verification and case-centric evidence reuse, while adding explicit fresh physical execution and deterministic simulator lifecycle ownership. Normal `simulate` remains evidence-first; `simulate --fresh ...` and physical `rerun ...` force new execution, and report-wide fresh runs still execute each unique mapped case only once.
|
|
760
792
|
|
|
761
|
-
The physical qualification claim
|
|
793
|
+
The physical qualification claim remains grounded in the target-proven bounded UR5e nominal report lifecycle. v1.9.1 does not expand that claim to arbitrary customer cells and does not grant site qualification, functional-safety certification, or autonomous real-robot execution authority.
|
|
762
794
|
|
|
763
795
|
Production-oriented software capabilities include:
|
|
764
796
|
|
|
@@ -774,6 +806,8 @@ requirement-driven nominal / boundary / fault case generation
|
|
|
774
806
|
immutable project/Twin lineage
|
|
775
807
|
exact Requirement → Mapping → Verification Plan → Case provenance
|
|
776
808
|
case-centric qualified evidence reuse
|
|
809
|
+
explicit fresh physical execution
|
|
810
|
+
verification-owned simulator lifecycle cleanup
|
|
777
811
|
report-wide physical-case deduplication
|
|
778
812
|
mixed deterministic + physical `simulate all` orchestration
|
|
779
813
|
truthful NOT_TESTED for unavailable/unsupported evidence
|
|
@@ -809,6 +843,9 @@ Production/Stable describes the bounded software workflow. The target-proven UR5
|
|
|
809
843
|
|
|
810
844
|
## Documentation
|
|
811
845
|
|
|
846
|
+
v1.9.1 release notes:
|
|
847
|
+
https://github.com/tomha85/devagent-physical-engine/blob/main/docs/RELEASE_NOTES_V1_9_1.md
|
|
848
|
+
|
|
812
849
|
v1.9.0 release notes:
|
|
813
850
|
https://github.com/tomha85/devagent-physical-engine/blob/main/docs/RELEASE_NOTES_V1_9_0.md
|
|
814
851
|
|
|
@@ -71,6 +71,7 @@ src/devagent_physical_engine/user_cli.py
|
|
|
71
71
|
src/devagent_physical_engine/user_cli_v15.py
|
|
72
72
|
src/devagent_physical_engine/user_cli_v16.py
|
|
73
73
|
src/devagent_physical_engine/user_cli_v18.py
|
|
74
|
+
src/devagent_physical_engine/user_cli_v191.py
|
|
74
75
|
src/devagent_physical_engine/verification.py
|
|
75
76
|
src/devagent_physical_engine/verification_capabilities_v190.py
|
|
76
77
|
src/devagent_physical_engine/workpiece_lifecycle.py
|
|
@@ -202,6 +203,8 @@ tests/test_evidence_trust_transport_v12.py
|
|
|
202
203
|
tests/test_evidence_trust_v12.py
|
|
203
204
|
tests/test_evidence_viewer_palette_v130.py
|
|
204
205
|
tests/test_explicit_detach_world_reassert_v189.py
|
|
206
|
+
tests/test_fresh_simulation_cli_v191.py
|
|
207
|
+
tests/test_fresh_simulation_service_v191.py
|
|
205
208
|
tests/test_gazebo_cli_v0122.py
|
|
206
209
|
tests/test_golden_abb_runner_v171.py
|
|
207
210
|
tests/test_golden_abb_showcase.py
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
[console_scripts]
|
|
2
|
-
devagent = devagent_physical_engine.
|
|
2
|
+
devagent = devagent_physical_engine.user_cli_v191:main
|
|
3
3
|
devagent-commercial = devagent_physical_engine.commercial_cli:main
|
|
4
4
|
devagent-physical = devagent_physical_engine.cli:main
|
|
5
5
|
devagent-physical-ai = devagent_physical_engine.ai_cli:main
|