Profiles#

A profile is the validation contract that a pipeline selects for an asset. It combines one or more features, and those features resolve to requirements and rules.

For a factory workflow, a profile is useful because the asset must satisfy both general asset-quality expectations and local assembly constraints. The example profile enables a customer feature named factory_bounds; that feature depends on the built-in Minimal Placeable Visual feature and adds a factory-specific bounding-box requirement.

Concept Map#

  • A requirement is one testable statement, such as “boundable prims must fit within a 6 m by 6 m by 4 m box.”

  • A capability groups related requirements, such as factory geometry requirements.

  • A feature selects requirements and can depend on other features.

  • A profile selects the features that define the complete validation target.

Versioned TOML Profile#

Use profiles/profiles.toml when a profile needs explicit versions:

[Factory-Asset]
"1.0.0" = {features = [
    {"factory_bounds" = {version = "1.0.0"}},
]}

Feature entries are required by default. Add optional = true when a profile should use a feature only if that feature is available in the runtime registry.

[Factory-Asset]
"1.1.0" = {features = [
    {"factory_bounds" = {version = "1.0.0"}},
    {"experimental_robotics_metadata" = {version = "0.1.0"}, optional = true},
]}

Feature Dependencies#

The profile above lists only the customer feature:

{"factory_bounds" = {version = "1.0.0"}}

The customer feature is where Minimal Placeable Visual belongs in dependencies:

| Dependencies | com.nvidia.usd.minimal_placeable_visual@1.0.0 |

That keeps the profile small and lets the feature remain the reusable unit. When the plugin registers generated features and profiles, ValidationEngine.enable_profile(...) resolves the profile feature, the feature’s dependencies, and all referenced requirements.

Runtime Parameter Overrides#

Requirement default values are part of the generated package. A production line can override them from the CLI:

nvidia_usd_validate \
  --profile com.example.factory.Factory-Asset \
  --parameter MAX_X_METERS=4.0 \
  --parameter MAX_Y_METERS=3.0 \
  --parameter MAX_Z_METERS=2.5 \
  path/to/factory_prop.usda

The same can be done from Python:

import factory_asset_profiles
from usd_validation_nvidia import UserParameter, ValidationEngine

engine = ValidationEngine()
engine.enable_profile(factory_asset_profiles.Profiles.FACTORY_ASSET)

max_x = engine.parameters["MAX_X_METERS"]
engine.add_parameter(UserParameter(parameter=max_x, assigned_value=4.0))

results = engine.validate("path/to/factory_prop.usda")

Use a new requirement version when a different default value should become part of the named profile contract.