NVIDIA / NVIDIA/simready-foundation

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

Open
#16 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
88
Forks
18
PR merge metrics
No merged PRs in 30d

Description

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.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with nv_core/sr_specs/docs/capabilities/init.py and compare its imports with the modules present under capabilities/. Reproduce the failure using the documented simready-validate command and inspect profiles_validation_workflow.md, the validator_sample/, and the referenced CLI behavior. Done means the documented production profile workflow has a defined, working path for loading rules and validating a profile.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
cli, testing-qa, tooling
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.