Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions agent_context/MAP.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -445,11 +445,12 @@ topics:
- id: asset-generalization
title: Asset Generalization
aliases: [asset generalization, asset provider, 资产泛化, 资产语义匹配]
keywords: [AssetDescriptor, PreparedAsset, AssetProvider, AssetRequirements, AssetRoleRequirement]
keywords: [AssetDescriptor, PreparedAsset, AssetProvider, AssetRequirements, AssetRoleRequirement, ResolvedAssetSet, resolve_asset_set]
paths: [topics/asset-generalization/asset-generalization.md]
source_of_truth:
- embodichain/data/asset_catalog/
- embodichain/lab/task_program/semantics/asset_requirements.py
watch_paths: [embodichain/data/asset_catalog/, tests/data/asset_catalog/, embodichain/lab/task_program/semantics/asset_requirements.py, tests/lab/task_program/semantics/test_asset_requirements.py]
- embodichain/lab/task_program/semantics/asset_matching.py
watch_paths: [embodichain/data/asset_catalog/, tests/data/asset_catalog/, embodichain/lab/task_program/semantics/asset_requirements.py, tests/lab/task_program/semantics/test_asset_requirements.py, embodichain/lab/task_program/semantics/asset_matching.py, tests/lab/task_program/semantics/test_asset_matching.py]
related_topics: [data-assets, task-programs, gen-sim, scene-services]
status: active
11 changes: 11 additions & 0 deletions agent_context/topics/asset-generalization/asset-generalization.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,3 +33,14 @@ the complete package into an immutable snapshot. `verify_prepared_asset` is the
common integrity boundary for any provider's prepared output; its package-root,
file-inventory and manifest contract is documented in that function. Changing
source content creates a new identity; changing cached content is an error.

## Task matching

`semantics/asset_matching.py` owns bounded role matching. It resolves explicit
category aliases, checks hard properties/capabilities and dimensions, and prunes
upright support/containment assignments as roles are selected. It never builds
the full Cartesian product. Candidate and search-node budgets are independent;
exhaustion produces structured rejection evidence rather than a relaxed match.
`ResolvedAssetSet` freezes selected content and requirement identity with a seed.
Absolute cache paths are excluded from its identity. Same asset selection does
not establish reachable grasps, settled state or measured task success.
25 changes: 25 additions & 0 deletions docs/source/api_reference/asset_generalization.rst
Original file line number Diff line number Diff line change
Expand Up @@ -146,3 +146,28 @@ Directory and explicit providers retain candidate metadata without claiming task
:members:

.. autofunction:: embodichain.data.asset_catalog.local.verify_prepared_asset

embodichain.lab.task_program.semantics.asset_matching additions
---------------------------------------------------------------

Bounded deterministic selection applies hard role constraints and upright geometric relations before freezing an asset set. Unknown metadata cannot satisfy required constraints; a resolved set does not certify physical success.

.. currentmodule:: embodichain.lab.task_program.semantics.asset_matching

.. autosummary::

AssetRejection
AssetResolutionError
ResolvedAssetSet
resolve_asset_set

.. autoclass:: embodichain.lab.task_program.semantics.asset_matching.AssetRejection
:members:

.. autoclass:: embodichain.lab.task_program.semantics.asset_matching.AssetResolutionError
:members:

.. autoclass:: embodichain.lab.task_program.semantics.asset_matching.ResolvedAssetSet
:members:

.. autofunction:: embodichain.lab.task_program.semantics.asset_matching.resolve_asset_set
Loading
Loading