feat(sim): add semantic integration manifest - #491
Conversation
There was a problem hiding this comment.
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
SemanticIntegrationManifestwith 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 liveSceneRegistryand 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.
| elif isinstance(call, HandOver): | ||
| object_ref = self.scene.resolve( | ||
| call.object, | ||
| expected_type=SceneObjectRef, | ||
| path=(*path, "object"), |
Greptile SummaryThe PR introduces provider-free scene and semantic-integration manifests, static call linking, live engine/profile binding, structured diagnostics, and focused tests.
Confidence Score: 4/5The 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
|
| 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]
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
| from .integration import ( | ||
| BoundSemanticCall, | ||
| BoundSemanticIntegration, | ||
| LinkedSemanticCall, | ||
| PathPart, | ||
| SceneEntityManifest, | ||
| SceneManifest, | ||
| SemanticDiagnostic, | ||
| SemanticIntegrationManifest, | ||
| SemanticValidationError, | ||
| ) |
There was a problem hiding this 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)
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!
Description
Stack
feat/semantic-call-catalogAdd 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
Screenshots
Not applicable.
Validation
tests/sim/skills/test_integration.pyChecklist