devagent-physical-engine 1.4.1__tar.gz → 1.6.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- devagent_physical_engine-1.6.0/PKG-INFO +589 -0
- devagent_physical_engine-1.6.0/README.md +548 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/pyproject.toml +5 -4
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/__init__.py +64 -5
- devagent_physical_engine-1.6.0/src/devagent_physical_engine/commercial_intelligence.py +518 -0
- devagent_physical_engine-1.6.0/src/devagent_physical_engine/one_command_v15.py +722 -0
- devagent_physical_engine-1.6.0/src/devagent_physical_engine/one_command_v16.py +28 -0
- devagent_physical_engine-1.6.0/src/devagent_physical_engine/provider_criterion.py +169 -0
- devagent_physical_engine-1.6.0/src/devagent_physical_engine/report_test_execution.py +490 -0
- devagent_physical_engine-1.6.0/src/devagent_physical_engine/report_test_execution_strict.py +273 -0
- devagent_physical_engine-1.6.0/src/devagent_physical_engine/ros2/report_test_visualization.py +549 -0
- devagent_physical_engine-1.6.0/src/devagent_physical_engine/selective_verification_v16.py +128 -0
- devagent_physical_engine-1.6.0/src/devagent_physical_engine/twin_codec.py +283 -0
- devagent_physical_engine-1.6.0/src/devagent_physical_engine/user_cli_v15.py +144 -0
- devagent_physical_engine-1.6.0/src/devagent_physical_engine/user_cli_v16.py +207 -0
- devagent_physical_engine-1.6.0/src/devagent_physical_engine.egg-info/PKG-INFO +589 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine.egg-info/SOURCES.txt +20 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine.egg-info/entry_points.txt +1 -1
- devagent_physical_engine-1.6.0/tests/test_commercial_intelligence_v15.py +333 -0
- devagent_physical_engine-1.6.0/tests/test_one_command_pose_hardening_v15.py +127 -0
- devagent_physical_engine-1.6.0/tests/test_provider_criterion_v15.py +157 -0
- devagent_physical_engine-1.6.0/tests/test_report_test_contract_coverage_v16.py +292 -0
- devagent_physical_engine-1.6.0/tests/test_report_test_lineage_v16.py +164 -0
- devagent_physical_engine-1.6.0/tests/test_report_test_visual_execution_v16.py +289 -0
- devagent_physical_engine-1.6.0/tests/test_user_cli_report_visual_v16.py +169 -0
- devagent_physical_engine-1.6.0/tests/test_user_cli_v15.py +118 -0
- devagent_physical_engine-1.6.0/tests/test_user_cli_v15_hotfix_inheritance.py +39 -0
- devagent_physical_engine-1.4.1/PKG-INFO +0 -798
- devagent_physical_engine-1.4.1/README.md +0 -757
- devagent_physical_engine-1.4.1/src/devagent_physical_engine.egg-info/PKG-INFO +0 -798
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/NOTICE +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/setup.cfg +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/agent/__init__.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/agent/compiler.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/agent/contracts.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/agent/coordinator.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/agent/critic.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/agent/evidence.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/agent/interpreter.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/agent/planner.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/agent/recovery.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/agent/routing.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/agent/runtime.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/agent/semantic.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/agent/structured.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/ai_cli.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/cli.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/commercial.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/commercial_campaign.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/commercial_cli.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/commercial_importer.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/commercial_readiness.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/commercial_repository.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/continuous_clearance.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/doctor.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/engineering_agent.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/engineering_request.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/evidence_replay.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/evidence_trust.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/execution.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/models.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/one_command.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/one_command_runtime.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/operating_envelope.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/optimization/__init__.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/optimization/benchmark.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/optimization/candidates.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/optimization/contracts.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/optimization/evaluator.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/optimization/evidence.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/optimization/experience.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/optimization/measured.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/optimization/optimizer.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/optimization/orchestrator.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/physical_campaign.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/physical_evidence.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/physical_motion.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/planning.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/pose_math.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/preexecution_contract.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/production_authority.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/production_grade.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/project.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/provider_adapters/__init__.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/provider_adapters/anthropic.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/provider_adapters/common.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/provider_adapters/factory.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/provider_adapters/gemini.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/provider_adapters/openai.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/provider_qualification.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/providers.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/qualification.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/qualification_cli.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/qualification_harness.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/reference_workcell.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/robot_platform.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/robots.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/ros2/__init__.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/ros2/acceptance.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/ros2/commands.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/ros2/continuous_clearance_probe.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/ros2/doctor.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/ros2/fk_pose.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/ros2/fk_probe.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/ros2/frame_alignment.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/ros2/gazebo_cli.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/ros2/gazebo_pose.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/ros2/gazebo_world.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/ros2/joint_state_probe.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/ros2/joint_state_recorder.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/ros2/measured_motion.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/ros2/moveit_joint_plan_probe.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/ros2/moveit_scene.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/ros2/moveit_task_planner.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/ros2/preexecution.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/ros2/qualification.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/ros2/qualification_v10.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/ros2/qualification_v11.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/ros2/qualification_v12.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/ros2/scene_probe.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/ros2/state_validity_probe.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/ros2/task_adapter.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/ros2/task_visualization.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/ros2/tf_probe.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/ros2/tool_scene.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/ros2/tool_scene_probe.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/ros2/trajectory.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/ros2/trajectory_action_probe.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/ros2/trajectory_tracking.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/ros2/ur5e.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/ros2/ur5e_adapter.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/ros2/ur5e_v10_adapter.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/ros2/workpiece_follow.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/ros2/workpiece_gazebo_follower.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/ros2/workpiece_scene.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/ros2/workpiece_scene_probe.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/selective_verification.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/setup_profile.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/sim_real_qualification.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/simulation.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/simulation_platform.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/tool_collision.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/trajectory_qualification.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/twin.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/twin_builder.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/twin_materialization.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/user_cli.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/verification.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine/workpiece_lifecycle.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine.egg-info/dependency_links.txt +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine.egg-info/requires.txt +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/src/devagent_physical_engine.egg-info/top_level.txt +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_agent_core.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_agent_semantic_hardening.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_ai_cli.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_ai_cli_v07.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_commercial_importer_v1.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_commercial_readiness_v1.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_commercial_v1.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_continuous_clearance_v011.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_core.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_engineering_request_v07.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_evidence_replay_v12.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_evidence_trust_coverage_v12.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_evidence_trust_transport_v12.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_evidence_trust_v12.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_evidence_viewer_palette_v130.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_gazebo_cli_v0122.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_interpreter_profiles_v08.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_joint_state_probe_v0125.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_live_provider_qualification.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_measured_motion_v10.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_moveit_planning_diagnostics_v0125.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_moveit_scene_v0123.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_natural_language_agent_v07.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_one_command_hardening_v13.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_one_command_regression_v141.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_one_command_v13.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_openai_strict_schema_v0113.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_optimization_v05.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_physical_campaign_v09.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_physical_evidence_v09.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_physical_motion_v09.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_planning_fallback_v012.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_pose_math_v0125.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_preexecution_contract_v10.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_production_authority_v11.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_production_grade_coverage_v11.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_production_grade_v11.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_project_spine_v013.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_provider_and_qualification.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_qualification_cli_lifecycle_v06.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_qualification_harness_v06.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_readme_pypi.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_real_provider_adapters.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_reference_workcell_ros_frames_v0125.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_reference_workcell_v012.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_robot_platform_v08.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_ros2_production_receipts_v011.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_ros2_simulation.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_ros_trajectory_v09.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_selective_verification_v14.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_setup_profile.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_sim_real_qualification_v011.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_simulation_platform_v08.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_tool_collision_v011.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_tool_scene_v0124.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_trajectory_action_probe_v0125.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_trajectory_qualification_v09.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_trajectory_tracking_v0125.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_twin_materialization_v10.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_twin_v08.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_ur5e_adapter_scopes_v09.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_ur5e_v10_adapter_scopes.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_user_cli_interactive_v131.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_user_cli_progress_v131.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_user_cli_selective_v14.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_v052_stabilization.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_v08_catalog_mapping_regression.py +0 -0
- {devagent_physical_engine-1.4.1 → devagent_physical_engine-1.6.0}/tests/test_workpiece_lifecycle_v011.py +0 -0
|
@@ -0,0 +1,589 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: devagent-physical-engine
|
|
3
|
+
Version: 1.6.0
|
|
4
|
+
Summary: Production-grade verification-first robotics evidence runtime with one-command customer intake, validated requirement mapping, report-test Gazebo visualization, requirement-driven test generation, selective verification, deterministic Twin lineage, measured physical verification, replay inspection, regression, and FAT evidence.
|
|
5
|
+
Author: Tom Ha
|
|
6
|
+
License: All Rights Reserved
|
|
7
|
+
Project-URL: Homepage, https://github.com/tomha85/devagent-physical-engine
|
|
8
|
+
Project-URL: Repository, https://github.com/tomha85/devagent-physical-engine
|
|
9
|
+
Project-URL: Issues, https://github.com/tomha85/devagent-physical-engine/issues
|
|
10
|
+
Keywords: robotics,industrial-automation,agentic-ai,ros2,gazebo,verification,selective-testing,digital-twin,fat-testing,regression,evidence,replay
|
|
11
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: Operating System :: OS Independent
|
|
14
|
+
Classifier: Programming Language :: Python :: 3
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
18
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
19
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
20
|
+
Requires-Python: >=3.11
|
|
21
|
+
Description-Content-Type: text/markdown
|
|
22
|
+
License-File: NOTICE
|
|
23
|
+
Requires-Dist: PyYAML<7,>=6.0
|
|
24
|
+
Provides-Extra: openai
|
|
25
|
+
Requires-Dist: openai<4,>=3.0; extra == "openai"
|
|
26
|
+
Provides-Extra: anthropic
|
|
27
|
+
Requires-Dist: anthropic<2,>=1.0; extra == "anthropic"
|
|
28
|
+
Provides-Extra: gemini
|
|
29
|
+
Requires-Dist: google-genai<3,>=2.0; extra == "gemini"
|
|
30
|
+
Provides-Extra: ai
|
|
31
|
+
Requires-Dist: openai<4,>=3.0; extra == "ai"
|
|
32
|
+
Requires-Dist: anthropic<2,>=1.0; extra == "ai"
|
|
33
|
+
Requires-Dist: google-genai<3,>=2.0; extra == "ai"
|
|
34
|
+
Provides-Extra: dev
|
|
35
|
+
Requires-Dist: build==1.6.0; extra == "dev"
|
|
36
|
+
Requires-Dist: twine==7.0.0; extra == "dev"
|
|
37
|
+
Requires-Dist: coverage[toml]<8,>=7.6; extra == "dev"
|
|
38
|
+
Requires-Dist: ruff<1,>=0.12; extra == "dev"
|
|
39
|
+
Requires-Dist: pip-audit<3,>=2.9; extra == "dev"
|
|
40
|
+
Dynamic: license-file
|
|
41
|
+
|
|
42
|
+
# DevAgent Smart Physical Engine
|
|
43
|
+
|
|
44
|
+
[](https://pypi.org/project/devagent-physical-engine/)
|
|
45
|
+
[](https://pypi.org/project/devagent-physical-engine/)
|
|
46
|
+
[](#project-status)
|
|
47
|
+
|
|
48
|
+
**Verification-first commissioning engineering for robotics and industrial automation.**
|
|
49
|
+
|
|
50
|
+
DevAgent turns a customer engineering folder into a bounded verification workflow with immutable Digital Twin lineage, deterministic requirement verdicts, requirement-driven test cases, exact-Twin measured simulation evidence, regression analysis, FAT reporting, replay inspection, and selective retesting.
|
|
51
|
+
|
|
52
|
+
```text
|
|
53
|
+
customer engineering files
|
|
54
|
+
↓
|
|
55
|
+
intake + SHA-256 inventory
|
|
56
|
+
↓
|
|
57
|
+
validated Requirement → Criterion mapping
|
|
58
|
+
↓
|
|
59
|
+
immutable Digital Twin revision
|
|
60
|
+
↓
|
|
61
|
+
requirement-driven nominal / boundary / fault cases
|
|
62
|
+
↓
|
|
63
|
+
qualified exact-Twin simulation when supported
|
|
64
|
+
↓
|
|
65
|
+
measured evidence
|
|
66
|
+
↓
|
|
67
|
+
PASS / FAIL / NOT_TESTED
|
|
68
|
+
↓
|
|
69
|
+
regression + FAT report + Evidence Viewer
|
|
70
|
+
↓
|
|
71
|
+
selective retest / replay
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
> **AI proposes. Deterministic engines validate, compile, verify, measure, and gate promotion. OEM robot controllers, PLCs, safety PLCs, and certified safety systems remain authoritative.**
|
|
75
|
+
|
|
76
|
+
DevAgent is designed to answer: **What can be proven about this cell, what failed, what remains unknown, what changed, and what evidence supports the conclusion?**
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## Quick start
|
|
81
|
+
|
|
82
|
+
Python 3.11+ is required.
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
python -m pip install --upgrade devagent-physical-engine==1.6.0
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
Verify the installed package:
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
python -c "import devagent_physical_engine as d; print(d.__version__)"
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Expected:
|
|
95
|
+
|
|
96
|
+
```text
|
|
97
|
+
1.6.0
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Run the normal customer workflow:
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
devagent verify ./customer-project
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
Request simulation:
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
devagent verify ./customer-project --simulate
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
Open the Evidence Viewer and retain an interactive engineering session:
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
devagent verify ./customer-project --simulate --open
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
For machine-readable CI output:
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
devagent verify ./customer-project --json
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
Default locations:
|
|
125
|
+
|
|
126
|
+
```text
|
|
127
|
+
Evidence database: ~/.devagent/projects.db
|
|
128
|
+
Results: <customer-project>/devagent-results/
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
# v1.6 report-test visual execution
|
|
134
|
+
|
|
135
|
+
v1.6 closes the gap between report test cases and the previously separate ROS/Gazebo reference visualization path.
|
|
136
|
+
|
|
137
|
+
A physical report test can now follow this bounded chain:
|
|
138
|
+
|
|
139
|
+
```text
|
|
140
|
+
Requirement
|
|
141
|
+
↓
|
|
142
|
+
stable Test identity
|
|
143
|
+
↓
|
|
144
|
+
immutable Requirement → Case mapping
|
|
145
|
+
↓
|
|
146
|
+
exact Verification Plan ID/hash
|
|
147
|
+
↓
|
|
148
|
+
exact Case ID
|
|
149
|
+
↓
|
|
150
|
+
exact Twin revision/hash
|
|
151
|
+
↓
|
|
152
|
+
qualified report execution profile
|
|
153
|
+
↓
|
|
154
|
+
Gazebo + MoveIt visible execution
|
|
155
|
+
↓
|
|
156
|
+
typed physical_measurement artifact
|
|
157
|
+
↓
|
|
158
|
+
deterministic PASS / FAIL / NOT_TESTED
|
|
159
|
+
↓
|
|
160
|
+
refreshed Evidence Viewer
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
Interactive example:
|
|
164
|
+
|
|
165
|
+
```text
|
|
166
|
+
devagent> tests
|
|
167
|
+
REQ-PERF-001 TEST-PERF-001 NOT_TESTED case-0001
|
|
168
|
+
|
|
169
|
+
devagent> simulate TEST-PERF-001
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
For a supported qualified case, DevAgent materializes the **exact immutable report Twin** in the visual runtime. It does not run a separate demo Twin and relabel that result as customer evidence.
|
|
173
|
+
|
|
174
|
+
The execution runtime binds measured metrics such as:
|
|
175
|
+
|
|
176
|
+
```text
|
|
177
|
+
cycle_time_s
|
|
178
|
+
minimum_clearance_m
|
|
179
|
+
final_tcp_error_m
|
|
180
|
+
max_tracking_error_rad
|
|
181
|
+
collision_free
|
|
182
|
+
completed
|
|
183
|
+
sample_count
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
The resulting `physical_measurement` remains scoped to the exact Twin revision/hash and case lineage that produced it.
|
|
187
|
+
|
|
188
|
+
## Qualified scope
|
|
189
|
+
|
|
190
|
+
The initial packaged visual-execution qualification is intentionally narrow:
|
|
191
|
+
|
|
192
|
+
```text
|
|
193
|
+
robot: UR5e
|
|
194
|
+
operation: load
|
|
195
|
+
profile: packaged qualified report-execution profile
|
|
196
|
+
case scope: one nominal mapped physical case
|
|
197
|
+
runtime: ROS 2 Jazzy + Gazebo Harmonic + MoveIt 2
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
Unsupported customer Twins, boundary/fault cases, multiple mapped cases, incomplete mappings, ambiguous case IDs, mismatched verification plans, or unqualified execution profiles fail closed.
|
|
201
|
+
|
|
202
|
+
DevAgent never substitutes:
|
|
203
|
+
|
|
204
|
+
```text
|
|
205
|
+
devagent-physical ros demo
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
for report evidence.
|
|
209
|
+
|
|
210
|
+
## Exact lineage hardening
|
|
211
|
+
|
|
212
|
+
A case ID such as `case-0001` is local to its verification plan. v1.6 therefore requires the complete lineage:
|
|
213
|
+
|
|
214
|
+
```text
|
|
215
|
+
Requirement
|
|
216
|
+
→ mapping artifact
|
|
217
|
+
→ exact Verification Plan ID/hash
|
|
218
|
+
→ exact Case ID
|
|
219
|
+
→ exact Twin revision/hash
|
|
220
|
+
→ execution
|
|
221
|
+
→ measurement
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
If another plan reuses the same case ID, or the mapping references a different plan, report execution is blocked instead of guessing.
|
|
225
|
+
|
|
226
|
+
Full `--simulate` also fails closed if any physical requirement lacks an exact case mapping, or if the union of mapped physical cases is outside the currently qualified single-case scope.
|
|
227
|
+
|
|
228
|
+
---
|
|
229
|
+
|
|
230
|
+
# Requirement intelligence and test generation
|
|
231
|
+
|
|
232
|
+
DevAgent maps supported requirement language into deterministic criteria only when the mapping can be validated. Supported measured physical checks include:
|
|
233
|
+
|
|
234
|
+
```text
|
|
235
|
+
cycle_time_max_s
|
|
236
|
+
minimum_clearance_m
|
|
237
|
+
final_tcp_error_max_m
|
|
238
|
+
max_tracking_error_rad
|
|
239
|
+
collision_free
|
|
240
|
+
physical_completed
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
Supported structural/Twin checks include:
|
|
244
|
+
|
|
245
|
+
```text
|
|
246
|
+
planning_allowed
|
|
247
|
+
physics_allowed
|
|
248
|
+
entity_present
|
|
249
|
+
validation_issue_absent
|
|
250
|
+
twin_state
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
Provider-backed OpenAI, Anthropic, or Gemini proposals are advisory. They cannot create physical truth, site qualification, or real-execution authority.
|
|
254
|
+
|
|
255
|
+
Requirement-driven case generation can derive bounded variations and fault cases from explicit engineering requirements, including payload ranges, TCP offset boundaries, missing-workpiece faults, and grasp-verification failures.
|
|
256
|
+
|
|
257
|
+
A requirement with no deterministic criterion or required measurement remains:
|
|
258
|
+
|
|
259
|
+
```text
|
|
260
|
+
NOT_TESTED
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
It is never auto-passed from prose, CAD filenames, generated plans, or AI interpretation.
|
|
264
|
+
|
|
265
|
+
---
|
|
266
|
+
|
|
267
|
+
# Interactive engineering session
|
|
268
|
+
|
|
269
|
+
With `--open` in a real TTY, or with explicit `--interactive`, DevAgent keeps a bounded engineering prompt:
|
|
270
|
+
|
|
271
|
+
```text
|
|
272
|
+
status
|
|
273
|
+
tests
|
|
274
|
+
test SELECTOR
|
|
275
|
+
simulate [SELECTOR]
|
|
276
|
+
rerun [SELECTOR]
|
|
277
|
+
rerun failed
|
|
278
|
+
rerun blocked
|
|
279
|
+
rerun affected
|
|
280
|
+
replay
|
|
281
|
+
report
|
|
282
|
+
log
|
|
283
|
+
help
|
|
284
|
+
quit
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
Selectors can be requirement IDs, test IDs, or bounded groups:
|
|
288
|
+
|
|
289
|
+
```text
|
|
290
|
+
REQ-PERF-001
|
|
291
|
+
TEST-PERF-001
|
|
292
|
+
failed
|
|
293
|
+
blocked
|
|
294
|
+
affected
|
|
295
|
+
all
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
`test SELECTOR` re-evaluates existing immutable evidence and does not command a simulator.
|
|
299
|
+
|
|
300
|
+
`simulate TEST-X` requests qualified execution of the selected mapped physical report case.
|
|
301
|
+
|
|
302
|
+
`replay` reconstructs and verifies persisted identity only; it never commands Gazebo, MoveIt, a robot, PLC, or safety PLC.
|
|
303
|
+
|
|
304
|
+
Selective runs never silently promote full FAT readiness.
|
|
305
|
+
|
|
306
|
+
---
|
|
307
|
+
|
|
308
|
+
# Customer input
|
|
309
|
+
|
|
310
|
+
A customer folder can contain the engineering material the team already has:
|
|
311
|
+
|
|
312
|
+
```text
|
|
313
|
+
ACME_CNC_CELL_TEST/
|
|
314
|
+
├── project.yaml
|
|
315
|
+
├── requirements.xlsx
|
|
316
|
+
├── devagent-twin.yaml
|
|
317
|
+
├── ur5e.urdf
|
|
318
|
+
├── robot.urdf.xacro
|
|
319
|
+
├── ur5e_robotiq.srdf
|
|
320
|
+
├── tcp.yaml
|
|
321
|
+
├── calibration.yaml
|
|
322
|
+
├── layout/
|
|
323
|
+
│ ├── cell_layout.yaml
|
|
324
|
+
│ └── meshes/
|
|
325
|
+
├── robot_program/
|
|
326
|
+
│ └── mission.yaml
|
|
327
|
+
└── expected/
|
|
328
|
+
└── expected_findings.json
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
Important rule:
|
|
332
|
+
|
|
333
|
+
```text
|
|
334
|
+
file discovered != engineering fact proven
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
DevAgent fingerprints and classifies files, but it does not treat a filename as proof of pose, TCP, calibration, collision geometry, safety behavior, or physical performance.
|
|
338
|
+
|
|
339
|
+
The root `expected/` folder is test-oracle material and is never promoted as engineering authority.
|
|
340
|
+
|
|
341
|
+
If critical information is missing or ambiguous, DevAgent creates:
|
|
342
|
+
|
|
343
|
+
```text
|
|
344
|
+
<customer-project>/devagent-results/QUESTIONS.md
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
Update the original customer engineering information and rerun the same command.
|
|
348
|
+
|
|
349
|
+
---
|
|
350
|
+
|
|
351
|
+
# Results and evidence
|
|
352
|
+
|
|
353
|
+
A normal project can produce:
|
|
354
|
+
|
|
355
|
+
```text
|
|
356
|
+
customer-project/
|
|
357
|
+
└── devagent-results/
|
|
358
|
+
├── RUN.log
|
|
359
|
+
├── SUMMARY.json
|
|
360
|
+
├── INTAKE.json
|
|
361
|
+
├── QUESTIONS.md
|
|
362
|
+
├── normalized/
|
|
363
|
+
│ ├── requirements.csv
|
|
364
|
+
│ └── devagent-twin.yaml
|
|
365
|
+
├── report-test-visualization/
|
|
366
|
+
├── FAT_REPORT.html
|
|
367
|
+
└── EVIDENCE.html
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
`EVIDENCE.html` is read-only engineering evidence. It exposes requirement verdicts, observed/expected values, blockers, artifact IDs/hashes, Twin revision hashes, selective runs, and measurement lineage.
|
|
371
|
+
|
|
372
|
+
`RUN.log` is the human progress/debug trace. It does not replace immutable engineering evidence.
|
|
373
|
+
|
|
374
|
+
Repeat runs on the same project automatically compare the immediately previous campaign with the current campaign before the new FAT artifact is generated.
|
|
375
|
+
|
|
376
|
+
---
|
|
377
|
+
|
|
378
|
+
# Authority model
|
|
379
|
+
|
|
380
|
+
DevAgent separates:
|
|
381
|
+
|
|
382
|
+
```text
|
|
383
|
+
requirement
|
|
384
|
+
verification intent
|
|
385
|
+
physical execution case
|
|
386
|
+
measured evidence
|
|
387
|
+
verdict
|
|
388
|
+
authority/readiness
|
|
389
|
+
```
|
|
390
|
+
|
|
391
|
+
A plan proves that a test was planned. A mapping proves which case is bound to a requirement. A measurement proves only what was actually measured. A replay proves persisted identity can be reconstructed.
|
|
392
|
+
|
|
393
|
+
None of those alone equals site commissioning or functional-safety certification.
|
|
394
|
+
|
|
395
|
+
Current hard boundaries remain:
|
|
396
|
+
|
|
397
|
+
```text
|
|
398
|
+
physical_qualification = false unless separately proven
|
|
399
|
+
site_qualification = false
|
|
400
|
+
real_execution_allowed = false
|
|
401
|
+
```
|
|
402
|
+
|
|
403
|
+
The operating principle remains:
|
|
404
|
+
|
|
405
|
+
```text
|
|
406
|
+
Agents propose.
|
|
407
|
+
Deterministic engines compile and verify.
|
|
408
|
+
Qualified simulators measure bounded scopes.
|
|
409
|
+
Existing certified controllers execute real equipment.
|
|
410
|
+
```
|
|
411
|
+
|
|
412
|
+
---
|
|
413
|
+
|
|
414
|
+
# Physical simulation setup
|
|
415
|
+
|
|
416
|
+
`pip install` does not install ROS 2, Gazebo, MoveIt, OEM drivers, or privileged operating-system packages.
|
|
417
|
+
|
|
418
|
+
Reference stack:
|
|
419
|
+
|
|
420
|
+
```text
|
|
421
|
+
Ubuntu 24.04
|
|
422
|
+
ROS 2 Jazzy
|
|
423
|
+
Gazebo Harmonic
|
|
424
|
+
gz_ros2_control
|
|
425
|
+
Universal Robots ROS 2 driver
|
|
426
|
+
ur_simulation_gz
|
|
427
|
+
MoveIt 2
|
|
428
|
+
```
|
|
429
|
+
|
|
430
|
+
Preview setup:
|
|
431
|
+
|
|
432
|
+
```bash
|
|
433
|
+
devagent-physical setup --profile ur5e-sim --dry-run
|
|
434
|
+
```
|
|
435
|
+
|
|
436
|
+
Apply explicitly:
|
|
437
|
+
|
|
438
|
+
```bash
|
|
439
|
+
devagent-physical setup --profile ur5e-sim --yes
|
|
440
|
+
```
|
|
441
|
+
|
|
442
|
+
Check runtime:
|
|
443
|
+
|
|
444
|
+
```bash
|
|
445
|
+
devagent-physical ros doctor
|
|
446
|
+
```
|
|
447
|
+
|
|
448
|
+
Hosted Python CI validates software contracts and deterministic execution boundaries. It does not by itself prove a graphical Gazebo runtime, `move_group`, TF, controller actions, OEM drivers, or an arbitrary customer cell. Physical target-stack qualification must run on the intended workstation/adapter stack.
|
|
449
|
+
|
|
450
|
+
---
|
|
451
|
+
|
|
452
|
+
# Optional AI providers
|
|
453
|
+
|
|
454
|
+
AI is optional and remains outside deterministic authority.
|
|
455
|
+
|
|
456
|
+
```bash
|
|
457
|
+
python -m pip install "devagent-physical-engine[openai]"
|
|
458
|
+
python -m pip install "devagent-physical-engine[anthropic]"
|
|
459
|
+
python -m pip install "devagent-physical-engine[gemini]"
|
|
460
|
+
```
|
|
461
|
+
|
|
462
|
+
Or install all provider adapters:
|
|
463
|
+
|
|
464
|
+
```bash
|
|
465
|
+
python -m pip install "devagent-physical-engine[ai]"
|
|
466
|
+
```
|
|
467
|
+
|
|
468
|
+
Typical credentials:
|
|
469
|
+
|
|
470
|
+
```bash
|
|
471
|
+
export OPENAI_API_KEY="..."
|
|
472
|
+
export ANTHROPIC_API_KEY="..."
|
|
473
|
+
export GEMINI_API_KEY="..."
|
|
474
|
+
```
|
|
475
|
+
|
|
476
|
+
Provider-backed interpretation can propose intent or criterion mappings. It cannot grant deterministic safety, physical qualification, site qualification, or real-execution authority.
|
|
477
|
+
|
|
478
|
+
---
|
|
479
|
+
|
|
480
|
+
# Installed CLIs
|
|
481
|
+
|
|
482
|
+
```text
|
|
483
|
+
devagent one-command customer verification + interactive report testing
|
|
484
|
+
devagent-commercial expert commercial/evidence workflow
|
|
485
|
+
devagent-physical deterministic core + ROS/qualification tools
|
|
486
|
+
devagent-physical-ai optional provider-backed engineering front end
|
|
487
|
+
```
|
|
488
|
+
|
|
489
|
+
---
|
|
490
|
+
|
|
491
|
+
# Simple Mode exit codes
|
|
492
|
+
|
|
493
|
+
| Exit | Meaning |
|
|
494
|
+
| ---: | --- |
|
|
495
|
+
| `0` | bounded full verification is release-ready |
|
|
496
|
+
| `10` | customer input or operational contract failure |
|
|
497
|
+
| `30` | more engineering information is required |
|
|
498
|
+
| `31` | full simulation was requested but the exact execution path is blocked/unqualified |
|
|
499
|
+
| `32` | verification completed but full release readiness is false |
|
|
500
|
+
|
|
501
|
+
---
|
|
502
|
+
|
|
503
|
+
# Project status
|
|
504
|
+
|
|
505
|
+
**v1.6.0 — Production/Stable software workflow**
|
|
506
|
+
|
|
507
|
+
v1.6.0 adds exact-Twin report-test visual execution, immutable Requirement→Mapping→Verification Plan→Case lineage validation, qualified Gazebo/MoveIt execution for the packaged UR5e nominal report profile, typed simulation measurement binding, interactive report-case visualization, and fail-closed handling for unsupported or ambiguous execution scopes.
|
|
508
|
+
|
|
509
|
+
Production-oriented software capabilities include:
|
|
510
|
+
|
|
511
|
+
```text
|
|
512
|
+
one-command customer intake
|
|
513
|
+
XLSX requirement normalization
|
|
514
|
+
validated Requirement → Criterion mapping
|
|
515
|
+
optional provider-backed advisory criterion proposals
|
|
516
|
+
requirement-driven nominal / boundary / fault case generation
|
|
517
|
+
immutable project/Twin lineage
|
|
518
|
+
exact Requirement → Case provenance
|
|
519
|
+
qualified report-test visual execution contract
|
|
520
|
+
Gazebo/MoveIt selected-case visualization
|
|
521
|
+
typed physical measurement binding
|
|
522
|
+
deterministic full campaigns
|
|
523
|
+
repeat-run regression orchestration
|
|
524
|
+
professional FAT/Evidence Viewer
|
|
525
|
+
terminal progress + RUN.log
|
|
526
|
+
interactive engineering session
|
|
527
|
+
Requirement → Test selectors
|
|
528
|
+
selective deterministic retest
|
|
529
|
+
failed / blocked / affected selectors
|
|
530
|
+
Evidence Bundle + replay
|
|
531
|
+
change impact + regression
|
|
532
|
+
provider-neutral optional AI front end
|
|
533
|
+
```
|
|
534
|
+
|
|
535
|
+
Quality gates include Python 3.11/3.12/3.13 regression, compilation, Ruff correctness checks, package build/clean-install, runtime dependency audit, global branch coverage, One-Command coverage, Commercial Intelligence coverage, report-test visual execution qualification tests, Selective Verification coverage, Production Authority coverage, and Evidence Trust/Replay coverage.
|
|
536
|
+
|
|
537
|
+
Production/Stable describes the bounded software workflow. It does not claim arbitrary customer cells are physically qualified, site-qualified, functionally safe, or authorized for autonomous real execution.
|
|
538
|
+
|
|
539
|
+
---
|
|
540
|
+
|
|
541
|
+
# Documentation
|
|
542
|
+
|
|
543
|
+
One-command verification:
|
|
544
|
+
|
|
545
|
+
https://github.com/tomha85/devagent-physical-engine/blob/main/docs/ONE_COMMAND_VERIFY_V13.md
|
|
546
|
+
|
|
547
|
+
v1.6 report-test visual execution:
|
|
548
|
+
|
|
549
|
+
https://github.com/tomha85/devagent-physical-engine/blob/main/docs/REPORT_TEST_VISUAL_EXECUTION_V16.md
|
|
550
|
+
|
|
551
|
+
Evidence Trust / replay / viewer:
|
|
552
|
+
|
|
553
|
+
https://github.com/tomha85/devagent-physical-engine/blob/main/docs/EVIDENCE_TRUST_V12.md
|
|
554
|
+
|
|
555
|
+
Measured physical runtime:
|
|
556
|
+
|
|
557
|
+
https://github.com/tomha85/devagent-physical-engine/blob/main/docs/MEASURED_PHYSICAL_RUNTIME.md
|
|
558
|
+
|
|
559
|
+
Commercial project spine:
|
|
560
|
+
|
|
561
|
+
https://github.com/tomha85/devagent-physical-engine/blob/main/docs/COMMERCIAL_PROJECT_SPINE.md
|
|
562
|
+
|
|
563
|
+
Commercial workflow:
|
|
564
|
+
|
|
565
|
+
https://github.com/tomha85/devagent-physical-engine/blob/main/docs/COMMERCIAL_V1.md
|
|
566
|
+
|
|
567
|
+
Architecture:
|
|
568
|
+
|
|
569
|
+
https://github.com/tomha85/devagent-physical-engine/blob/main/docs/ARCHITECTURE.md
|
|
570
|
+
|
|
571
|
+
Canonical Twin runtime:
|
|
572
|
+
|
|
573
|
+
https://github.com/tomha85/devagent-physical-engine/blob/main/docs/CANONICAL_TWIN_RUNTIME.md
|
|
574
|
+
|
|
575
|
+
Laptop acceptance:
|
|
576
|
+
|
|
577
|
+
https://github.com/tomha85/devagent-physical-engine/blob/main/docs/LAPTOP_ACCEPTANCE.md
|
|
578
|
+
|
|
579
|
+
---
|
|
580
|
+
|
|
581
|
+
# Ownership
|
|
582
|
+
|
|
583
|
+
DevAgent Smart Physical Engine
|
|
584
|
+
Copyright © 2026 Tom Ha
|
|
585
|
+
Original creator: Tom Ha
|
|
586
|
+
Original project: https://github.com/tomha85/devagent-physical-engine
|
|
587
|
+
All rights reserved.
|
|
588
|
+
|
|
589
|
+
See repository `LICENSE`, `NOTICE`, and `COPYRIGHT` for complete ownership and usage terms.
|