devagent-physical-engine 1.3.0__tar.gz → 1.4.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.4.0/PKG-INFO +798 -0
- devagent_physical_engine-1.4.0/README.md +757 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/pyproject.toml +3 -3
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/__init__.py +21 -1
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/evidence_trust.py +6 -6
- devagent_physical_engine-1.4.0/src/devagent_physical_engine/selective_verification.py +809 -0
- devagent_physical_engine-1.4.0/src/devagent_physical_engine/user_cli.py +699 -0
- devagent_physical_engine-1.4.0/src/devagent_physical_engine.egg-info/PKG-INFO +798 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine.egg-info/SOURCES.txt +6 -0
- devagent_physical_engine-1.4.0/tests/test_evidence_viewer_palette_v130.py +21 -0
- devagent_physical_engine-1.4.0/tests/test_selective_verification_v14.py +464 -0
- devagent_physical_engine-1.4.0/tests/test_user_cli_interactive_v131.py +266 -0
- devagent_physical_engine-1.4.0/tests/test_user_cli_progress_v131.py +148 -0
- devagent_physical_engine-1.4.0/tests/test_user_cli_selective_v14.py +212 -0
- devagent_physical_engine-1.3.0/PKG-INFO +0 -1181
- devagent_physical_engine-1.3.0/README.md +0 -1140
- devagent_physical_engine-1.3.0/src/devagent_physical_engine/user_cli.py +0 -107
- devagent_physical_engine-1.3.0/src/devagent_physical_engine.egg-info/PKG-INFO +0 -1181
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/NOTICE +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/setup.cfg +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/agent/__init__.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/agent/compiler.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/agent/contracts.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/agent/coordinator.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/agent/critic.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/agent/evidence.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/agent/interpreter.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/agent/planner.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/agent/recovery.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/agent/routing.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/agent/runtime.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/agent/semantic.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/agent/structured.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ai_cli.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/cli.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/commercial.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/commercial_campaign.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/commercial_cli.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/commercial_importer.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/commercial_readiness.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/commercial_repository.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/continuous_clearance.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/doctor.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/engineering_agent.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/engineering_request.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/evidence_replay.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/execution.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/models.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/one_command.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/operating_envelope.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/optimization/__init__.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/optimization/benchmark.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/optimization/candidates.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/optimization/contracts.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/optimization/evaluator.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/optimization/evidence.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/optimization/experience.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/optimization/measured.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/optimization/optimizer.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/optimization/orchestrator.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/physical_campaign.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/physical_evidence.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/physical_motion.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/planning.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/pose_math.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/preexecution_contract.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/production_authority.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/production_grade.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/project.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/provider_adapters/__init__.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/provider_adapters/anthropic.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/provider_adapters/common.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/provider_adapters/factory.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/provider_adapters/gemini.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/provider_adapters/openai.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/provider_qualification.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/providers.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/qualification.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/qualification_cli.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/qualification_harness.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/reference_workcell.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/robot_platform.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/robots.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/__init__.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/acceptance.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/commands.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/continuous_clearance_probe.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/doctor.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/fk_pose.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/fk_probe.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/frame_alignment.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/gazebo_cli.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/gazebo_pose.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/gazebo_world.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/joint_state_probe.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/joint_state_recorder.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/measured_motion.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/moveit_joint_plan_probe.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/moveit_scene.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/moveit_task_planner.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/preexecution.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/qualification.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/qualification_v10.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/qualification_v11.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/qualification_v12.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/scene_probe.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/state_validity_probe.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/task_adapter.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/task_visualization.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/tf_probe.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/tool_scene.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/tool_scene_probe.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/trajectory.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/trajectory_action_probe.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/trajectory_tracking.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/ur5e.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/ur5e_adapter.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/ur5e_v10_adapter.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/workpiece_follow.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/workpiece_gazebo_follower.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/workpiece_scene.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/ros2/workpiece_scene_probe.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/setup_profile.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/sim_real_qualification.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/simulation.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/simulation_platform.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/tool_collision.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/trajectory_qualification.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/twin.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/twin_builder.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/twin_materialization.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/verification.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine/workpiece_lifecycle.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine.egg-info/dependency_links.txt +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine.egg-info/entry_points.txt +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine.egg-info/requires.txt +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/src/devagent_physical_engine.egg-info/top_level.txt +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_agent_core.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_agent_semantic_hardening.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_ai_cli.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_ai_cli_v07.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_commercial_importer_v1.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_commercial_readiness_v1.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_commercial_v1.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_continuous_clearance_v011.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_core.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_engineering_request_v07.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_evidence_replay_v12.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_evidence_trust_coverage_v12.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_evidence_trust_transport_v12.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_evidence_trust_v12.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_gazebo_cli_v0122.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_interpreter_profiles_v08.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_joint_state_probe_v0125.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_live_provider_qualification.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_measured_motion_v10.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_moveit_planning_diagnostics_v0125.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_moveit_scene_v0123.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_natural_language_agent_v07.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_one_command_hardening_v13.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_one_command_v13.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_openai_strict_schema_v0113.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_optimization_v05.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_physical_campaign_v09.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_physical_evidence_v09.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_physical_motion_v09.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_planning_fallback_v012.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_pose_math_v0125.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_preexecution_contract_v10.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_production_authority_v11.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_production_grade_coverage_v11.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_production_grade_v11.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_project_spine_v013.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_provider_and_qualification.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_qualification_cli_lifecycle_v06.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_qualification_harness_v06.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_readme_pypi.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_real_provider_adapters.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_reference_workcell_ros_frames_v0125.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_reference_workcell_v012.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_robot_platform_v08.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_ros2_production_receipts_v011.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_ros2_simulation.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_ros_trajectory_v09.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_setup_profile.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_sim_real_qualification_v011.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_simulation_platform_v08.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_tool_collision_v011.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_tool_scene_v0124.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_trajectory_action_probe_v0125.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_trajectory_qualification_v09.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_trajectory_tracking_v0125.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_twin_materialization_v10.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_twin_v08.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_ur5e_adapter_scopes_v09.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_ur5e_v10_adapter_scopes.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_v052_stabilization.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_v08_catalog_mapping_regression.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.4.0}/tests/test_workpiece_lifecycle_v011.py +0 -0
|
@@ -0,0 +1,798 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: devagent-physical-engine
|
|
3
|
+
Version: 1.4.0
|
|
4
|
+
Summary: Production-grade verification-first robotics evidence runtime with one-command customer intake, selective verification execution, 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,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 an ordinary customer engineering folder into a bounded verification workflow with immutable Twin lineage, deterministic requirement verdicts, measured evidence, replay inspection, FAT reporting, and selective retesting.
|
|
51
|
+
|
|
52
|
+
```text
|
|
53
|
+
customer files
|
|
54
|
+
↓
|
|
55
|
+
intake + SHA-256 inventory
|
|
56
|
+
↓
|
|
57
|
+
requirements + explicit engineering facts
|
|
58
|
+
↓
|
|
59
|
+
immutable Digital Twin revision
|
|
60
|
+
↓
|
|
61
|
+
deterministic verification plan
|
|
62
|
+
↓
|
|
63
|
+
measured evidence when a qualified execution path exists
|
|
64
|
+
↓
|
|
65
|
+
PASS / FAIL / NOT_TESTED
|
|
66
|
+
↓
|
|
67
|
+
FAT report + Evidence Viewer
|
|
68
|
+
↓
|
|
69
|
+
selective retest / replay / regression
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
> **AI proposes. Deterministic engines validate, compile, verify, measure, and gate promotion. OEM robot controllers, PLCs, safety PLCs, and certified safety systems remain authoritative.**
|
|
73
|
+
|
|
74
|
+
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?**
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## Quick start
|
|
79
|
+
|
|
80
|
+
Python 3.11+ is required.
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
python -m pip install --upgrade devagent-physical-engine==1.4.0
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Verify the package:
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
python -c "import devagent_physical_engine as d; print(d.__version__)"
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Expected:
|
|
93
|
+
|
|
94
|
+
```text
|
|
95
|
+
1.4.0
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Run the normal customer workflow:
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
devagent verify ./customer-project
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
Request simulation when the exact imported-Twin execution path is qualified:
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
devagent verify ./customer-project --simulate
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Open the Evidence Viewer and keep a human engineering terminal session:
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
devagent verify ./customer-project --simulate --open
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
For machine-readable CI output:
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
devagent verify ./customer-project --json
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
Simple Mode automatically handles project identity, customer-file inventory, supported XLSX requirement normalization, bounded Twin normalization, deterministic campaign generation, FAT generation, and evidence rendering. The user does not need to manually manage artifact IDs for the normal workflow.
|
|
123
|
+
|
|
124
|
+
Default locations:
|
|
125
|
+
|
|
126
|
+
```text
|
|
127
|
+
Evidence database: ~/.devagent/projects.db
|
|
128
|
+
Results: <customer-project>/devagent-results/
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
# Customer input
|
|
134
|
+
|
|
135
|
+
A customer folder can contain the engineering material the team already has:
|
|
136
|
+
|
|
137
|
+
```text
|
|
138
|
+
ACME_CNC_CELL_TEST/
|
|
139
|
+
├── project.yaml
|
|
140
|
+
├── requirements.xlsx
|
|
141
|
+
├── ur5e.urdf
|
|
142
|
+
├── robot.urdf.xacro
|
|
143
|
+
├── ur5e_robotiq.srdf
|
|
144
|
+
├── tcp.yaml
|
|
145
|
+
├── calibration.yaml
|
|
146
|
+
├── layout/
|
|
147
|
+
│ ├── cell_layout.yaml
|
|
148
|
+
│ └── meshes/
|
|
149
|
+
├── robot_program/
|
|
150
|
+
│ └── mission.yaml
|
|
151
|
+
├── safety_requirements.pdf
|
|
152
|
+
└── expected/
|
|
153
|
+
└── expected_findings.json
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
Important rule:
|
|
157
|
+
|
|
158
|
+
```text
|
|
159
|
+
file discovered != engineering fact proven
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
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.
|
|
163
|
+
|
|
164
|
+
The root `expected/` folder is test-oracle material and is never promoted as engineering authority. PDF documents can be inventoried for review, but arbitrary PDF prose is not silently converted into deterministic PASS evidence.
|
|
165
|
+
|
|
166
|
+
If critical information is missing or ambiguous, DevAgent creates:
|
|
167
|
+
|
|
168
|
+
```text
|
|
169
|
+
<customer-project>/devagent-results/QUESTIONS.md
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
Update the original customer engineering information and rerun the same command.
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
# What the terminal shows
|
|
177
|
+
|
|
178
|
+
Human Simple Mode keeps the terminal as the primary progress surface:
|
|
179
|
+
|
|
180
|
+
```text
|
|
181
|
+
[DevAgent + 0.00s] START RUNNING source=ACME_CNC_CELL_TEST
|
|
182
|
+
[DevAgent + 0.00s] INTAKE RUNNING scanning and classifying customer engineering files
|
|
183
|
+
[DevAgent + 0.42s] REQUIREMENTS READY customer requirements normalized
|
|
184
|
+
[DevAgent + 0.61s] TWIN NORMALIZED customer Twin draft normalized
|
|
185
|
+
[DevAgent + 0.85s] PROJECT READY project_id=acme-cell
|
|
186
|
+
[DevAgent + 0.91s] PLAN READY artifact=...
|
|
187
|
+
[DevAgent + 1.02s] SIMULATION BLOCKED imported_customer_twin_execution_adapter_not_yet_qualified
|
|
188
|
+
[DevAgent + 1.11s] CAMPAIGN COMPLETE artifact=...
|
|
189
|
+
[DevAgent + 1.18s] FAT COMPLETE artifact=...
|
|
190
|
+
[DevAgent + 1.24s] EVIDENCE COMPLETE bundle=...
|
|
191
|
+
[DevAgent + 1.25s] COMPLETE DONE state=verification_incomplete release_ready=False real_execution_allowed=False
|
|
192
|
+
[DevAgent + 1.25s] REPORT OPENING new tab requested; terminal remains active
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
Progress is also persisted to:
|
|
196
|
+
|
|
197
|
+
```text
|
|
198
|
+
<customer-project>/devagent-results/RUN.log
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
If the browser chooses to take focus, the DevAgent process still remains alive in the terminal. Return to the terminal and continue with the interactive session.
|
|
202
|
+
|
|
203
|
+
Use `--no-progress` to suppress human progress. `--json` remains machine-clean and never enters the interactive prompt.
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
# Interactive engineering session
|
|
208
|
+
|
|
209
|
+
With `--open` in a real TTY, or with explicit `--interactive`, DevAgent keeps a bounded engineering prompt after the full verification run:
|
|
210
|
+
|
|
211
|
+
```text
|
|
212
|
+
Interactive engineering session
|
|
213
|
+
Type 'help' for commands.
|
|
214
|
+
|
|
215
|
+
devagent>
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
Useful commands:
|
|
219
|
+
|
|
220
|
+
```text
|
|
221
|
+
status
|
|
222
|
+
tests
|
|
223
|
+
test SELECTOR
|
|
224
|
+
simulate [SELECTOR]
|
|
225
|
+
rerun [SELECTOR]
|
|
226
|
+
rerun failed
|
|
227
|
+
rerun blocked
|
|
228
|
+
rerun affected
|
|
229
|
+
replay
|
|
230
|
+
report
|
|
231
|
+
log
|
|
232
|
+
help
|
|
233
|
+
quit
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
Examples:
|
|
237
|
+
|
|
238
|
+
```text
|
|
239
|
+
devagent> tests
|
|
240
|
+
devagent> test REQ-CAL-001
|
|
241
|
+
devagent> test TEST-CAL-001
|
|
242
|
+
devagent> simulate REQ-FUN-001
|
|
243
|
+
devagent> rerun failed
|
|
244
|
+
devagent> rerun blocked
|
|
245
|
+
devagent> rerun affected
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
Use `--no-interactive` when `--open` should open the report but the CLI should exit afterward.
|
|
249
|
+
|
|
250
|
+
---
|
|
251
|
+
|
|
252
|
+
# v1.4 selective verification
|
|
253
|
+
|
|
254
|
+
Selective verification reduces unnecessary FAT/retest work without changing the authority model.
|
|
255
|
+
|
|
256
|
+
## Stable Requirement → Test identity
|
|
257
|
+
|
|
258
|
+
DevAgent derives a stable deterministic test identity from a requirement identity:
|
|
259
|
+
|
|
260
|
+
```text
|
|
261
|
+
REQ-FUN-001 → TEST-FUN-001
|
|
262
|
+
REQ-CAL-001 → TEST-CAL-001
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
The mapping identifies the verification criterion. It does **not** by itself authorize a physical simulation case.
|
|
266
|
+
|
|
267
|
+
## `test SELECTOR`
|
|
268
|
+
|
|
269
|
+
Example:
|
|
270
|
+
|
|
271
|
+
```text
|
|
272
|
+
devagent> test REQ-CAL-001
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
or:
|
|
276
|
+
|
|
277
|
+
```text
|
|
278
|
+
devagent> test TEST-CAL-001
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
`test` re-evaluates only the selected requirement/test scope using the exact Twin and currently available immutable evidence. It does not launch a robot or simulator.
|
|
282
|
+
|
|
283
|
+
The result is recorded separately as:
|
|
284
|
+
|
|
285
|
+
```text
|
|
286
|
+
selective_verification_run
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
A selective artifact includes:
|
|
290
|
+
|
|
291
|
+
```text
|
|
292
|
+
requested selector
|
|
293
|
+
selector kind
|
|
294
|
+
parent campaign ID/hash
|
|
295
|
+
Twin revision/hash
|
|
296
|
+
resolved requirement IDs
|
|
297
|
+
resolved test IDs
|
|
298
|
+
verification contracts
|
|
299
|
+
dependencies
|
|
300
|
+
measurement/evidence references
|
|
301
|
+
verdicts
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
Every selective run explicitly preserves:
|
|
305
|
+
|
|
306
|
+
```text
|
|
307
|
+
full_campaign_executed = false
|
|
308
|
+
release_ready = false
|
|
309
|
+
real_execution_allowed = false
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
A selective PASS is therefore not silently promoted into a full FAT PASS.
|
|
313
|
+
|
|
314
|
+
## `simulate SELECTOR`
|
|
315
|
+
|
|
316
|
+
Example:
|
|
317
|
+
|
|
318
|
+
```text
|
|
319
|
+
devagent> simulate REQ-CAL-001
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
Selective physical execution is stricter than deterministic `test`.
|
|
323
|
+
|
|
324
|
+
The required chain is:
|
|
325
|
+
|
|
326
|
+
```text
|
|
327
|
+
Requirement
|
|
328
|
+
↓
|
|
329
|
+
stable Test contract
|
|
330
|
+
↓
|
|
331
|
+
explicit verification-test mapping
|
|
332
|
+
↓
|
|
333
|
+
exact physical case ID(s)
|
|
334
|
+
↓
|
|
335
|
+
qualified selective execution adapter
|
|
336
|
+
↓
|
|
337
|
+
measured simulation artifact
|
|
338
|
+
↓
|
|
339
|
+
selective verdict
|
|
340
|
+
```
|
|
341
|
+
|
|
342
|
+
DevAgent never guesses a physical case from requirement prose. Requirement/Test → physical case mapping must be explicit engineering provenance.
|
|
343
|
+
|
|
344
|
+
If no mapping exists:
|
|
345
|
+
|
|
346
|
+
```text
|
|
347
|
+
state = blocked
|
|
348
|
+
reason = requirement_has_no_qualified_physical_test_mapping
|
|
349
|
+
execution_performed = false
|
|
350
|
+
```
|
|
351
|
+
|
|
352
|
+
If the mapping exists but the selective executor is not qualified:
|
|
353
|
+
|
|
354
|
+
```text
|
|
355
|
+
state = blocked
|
|
356
|
+
reason = selective_execution_adapter_not_qualified
|
|
357
|
+
execution_performed = false
|
|
358
|
+
```
|
|
359
|
+
|
|
360
|
+
Current v1.4 qualification intentionally supports one explicitly mapped physical case per selective execution. Multiple mapped cases remain fail-closed until aggregation semantics are separately qualified:
|
|
361
|
+
|
|
362
|
+
```text
|
|
363
|
+
selective_multi_case_aggregation_not_yet_qualified
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
## Explicit physical test mapping
|
|
367
|
+
|
|
368
|
+
Expert integrations can use the public API:
|
|
369
|
+
|
|
370
|
+
```python
|
|
371
|
+
from devagent_physical_engine import VerificationTestMappingRecorder
|
|
372
|
+
|
|
373
|
+
mapping = VerificationTestMappingRecorder(repository).record(
|
|
374
|
+
project_id="acme-cell",
|
|
375
|
+
revision_id="twin-r0001",
|
|
376
|
+
verification_plan_artifact_id="art-plan",
|
|
377
|
+
bindings={
|
|
378
|
+
"REQ-CAL-001": ["case-0001"],
|
|
379
|
+
},
|
|
380
|
+
source_ref="engineering-map.yaml",
|
|
381
|
+
)
|
|
382
|
+
```
|
|
383
|
+
|
|
384
|
+
The recorder validates that the requirement is a physical requirement, the plan belongs to the exact Twin revision, and every case ID exists in that immutable verification plan.
|
|
385
|
+
|
|
386
|
+
The mapping itself has:
|
|
387
|
+
|
|
388
|
+
```text
|
|
389
|
+
execution_authority = false
|
|
390
|
+
physical_qualification = false
|
|
391
|
+
site_qualification = false
|
|
392
|
+
real_execution_allowed = false
|
|
393
|
+
```
|
|
394
|
+
|
|
395
|
+
## Selectors
|
|
396
|
+
|
|
397
|
+
Supported selectors are:
|
|
398
|
+
|
|
399
|
+
```text
|
|
400
|
+
REQ-... one requirement
|
|
401
|
+
TEST-... one deterministic test identity
|
|
402
|
+
failed requirements that failed the parent campaign
|
|
403
|
+
blocked NOT_TESTED requirements plus currently blocked selective scope
|
|
404
|
+
affected requirements selected by latest exact-Twin change-impact evidence
|
|
405
|
+
all all requirements in the parent campaign
|
|
406
|
+
```
|
|
407
|
+
|
|
408
|
+
For example:
|
|
409
|
+
|
|
410
|
+
```text
|
|
411
|
+
devagent> rerun failed
|
|
412
|
+
```
|
|
413
|
+
|
|
414
|
+
re-evaluates only the requirements that failed instead of rerunning the entire campaign.
|
|
415
|
+
|
|
416
|
+
```text
|
|
417
|
+
devagent> rerun affected
|
|
418
|
+
```
|
|
419
|
+
|
|
420
|
+
uses change-impact evidence to retest only affected requirements.
|
|
421
|
+
|
|
422
|
+
A selector is resolved deterministically. Unknown selectors fail closed.
|
|
423
|
+
|
|
424
|
+
---
|
|
425
|
+
|
|
426
|
+
# Full simulation vs selective simulation vs replay
|
|
427
|
+
|
|
428
|
+
These operations are intentionally different:
|
|
429
|
+
|
|
430
|
+
| Command | Meaning |
|
|
431
|
+
| --- | --- |
|
|
432
|
+
| `simulate` | rerun the full one-command verification with simulation requested |
|
|
433
|
+
| `simulate REQ-X` | request only the explicitly mapped physical selective test |
|
|
434
|
+
| `test REQ-X` | re-evaluate one requirement/test using existing immutable evidence; no simulation |
|
|
435
|
+
| `replay` | reconstruct/verify persisted case identity; no new simulation |
|
|
436
|
+
| `rerun failed` | retest failed requirement subset |
|
|
437
|
+
| `rerun affected` | retest change-impact-selected requirement subset |
|
|
438
|
+
|
|
439
|
+
Replay never commands Gazebo, MoveIt, a robot, PLC, or safety PLC.
|
|
440
|
+
|
|
441
|
+
Selective verification never upgrades real-execution authority.
|
|
442
|
+
|
|
443
|
+
---
|
|
444
|
+
|
|
445
|
+
# Results directory
|
|
446
|
+
|
|
447
|
+
A normal project can produce:
|
|
448
|
+
|
|
449
|
+
```text
|
|
450
|
+
customer-project/
|
|
451
|
+
└── devagent-results/
|
|
452
|
+
├── RUN.log
|
|
453
|
+
├── SUMMARY.json
|
|
454
|
+
├── INTAKE.json
|
|
455
|
+
├── QUESTIONS.md
|
|
456
|
+
├── normalized/
|
|
457
|
+
│ ├── requirements.csv
|
|
458
|
+
│ └── devagent-twin.yaml
|
|
459
|
+
├── FAT_REPORT.html
|
|
460
|
+
└── EVIDENCE.html
|
|
461
|
+
```
|
|
462
|
+
|
|
463
|
+
`EVIDENCE.html` is a read-only professional evidence viewer. It shows requirement verdicts, observed/expected values, blockers, artifact IDs/hashes, and Twin revision hashes. The viewer can be refreshed after selective runs so the new immutable selective artifacts are inspectable.
|
|
464
|
+
|
|
465
|
+
`RUN.log` is the human progress/debug trace. It does not replace immutable engineering evidence.
|
|
466
|
+
|
|
467
|
+
---
|
|
468
|
+
|
|
469
|
+
# Requirement verdict model
|
|
470
|
+
|
|
471
|
+
Supported deterministic structural/Twin checks include:
|
|
472
|
+
|
|
473
|
+
```text
|
|
474
|
+
planning_allowed
|
|
475
|
+
physics_allowed
|
|
476
|
+
entity_present
|
|
477
|
+
validation_issue_absent
|
|
478
|
+
twin_state
|
|
479
|
+
```
|
|
480
|
+
|
|
481
|
+
Measured physical checks include:
|
|
482
|
+
|
|
483
|
+
```text
|
|
484
|
+
cycle_time_max_s
|
|
485
|
+
minimum_clearance_m
|
|
486
|
+
final_tcp_error_max_m
|
|
487
|
+
max_tracking_error_rad
|
|
488
|
+
collision_free
|
|
489
|
+
physical_completed
|
|
490
|
+
```
|
|
491
|
+
|
|
492
|
+
Verdicts remain bounded:
|
|
493
|
+
|
|
494
|
+
```text
|
|
495
|
+
PASS
|
|
496
|
+
FAIL
|
|
497
|
+
NOT_TESTED
|
|
498
|
+
```
|
|
499
|
+
|
|
500
|
+
A requirement requiring measured physical evidence cannot PASS from prose, a CAD filename, a generated plan, or AI interpretation.
|
|
501
|
+
|
|
502
|
+
Example:
|
|
503
|
+
|
|
504
|
+
```text
|
|
505
|
+
Requirement: cycle time <= 8.0 s
|
|
506
|
+
Measurement available: no
|
|
507
|
+
Verdict: NOT_TESTED
|
|
508
|
+
```
|
|
509
|
+
|
|
510
|
+
With exact-Twin measured evidence:
|
|
511
|
+
|
|
512
|
+
```text
|
|
513
|
+
Requirement: cycle time <= 8.0 s
|
|
514
|
+
Observed: 7.42 s
|
|
515
|
+
Threshold: 8.0 s
|
|
516
|
+
Verdict: PASS
|
|
517
|
+
Evidence: exact measurement artifact + Twin revision/hash
|
|
518
|
+
```
|
|
519
|
+
|
|
520
|
+
---
|
|
521
|
+
|
|
522
|
+
# Simple Mode exit codes
|
|
523
|
+
|
|
524
|
+
| Exit | Meaning |
|
|
525
|
+
| ---: | --- |
|
|
526
|
+
| `0` | bounded full verification is release-ready |
|
|
527
|
+
| `10` | customer input or operational contract failure |
|
|
528
|
+
| `30` | more engineering information is required |
|
|
529
|
+
| `31` | full simulation was requested but the exact execution path is blocked/unqualified |
|
|
530
|
+
| `32` | verification completed but full release readiness is false |
|
|
531
|
+
|
|
532
|
+
Selective results are represented by immutable artifacts inside the interactive session; they do not rewrite the full-run exit contract.
|
|
533
|
+
|
|
534
|
+
---
|
|
535
|
+
|
|
536
|
+
# Expert Mode
|
|
537
|
+
|
|
538
|
+
Installed CLIs:
|
|
539
|
+
|
|
540
|
+
```text
|
|
541
|
+
devagent one-command customer verification + interactive selective retesting
|
|
542
|
+
devagent-commercial expert commercial/evidence workflow
|
|
543
|
+
devagent-physical deterministic core + ROS/qualification tools
|
|
544
|
+
devagent-physical-ai optional provider-backed engineering front end
|
|
545
|
+
```
|
|
546
|
+
|
|
547
|
+
Typical Expert Mode flow:
|
|
548
|
+
|
|
549
|
+
```text
|
|
550
|
+
project identity
|
|
551
|
+
↓
|
|
552
|
+
customer Twin import
|
|
553
|
+
↓
|
|
554
|
+
requirements
|
|
555
|
+
↓
|
|
556
|
+
verification plan
|
|
557
|
+
↓
|
|
558
|
+
measured evidence
|
|
559
|
+
↓
|
|
560
|
+
commercial campaign
|
|
561
|
+
↓
|
|
562
|
+
FAT report
|
|
563
|
+
↓
|
|
564
|
+
Evidence Bundle
|
|
565
|
+
↓
|
|
566
|
+
replay / change impact / regression
|
|
567
|
+
```
|
|
568
|
+
|
|
569
|
+
Example commands:
|
|
570
|
+
|
|
571
|
+
```bash
|
|
572
|
+
devagent-commercial init warehouse-cnc-04 \
|
|
573
|
+
--name "Warehouse CNC Loading Cell 04" \
|
|
574
|
+
--site atl-01 \
|
|
575
|
+
--workcell cnc-04
|
|
576
|
+
|
|
577
|
+
devagent-commercial import-twin warehouse-cnc-04 ./customer-cell
|
|
578
|
+
|
|
579
|
+
devagent-commercial requirements warehouse-cnc-04 \
|
|
580
|
+
examples/commercial/requirements-production.csv
|
|
581
|
+
|
|
582
|
+
devagent-commercial verification-plan warehouse-cnc-04 \
|
|
583
|
+
examples/commercial/verification-plan.yaml \
|
|
584
|
+
--revision twin-r0001
|
|
585
|
+
|
|
586
|
+
devagent-commercial record-measurement warehouse-cnc-04 \
|
|
587
|
+
physical-measurement.json \
|
|
588
|
+
--revision twin-r0001
|
|
589
|
+
|
|
590
|
+
devagent-commercial campaign warehouse-cnc-04 \
|
|
591
|
+
examples/commercial/requirements-production.csv \
|
|
592
|
+
--revision twin-r0001 \
|
|
593
|
+
--measurement ARTIFACT_ID
|
|
594
|
+
|
|
595
|
+
devagent-commercial fat-report warehouse-cnc-04 \
|
|
596
|
+
CAMPAIGN_ARTIFACT \
|
|
597
|
+
--output FAT_REPORT.html
|
|
598
|
+
|
|
599
|
+
devagent-commercial evidence-bundle warehouse-cnc-04 CAMPAIGN_ARTIFACT
|
|
600
|
+
|
|
601
|
+
devagent-commercial evidence-graph warehouse-cnc-04 > evidence-graph.json
|
|
602
|
+
|
|
603
|
+
devagent-commercial evidence-viewer warehouse-cnc-04 \
|
|
604
|
+
--output DEVAGENT_EVIDENCE.html
|
|
605
|
+
|
|
606
|
+
devagent-commercial replay warehouse-cnc-04 EVIDENCE_BUNDLE \
|
|
607
|
+
--qualification-root ~/.devagent/physical-qualification \
|
|
608
|
+
--output replay-manifest.json
|
|
609
|
+
```
|
|
610
|
+
|
|
611
|
+
Replay reconstruction reports `execution_performed=false` and never substitutes for a new simulation run.
|
|
612
|
+
|
|
613
|
+
---
|
|
614
|
+
|
|
615
|
+
# Physical simulation setup
|
|
616
|
+
|
|
617
|
+
`pip install` does not install ROS 2, Gazebo, MoveIt, OEM drivers, or privileged operating-system packages.
|
|
618
|
+
|
|
619
|
+
Reference stack:
|
|
620
|
+
|
|
621
|
+
```text
|
|
622
|
+
Ubuntu 24.04
|
|
623
|
+
ROS 2 Jazzy
|
|
624
|
+
Gazebo Harmonic
|
|
625
|
+
gz_ros2_control
|
|
626
|
+
Universal Robots ROS 2 driver
|
|
627
|
+
ur_simulation_gz
|
|
628
|
+
MoveIt 2
|
|
629
|
+
```
|
|
630
|
+
|
|
631
|
+
Preview setup:
|
|
632
|
+
|
|
633
|
+
```bash
|
|
634
|
+
devagent-physical setup --profile ur5e-sim --dry-run
|
|
635
|
+
```
|
|
636
|
+
|
|
637
|
+
Apply explicitly:
|
|
638
|
+
|
|
639
|
+
```bash
|
|
640
|
+
devagent-physical setup --profile ur5e-sim --yes
|
|
641
|
+
```
|
|
642
|
+
|
|
643
|
+
Check runtime:
|
|
644
|
+
|
|
645
|
+
```bash
|
|
646
|
+
devagent-physical ros doctor
|
|
647
|
+
```
|
|
648
|
+
|
|
649
|
+
Qualify trajectory runtime:
|
|
650
|
+
|
|
651
|
+
```bash
|
|
652
|
+
devagent-physical ros qualify-trajectory-runtime
|
|
653
|
+
```
|
|
654
|
+
|
|
655
|
+
Hosted Python CI does not prove a graphical Gazebo runtime, `move_group`, TF, controller actions, OEM drivers, or an arbitrary customer cell. Physical qualification must run on the exact workstation/adapter stack.
|
|
656
|
+
|
|
657
|
+
---
|
|
658
|
+
|
|
659
|
+
# Optional AI providers
|
|
660
|
+
|
|
661
|
+
AI is optional and remains outside deterministic authority.
|
|
662
|
+
|
|
663
|
+
```bash
|
|
664
|
+
python -m pip install "devagent-physical-engine[openai]"
|
|
665
|
+
python -m pip install "devagent-physical-engine[anthropic]"
|
|
666
|
+
python -m pip install "devagent-physical-engine[gemini]"
|
|
667
|
+
```
|
|
668
|
+
|
|
669
|
+
Or:
|
|
670
|
+
|
|
671
|
+
```bash
|
|
672
|
+
python -m pip install "devagent-physical-engine[ai]"
|
|
673
|
+
```
|
|
674
|
+
|
|
675
|
+
Typical credentials:
|
|
676
|
+
|
|
677
|
+
```bash
|
|
678
|
+
export OPENAI_API_KEY="..."
|
|
679
|
+
export ANTHROPIC_API_KEY="..."
|
|
680
|
+
export GEMINI_API_KEY="..."
|
|
681
|
+
```
|
|
682
|
+
|
|
683
|
+
Provider-backed engineering interpretation can propose intent and mappings. It cannot grant deterministic safety, physical qualification, site qualification, or real-execution authority.
|
|
684
|
+
|
|
685
|
+
---
|
|
686
|
+
|
|
687
|
+
# Evidence and authority model
|
|
688
|
+
|
|
689
|
+
DevAgent separates:
|
|
690
|
+
|
|
691
|
+
```text
|
|
692
|
+
requirement
|
|
693
|
+
verification intent
|
|
694
|
+
physical execution case
|
|
695
|
+
measured evidence
|
|
696
|
+
verdict
|
|
697
|
+
authority/readiness
|
|
698
|
+
```
|
|
699
|
+
|
|
700
|
+
A plan proves that a test was planned. A mapping proves which case an engineer bound to a physical requirement. A measurement proves only what was actually measured. A replay proves persisted identity can be reconstructed. None of those alone equals site commissioning or functional-safety certification.
|
|
701
|
+
|
|
702
|
+
Current hard boundary remains:
|
|
703
|
+
|
|
704
|
+
```text
|
|
705
|
+
site_qualification = false
|
|
706
|
+
real_execution_allowed = false
|
|
707
|
+
```
|
|
708
|
+
|
|
709
|
+
Physical qualification is true only when separately qualified evidence explicitly establishes it.
|
|
710
|
+
|
|
711
|
+
The operating principle remains:
|
|
712
|
+
|
|
713
|
+
```text
|
|
714
|
+
Agents propose.
|
|
715
|
+
Deterministic engines compile and verify.
|
|
716
|
+
Existing certified controllers execute.
|
|
717
|
+
```
|
|
718
|
+
|
|
719
|
+
---
|
|
720
|
+
|
|
721
|
+
# Project status
|
|
722
|
+
|
|
723
|
+
**v1.4.0 — Production/Stable software workflow**
|
|
724
|
+
|
|
725
|
+
v1.4.0 adds selective verification execution while preserving the existing fail-closed authority model.
|
|
726
|
+
|
|
727
|
+
Production-oriented software capabilities include:
|
|
728
|
+
|
|
729
|
+
```text
|
|
730
|
+
one-command customer intake
|
|
731
|
+
XLSX requirement normalization
|
|
732
|
+
immutable project/Twin lineage
|
|
733
|
+
deterministic full campaigns
|
|
734
|
+
measured evidence binding
|
|
735
|
+
professional FAT/Evidence Viewer
|
|
736
|
+
terminal progress + RUN.log
|
|
737
|
+
interactive engineering session
|
|
738
|
+
Requirement → Test selectors
|
|
739
|
+
selective deterministic retest
|
|
740
|
+
selective physical execution contract
|
|
741
|
+
explicit Requirement/Test → Case mapping
|
|
742
|
+
failed / blocked / affected retest selectors
|
|
743
|
+
Evidence Bundle + replay
|
|
744
|
+
change impact + regression
|
|
745
|
+
provider-neutral optional AI front end
|
|
746
|
+
```
|
|
747
|
+
|
|
748
|
+
Quality gates include Python 3.11/3.12/3.13 regression, package clean-install, dependency audit, global branch coverage, One-Command coverage, **Selective Verification coverage**, Production Authority coverage, and Evidence Trust/Replay coverage.
|
|
749
|
+
|
|
750
|
+
Production/Stable describes the bounded software workflow. It does not claim arbitrary customer cells are physically qualified, site-qualified, or safe for autonomous real execution.
|
|
751
|
+
|
|
752
|
+
---
|
|
753
|
+
|
|
754
|
+
# Documentation
|
|
755
|
+
|
|
756
|
+
One-command verification:
|
|
757
|
+
|
|
758
|
+
https://github.com/tomha85/devagent-physical-engine/blob/main/docs/ONE_COMMAND_VERIFY_V13.md
|
|
759
|
+
|
|
760
|
+
Evidence Trust / replay / viewer:
|
|
761
|
+
|
|
762
|
+
https://github.com/tomha85/devagent-physical-engine/blob/main/docs/EVIDENCE_TRUST_V12.md
|
|
763
|
+
|
|
764
|
+
Measured physical runtime:
|
|
765
|
+
|
|
766
|
+
https://github.com/tomha85/devagent-physical-engine/blob/main/docs/MEASURED_PHYSICAL_RUNTIME.md
|
|
767
|
+
|
|
768
|
+
Commercial project spine:
|
|
769
|
+
|
|
770
|
+
https://github.com/tomha85/devagent-physical-engine/blob/main/docs/COMMERCIAL_PROJECT_SPINE.md
|
|
771
|
+
|
|
772
|
+
Commercial workflow:
|
|
773
|
+
|
|
774
|
+
https://github.com/tomha85/devagent-physical-engine/blob/main/docs/COMMERCIAL_V1.md
|
|
775
|
+
|
|
776
|
+
Architecture:
|
|
777
|
+
|
|
778
|
+
https://github.com/tomha85/devagent-physical-engine/blob/main/docs/ARCHITECTURE.md
|
|
779
|
+
|
|
780
|
+
Canonical Twin runtime:
|
|
781
|
+
|
|
782
|
+
https://github.com/tomha85/devagent-physical-engine/blob/main/docs/CANONICAL_TWIN_RUNTIME.md
|
|
783
|
+
|
|
784
|
+
Laptop acceptance:
|
|
785
|
+
|
|
786
|
+
https://github.com/tomha85/devagent-physical-engine/blob/main/docs/LAPTOP_ACCEPTANCE.md
|
|
787
|
+
|
|
788
|
+
---
|
|
789
|
+
|
|
790
|
+
# Ownership
|
|
791
|
+
|
|
792
|
+
DevAgent Smart Physical Engine
|
|
793
|
+
Copyright © 2026 Tom Ha
|
|
794
|
+
Original creator: Tom Ha
|
|
795
|
+
Original project: https://github.com/tomha85/devagent-physical-engine
|
|
796
|
+
All rights reserved.
|
|
797
|
+
|
|
798
|
+
See repository `LICENSE`, `NOTICE`, and `COPYRIGHT` for complete ownership and usage terms.
|