feat(skills): add physical-effect workflows and recovery - #480
Open
yuecideng wants to merge 7 commits into
Open
Conversation
yuecideng
force-pushed
the
feat/workflow-reacquisition
branch
from
August 11, 2026 16:09
2a7edb0 to
e205b9a
Compare
4 tasks
4 tasks
yuecideng
marked this pull request as ready for review
August 11, 2026 16:11
Greptile SummaryThe PR adds preset-owned, per-row bounded workflow recovery to the canonical semantic skill runtime.
Confidence Score: 5/5The PR appears safe to merge; no concrete blocking or independently actionable non-blocking defects remain. The recovery paths preserve row-scoped outcomes, bounded attempt accounting, verified-state-based re-acquisition decisions, and the shared semantic-call barrier across success, failure, and cancellation.
|
| Filename | Overview |
|---|---|
| embodichain/lab/sim/skills/runtime.py | Adds row-local recovery barriers, real re-acquisition calls, bounded retry scheduling, cancellation handling, and immutable workflow-recovery traces. |
| embodichain/lab/sim/skills/profiles.py | Adds immutable WorkflowRecoveryPolicy and advances SkillPolicyPreset to schema version 3 with snapshot-safe policy ownership. |
| embodichain/lab/sim/skills/integration.py | Preserves workflow-recovery policy when deriving safe presets with required dynamic-collision behavior. |
| embodichain/lab/gym/envs/expert_program/catalog.py | Preserves workflow-recovery configuration while aligning registered profiles to Gym timing. |
| embodichain/lab/gym/envs/expert_program/simulation_environment.py | Carries workflow-recovery policy through runtime profile cadence alignment. |
| embodichain_tasks/embodichain_tasks/multi_segments/cube_pick_place.py | Enables two bounded workflow-recovery attempts for the cube pick/place safe preset. |
| embodichain_tasks/embodichain_tasks/tableware/hand_over.py | Enables two bounded workflow-recovery attempts for the handover safe preset. |
| tests/sim/skills/test_runtime.py | Adds extensive coverage for retained retries, real re-acquisition, mixed cohorts, budgets, cancellation, barriers, and recovery traces. |
Flowchart
%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[Original semantic call] --> B{Terminal result}
B -->|Completed| C[Join shared call barrier]
B -->|Failed without RECOVERY_REQUIRED| D[Record permanent row failure]
B -->|RECOVERY_REQUIRED| E{Verified source relation retained?}
E -->|Yes| F[Retry original semantic call]
E -->|No| G[Execute real Pick with source resource]
G -->|Pick succeeds| H[Retry original semantic call]
G -->|Pick fails| I{Attempt budget remains?}
F -->|Retry succeeds| C
H -->|Retry succeeds| C
F -->|Recovery required again| I
H -->|Recovery required again| I
I -->|Yes| E
I -->|No| D
C --> J[Advance original workflow once all rows resolve]
Reviews (1): Last reviewed commit: "feat(skills): add bounded workflow reacq..." | Re-trigger Greptile
yuecideng
changed the base branch from
feat/physical-effect-phase-gates
to
feat/expert-program-registration-runtime-catalog
August 11, 2026 17:48
This was referenced Aug 11, 2026
4 tasks
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/expert-program-registration-runtime-catalogConsolidation
Consolidates #505 and #477 through #479 into this layer. Scope: physical handover, effect outcomes, terminal failure reconciliation, phase gates, and bounded reacquisition.
Add preset-owned, bounded workflow recovery inside the canonical
SkillRuntime. Recovery starts only after the atomic-action layer emitsRECOVERY_REQUIRED: rows that still physically retain the relation retry the original semantic call, while rows that lost it execute a realPickand then retry.Attempt budgets are per row, recovery cohorts retain the shared call barrier, every recovery call is freshly observed and grounded, and immutable traces distinguish retained retry, re-acquisition, and post-reacquisition retry. No pose, velocity, constraint, attachment, or symbolic state is fabricated to force success.
Refs #471
Refs #474
Type of change
Screenshots
Not applicable.
Validation
pytest -q tests/sim/skills/test_runtime.py tests/sim/skills/test_profiles.py tests/sim/skills/test_integration.py tests/sim/skills/test_compiler.py tests/gym/envs/expert_program/test_catalog.py tests/gym/envs/expert_program/test_simulation_environment.py tests/gym/envs/tasks/test_multi_segments_cube_pick_place.py tests/gym/envs/tasks/test_open_drawer.py tests/gym/envs/tasks/test_hand_over.py— 265 passed, 2 deselectedChecklist