Conformance Metadata#
Code |
PKG.CONF.001 |
|---|---|
Validator |
Not yet implemented |
Compatibility |
|
Tags |
Summary#
Packages MAY include conformance metadata files recording SimReady Foundations validation results, following defined naming and JSON schema conventions
Description#
Purpose#
Packages MAY include one or more conformance metadata files recording the results of SimReady Foundations validation. Conformance files serve two roles depending on how they are registered:
Declaration (registered-immutable): Conformance files listed in the package definition’s
metadataarray are set at package creation time, covered by the package hash, and represent the publisher’s declared profile conformance. The packaging tool is responsible for validating before including these files.Evidence (post-creation): Conformance files added to
.metadata/after package creation are NOT listed in themetadataarray and are NOT covered by the package hash. These allow independent or third-party validation to be recorded without modifying the package identity.
Multiple conformance files allow declaration and post-creation evidence to coexist. For example, a publisher may validate core features before publishing (declaration, included in the package hash), and a third party may validate against an additional profile afterward (evidence, added as post-creation metadata).
File Naming#
Conformance files MUST be named com.nvidia.simready.conformance.{profile}@{profile_version}.json. Any literal @ or % in the profile name or version MUST be percent-encoded (%40, %25). Each conformance file records validation results for exactly one profile and version.
Examples:
com.nvidia.simready.conformance.Prop-Robotics-Physx@1.0.0.jsoncom.nvidia.simready.conformance.Package@1.0.0.jsoncom.nvidia.simready.conformance.Prop-Robotics-Neutral@1.0.0.json
Consistency#
The profile and profile_version fields inside the conformance file MUST match the profile name and version encoded in the filename (after percent-decoding).
JSON Schema#
Each conformance metadata file MUST conform to the following structure:
format_version(string, MUST) — version of the conformance metadata formatprofile(string, MUST) — profile name the package was validated againstprofile_version(string, MUST) — version of the profile used for validationtimestamp(string, MUST) — ISO 8601 datetime of the validation runassets(array, MUST) — one entry per validated asset in the packageassets[].asset(string, MUST) — forward-slash relative path from the package root to the validated file (e.g.simready_usd/sm_apple_a01_01.usd); for package-level validation use the package definition filename (e.g.com.nvidia.simready.packaging.json)assets[].features(array, MUST) — list of all features tested for this assetassets[].features[].<id>(object, MUST) — feature ID as key, containing validation detailsassets[].features[].<id>.version(string, MUST) — version of the feature that was validatedassets[].features[].<id>.passed(boolean, MUST) — whether the feature passed validationassets[].features[].<id>.failing_requirements(array of strings, MUST) — requirement IDs that failed; empty whenpassedistrueassets[].features[].<id>.dependencies(array, MUST) — feature dependencies evaluated during validation, each entry following the same{ "<id>": { "version": "<ver>" } }shape; empty when the feature has no dependenciescontent_hash(hash object, MAY) — the content hash of the package contents at the time validation was performed, computed as defined by PKG.HASH.001. When present, consumers can recompute the content hash from the current BOM and compare: a match proves the validation results still apply to the current source files without re-running the validation engine. Omitted when the content hash is not available (e.g. when validating a package that has no BOM)
A package may contain multiple assets validated independently — for example, a simready_usd variant validated against one profile and a simready_physx_usd variant validated against another. Each asset entry carries its own features array so consumers can determine the full validation outcome per asset from a single file. Both passing and failing features are recorded.
Why is it required?#
Without a portable record, a package’s validation status is lost when it moves between storage systems
Multiple conformance files allow declaration and post-creation evidence to coexist in the same package
The
@-delimited qualifier makes profile identity parseable from the filename without reading the file, enabling efficient discovery
Examples#
// Valid: declaration with multiple assets — registered-immutable conformance (in metadata array)
// File: .metadata/com.nvidia.simready.conformance.Prop-Robotics-Physx@1.0.0.json
{
"format_version": "1.0",
"profile": "Prop-Robotics-Physx",
"profile_version": "1.0.0",
"timestamp": "2026-03-02T00:00:00",
"assets": [
{
"asset": "simready_physx_usd/sm_apple_a01_01.usd",
"features": [
{
"FET001_BASE_NEUTRAL": {
"version": "0.1.0",
"passed": true,
"failing_requirements": [],
"dependencies": []
}
},
{
"FET003_BASE_PHYSX": {
"version": "0.1.0",
"passed": false,
"failing_requirements": ["RB.MB.001"],
"dependencies": [
{ "FET001_BASE_NEUTRAL": { "version": "0.1.0" } }
]
}
}
]
}
]
}
// Valid: declaration — single asset (in metadata array)
// File: .metadata/com.nvidia.simready.conformance.Prop-Robotics-Neutral@1.0.0.json
{
"format_version": "1.0",
"profile": "Prop-Robotics-Neutral",
"profile_version": "1.0.0",
"timestamp": "2026-03-02T00:00:00",
"assets": [
{
"asset": "simready_usd/sm_apple_a01_01.usd",
"features": [
{
"FET001_BASE_NEUTRAL": {
"version": "0.1.0",
"passed": true,
"failing_requirements": [],
"dependencies": []
}
}
]
}
]
}
// Valid: evidence — package-level conformance (not in metadata array)
// File: .metadata/com.nvidia.simready.conformance.Package@1.0.0.json
{
"format_version": "1.0",
"profile": "Package",
"profile_version": "1.0.0",
"timestamp": "2026-03-15T14:30:00",
"assets": [
{
"asset": "com.nvidia.simready.packaging.json",
"features": [
{
"FET030_PACKAGING_CORE": {
"version": "0.1.0",
"passed": true,
"failing_requirements": [],
"dependencies": []
}
}
]
}
]
}
// Valid: declaration with content_hash — proves results apply to a specific source snapshot
// File: .metadata/com.nvidia.simready.conformance.Package-Candidate@1.0.0.json
{
"format_version": "1.0",
"profile": "Package-Candidate",
"profile_version": "1.0.0",
"timestamp": "2026-03-01T12:00:00",
"content_hash": {
"sha256": "a1b2c3d4e5f6..."
},
"assets": [
{
"asset": "simready_usd/sm_apple_a01_01.usd",
"features": [
{
"FET035_PACKAGE_CANDIDATE": {
"version": "0.1.0",
"passed": true,
"failing_requirements": [],
"dependencies": []
}
}
]
}
]
}
// Invalid: missing required profile, timestamp, and assets fields
// File: .metadata/com.nvidia.simready.conformance.Prop-Robotics-Neutral@1.0.0.json
{
"format_version": "1.0"
}
// Invalid: asset entry missing required asset path
// File: .metadata/com.nvidia.simready.conformance.Prop-Robotics-Neutral@1.0.0.json
{
"format_version": "1.0",
"profile": "Prop-Robotics-Neutral",
"profile_version": "1.0.0",
"timestamp": "2026-03-02T00:00:00",
"assets": [
{
"features": [
{ "FET001_BASE_NEUTRAL": { "version": "0.1.0", "passed": true, "failing_requirements": [], "dependencies": [] } }
]
}
]
}
How to comply#
Include conformance metadata files if SimReady Foundations validation has been performed
Name each file
com.nvidia.simready.conformance.{profile}@{profile_version}.json; percent-encode any@or%in the profile name or versionEnsure the
profileandprofile_versionfields inside the file match the profile name and version encoded in the filenameStructure files as JSON with
format_version,profile,profile_version,timestamp, andassetsarrayEach entry in
assetsMUST have anassetpath (relative to the package root) and afeaturesarrayInclude all tested features per asset, each with
version,passed,failing_requirements, anddependenciesFor package-level validation, use the package definition filename as the
assetvalue (e.g.com.nvidia.simready.packaging.json)