Skip to content

feat(sim): add semantic integration manifest - #491

Closed
yuecideng wants to merge 1 commit into
feat/semantic-call-catalogfrom
feat/semantic-integration-manifest
Closed

feat(sim): add semantic integration manifest#491
yuecideng wants to merge 1 commit into
feat/semantic-call-catalogfrom
feat/semantic-integration-manifest

Conversation

@yuecideng

@yuecideng yuecideng commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Description

Stack

Add provider-free semantic integration manifests and deterministic fingerprints. Scene, robot-profile, call, endpoint, transport, effect, and policy declarations can now be linked and audited before any live simulator object is created.

The manifest is the single compatibility handshake between declarative frontends and runtime providers; it rejects missing, duplicate, stale, or incompatible integrations without introspecting arbitrary environment attributes.

Refs #471
Refs #474

Type of change

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

Screenshots

Not applicable.

Validation

  • Focused coverage: tests/sim/skills/test_integration.py
  • Final affected-suite regression on the stack tip: 1215 passed, 2 skipped, 8 deselected
  • Changed Python files pass Black 26.3.1; the Sphinx build and rollout-report drift check pass at the stack tip

Checklist

  • Changed Python files pass Black 26.3.1.
  • Corresponding public/design documentation is included in this stack.
  • Tests cover the affected behavior.
  • No dependency update is required.

@yuecideng yuecideng added 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
Copilot AI lite review requested due to automatic review settings August 11, 2026 16:46

Copilot AI 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

Adds a provider-free “semantic integration manifest” layer to the simulation skills stack, enabling deterministic, static validation/linking of scene entities, robot profiles, and semantic call bindings before any live simulator/provider objects are touched.

Changes:

  • Introduces SemanticIntegrationManifest with static linking (link_call) and live binding (bind) phases, plus structured diagnostics (SemanticDiagnostic / SemanticValidationError).
  • Adds provider-free scene declarations (SceneEntityManifest, SceneManifest) that can be projected from a live SceneRegistry and later validated for drift.
  • Adds a dedicated pure-Python test suite covering static scene/catalog/profile validation and linkage behavior.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.

File Description
embodichain/lab/sim/skills/integration.py Implements the static + bound semantic integration manifest, scene manifests, and deterministic diagnostics/errors.
tests/sim/skills/test_integration.py Adds focused unit tests validating static linking behavior and drift/error diagnostics without observing providers.
embodichain/lab/sim/skills/__init__.py Exposes the new manifest/linking/diagnostic types as part of the skills public API.
Suppressed comments (1)

embodichain/lab/sim/skills/integration.py:781

  • HandOver static linking currently resolves a GRASP affordance and stores it under "receiver_grasp", but HandOver has no corresponding field and the resolved affordance is not reflected in the normalized call. This makes the static linker perform unrelated scene-affordance validation and produces a misleading diagnostic path ("object.handover_grasp").
            grasp = self.scene.resolve_affordance(
                object_ref,
                capability=GRASP_AFFORDANCE_CAPABILITY,
                path=(*path, "object", "handover_grasp"),
            )

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

Comment on lines +771 to +775
elif isinstance(call, HandOver):
object_ref = self.scene.resolve(
call.object,
expected_type=SceneObjectRef,
path=(*path, "object"),
@greptile-apps

greptile-apps Bot commented Aug 11, 2026

Copy link
Copy Markdown

Greptile Summary

The PR introduces provider-free scene and semantic-integration manifests, static call linking, live engine/profile binding, structured diagnostics, and focused tests.

  • Exposes the semantic-integration types through the skills package.
  • Validates scene topology, affordance selection, resource declarations, policy presets, and live-registry compatibility.
  • Produces bound calls tied to the installed engine and robot profile.

Confidence Score: 4/5

The PR appears safe to merge, with the non-blocking requirement that the newly exported public API be documented.

The implementation’s tested static and live validation paths have no established runtime failure, but the new public manifest and binding workflow is exposed without the repository-required documentation.

Files Needing Attention: embodichain/lab/sim/skills/init.py

Important Files Changed

Filename Overview
embodichain/lab/sim/skills/integration.py Adds immutable scene manifests, deterministic static validation, live binding checks, and factory-owned bound semantic calls; no concrete behavioral defect was established.
embodichain/lab/sim/skills/init.py Publicly exports the new semantic-integration API, but the public API addition lacks the required documentation update.
tests/sim/skills/test_integration.py Adds focused coverage for manifest projection, structured diagnostics, static linking, provider isolation, and stale-profile rejection.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart LR
    A[SceneManifest + RobotSkillProfile + CallCatalog] --> B[SemanticIntegrationManifest]
    C[SemanticCallSpec] --> D[Static link_call]
    B --> D
    D --> E[LinkedSemanticCall]
    B --> F[bind SceneRegistry + AtomicActionEngine]
    F --> G[BoundSemanticIntegration]
    G --> H[Live link_call]
    E --> H
    H --> I[BoundSemanticCall]
Loading

Fix All in Codex Fix All in Claude Code

Prompt To Fix All With AI
### Issue 1
embodichain/lab/sim/skills/__init__.py:34-44
**Public integration API undocumented**

These exports make the semantic-integration types part of the public skills API, but the PR provides no project-level documentation for constructing manifests, linking calls, binding live providers, or handling validation diagnostics.

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

Reviews (1): Last reviewed commit: "feat(sim): add semantic integration mani..." | Re-trigger Greptile

Comment on lines +34 to +44
from .integration import (
BoundSemanticCall,
BoundSemanticIntegration,
LinkedSemanticCall,
PathPart,
SceneEntityManifest,
SceneManifest,
SemanticDiagnostic,
SemanticIntegrationManifest,
SemanticValidationError,
)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Public integration API undocumented

These exports make the semantic-integration types part of the public skills API, but the PR provides no project-level documentation for constructing manifests, linking calls, binding live providers, or handling validation diagnostics.

Context Used: AGENTS.md (source)

Prompt To Fix With AI
This is a comment left during a code review.
Path: embodichain/lab/sim/skills/__init__.py
Line: 34-44

Comment:
**Public integration API undocumented**

These exports make the semantic-integration types part of the public skills API, but the PR provides no project-level documentation for constructing manifests, linking calls, binding live providers, or handling validation diagnostics.

**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!

Fix in Codex Fix in Claude Code

@yuecideng

Copy link
Copy Markdown
Contributor Author

Folded into #492 during stacked-PR consolidation. Its commits remain included in #492; the remote branch is retained for traceability.

@yuecideng yuecideng closed this Aug 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

atomic action atomic action related functionality enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants