Uh oh!
There was an error while loading. Please reload this page.
feat(atomic-actions): add verified effect-aware runtime - #495
Conversation
Make endpoint bindings, timed command frames, transports, routing, safe holds, and profile lowering controller-agnostic. Preserve joint trajectories as optional feedback artifacts and add staged, same-address invocation revision semantics for mobile and whole-body safety.
Greptile SummaryThe PR adds an effect-aware atomic-action runtime with row-local verification, eligibility, state updates, and recovery behavior.
Confidence Score: 5/5The PR appears safe to merge because no blocking failure remains from the previously reported issues. No blocking failure remains.
|
| Filename | Overview |
|---|---|
| embodichain/lab/sim/atomic_actions/execution.py | Adds correlated, deadline-aware, row-local effect verification and state commitment to execution sessions. |
| embodichain/lab/sim/atomic_actions/runner.py | Integrates synchronous and asynchronous effect results with runner scheduling, eligibility changes, and safe-stop behavior. |
| embodichain/lab/sim/atomic_actions/effects.py | Extends row-local state-delta handling while preserving stable held-object identity and metadata. |
| embodichain/lab/sim/skills/runtime.py | Carries verified task state and eligible environment cohorts across semantic-call boundaries. |
| embodichain/lab/sim/atomic_actions/primitives/pick_up.py | Narrows semantic-object dependency monitoring to the reversible approach phase. |
| embodichain/lab/sim/atomic_actions/primitives/place.py | Declares terminal physical-effect verification and verified release-state updates for placement. |
| embodichain/lab/sim/objects/articulation.py | Adds stable articulation-state support used by effect-aware execution. |
| docs/source/api_reference/embodichain/embodichain.lab.sim.atomic_actions.rst | Documents the new effect-verification request, result, requirement, and plan-attempt contracts. |
Sequence Diagram
sequenceDiagram
participant App
participant Runner as ExecutionRunner
participant Session as ExecutionSession
participant Physics as Simulation/Physics
participant Verifier as Effect Verifier
App->>Runner: step()
Runner->>Session: tick(fresh observation)
Session->>Physics: dispatch active-row command
Physics-->>Runner: updated observation
Session-->>Runner: EffectVerificationRequest
Runner->>Verifier: verify(context, request)
Verifier-->>Runner: EffectVerificationResult
Runner->>Session: tick(correlated result)
Session->>Session: commit successful row deltas
Session->>Session: retain unresolved rows
Session-->>App: completed, pending, or recovery status
Reviews (6): Last reviewed commit: "wip" | Re-trigger Greptile
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
| "ObjectSemantics", | ||
| "OPEN_COMMAND", | ||
| "ObservationProvider", | ||
| "ObservedArticulationJointState", |
There was a problem hiding this comment.
Public runtime APIs lack documentation
The package now publicly exports the articulation operation and related verification, diagnostics, and state APIs without documenting their construction, observation-provider requirements, effect lifecycle, or recovery semantics, contrary to the repository requirement to document public API changes.
Context Used: AGENTS.md (source)
Prompt To Fix With AI
This is a comment left during a code review.
Path: embodichain/lab/sim/atomic_actions/__init__.py
Line: 261-264
Comment:
**Public runtime APIs lack documentation**
The package now publicly exports the articulation operation and related verification, diagnostics, and state APIs without documenting their construction, observation-provider requirements, effect lifecycle, or recovery semantics, contrary to the repository requirement to document public API changes.
**Context Used:** AGENTS.md ([source](https://github.com/dexforce/embodichain/blob/main/AGENTS.md))
---
For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!
Make endpoint bindings, timed command frames, transports, routing, safe holds, and profile lowering controller-agnostic. Preserve joint trajectories as optional feedback artifacts and add staged, same-address invocation revision semantics for mobile and whole-body safety.
…2c-runtime-endpoints # Conflicts: # docs/design/declarative_expert_program_plan.md # embodichain/lab/sim/atomic_actions/primitives/coordinated_pickment.py # embodichain/lab/sim/atomic_actions/primitives/coordinated_placement.py # embodichain/lab/sim/atomic_actions/primitives/hand_over.py # embodichain/lab/sim/atomic_actions/primitives/move_end_effector.py # embodichain/lab/sim/atomic_actions/primitives/move_held_object.py # embodichain/lab/sim/atomic_actions/primitives/move_joints.py # embodichain/lab/sim/atomic_actions/primitives/pick_up.py # embodichain/lab/sim/atomic_actions/primitives/place.py # embodichain/lab/sim/atomic_actions/primitives/press.py # embodichain/lab/sim/skills/profiles.py # scripts/tutorials/atomic_action/assemble.py # scripts/tutorials/atomic_action/coordinated_pickment.py # scripts/tutorials/atomic_action/coordinated_placement.py # scripts/tutorials/atomic_action/hand_over.py # scripts/tutorials/atomic_action/move_end_effector.py # scripts/tutorials/atomic_action/move_held_object.py # scripts/tutorials/atomic_action/move_joints.py # scripts/tutorials/atomic_action/place.py # scripts/tutorials/atomic_action/press.py
Remove fallback control periods from motion policies and the atomic action engine. Require planners and custom actions to provide validated timing, propagate explicit interpolation cadence through planning contexts, and update built-ins, tasks, benchmarks, tutorials, docs, and tests. BREAKING CHANGE: planner results with positions must include dt and duration, custom atomic actions must return TimedTrajectory, and fallback_control_dt is removed.
…pr2c-runtime-endpoints # Conflicts: # agent_context/topics/atomic-actions/atomic-actions.md # docs/source/overview/sim/atomic_actions/builtin_actions.md # docs/source/overview/sim/atomic_actions/index.md # docs/source/tutorial/atomic_actions.rst # embodichain/lab/sim/atomic_actions/execution.py # scripts/tutorials/atomic_action/dynamic_obstacle_recovery.py # tests/sim/atomic_actions/test_core.py # tests/sim/atomic_actions/test_engine.py # tests/sim/atomic_actions/test_runner.py
…2c-runtime-endpoints # Conflicts: # agent_context/topics/atomic-actions/atomic-actions.md # agent_context/topics/motion-planning/motion-planning.md # docs/design/declarative_expert_program_plan.md # docs/source/overview/sim/atomic_actions/builtin_actions.md # docs/source/overview/sim/atomic_actions/index.md # docs/source/overview/sim/planners/motion_generator.md # docs/source/tutorial/atomic_actions.rst # docs/source/tutorial/motion_gen.rst # embodichain/lab/sim/atomic_actions/core.py # embodichain/lab/sim/atomic_actions/execution.py # embodichain/lab/sim/atomic_actions/policies.py # embodichain/lab/sim/atomic_actions/primitives/coordinated_pickment.py # embodichain/lab/sim/atomic_actions/primitives/coordinated_placement.py # embodichain/lab/sim/atomic_actions/primitives/hand_over.py # embodichain/lab/sim/atomic_actions/primitives/move_end_effector.py # embodichain/lab/sim/atomic_actions/primitives/move_held_object.py # embodichain/lab/sim/atomic_actions/primitives/move_joints.py # embodichain/lab/sim/atomic_actions/primitives/pick_up.py # embodichain/lab/sim/atomic_actions/primitives/place.py # embodichain/lab/sim/atomic_actions/primitives/press.py # embodichain/lab/sim/planners/base_planner.py # embodichain/lab/sim/planners/motion_generator.py # embodichain/lab/sim/planners/neural_planner.py # embodichain/lab/sim/planners/utils.py # scripts/benchmark/atomic_action/press_benchmark.py # scripts/benchmark/motion_generation/planners/ik_interpolate.py # scripts/tutorials/atomic_action/control_dt.py # scripts/tutorials/atomic_action/dynamic_obstacle_recovery.py # scripts/tutorials/atomic_action/press.py # tests/benchmark/motion_generation/test_motion_generation_benchmark.py # tests/sim/atomic_actions/test_actions.py # tests/sim/atomic_actions/test_core.py # tests/sim/atomic_actions/test_engine.py # tests/sim/atomic_actions/test_runner.py # tests/sim/planners/test_motion_generator_batched.py # tests/sim/planners/test_plan_state_batched.py
…mantic-skill-compiler # Conflicts: # agent_context/MAP.yaml # agent_context/topics/atomic-actions/atomic-actions.md # agent_context/topics/motion-planning/motion-planning.md # docs/design/declarative_expert_program_plan.md # docs/source/overview/sim/atomic_actions/builtin_actions.md # docs/source/overview/sim/atomic_actions/index.md # docs/source/overview/sim/atomic_actions/robot_skill_profiles.md # docs/source/tutorial/atomic_actions.rst # embodichain/lab/sim/atomic_actions/__init__.py # embodichain/lab/sim/atomic_actions/affordance.py # embodichain/lab/sim/atomic_actions/bindings.py # embodichain/lab/sim/atomic_actions/core.py # embodichain/lab/sim/atomic_actions/effects.py # embodichain/lab/sim/atomic_actions/engine.py # embodichain/lab/sim/atomic_actions/execution.py # embodichain/lab/sim/atomic_actions/plans.py # embodichain/lab/sim/atomic_actions/primitives/coordinated_pickment.py # embodichain/lab/sim/atomic_actions/primitives/coordinated_placement.py # embodichain/lab/sim/atomic_actions/primitives/hand_over.py # embodichain/lab/sim/atomic_actions/primitives/move_end_effector.py # embodichain/lab/sim/atomic_actions/primitives/move_held_object.py # embodichain/lab/sim/atomic_actions/primitives/move_joints.py # embodichain/lab/sim/atomic_actions/primitives/pick_up.py # embodichain/lab/sim/atomic_actions/primitives/place.py # embodichain/lab/sim/atomic_actions/primitives/press.py # embodichain/lab/sim/atomic_actions/state.py # embodichain/lab/sim/planners/base_planner.py # embodichain/lab/sim/planners/curobo/curobo_planner.py # embodichain/lab/sim/planners/curobo/curobo_yaml.py # embodichain/lab/sim/planners/motion_generator.py # embodichain/lab/sim/skills/__init__.py # embodichain/lab/sim/skills/profiles.py # embodichain/lab/sim/skills/scene.py # scripts/benchmark/atomic_action/press_benchmark.py # scripts/tutorials/atomic_action/assemble.py # scripts/tutorials/atomic_action/coordinated_pickment.py # scripts/tutorials/atomic_action/coordinated_placement.py # scripts/tutorials/atomic_action/dynamic_obstacle_recovery.py # scripts/tutorials/atomic_action/hand_over.py # scripts/tutorials/atomic_action/move_end_effector.py # scripts/tutorials/atomic_action/move_held_object.py # scripts/tutorials/atomic_action/move_joints.py # scripts/tutorials/atomic_action/moving_target_recovery.py # scripts/tutorials/atomic_action/pickup.py # scripts/tutorials/atomic_action/place.py # scripts/tutorials/atomic_action/press.py # tests/sim/atomic_actions/test_actions.py # tests/sim/atomic_actions/test_control.py # tests/sim/atomic_actions/test_core.py # tests/sim/atomic_actions/test_endpoint_runtime_e2e.py # tests/sim/atomic_actions/test_engine.py # tests/sim/atomic_actions/test_runner.py # tests/sim/atomic_actions/test_trajectory_ops.py # tests/sim/planners/test_curobo_planner.py # tests/sim/planners/test_motion_generator_batched.py # tests/sim/skills/test_profiles.py # tests/sim/skills/test_scene.py
20bee2a to
0968684Compare0968684 to
20bee2aCompare…rified-runtime # Conflicts: # agent_context/topics/atomic-actions/atomic-actions.md # docs/source/overview/sim/atomic_actions/index.md # docs/source/overview/sim/semantic_skills.md # docs/source/tutorial/atomic_actions.rst # docs/source/tutorial/semantic_skills.rst # embodichain/lab/sim/atomic_actions/core.py # embodichain/lab/sim/atomic_actions/execution.py # embodichain/lab/sim/atomic_actions/plans.py # embodichain/lab/sim/atomic_actions/primitives/pick_up.py # embodichain/lab/sim/skills/runtime.py # tests/sim/atomic_actions/test_actions.py # tests/sim/atomic_actions/test_engine_per_env.py # tests/sim/skills/test_runtime.py
Uh oh!
There was an error while loading. Please reload this page.
Description
Stack
feat/semantic-skill-compilerConsolidation
Consolidates #493 and #494 into this layer. Scope: row-local lifecycle, physical-effect monitors, and the verified atomic-action runtime.
Complete the typed verified-action runtime with physical effect requirements, stable held-object and articulation state, effect-aware plans, and the reusable
OperateArticulationprimitive.Pick, Place, coordinated manipulation, HandOver, and articulation operations now expose explicit terminal effect boundaries and row-local state deltas. Verification observes real physics; it never creates synthetic attachments or teleports task objects.
Refs #471
Refs #474
Type of change
Screenshots
Not applicable.
Validation
tests/sim/atomic_actions, including articulation effects and per-environment executionChecklist