Skip to content

simready-validate cannot validate against any profile — missing validation rule modules in capabilities/ #16

Description

@jkosnik11

Summary

simready-validate 2026.4.9 with omni-asset-validator 1.18.0 cannot validate assets against any SimReady Foundation profile (Prop-Robotics-Physx, Prop-Robotics-Neutral, etc.) because the validation rule Python modules referenced in nv_core/sr_specs/docs/capabilities/__init__.py do not exist in the repository.

Environment

  • simready-validate==2026.4.9 (pip, PyPI)
  • omniverse-asset-validator==1.18.0 (pip, PyPI)
  • omniverse-usd-profiles==1.10.22
  • simready-foundation at commit a1e9dd6 (Release 2026.04.1, branch main)
  • Python 3.12.13, Linux x86_64 (Ubuntu 22.04)

Steps to Reproduce

pip install simready-validate numpy
git clone https://github.com/NVIDIA/simready-foundation
simready-validate \
  --rules-path simready-foundation/nv_core/sr_specs/docs/capabilities \
  --features-path simready-foundation/nv_core/sr_specs/docs/features \
  --profiles-path simready-foundation/nv_core/sr_specs/docs/profiles/profiles.toml \
  --profile Prop-Robotics-Physx \
  /path/to/any/asset.usd

Error

ImportError: cannot import name 'validation' from 'capabilities.core.atomic_asset' (unknown location)

Root Cause

nv_core/sr_specs/docs/capabilities/__init__.py imports ~25 validation.py modules that do not exist in the repository:

from .core.atomic_asset import validation    # ← file missing
from .core.naming_paths import validation    # ← directory missing
from .core.sim_ready import validation       # ← file missing
from .core.units import validation           # ← directory missing
from .example import example                 # ← module missing
from .hierarchy import validation            # ← file missing
from .isaac_sim.composition import validation
from .isaac_sim.robot_core import validation
from .visualization.geometry import validation
from .visualization.materials import validation
# ... ~15 more missing modules

Only physics_bodies/physics_graspable/validation.py actually exists in the repo.

Impact

Without loadable rule modules:

  1. Requirements cannot be registered via --rules-path
  2. Features are skipped ("contains unregistered requirements")
  3. Profiles are skipped ("contains unregistered features")
  4. Validation always returns "Profile not found" regardless of asset quality

This means no asset can be validated against any profile using the documented workflow from profiles_validation_workflow.md.

Additional Context

  • omni-asset-validator 1.18.0 (pip) internally registers 41 validation rules covering 22 of the 44 requirement codes needed for Prop-Robotics-Physx. However, simready-validate's initialize() clears these during startup before re-loading from --rules-path.
  • The omniverse-cad-to-simready skill's simready-validate/scripts/run.py checks for a --json-output CLI flag (newer interface with --foundation-root) that does not exist in simready-validate 2026.4.9.
  • The validator_sample/ in this repo works fine because it uses its own self-contained rules/features/profiles, but production profiles cannot be validated.

Expected Behavior

One of:

  1. Ship the validation rule Python modules in capabilities/ so --rules-path works with the existing CLI
  2. Ship a newer simready-validate CLI version that bundles all rules internally and exposes --foundation-root / --json-output
  3. Fix capabilities/__init__.py to gracefully skip missing modules and fall back to whatever rules omni-asset-validator already registers

Workaround

Currently the only partial workaround is using simready-conform-profile (which passed for our asset) as the validation gate instead of the full simready-validate profile validation.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions