Skip to content

feat(sim): add declarative scene and robot skill foundation - #487

Merged
yuecideng merged 9 commits into
mainfrom
feat/atomic-action-pr2b-robot-skill-profile
Aug 18, 2026
Merged

feat(sim): add declarative scene and robot skill foundation#487
yuecideng merged 9 commits into
mainfrom
feat/atomic-action-pr2b-robot-skill-profile

Conversation

@yuecideng

@yuecidengyuecideng commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Description

Stack

Consolidation

Consolidates #485 and #486 into this layer. Scope: snapshot identity, authoritative scene registration, and declarative robot skill profiles.

Add embodiment-owned RobotSkillProfile declarations: a generic resource DAG, typed endpoints, capability matching, deterministic defaults, immutable resource claims, semantic commands, and versioned policy presets.

Profile validation checks installed skills, robot control parts, joint ownership, endpoint overlap, configured solvers, commands, and presets. The resource model remains generic enough for future mobile and whole-body integrations without adding task-shaped fields.

This branch is rebased onto main after #517 was squash-merged. It preserves #517's simplified engine-local registry and unified HeldObjectState while applying this layer's snapshot, scene-registry, and robot-skill-profile work.

Refs #471
Refs #474

Type of change

  • New feature (non-breaking change which adds functionality)

Screenshots

Not applicable.

Validation

  • Full test suite: 1499 passed, 111 skipped, 29 deselected
  • Post-rebase affected suites: 403 passed, 5 skipped, 4 deselected
  • Black 26.3.1: all 665 Python files unchanged
  • Changed Python files: Apache headers 39/39, future annotations 39/39, and public-module exports pass
  • Sphinx HTML build: successful (warnings are pre-existing/non-fatal)

Checklist

  • Code passes Black 26.3.1.
  • Corresponding public/design documentation is included in this stack.
  • Tests cover the affected behavior.
  • No dependency update is required.

@yuecidengyuecideng added robot Module related to robot atomic action atomic action related functionality enhancement New feature or request labels Aug 11, 2026
@yuecideng
yuecideng marked this pull request as ready for review August 11, 2026 16:46
CopilotAI lite review requested due to automatic review settings August 11, 2026 16:46
@greptile-apps

greptile-appsBot commented Aug 11, 2026

Copy link
Copy Markdown

Greptile Summary

The PR establishes declarative scene registration and embodiment-owned robot skill profiles, while integrating both foundations with atomic actions and motion planning.

  • Adds an authoritative scene registry with canonical identity, immutable registration metadata, snapshot providers, collision geometry derivation, and planner integration validation.
  • Adds resource-DAG-based robot skill profiles with typed endpoints, capability matching, deterministic bindings, resource claims, semantic commands, and policy presets.
  • Updates atomic actions to use snapshot-grounded object identity, explicit scene dependencies, binding contracts, and stable partial-batch attachment semantics.
  • Extends planner interfaces and cuRobo configuration to expose and validate collision-world identities, dynamic subsets, and batching modes.
  • Adds focused documentation and test coverage for the new scene, profile, planner, and atomic-action contracts.

Confidence Score: 5/5

The PR appears safe to merge because no blocking failure remains in the available follow-up review scope.

No blocking failure remains.

Important Files Changed

FilenameOverview
embodichain/lab/sim/skills/scene.pyIntroduces canonical scene registration, registry-backed snapshots, collision geometry derivation, and provider/planner contract validation.
embodichain/lab/sim/skills/profiles.pyImplements declarative robot resources, typed endpoint adapters, capability-based skill resolution, immutable claims, commands, defaults, and presets.
embodichain/lab/sim/atomic_actions/core.pyAdds stable object identity, framework-owned scene dependency collection, and declarative skill binding contracts.
embodichain/lab/sim/atomic_actions/engine.pyIntegrates robot skill profiles and semantic skill discovery into engine construction and action registration.
embodichain/lab/sim/planners/motion_generator.pyExposes planner collision-world contracts and supports registry validation through the motion-planning facade.
embodichain/lab/sim/planners/curobo/curobo_planner.pyConnects canonical obstacle identities and dynamic collision-world metadata to the cuRobo backend.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart LR
Registry[SceneRegistry] --> Provider[RegistrySceneProvider]
Registry --> Geometry[Collision geometry by canonical ID]
Provider --> Snapshot[SceneSnapshot]
Geometry --> Planner[MotionGenerator / Planner]
Snapshot --> Actions[AtomicAction planning]
Profile[RobotSkillProfile] --> Binding[Resolved skill and resource binding]
Binding --> Actions
Actions --> Planner
Loading

Reviews (3): Last reviewed commit: "style(atomic-actions): format rebased ch..." | Re-trigger Greptile

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR introduces a declarative “robot skill profile” layer that lets atomic skills publish robot-independent resource/endpoint requirements, while embodiments provide a generic resource DAG (endpoints, capabilities, commands, defaults, and versioned policy presets) that can be validated and deterministically resolved against an AtomicActionEngine.

Changes:

  • Add RobotSkillProfile / resource-graph binding, endpoint adapters, immutable claims, deterministic resolution, and versioned policy presets in embodichain.lab.sim.skills.
  • Add a new atomic-skill-side contract model (SkillBindingContract, slots/endpoints/routes/capabilities/constraints) and wire it into SkillDescriptor + AtomicActionEngine.skills.
  • Update built-in atomic action primitives to declare explicit binding contracts; add focused unit tests and documentation describing the new semantic binding path.

Reviewed changes

Copilot reviewed 26 out of 26 changed files in this pull request and generated no comments.

Show a summary per file
FileDescription
tests/sim/skills/test_profiles.pyNew comprehensive tests for profile ownership, validation, endpoint adapters, claims, defaults, ambiguity handling, and preset snapshotting.
tests/sim/atomic_actions/test_control.pyAdds validation tests for command snapshot typing and command-name whitespace constraints.
embodichain/lab/sim/skills/profiles.pyImplements declarative robot resources/endpoints, endpoint adapters, binding/validation logic, claims, defaults, and policy presets.
embodichain/lab/sim/skills/init.pyExposes the new profile/binding API from the skills package.
embodichain/lab/sim/atomic_actions/requirements.pyAdds robot-independent skill binding contracts, standard capability IDs, and disjointness constraints.
embodichain/lab/sim/atomic_actions/primitives/press.pyDeclares the skill binding contract (endpoints/capabilities/commands/routes/constraints) for Press.
embodichain/lab/sim/atomic_actions/primitives/place.pyDeclares the skill binding contract for Place.
embodichain/lab/sim/atomic_actions/primitives/pick_up.pyDeclares the skill binding contract for PickUp.
embodichain/lab/sim/atomic_actions/primitives/move_joints.pyDeclares the skill binding contract for MoveJoints (kept non-agent-visible).
embodichain/lab/sim/atomic_actions/primitives/move_held_object.pyDeclares the skill binding contract for MoveHeldObject.
embodichain/lab/sim/atomic_actions/primitives/move_end_effector.pyDeclares the skill binding contract for MoveEndEffector.
embodichain/lab/sim/atomic_actions/primitives/hand_over.pyDeclares the skill binding contract for HandOver, including disjoint slot/resource constraints.
embodichain/lab/sim/atomic_actions/primitives/coordinated_placement.pyDeclares the skill binding contract for CoordinatedPlacement.
embodichain/lab/sim/atomic_actions/primitives/coordinated_pickment.pyDeclares the skill binding contract for CoordinatedPickment.
embodichain/lab/sim/atomic_actions/engine.pyAdds engine.skills, optional skill_profile binding at construction, and bind_skill_profile(); invalidates bound profiles on registration changes.
embodichain/lab/sim/atomic_actions/core.pyExtends SkillDescriptor with binding_contract and enforces route coverage for declared core roles; adds AtomicAction.binding_contract.
embodichain/lab/sim/atomic_actions/control.pyAdds ControlCommand.equivalent_to and strengthens snapshot/name validation in command profiles.
embodichain/lab/sim/atomic_actions/init.pyRe-exports the new requirements/contracts and capability constants.
docs/source/overview/sim/index.rstUpdates simulation stack overview to include robot skill profiles.
docs/source/overview/sim/atomic_actions/robot_skill_profiles.mdNew conceptual/user documentation for robot skill profiles, endpoints/adapters, binding semantics, and constraints.
docs/source/overview/sim/atomic_actions/index.mdIntegrates robot skill profiles into the atomic-actions overview and clarifies semantic vs direct-core binding boundaries.
docs/source/api_reference/embodichain/embodichain.lab.sim.skills.rstAdds API reference sections for the new skill profile classes/errors.
docs/source/api_reference/embodichain/embodichain.lab.sim.atomic_actions.rstAdds API reference sections for semantic resource contracts and capability constants.
docs/design/declarative_expert_program_plan.mdUpdates the design plan to reflect PR2B (robot skill profiles) being implemented on the stacked branch.
agent_context/topics/atomic-actions/atomic-actions.mdUpdates internal project context docs with the new profile/contract model and discovery boundaries.
agent_context/MAP.yamlExtends topic index keywords/paths to include skill profiles and semantic resource contract docs.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@yuecideng
yuecideng changed the base branch from feat/atomic-action-pr2a-scene-registry to mainAugust 11, 2026 17:47
@yuecidengyuecideng changed the title feat(sim): add declarative robot skill profilesfeat(sim): add declarative scene and robot skill foundationAug 11, 2026
@yuecideng

Copy link
Copy Markdown
ContributorAuthor

Temporarily closing and reopening to trigger the full CI workflow after retargeting this consolidated root PR to main.

@yuecidengyuecideng reopened this Aug 11, 2026
@yuecideng
yuecidengforce-pushed the feat/atomic-action-pr2b-robot-skill-profile branch from 794bc62 to c4eaf4eCompareAugust 18, 2026 10:22
@yuecideng
yuecideng merged commit 18fd07e into mainAug 18, 2026
4 of 5 checks passed
@yuecideng
yuecideng deleted the feat/atomic-action-pr2b-robot-skill-profile branch August 18, 2026 10:57
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

atomic actionatomic action related functionalityenhancementNew feature or requestrobotModule related to robot

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@yuecideng