devagent-physical-engine 1.3.0__tar.gz → 1.3.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {devagent_physical_engine-1.3.0/src/devagent_physical_engine.egg-info → devagent_physical_engine-1.3.1}/PKG-INFO +125 -16
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/README.md +124 -15
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/pyproject.toml +1 -1
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/__init__.py +1 -1
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/evidence_trust.py +6 -6
- devagent_physical_engine-1.3.1/src/devagent_physical_engine/user_cli.py +589 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1/src/devagent_physical_engine.egg-info}/PKG-INFO +125 -16
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine.egg-info/SOURCES.txt +3 -0
- devagent_physical_engine-1.3.1/tests/test_evidence_viewer_palette_v130.py +21 -0
- devagent_physical_engine-1.3.1/tests/test_user_cli_interactive_v131.py +237 -0
- devagent_physical_engine-1.3.1/tests/test_user_cli_progress_v131.py +148 -0
- devagent_physical_engine-1.3.0/src/devagent_physical_engine/user_cli.py +0 -107
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/NOTICE +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/setup.cfg +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/agent/__init__.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/agent/compiler.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/agent/contracts.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/agent/coordinator.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/agent/critic.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/agent/evidence.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/agent/interpreter.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/agent/planner.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/agent/recovery.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/agent/routing.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/agent/runtime.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/agent/semantic.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/agent/structured.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ai_cli.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/cli.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/commercial.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/commercial_campaign.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/commercial_cli.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/commercial_importer.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/commercial_readiness.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/commercial_repository.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/continuous_clearance.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/doctor.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/engineering_agent.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/engineering_request.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/evidence_replay.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/execution.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/models.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/one_command.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/operating_envelope.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/optimization/__init__.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/optimization/benchmark.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/optimization/candidates.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/optimization/contracts.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/optimization/evaluator.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/optimization/evidence.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/optimization/experience.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/optimization/measured.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/optimization/optimizer.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/optimization/orchestrator.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/physical_campaign.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/physical_evidence.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/physical_motion.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/planning.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/pose_math.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/preexecution_contract.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/production_authority.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/production_grade.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/project.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/provider_adapters/__init__.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/provider_adapters/anthropic.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/provider_adapters/common.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/provider_adapters/factory.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/provider_adapters/gemini.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/provider_adapters/openai.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/provider_qualification.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/providers.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/qualification.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/qualification_cli.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/qualification_harness.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/reference_workcell.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/robot_platform.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/robots.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/__init__.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/acceptance.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/commands.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/continuous_clearance_probe.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/doctor.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/fk_pose.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/fk_probe.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/frame_alignment.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/gazebo_cli.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/gazebo_pose.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/gazebo_world.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/joint_state_probe.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/joint_state_recorder.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/measured_motion.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/moveit_joint_plan_probe.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/moveit_scene.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/moveit_task_planner.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/preexecution.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/qualification.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/qualification_v10.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/qualification_v11.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/qualification_v12.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/scene_probe.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/state_validity_probe.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/task_adapter.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/task_visualization.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/tf_probe.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/tool_scene.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/tool_scene_probe.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/trajectory.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/trajectory_action_probe.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/trajectory_tracking.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/ur5e.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/ur5e_adapter.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/ur5e_v10_adapter.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/workpiece_follow.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/workpiece_gazebo_follower.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/workpiece_scene.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/ros2/workpiece_scene_probe.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/setup_profile.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/sim_real_qualification.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/simulation.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/simulation_platform.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/tool_collision.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/trajectory_qualification.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/twin.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/twin_builder.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/twin_materialization.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/verification.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine/workpiece_lifecycle.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine.egg-info/dependency_links.txt +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine.egg-info/entry_points.txt +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine.egg-info/requires.txt +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/src/devagent_physical_engine.egg-info/top_level.txt +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_agent_core.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_agent_semantic_hardening.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_ai_cli.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_ai_cli_v07.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_commercial_importer_v1.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_commercial_readiness_v1.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_commercial_v1.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_continuous_clearance_v011.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_core.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_engineering_request_v07.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_evidence_replay_v12.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_evidence_trust_coverage_v12.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_evidence_trust_transport_v12.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_evidence_trust_v12.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_gazebo_cli_v0122.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_interpreter_profiles_v08.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_joint_state_probe_v0125.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_live_provider_qualification.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_measured_motion_v10.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_moveit_planning_diagnostics_v0125.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_moveit_scene_v0123.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_natural_language_agent_v07.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_one_command_hardening_v13.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_one_command_v13.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_openai_strict_schema_v0113.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_optimization_v05.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_physical_campaign_v09.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_physical_evidence_v09.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_physical_motion_v09.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_planning_fallback_v012.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_pose_math_v0125.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_preexecution_contract_v10.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_production_authority_v11.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_production_grade_coverage_v11.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_production_grade_v11.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_project_spine_v013.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_provider_and_qualification.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_qualification_cli_lifecycle_v06.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_qualification_harness_v06.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_readme_pypi.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_real_provider_adapters.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_reference_workcell_ros_frames_v0125.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_reference_workcell_v012.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_robot_platform_v08.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_ros2_production_receipts_v011.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_ros2_simulation.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_ros_trajectory_v09.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_setup_profile.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_sim_real_qualification_v011.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_simulation_platform_v08.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_tool_collision_v011.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_tool_scene_v0124.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_trajectory_action_probe_v0125.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_trajectory_qualification_v09.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_trajectory_tracking_v0125.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_twin_materialization_v10.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_twin_v08.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_ur5e_adapter_scopes_v09.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_ur5e_v10_adapter_scopes.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_v052_stabilization.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_v08_catalog_mapping_regression.py +0 -0
- {devagent_physical_engine-1.3.0 → devagent_physical_engine-1.3.1}/tests/test_workpiece_lifecycle_v011.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: devagent-physical-engine
|
|
3
|
-
Version: 1.3.
|
|
3
|
+
Version: 1.3.1
|
|
4
4
|
Summary: Production-grade verification-first robotics evidence runtime with one-command customer intake, deterministic Twin lineage, measured physical verification, replay inspection, regression, and FAT evidence.
|
|
5
5
|
Author: Tom Ha
|
|
6
6
|
License: All Rights Reserved
|
|
@@ -82,7 +82,7 @@ Python 3.11+ is required.
|
|
|
82
82
|
Install:
|
|
83
83
|
|
|
84
84
|
```bash
|
|
85
|
-
python -m pip install --upgrade devagent-physical-engine==1.3.
|
|
85
|
+
python -m pip install --upgrade devagent-physical-engine==1.3.1
|
|
86
86
|
```
|
|
87
87
|
|
|
88
88
|
Verify the installed version:
|
|
@@ -94,7 +94,7 @@ python -c "import devagent_physical_engine as d; print(d.__version__)"
|
|
|
94
94
|
Expected:
|
|
95
95
|
|
|
96
96
|
```text
|
|
97
|
-
1.3.
|
|
97
|
+
1.3.1
|
|
98
98
|
```
|
|
99
99
|
|
|
100
100
|
Run DevAgent on the customer project folder:
|
|
@@ -107,18 +107,20 @@ That is the normal starting point.
|
|
|
107
107
|
|
|
108
108
|
You do **not** need to manually initialize a DevAgent project, choose artifact IDs, convert an XLSX sheet to CSV, or understand the internal evidence database before using Simple Mode.
|
|
109
109
|
|
|
110
|
-
|
|
110
|
+
Request physical simulation when an exact qualified execution path exists:
|
|
111
111
|
|
|
112
112
|
```bash
|
|
113
113
|
devagent verify ./customer-project --simulate
|
|
114
114
|
```
|
|
115
115
|
|
|
116
|
-
|
|
116
|
+
Open the generated Evidence Viewer after verification:
|
|
117
117
|
|
|
118
118
|
```bash
|
|
119
119
|
devagent verify ./customer-project --simulate --open
|
|
120
120
|
```
|
|
121
121
|
|
|
122
|
+
`--open` requests the report in a **new browser tab** after the terminal verification summary is complete. DevAgent requests that the browser not raise itself over the terminal, then the CLI returns so the same terminal can be used for replay and inspection commands. Desktop/browser policy may still choose to focus the new tab.
|
|
123
|
+
|
|
122
124
|
For machine-readable output:
|
|
123
125
|
|
|
124
126
|
```bash
|
|
@@ -143,6 +145,59 @@ Results: <customer-project>/devagent-results/
|
|
|
143
145
|
|
|
144
146
|
---
|
|
145
147
|
|
|
148
|
+
# What the user sees in the terminal
|
|
149
|
+
|
|
150
|
+
Human Simple Mode keeps the terminal as the primary run surface. Example:
|
|
151
|
+
|
|
152
|
+
```text
|
|
153
|
+
[DevAgent + 0.00s] START RUNNING source=ACME_CNC_CELL_TEST
|
|
154
|
+
[DevAgent + 0.00s] INTAKE RUNNING scanning and classifying customer engineering files
|
|
155
|
+
[DevAgent + 0.42s] REQUIREMENTS READY customer requirements normalized
|
|
156
|
+
[DevAgent + 0.61s] TWIN NORMALIZED customer Twin draft normalized
|
|
157
|
+
[DevAgent + 0.85s] PROJECT READY project_id=acme-cell
|
|
158
|
+
[DevAgent + 0.91s] PLAN READY artifact=...
|
|
159
|
+
[DevAgent + 1.02s] SIMULATION BLOCKED imported_customer_twin_execution_adapter_not_yet_qualified
|
|
160
|
+
[DevAgent + 1.11s] CAMPAIGN COMPLETE artifact=...
|
|
161
|
+
[DevAgent + 1.18s] FAT COMPLETE artifact=...
|
|
162
|
+
[DevAgent + 1.24s] EVIDENCE COMPLETE bundle=...
|
|
163
|
+
[DevAgent + 1.25s] COMPLETE DONE state=verification_incomplete release_ready=False real_execution_allowed=False
|
|
164
|
+
[DevAgent + 1.25s] REPORT OPENING new tab requested; terminal will remain available: .../EVIDENCE.html
|
|
165
|
+
[DevAgent + 1.26s] REPORT DISPATCHED browser request completed; terminal is available
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
If verification runs longer than five seconds, DevAgent emits a heartbeat such as:
|
|
169
|
+
|
|
170
|
+
```text
|
|
171
|
+
[DevAgent + 5.00s] ENGINE RUNNING verification is still active
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
The same human progress trace is persisted to:
|
|
175
|
+
|
|
176
|
+
```text
|
|
177
|
+
<customer-project>/devagent-results/RUN.log
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
After an Evidence Bundle exists, DevAgent prints a copy/paste replay command. Example:
|
|
181
|
+
|
|
182
|
+
```bash
|
|
183
|
+
devagent-commercial --db ~/.devagent/projects.db replay \
|
|
184
|
+
acme-cell \
|
|
185
|
+
EVIDENCE_BUNDLE_ARTIFACT \
|
|
186
|
+
--output ./devagent-results/REPLAY.json
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
If simulation was blocked and no measured runtime case exists, replay is expected to fail closed. If qualified simulation runtime evidence exists, replay reconstructs and verifies that exact persisted case without commanding a robot.
|
|
190
|
+
|
|
191
|
+
To suppress human progress while keeping the final human summary:
|
|
192
|
+
|
|
193
|
+
```bash
|
|
194
|
+
devagent verify ./customer-project --no-progress
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
`--json` remains machine-clean and suppresses human progress automatically.
|
|
198
|
+
|
|
199
|
+
---
|
|
200
|
+
|
|
146
201
|
# How to use the engine
|
|
147
202
|
|
|
148
203
|
## 1. Give DevAgent the engineering folder you already have
|
|
@@ -205,7 +260,7 @@ DETERMINISTIC TWIN VALIDATION
|
|
|
205
260
|
VERIFICATION PLAN / CAMPAIGN / FAT
|
|
206
261
|
|
|
|
207
262
|
v
|
|
208
|
-
EVIDENCE VIEWER
|
|
263
|
+
EVIDENCE VIEWER + RUN LOG + REPLAY HANDOFF
|
|
209
264
|
```
|
|
210
265
|
|
|
211
266
|
Unknown facts remain unknown. DevAgent does not fill engineering gaps with guesses.
|
|
@@ -259,6 +314,7 @@ Typical first-run output:
|
|
|
259
314
|
```text
|
|
260
315
|
ACME_CNC_CELL_TEST/
|
|
261
316
|
└── devagent-results/
|
|
317
|
+
├── RUN.log
|
|
262
318
|
├── SUMMARY.json
|
|
263
319
|
├── INTAKE.json
|
|
264
320
|
├── QUESTIONS.md
|
|
@@ -381,6 +437,7 @@ When enough explicit evidence exists to build the Twin and deterministic campaig
|
|
|
381
437
|
```text
|
|
382
438
|
ACME_CNC_CELL_TEST/
|
|
383
439
|
└── devagent-results/
|
|
440
|
+
├── RUN.log
|
|
384
441
|
├── SUMMARY.json
|
|
385
442
|
├── INTAKE.json
|
|
386
443
|
├── QUESTIONS.md
|
|
@@ -388,7 +445,8 @@ ACME_CNC_CELL_TEST/
|
|
|
388
445
|
│ ├── requirements.csv
|
|
389
446
|
│ └── devagent-twin.yaml
|
|
390
447
|
├── FAT_REPORT.html
|
|
391
|
-
|
|
448
|
+
├── EVIDENCE.html
|
|
449
|
+
└── REPLAY.json # when replay succeeds with --output
|
|
392
450
|
```
|
|
393
451
|
|
|
394
452
|
`normalized/devagent-twin.yaml` is generated evidence mapping. It is not an independent source of truth and does not bypass Twin validation.
|
|
@@ -454,7 +512,7 @@ That is intentional. A blocked simulation is more trustworthy than a visually im
|
|
|
454
512
|
|
|
455
513
|
---
|
|
456
514
|
|
|
457
|
-
## 5. Open the Evidence Viewer
|
|
515
|
+
## 5. Open the Evidence Viewer and continue in the terminal
|
|
458
516
|
|
|
459
517
|
When evidence lineage can be rendered:
|
|
460
518
|
|
|
@@ -468,6 +526,22 @@ or:
|
|
|
468
526
|
devagent verify ./ACME_CNC_CELL_TEST --simulate --open
|
|
469
527
|
```
|
|
470
528
|
|
|
529
|
+
The sequence is intentionally:
|
|
530
|
+
|
|
531
|
+
```text
|
|
532
|
+
terminal verification completes
|
|
533
|
+
↓
|
|
534
|
+
final summary printed
|
|
535
|
+
↓
|
|
536
|
+
replay command printed
|
|
537
|
+
↓
|
|
538
|
+
Evidence Viewer requested in a new browser tab
|
|
539
|
+
↓
|
|
540
|
+
CLI returns
|
|
541
|
+
↓
|
|
542
|
+
same terminal is available for replay / artifact inspection / next command
|
|
543
|
+
```
|
|
544
|
+
|
|
471
545
|
The viewer is read-only and is intended to answer:
|
|
472
546
|
|
|
473
547
|
- Which requirement was evaluated?
|
|
@@ -487,6 +561,22 @@ The trust principle is simple:
|
|
|
487
561
|
|
|
488
562
|
# Understanding the results
|
|
489
563
|
|
|
564
|
+
## `RUN.log`
|
|
565
|
+
|
|
566
|
+
Persistent copy of the human terminal progress trace. It is presentation/debug evidence and does not replace immutable engineering artifacts.
|
|
567
|
+
|
|
568
|
+
Inspect it later:
|
|
569
|
+
|
|
570
|
+
```bash
|
|
571
|
+
cat ./customer-project/devagent-results/RUN.log
|
|
572
|
+
```
|
|
573
|
+
|
|
574
|
+
or follow it while another process is running:
|
|
575
|
+
|
|
576
|
+
```bash
|
|
577
|
+
tail -f ./customer-project/devagent-results/RUN.log
|
|
578
|
+
```
|
|
579
|
+
|
|
490
580
|
## `SUMMARY.json`
|
|
491
581
|
|
|
492
582
|
This is the primary machine-readable result of Simple Mode.
|
|
@@ -527,11 +617,11 @@ Each discovered file is associated with a bounded role and authority decision.
|
|
|
527
617
|
Examples:
|
|
528
618
|
|
|
529
619
|
```text
|
|
530
|
-
requirements.xlsx
|
|
531
|
-
layout.yaml
|
|
532
|
-
ur5e.urdf
|
|
533
|
-
safety_requirements.pdf
|
|
534
|
-
expected/...
|
|
620
|
+
requirements.xlsx -> requirements
|
|
621
|
+
layout.yaml -> engineering_data
|
|
622
|
+
ur5e.urdf -> robot_model
|
|
623
|
+
safety_requirements.pdf -> manual engineering document
|
|
624
|
+
expected/... -> test_oracle, used_for_authority=false
|
|
535
625
|
```
|
|
536
626
|
|
|
537
627
|
## `QUESTIONS.md`
|
|
@@ -554,6 +644,10 @@ A missing metric or unsupported requirement is not silently changed to PASS. It
|
|
|
554
644
|
|
|
555
645
|
Read-only evidence view of requirement/Twin/artifact lineage.
|
|
556
646
|
|
|
647
|
+
## `REPLAY.json`
|
|
648
|
+
|
|
649
|
+
Written only when replay reconstruction succeeds and `--output` was supplied. It is a canonical replay manifest, not a new robot or simulator execution.
|
|
650
|
+
|
|
557
651
|
---
|
|
558
652
|
|
|
559
653
|
# Requirements and verdicts
|
|
@@ -829,6 +923,18 @@ devagent-commercial evidence-viewer warehouse-cnc-04 \
|
|
|
829
923
|
|
|
830
924
|
## 11. Replay persisted lineage
|
|
831
925
|
|
|
926
|
+
Read-only inspection first:
|
|
927
|
+
|
|
928
|
+
```bash
|
|
929
|
+
devagent-commercial replay \
|
|
930
|
+
warehouse-cnc-04 \
|
|
931
|
+
EVIDENCE_BUNDLE \
|
|
932
|
+
--qualification-root ~/.devagent/physical-qualification \
|
|
933
|
+
--output replay-manifest.json
|
|
934
|
+
```
|
|
935
|
+
|
|
936
|
+
Optionally record immutable `replay_verification` evidence after a successful reconstruction:
|
|
937
|
+
|
|
832
938
|
```bash
|
|
833
939
|
devagent-commercial replay \
|
|
834
940
|
warehouse-cnc-04 \
|
|
@@ -1089,11 +1195,11 @@ It is **not** a replacement for:
|
|
|
1089
1195
|
|
|
1090
1196
|
# Project status
|
|
1091
1197
|
|
|
1092
|
-
**v1.3.
|
|
1198
|
+
**v1.3.1 — Production/Stable software workflow**
|
|
1093
1199
|
|
|
1094
1200
|
The bounded software/evidence workflow is production-oriented and continuously tested across Python 3.11, 3.12, and 3.13.
|
|
1095
1201
|
|
|
1096
|
-
The v1.3 release
|
|
1202
|
+
The v1.3.1 patch release includes:
|
|
1097
1203
|
|
|
1098
1204
|
```text
|
|
1099
1205
|
one-command customer intake
|
|
@@ -1102,8 +1208,11 @@ immutable project/Twin lineage
|
|
|
1102
1208
|
deterministic verification campaigns
|
|
1103
1209
|
measured evidence binding
|
|
1104
1210
|
FAT generation
|
|
1211
|
+
professional Evidence Viewer report palette
|
|
1212
|
+
terminal stage-by-stage progress + RUN.log
|
|
1213
|
+
new-tab report handoff without intentionally raising over terminal
|
|
1214
|
+
copy/paste replay command after Evidence Bundle generation
|
|
1105
1215
|
Evidence Bundle
|
|
1106
|
-
Evidence Viewer
|
|
1107
1216
|
replay reconstruction
|
|
1108
1217
|
change impact
|
|
1109
1218
|
regression
|
|
@@ -41,7 +41,7 @@ Python 3.11+ is required.
|
|
|
41
41
|
Install:
|
|
42
42
|
|
|
43
43
|
```bash
|
|
44
|
-
python -m pip install --upgrade devagent-physical-engine==1.3.
|
|
44
|
+
python -m pip install --upgrade devagent-physical-engine==1.3.1
|
|
45
45
|
```
|
|
46
46
|
|
|
47
47
|
Verify the installed version:
|
|
@@ -53,7 +53,7 @@ python -c "import devagent_physical_engine as d; print(d.__version__)"
|
|
|
53
53
|
Expected:
|
|
54
54
|
|
|
55
55
|
```text
|
|
56
|
-
1.3.
|
|
56
|
+
1.3.1
|
|
57
57
|
```
|
|
58
58
|
|
|
59
59
|
Run DevAgent on the customer project folder:
|
|
@@ -66,18 +66,20 @@ That is the normal starting point.
|
|
|
66
66
|
|
|
67
67
|
You do **not** need to manually initialize a DevAgent project, choose artifact IDs, convert an XLSX sheet to CSV, or understand the internal evidence database before using Simple Mode.
|
|
68
68
|
|
|
69
|
-
|
|
69
|
+
Request physical simulation when an exact qualified execution path exists:
|
|
70
70
|
|
|
71
71
|
```bash
|
|
72
72
|
devagent verify ./customer-project --simulate
|
|
73
73
|
```
|
|
74
74
|
|
|
75
|
-
|
|
75
|
+
Open the generated Evidence Viewer after verification:
|
|
76
76
|
|
|
77
77
|
```bash
|
|
78
78
|
devagent verify ./customer-project --simulate --open
|
|
79
79
|
```
|
|
80
80
|
|
|
81
|
+
`--open` requests the report in a **new browser tab** after the terminal verification summary is complete. DevAgent requests that the browser not raise itself over the terminal, then the CLI returns so the same terminal can be used for replay and inspection commands. Desktop/browser policy may still choose to focus the new tab.
|
|
82
|
+
|
|
81
83
|
For machine-readable output:
|
|
82
84
|
|
|
83
85
|
```bash
|
|
@@ -102,6 +104,59 @@ Results: <customer-project>/devagent-results/
|
|
|
102
104
|
|
|
103
105
|
---
|
|
104
106
|
|
|
107
|
+
# What the user sees in the terminal
|
|
108
|
+
|
|
109
|
+
Human Simple Mode keeps the terminal as the primary run surface. Example:
|
|
110
|
+
|
|
111
|
+
```text
|
|
112
|
+
[DevAgent + 0.00s] START RUNNING source=ACME_CNC_CELL_TEST
|
|
113
|
+
[DevAgent + 0.00s] INTAKE RUNNING scanning and classifying customer engineering files
|
|
114
|
+
[DevAgent + 0.42s] REQUIREMENTS READY customer requirements normalized
|
|
115
|
+
[DevAgent + 0.61s] TWIN NORMALIZED customer Twin draft normalized
|
|
116
|
+
[DevAgent + 0.85s] PROJECT READY project_id=acme-cell
|
|
117
|
+
[DevAgent + 0.91s] PLAN READY artifact=...
|
|
118
|
+
[DevAgent + 1.02s] SIMULATION BLOCKED imported_customer_twin_execution_adapter_not_yet_qualified
|
|
119
|
+
[DevAgent + 1.11s] CAMPAIGN COMPLETE artifact=...
|
|
120
|
+
[DevAgent + 1.18s] FAT COMPLETE artifact=...
|
|
121
|
+
[DevAgent + 1.24s] EVIDENCE COMPLETE bundle=...
|
|
122
|
+
[DevAgent + 1.25s] COMPLETE DONE state=verification_incomplete release_ready=False real_execution_allowed=False
|
|
123
|
+
[DevAgent + 1.25s] REPORT OPENING new tab requested; terminal will remain available: .../EVIDENCE.html
|
|
124
|
+
[DevAgent + 1.26s] REPORT DISPATCHED browser request completed; terminal is available
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
If verification runs longer than five seconds, DevAgent emits a heartbeat such as:
|
|
128
|
+
|
|
129
|
+
```text
|
|
130
|
+
[DevAgent + 5.00s] ENGINE RUNNING verification is still active
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
The same human progress trace is persisted to:
|
|
134
|
+
|
|
135
|
+
```text
|
|
136
|
+
<customer-project>/devagent-results/RUN.log
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
After an Evidence Bundle exists, DevAgent prints a copy/paste replay command. Example:
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
devagent-commercial --db ~/.devagent/projects.db replay \
|
|
143
|
+
acme-cell \
|
|
144
|
+
EVIDENCE_BUNDLE_ARTIFACT \
|
|
145
|
+
--output ./devagent-results/REPLAY.json
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
If simulation was blocked and no measured runtime case exists, replay is expected to fail closed. If qualified simulation runtime evidence exists, replay reconstructs and verifies that exact persisted case without commanding a robot.
|
|
149
|
+
|
|
150
|
+
To suppress human progress while keeping the final human summary:
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
devagent verify ./customer-project --no-progress
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
`--json` remains machine-clean and suppresses human progress automatically.
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
105
160
|
# How to use the engine
|
|
106
161
|
|
|
107
162
|
## 1. Give DevAgent the engineering folder you already have
|
|
@@ -164,7 +219,7 @@ DETERMINISTIC TWIN VALIDATION
|
|
|
164
219
|
VERIFICATION PLAN / CAMPAIGN / FAT
|
|
165
220
|
|
|
|
166
221
|
v
|
|
167
|
-
EVIDENCE VIEWER
|
|
222
|
+
EVIDENCE VIEWER + RUN LOG + REPLAY HANDOFF
|
|
168
223
|
```
|
|
169
224
|
|
|
170
225
|
Unknown facts remain unknown. DevAgent does not fill engineering gaps with guesses.
|
|
@@ -218,6 +273,7 @@ Typical first-run output:
|
|
|
218
273
|
```text
|
|
219
274
|
ACME_CNC_CELL_TEST/
|
|
220
275
|
└── devagent-results/
|
|
276
|
+
├── RUN.log
|
|
221
277
|
├── SUMMARY.json
|
|
222
278
|
├── INTAKE.json
|
|
223
279
|
├── QUESTIONS.md
|
|
@@ -340,6 +396,7 @@ When enough explicit evidence exists to build the Twin and deterministic campaig
|
|
|
340
396
|
```text
|
|
341
397
|
ACME_CNC_CELL_TEST/
|
|
342
398
|
└── devagent-results/
|
|
399
|
+
├── RUN.log
|
|
343
400
|
├── SUMMARY.json
|
|
344
401
|
├── INTAKE.json
|
|
345
402
|
├── QUESTIONS.md
|
|
@@ -347,7 +404,8 @@ ACME_CNC_CELL_TEST/
|
|
|
347
404
|
│ ├── requirements.csv
|
|
348
405
|
│ └── devagent-twin.yaml
|
|
349
406
|
├── FAT_REPORT.html
|
|
350
|
-
|
|
407
|
+
├── EVIDENCE.html
|
|
408
|
+
└── REPLAY.json # when replay succeeds with --output
|
|
351
409
|
```
|
|
352
410
|
|
|
353
411
|
`normalized/devagent-twin.yaml` is generated evidence mapping. It is not an independent source of truth and does not bypass Twin validation.
|
|
@@ -413,7 +471,7 @@ That is intentional. A blocked simulation is more trustworthy than a visually im
|
|
|
413
471
|
|
|
414
472
|
---
|
|
415
473
|
|
|
416
|
-
## 5. Open the Evidence Viewer
|
|
474
|
+
## 5. Open the Evidence Viewer and continue in the terminal
|
|
417
475
|
|
|
418
476
|
When evidence lineage can be rendered:
|
|
419
477
|
|
|
@@ -427,6 +485,22 @@ or:
|
|
|
427
485
|
devagent verify ./ACME_CNC_CELL_TEST --simulate --open
|
|
428
486
|
```
|
|
429
487
|
|
|
488
|
+
The sequence is intentionally:
|
|
489
|
+
|
|
490
|
+
```text
|
|
491
|
+
terminal verification completes
|
|
492
|
+
↓
|
|
493
|
+
final summary printed
|
|
494
|
+
↓
|
|
495
|
+
replay command printed
|
|
496
|
+
↓
|
|
497
|
+
Evidence Viewer requested in a new browser tab
|
|
498
|
+
↓
|
|
499
|
+
CLI returns
|
|
500
|
+
↓
|
|
501
|
+
same terminal is available for replay / artifact inspection / next command
|
|
502
|
+
```
|
|
503
|
+
|
|
430
504
|
The viewer is read-only and is intended to answer:
|
|
431
505
|
|
|
432
506
|
- Which requirement was evaluated?
|
|
@@ -446,6 +520,22 @@ The trust principle is simple:
|
|
|
446
520
|
|
|
447
521
|
# Understanding the results
|
|
448
522
|
|
|
523
|
+
## `RUN.log`
|
|
524
|
+
|
|
525
|
+
Persistent copy of the human terminal progress trace. It is presentation/debug evidence and does not replace immutable engineering artifacts.
|
|
526
|
+
|
|
527
|
+
Inspect it later:
|
|
528
|
+
|
|
529
|
+
```bash
|
|
530
|
+
cat ./customer-project/devagent-results/RUN.log
|
|
531
|
+
```
|
|
532
|
+
|
|
533
|
+
or follow it while another process is running:
|
|
534
|
+
|
|
535
|
+
```bash
|
|
536
|
+
tail -f ./customer-project/devagent-results/RUN.log
|
|
537
|
+
```
|
|
538
|
+
|
|
449
539
|
## `SUMMARY.json`
|
|
450
540
|
|
|
451
541
|
This is the primary machine-readable result of Simple Mode.
|
|
@@ -486,11 +576,11 @@ Each discovered file is associated with a bounded role and authority decision.
|
|
|
486
576
|
Examples:
|
|
487
577
|
|
|
488
578
|
```text
|
|
489
|
-
requirements.xlsx
|
|
490
|
-
layout.yaml
|
|
491
|
-
ur5e.urdf
|
|
492
|
-
safety_requirements.pdf
|
|
493
|
-
expected/...
|
|
579
|
+
requirements.xlsx -> requirements
|
|
580
|
+
layout.yaml -> engineering_data
|
|
581
|
+
ur5e.urdf -> robot_model
|
|
582
|
+
safety_requirements.pdf -> manual engineering document
|
|
583
|
+
expected/... -> test_oracle, used_for_authority=false
|
|
494
584
|
```
|
|
495
585
|
|
|
496
586
|
## `QUESTIONS.md`
|
|
@@ -513,6 +603,10 @@ A missing metric or unsupported requirement is not silently changed to PASS. It
|
|
|
513
603
|
|
|
514
604
|
Read-only evidence view of requirement/Twin/artifact lineage.
|
|
515
605
|
|
|
606
|
+
## `REPLAY.json`
|
|
607
|
+
|
|
608
|
+
Written only when replay reconstruction succeeds and `--output` was supplied. It is a canonical replay manifest, not a new robot or simulator execution.
|
|
609
|
+
|
|
516
610
|
---
|
|
517
611
|
|
|
518
612
|
# Requirements and verdicts
|
|
@@ -788,6 +882,18 @@ devagent-commercial evidence-viewer warehouse-cnc-04 \
|
|
|
788
882
|
|
|
789
883
|
## 11. Replay persisted lineage
|
|
790
884
|
|
|
885
|
+
Read-only inspection first:
|
|
886
|
+
|
|
887
|
+
```bash
|
|
888
|
+
devagent-commercial replay \
|
|
889
|
+
warehouse-cnc-04 \
|
|
890
|
+
EVIDENCE_BUNDLE \
|
|
891
|
+
--qualification-root ~/.devagent/physical-qualification \
|
|
892
|
+
--output replay-manifest.json
|
|
893
|
+
```
|
|
894
|
+
|
|
895
|
+
Optionally record immutable `replay_verification` evidence after a successful reconstruction:
|
|
896
|
+
|
|
791
897
|
```bash
|
|
792
898
|
devagent-commercial replay \
|
|
793
899
|
warehouse-cnc-04 \
|
|
@@ -1048,11 +1154,11 @@ It is **not** a replacement for:
|
|
|
1048
1154
|
|
|
1049
1155
|
# Project status
|
|
1050
1156
|
|
|
1051
|
-
**v1.3.
|
|
1157
|
+
**v1.3.1 — Production/Stable software workflow**
|
|
1052
1158
|
|
|
1053
1159
|
The bounded software/evidence workflow is production-oriented and continuously tested across Python 3.11, 3.12, and 3.13.
|
|
1054
1160
|
|
|
1055
|
-
The v1.3 release
|
|
1161
|
+
The v1.3.1 patch release includes:
|
|
1056
1162
|
|
|
1057
1163
|
```text
|
|
1058
1164
|
one-command customer intake
|
|
@@ -1061,8 +1167,11 @@ immutable project/Twin lineage
|
|
|
1061
1167
|
deterministic verification campaigns
|
|
1062
1168
|
measured evidence binding
|
|
1063
1169
|
FAT generation
|
|
1170
|
+
professional Evidence Viewer report palette
|
|
1171
|
+
terminal stage-by-stage progress + RUN.log
|
|
1172
|
+
new-tab report handoff without intentionally raising over terminal
|
|
1173
|
+
copy/paste replay command after Evidence Bundle generation
|
|
1064
1174
|
Evidence Bundle
|
|
1065
|
-
Evidence Viewer
|
|
1066
1175
|
replay reconstruction
|
|
1067
1176
|
change impact
|
|
1068
1177
|
regression
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "devagent-physical-engine"
|
|
7
|
-
version = "1.3.
|
|
7
|
+
version = "1.3.1"
|
|
8
8
|
description = "Production-grade verification-first robotics evidence runtime with one-command customer intake, deterministic Twin lineage, measured physical verification, replay inspection, regression, and FAT evidence."
|
|
9
9
|
readme = { file = "README.md", content-type = "text/markdown" }
|
|
10
10
|
requires-python = ">=3.11"
|
|
@@ -801,14 +801,14 @@ class EvidenceViewer:
|
|
|
801
801
|
<html><head><meta charset='utf-8'><meta name='viewport' content='width=device-width,initial-scale=1'>
|
|
802
802
|
<title>DevAgent Evidence Viewer - {escape(str(project['name']))}</title>
|
|
803
803
|
<style>
|
|
804
|
-
:root{{font-family:Inter,ui-sans-serif,system-ui,sans-serif;color:#
|
|
805
|
-
body{{margin:0}}main{{max-width:1280px;margin:auto;padding:24px}}header{{background:#
|
|
806
|
-
h1,h2{{margin-top:0}}.muted{{color:#
|
|
807
|
-
.card{{background
|
|
808
|
-
th,td{{border-bottom:1px solid #
|
|
804
|
+
:root{{font-family:Inter,ui-sans-serif,system-ui,sans-serif;color:#1f2937;background:#f4f7fb}}
|
|
805
|
+
body{{margin:0}}main{{max-width:1280px;margin:auto;padding:24px}}header{{background:#1f4e78;color:#fff;padding:22px;border:1px solid #17365d;border-radius:14px;box-shadow:0 8px 24px rgba(31,78,120,.16)}}
|
|
806
|
+
header h1{{color:#fff}}header small{{color:#eaf2f8}}h1,h2{{margin-top:0}}h2{{color:#17365d}}.muted{{color:#66788a}}.grid{{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin:16px 0}}
|
|
807
|
+
.card{{background:#fff;border:1px solid #d9e2ec;border-radius:12px;padding:16px}}table{{width:100%;border-collapse:collapse;background:#fff;border:1px solid #d9e2ec}}
|
|
808
|
+
th,td{{border-bottom:1px solid #d9e2ec;padding:10px;vertical-align:top;text-align:left}}th{{background:#eaf1f8;color:#17365d;position:sticky;top:0}}
|
|
809
809
|
code.hash{{word-break:break-all;font-size:11px}}.badge{{display:inline-block;padding:3px 8px;border-radius:999px;font-weight:700;font-size:12px}}
|
|
810
810
|
.badge.pass{{background:#dcfce7;color:#166534}}.badge.fail{{background:#fee2e2;color:#991b1b}}.badge.warn{{background:#fef3c7;color:#92400e}}.badge.neutral{{background:#e5e7eb;color:#374151}}
|
|
811
|
-
a{{color:#
|
|
811
|
+
a{{color:#245b91}}details{{margin-top:6px}}.boundary{{border-left:4px solid #d97706}}
|
|
812
812
|
</style></head><body><main>
|
|
813
813
|
<header><h1>DevAgent Evidence Viewer</h1><div>{escape(str(project['name']))}</div>
|
|
814
814
|
<small>Project {escape(str(project['project_id']))} · Site {escape(str(project['site_id']))} · Workcell {escape(str(project['workcell_id']))}</small></header>
|