test(tasks): gate cube physical recovery - #483
Open
yuecideng wants to merge 1 commit into
Open
Conversation
yuecideng
force-pushed
the
feat/cube-physical-recovery-gates
branch
from
August 11, 2026 16:09
21b62d7 to
f116933
Compare
This was referenced Aug 11, 2026
yuecideng
marked this pull request as ready for review
August 11, 2026 16:12
Greptile SummaryThis PR strengthens the repeated-cube physical acceptance coverage and updates the corresponding task preset and rollout documentation.
Confidence Score: 5/5The PR appears safe to merge because no concrete blocking or independently actionable non-blocking defect remains. The production change is a bounded task-policy calibration, and the added simulation gates exercise the intended completion and recovery paths without exposing a supported failure mechanism.
|
| Filename | Overview |
|---|---|
| embodichain_tasks/embodichain_tasks/multi_segments/cube_pick_place.py | Configures 100 motion samples for the cube preset while retaining existing tracking and bounded-recovery policies. |
| tests/benchmark/expert_program/test_cube_physical_recovery_sim.py | Adds an isolated simulation gate that injects controller-level gripper opening and verifies physical loss, invalidation, reacquisition, and retry. |
| tests/benchmark/expert_program/test_demo_success_cube_sim.py | Adds a slow GPU regression gate validating all three physical Pick/Place cycles and their effect, settling, and validator metadata. |
| scripts/tools/expert_program_rollout_report.py | Refreshes the deterministic capability and integration matrices to represent newly validated coverage. |
| docs/design/expert_program_rollout_report.md | Updates generated rollout metrics and physical-acceptance status consistently with the reporting tool. |
Sequence Diagram
sequenceDiagram
participant Test as Recovery gate
participant Env as env.step()
participant Physics as Contact dynamics
participant Runtime as Expert Program runtime
Test->>Env: Replace bounded Place commands with gripper-open targets
Env->>Physics: Apply ordinary controller commands
Physics-->>Runtime: Held-object relation contradicted
Runtime->>Runtime: Invalidate symbolic held state
Runtime->>Env: Execute recovery Pick
Env-->>Runtime: Re-acquisition verified
Runtime->>Env: Retry Place and remaining program
Env-->>Test: Completed three-segment episode
Reviews (1): Last reviewed commit: "test(tasks): gate cube physical recovery" | Re-trigger Greptile
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Stack
feat/production-parallel-safetyClose the current physical acceptance loop for declarative Expert Programs. The UR5 cube preset uses 100 real motion samples while retaining the 0.08-rad tracking gate and bounded replanning; a slow GPU gate proves all three lazy Pick/Place/settle/validator cycles complete through contact dynamics.
A second slow gate injects only a bounded controller-ready gripper-open command through ordinary
env.step()calls during Place. It proves physical held-object loss, core-owned symbolic invalidation,RECOVERY_REQUIRED, a real re-acquisition Pick, Place retry, and completion of the remaining program. The fault wrapper never writes object pose, velocity, constraint, attachment, or task state.This layer also documents the placement and parallel APIs and refreshes the deterministic rollout report.
Refs #471
Refs #474
Type of change
Screenshots
Not applicable.
Validation
pytest -q tests/benchmark/expert_program/test_demo_success_cube_sim.py tests/benchmark/expert_program/test_cube_physical_recovery_sim.py -m 'slow and gpu and requires_sim' --run-gpu— 2 passed in 186.81spytest -q tests/gym/envs/tasks/test_multi_segments_cube_pick_place.py tests/gym/envs/tasks/test_open_drawer.py tests/scripts/tools/test_expert_program_rollout_report.py— 19 passed, 1 deselectedpython scripts/tools/expert_program_rollout_report.py --check— up to datemake html— succeeded; Sphinx reported 698 repository-wide warningsgit diff --checkChecklist