simready-foundation-add-runtime-test
Use for adding SimReady runtime tests, runner expectations, batch/job/report notes, and validation evidence.
npx skills add https://github.com/nvidia/simready-foundation --skill simready-foundation-add-runtime-testSimReady Add Runtime Test
Purpose
Use this skill when static validators are not enough to prove that a feature or
profile works in a runtime, and the runtime evidence must live in the SimReady
Foundation repository. Runtime tests are authored in the owning tier's
importable <test-package> and executed through the simready-benchmark plan,
run, stamp, and report pipeline. The core tier currently uses
simready_benchmark_kit_suite; other tiers may publish a different import
package and must declare it through their descriptor's runtime_tests_path.
This skill is deliberately scoped to the Foundation-repository wiring. The
generic mechanics of authoring, packaging, running, and reporting benchmark
tests are owned by the simready-benchmark library's own agent skills; do not
duplicate them here. Use those skills for the test-authoring and pipeline
mechanics, and use this skill for how a test is placed into this repository and
kept in sync with the Foundation docs, feature manifests, and profiles.
Do not hand-edit generated plans, result JSON, or report artifacts. Change the Python test source, its documentation, and focused tests instead.
Delegate Mechanics to the simready-benchmark Library Skills
The external simready-benchmark library ships its own agent skills that are the
source of truth for the framework mechanics. Locate them with
simready-benchmark --skills-path, then read and follow the relevant one:
write-test-pack- the@testdecorator, required metadata (features,name,description,expected_video,version,engine,config_defaults,max_duration),RunContextusage, media roles, config-driven tests, and packaging/discovery through thesimready_benchmark.testsentry-point group.run-tests- plan, run, and report a suite against a profile.diagnose-failures- read a report and propose a scoped re-run.
Treat the installed library skills as authoritative for API names and flags; they match the installed framework version. This skill only adds what those skills do not know: the Foundation repository's layout, docs, and spec bindings.
What This Skill Owns (Foundation-Specific)
- Deciding whether the test belongs to a Foundation tier. A test that proves a
tier-owned feature should ship with that tier. An independent OEM or
experimental test pack that does not own the feature should use the
Benchmark
write-test-packskill and either an independent wheel or an explicit development path. - Placing a tier-owned test directly under
nv_core/tiers/<tier-directory>/<test-package>/fet###_*and focused unit tests undernv_core/tiers/<tier-directory>/tests/runtime_tests/unit/. The package name comes from the owning tier descriptor; it is not globally fixed. - Keeping the tier wheel's package list and its
simready.tierdescriptor'sruntime_tests_pathsynchronized. The descriptor points directly at the importable test package directory; it does not point at aruntime_testscontainer. - Keeping the canonical
FET_###_<RUNTIME>decorator entry and semantic version constraint synchronized with the owning feature manifest and profile TOMLs. The decorator is the executable feature-to-test binding; feature manifests do not carry a separateruntime_testsselector. The current@testdecorator has norequirementargument, so document the requirement or behavioral contract in the test description and matching Foundation docs. - Updating the matching documentation under the owning
<test-package>/docs/directory and any feature/profile acceptance text that promises this runtime evidence. The documentation assembler publishes the tier-declared source at the stableguides/benchmark/tests/URL.
Prerequisites
Before editing, read:
AGENTS.mdnv_core/sr_specs/docs/guides/benchmark/benchmark.mdnv_core/sr_specs/docs/guides/benchmark/overview.mdnv_core/sr_specs/docs/guides/benchmark/pipeline.mdnv_core/sr_specs/docs/guides/benchmark/running.mdnv_core/sr_specs/docs/guides/benchmark/reading-reports.mdnv_core/tiers/<tier-directory>/<test-package>/docs/tests.md(or the landing page declared by that test package)nv_core/tiers/<tier-directory>/<test-package>/docs/authoring.mdnv_core/tiers/<tier-directory>/pyproject.tomlnv_core/tiers/<tier-directory>/simready/foundation/<tier-module>/_tier.pynv_core/tiers/<tier-directory>/<test-package>/nv_core/tiers/<tier-directory>/tests/runtime_tests/unit/- relevant feature/profile docs that need runtime evidence
- the neighboring runtime tests for the same feature family
Inputs
Collect or infer:
| Input | Requirement |
|---|---|
runtime_goal | Behavior to prove, such as drop/settle, articulation motion, rendering, or importability. |
feature_or_profile | Feature/profile requiring runtime evidence. |
asset_scope | Representative assets and the validation/feature selection that makes the test applicable. |
ownership | Tier-owned feature evidence, independent published pack, or unpublished development pack. |
test_identifier | Unique @test name and semantic test version. |
test_module | Python module in the matching FET package. |
engine | Required Kit/Isaac engine tags and supported version range. |
test_config | Defaults exposed through config_defaults, including thresholds and timeouts. |
expected_artifacts | Metrics, logs, images, video, result JSON, and HTML report evidence. |
Instructions
Use this checklist when changing the repository. It covers the Foundation-specific
wiring only; follow the simready-benchmark library skills (see above) for the
@test authoring, packaging, and pipeline mechanics.
- Decide whether runtime evidence is required by the feature/profile or only useful as supplementary confidence.
- Read the matching feature manifest and feature documentation. Identify the
canonical
FET_###_<RUNTIME>decorator entry and semantic version constraint, then confirm the same feature version is selectable from the relevant profile TOMLs. The decorator is the executable feature-to-test binding; do not add a separateruntime_testsselector to the feature manifest. Identify the requirement or runtime promise it proves for documentation, but do not pass arequirementkeyword to@test; that keyword is not part of the current API. - Read the
simready-benchmarkwrite-test-packskill (viasimready-benchmark --skills-path) and follow it for the@testauthoring mechanics, decorator metadata,RunContextusage, and config defaults. Do not restate those mechanics here. - Choose the ownership model:
- For a tier-owned feature, resolve
<test-package>from the tier descriptor'sruntime_tests_path, add the test tonv_core/tiers/<tier-directory>/<test-package>/fet###_*, and keep it in the same wheel as that tier. - For an independent published pack, follow the Benchmark skill and register
the wheel under
simready_benchmark.tests. - For an unpublished pack, point
--tests-pathat the importable package directory. Explicit paths are additive to installed tier and independent providers.
- For a tier-owned feature, resolve
- For a tier-owned test, inspect neighboring modules and add each independently
reportable test in its own Python file. Reuse the suite's scene, context,
cleanup, configuration, and unit-test patterns. Do not recreate a separate
nv_core/runtime_testsornv_core/testing_toolsprovider tree. - Confirm the owning tier's
pyproject.tomlincludes both itssimreadypackage and<test-package>, and that the tier descriptor'sruntime_tests_pathresolves directly to that importable package directory. For the core tier,<test-package>is currentlysimready_benchmark_kit_suite. Descriptor import must remain dependency-light and must not import tests, Kit, Isaac, orpxr. - Bind the test to this repository's specs with the canonical Foundation
feature ID and semantic version constraint in the decorator's
featureslist. Confirm that ID/version against the owning feature manifest and relevant profile TOMLs. Provider identity is a discovery concern handled by the tier descriptor,simready_benchmark.testsentry point, or--tests-path; do not author provider/test selectors in feature manifests. Keep pure calculation and discovery logic outside the coroutine and add focused unit tests; add registration/metadata coverage when changing mappings or report behavior. - Update the matching page under the owning suite's
docs/directory and any feature/profile acceptance text that promises this runtime evidence. Keep the suite index/toctree and the tier's declarative documentation-source mapping synchronized. Do not create a second copy undersr_specs/docs. - Validate both delivery paths that changed:
- Source checkout: use
--foundations-path <repo>or point--tests-pathdirectly at the test package while developing, then run--list-tests. - Tier wheel: build and install the tier wheel in a clean environment and run
--show-configplus--list-testswithout--tests-path. Then run a scoped--plan-onlyand--no-stampexecution. Inspect the report/media and summarize the pass/fail/skip signal. If Kit/Isaac is unavailable, report a blocked runtime check rather than claiming a pass.
- Source checkout: use
Examples
Example request:
Add a runtime test proving a SimReady factory asset connection point imports and aligns correctly in Kit.
Expected result summary:
changed_files: new docs, manifests, indexes, or validation scaffolding
validation: discovery, plan-only, focused unit checks, and runtime evidence when available
remaining_gaps: requirement, validator, adapter, profile, or runtime-test follow-up
Policies
- Generated plans, result JSON, media, and report folders are artifacts, not source of truth.
- Runtime tests should be reproducible from the repository, installed Benchmark packages, engine configuration, asset path, and command line.
- Tier-owned tests ship in the tier wheel and are advertised only through the
tier descriptor. Independent test-only wheels use
simready_benchmark.tests. - The decorator's canonical feature ID and semantic version constraint own the executable feature-to-test binding. Keep them synchronized with the tier's feature manifests and profile TOMLs.
--tests-pathmust point at the importable package directory containing__init__.py, not at the repository root.- Keep user/CI-owned executable paths and credentials out of committed tests and docs.
- Do not change an asset merely to make a runtime test pass unless the task explicitly includes asset conformance.
- If the runtime cannot run locally, still add clear commands, expected signals, and focused non-runtime validation.
Limitations
- Do not mutate published feature or profile versions in place.
- Do not invent requirement IDs or validator behavior when the contract is ambiguous; record the question.
- Do not skip index, manifest, validation, or downstream follow-up notes.
Troubleshooting
- Error: the new concept overlaps an existing artifact. Solution: update the existing capability, requirement, feature, profile, or adapter instead.
- Error: names or IDs conflict. Solution: re-check naming conventions and nearby indexes before editing further.
- Error: validation strategy is unclear. Solution: document deferred validation and the exact follow-up skill.
Resources
assets/openai.yamlpreserves optional UI metadata for clients that read skill display hints. It is not required for the workflow.
Summary Format
Report:
| Field | Meaning |
|---|---|
runtime_goal | Behavior being tested. |
feature_or_profile | Spec surface covered. |
test_sources | Test implementation, unit tests, and documentation changed. |
engine_requirements | Kit/Isaac/runtime assumptions. |
commands | Discovery, plan-only, focused unit, and runtime commands. |
artifacts | Expected or produced result/report evidence. |
validation | Runtime test result or blocker. |