SimReady Conform FET000NEWTON
SkillDev toolsUse for repairing exact FET_000_NEWTON SimReady conformance: the Newton physics runtime variant scaffolding (Newton variant set, runnables/physics/newton payload, and SimReady variant metadata). Use when a profile, validation report, or user request names FET_000_NEWTON; default to version `0.1.0`.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the SimReady Conform FET000NEWTON skill
What this skill tells your AI
The instructions your AI receives, as published by nvidia/simready-foundation in skills/simready-foundation-conform-fet-000-newton/SKILL.md and read by ahel’s review.
Purpose
Use this exact feature skill when the selected profile, validation report, or user request names FET_000_NEWTON. It repairs or stages the Newton physics runtime variant contract on top of neutral Core, without drifting into another runtime contract.
FET_000_NEWTON adds the Newton runtime variant scaffolding to an asset that already satisfies neutral Core (FET_000_STANDARD@0.1.0). It does not author Newton rigid-body/collider physics itself; that belongs to FET_003_NEWTON and related features. This skill only makes the Newton variant set, its runnables/physics/newton payload, and its SimReady variant metadata correct.
Default to FET_000_NEWTON@0.1.0 when the user asks for this feature without a version. If the report names a different FET_000_<RUNTIME> feature (FET_000_PHYSX, FET_000_MUJOCO), switch to that feature's matching skill before editing.
To conform an asset to a profile like Robotics-Prop@3.1.0 that lists all three optional runtime variants, run all three FET_000_* runtime skills so each of PhysX, Newton, and MuJoCo ends up with both a variant set on the default prim and a SimReady_Metadata.Variants.Physics entry. Never leave a runnables/physics/<stem>.usd payload on disk without its matching variant set and metadata — an orphaned payload fails RV.007/RV.008/RV.009 for its runtime.
This skill is not the final validator and should not silently mutate source assets. It stages a repaired USD-family asset under the requested output directory, applies deterministic fixes only where safe, and stops when a validation gate still fails or a manual decision is required.
Source of Truth
Before changing an asset or package, read:
nv_core/tiers/simready_foundation_tier_core/simready/foundation/tier_core/features/FET_000_NEWTON-0.1.0.jsonnv_core/tiers/simready_foundation_tier_core/simready/foundation/tier_core/features/FET_000_NEWTON.mdnv_core/tiers/simready_foundation_tier_core/simready/foundation/tier_core/features/FET_000_STANDARD-0.1.0.json(dependency)- Requirement docs for the failing IDs under
nv_core/tiers/simready_foundation_tier_core/simready/foundation/tier_core/capabilities/core/runtime_variants/requirements/:newton-variant-set.md(RV.004)newton-runtime-payload.md(RV.005)newton-variant-metadata.md(RV.006)runtime-variant-section-purity.md(RV.010)runtime-physics-isolation.md(RV.011)
- For the cross-runtime isolation policy that RV.010/RV.011 enforce (including the strict Newton isolation rule), read
nv_core/tiers/simready_foundation_tier_core/simready/foundation/tier_core/capabilities/core/runtime_variants/runtime-physics-isolation-matrix.md. - For the Newton payload body (mesh collision authoring), read
nv_core/tiers/simready_foundation_tier_core/simready/foundation/tier_core/capabilities/physics_bodies/physics_rigid_bodies/requirements/newton-collider-api.mdandnv_core/tiers/simready_foundation_tier_core/simready/foundation/tier_core/features/FET_003_NEWTON.md.
Treat the selected JSON manifest as authoritative for dependencies and requirement IDs.
This skill is self-contained: the deterministic guidance and worked example below are sufficient to author a conforming Newton runtime variant from scratch. You do not need to open an existing 3.1.0 asset and copy its structure — do so only to cross-check, and only against a sample known to pass.
Sample-asset caveats (do not copy structure blindly):
- Author from the requirement docs and the worked example below, not by copying an existing asset. Sample assets drift, and a stale or pre-contract sample will lead you astray. If you do cross-check, only trust a sample you have just confirmed passes the full target profile (RV.001–011 and AA.001, not the RV-only harness) — never treat any specific asset as a canonical template.
Feature Versions
| Version | Dependencies | Requirements |
|---|---|---|
0.1.0 | FET_000_STANDARD@0.1.0 | RV.004, RV.005, RV.006, RV.010, RV.011 |
Inputs
| Input | Requirement |
|---|---|
usd_asset | Required USD-family asset to repair. |
output_root | Required or inferred folder for staged assets and reports. |
simready_profile / profile_version | Validation target, if supplied. |
validation_report | Preferred JSON/markdown report from the failing gate. |
newton_overrides | Optional source of the Newton runtime override data (schemas/attributes) to place in the payload; required to fully author newton.usd content. |
Workflow
- Confirm the input exists and identify the exact selected feature/version.
- Ensure the neutral Core gate (
FET_000_STANDARD@0.1.0) is in shape first; if Core fails, hand off tosimready-foundation-conform-fet-000-standardbefore this skill. - Load the
FET_000_NEWTONmanifest, the feature markdown, and the RV.004-RV.006 + RV.010/RV.011 requirement docs (plus the isolation matrix). - Create or use a staged output location unless the user explicitly asks for in-place edits.
- Repair only
RV.004,RV.005,RV.006,RV.010, andRV.011(see Feature Guidance). Do not touch PhysX/MuJoCo variants or rigid-body physics. - Rerun the same profile gate or the narrowest available feature/capability validation gate.
- Summarize the selected version, changed files, validation evidence, and the first remaining blocker or next exact feature gate.
Feature Guidance
Repair each Newton runtime variant requirement deterministically where safe:
RV.004(variant set): On the stagedefaultPrim, add aNewtonvariant set withDisabledandEnabledoptions and author the default selection asDisabled. Keep theDisabledvariant free of runtime payloads.RV.005(payload): From theEnabledvariant,prepend payload = @./runnables/physics/newton.usd@(or.usda). The payload must live inside the asset root — the directory that holds the root layer — so keeprunnables/physics/as a subfolder beside the root layer and anchor the arc with./. Do not placerunnables/beside or above the asset root and reference it with@../runnables/physics/newton.usd@: a../payload that resolves above the asset root fails AA.001 (atomic-asset anchored paths) and precludesFET_001_STANDARD, even though the RV.005 payload check alone still passes — so the RV-only local harness will not catch it. Create therunnables/physics/newton.usdlayer as anoverlayer with the samedefaultPrim..usdand.usdaare interchangeable; author.usdawhen a binary USDC cannot be compiled.RV.006(metadata): AddcustomLayerData.SimReady_Metadata.Variants.Physics.Newton = {prim = <defaultPrim path>, variantSetName = "Newton", activateOption = "Enabled"}. TheVariantsdict must live insideSimReady_Metadata, not as a sibling top-levelcustomLayerData.Variantskey.RV.010(variant-section purity): Keep the variant sections pure. TheEnabledoption must contain only theprepend payloadarc — no inlineover/defchild prims, no authored properties, no other composition arcs. TheDisabledoption must be completely empty. Inline variant opinions outrank payloads in USD strength ordering (LIVRPS), so any override authored in a variant section leaks into the composed result of the other runtimes. All runtime data belongs in therunnables/physics/newton.usdpayload, never in the root variant edit.RV.011(composed-stage isolation): The composed Newton stage (NewtonEnabled, othersDisabled) must carry only neutralUsdPhysics/physics:*data plus Newton data (Newton*schemas,newton:*attributes). Strict Newton isolation: do not author MuJoCo (Mjc*/mjc:*) or PhysX (Physx*/physx*:) schemas/attributes innewton.usd, even thoughMjcCollisionAPIinheritsNewtonCollisionAPIupstream — the inheritance is one-directional and does not license a Newton layer to carry the more-specific MuJoCo schema. Do not authorphysics:approximation = "sdf"under Newton (that is a PhysX approximation and is a conflict/failure); Newton does not consumephysics:approximation, so an authored value is at best an inert leak — thenewton.usdpayload should author nophysics:approximationat all. RV.010/RV.011 are composition-wide checks: if a sibling runtime's section is impure or its payload leaks a foreign schema, report it rather than silently editing another runtime's contract.- Neutral-base precondition (RV.011). Newton selects its collision representation from
NewtonMeshCollisionAPI/NewtonSDFCollisionAPI, not fromphysics:approximation, so the neutral base collider must not authorphysics:approximationas a local (non-variant) opinion. A local base opinion outranks the payload arc in USD strength ordering (LIVRPS: Local > … > Payload), so a baseconvexDecomposition/convexHullcomposes into the Newton selection as an inert-leak warning, and a basesdffails. If the neutral base authorsphysics:approximation, clear that local opinion so each runnable owns its own value (PhysXsdf, MuJoCoconvexHull, Newton none). See the "Value-level attribute rules" in the isolation matrix. - Migrating a runtime-authored base (RV.011). If the asset arrives with a different runtime authored directly on the neutral base — common when a prop was previously conformed to a single-runtime PhysX profile — the base collider carries that runtime's API schemas (e.g.
PhysxCollisionAPI,PhysxSDFMeshCollisionAPI) alongsidePhysicsMeshCollisionAPIand a localphysics:approximation. Move that runtime data into its own runnable payload and reduce the neutral base collider to neutralUsdPhysicsonly (PhysicsCollisionAPI+PhysicsMassAPI), with the mesh-collision schema and approximation living in the per-runtime payloads. Otherwise the neutral (all-Disabled) composition still carries foreign runtime schemas and fails RV.011.
Newton payload body for a single-mesh prop
For a simple prop whose collision is a single existing mesh, the newton.usd payload body is a deterministic mesh-collision delta. Apply on the collision mesh over (strict Newton — no Mjc*/mjc:*, and no physics:approximation):
prepend apiSchemas = ["NewtonCollisionAPI", "PhysicsMeshCollisionAPI", "NewtonMeshCollisionAPI"]float newton:contactGap = 0
Do not create geometry; only add schemas/attributes to the mesh(es) that already exist in the neutral base.
Block and report instead of guessing when:
- The asset needs Newton joints, articulation, or scene tuning, or per-link collider decisions that are not the uniform delta below (e.g. mixing mesh and SDF colliders per link). Author the variant/payload scaffolding and hand that body work off to
FET_003_NEWTON/FET_004_NEWTON/FET_022_NEWTONor the suppliednewton_overrides. A plain multibody prop whose colliders all take the same delta is in scope — see "Multibody / multi-collider assemblies" below. - The collision geometry or intended collider mesh is ambiguous.
- The asset has no
defaultPrim, or the intended owning prim is ambiguous.
Keep joint/articulation/scene Newton physics work in FET_003_NEWTON/FET_004_NEWTON; this skill owns the runtime variant scaffolding plus the collision (and Newton material) deltas — one collider mesh for a single-mesh prop, or every collider mesh and bound material for a multibody assembly (below).
Multibody / multi-collider assemblies
When the neutral base is a multibody assembly — several rigid-body parts sharing one articulation (e.g. a toolbox with a hinged lid, handle, and locks) — the newton.usd payload is the same collision delta applied to every collider, plus material tuning on every bound material:
- Apply the mesh-collision
overabove (NewtonCollisionAPI,PhysicsMeshCollisionAPI,NewtonMeshCollisionAPI+float newton:contactGap = 0) to each collider mesh in the assembly. - On each bound physics material (a
UsdShade.MaterialwithPhysicsMaterialAPI), add anoverwithprepend apiSchemas = ["NewtonMaterialAPI"]and the default frictionsfloat newton:rollingFriction = 0.0001/float newton:torsionalFriction = 0.005(placement only;newton:*values are trusted — NEWTON.MAT.001 aligns with PMT.001). - Keep the payload collider/material-only: never re-author joints, articulation, or rigid bodies in
newton.usd— that topology lives once on the neutral base.
Neutral-base preconditions for a multibody assembly (owned by FET_004_STANDARD/FET_004_NEWTON, repair there — not here):
- Every collider mesh must have its local
physics:approximationcleared, so each runnable owns its own value (this is the per-collider form of the Neutral-base precondition above). - The base carries the runtime-agnostic multibody topology (rigid bodies +
UsdPhysicsjoints) and exactly onePhysicsArticulationRootAPI. If the topology or articulation root is missing, hand off toFET_004_STANDARD/FET_004_NEWTONbefore wiring the Newton variant.
Worked Example: single-mesh prop
Add the Newton variant to a single-mesh prop in four edits (illustrated with a RootNode-rooted prop; substitute your asset's defaultPrim and collider mesh path). This is authored from the requirement docs — it does not depend on any existing asset.
- Create the payload layer
runnables/physics/newton.usdinside the asset root, in arunnables/physics/subfolder beside the root layer (e.g.simready_usd/runnables/physics/newton.usd), with the samedefaultPrimas the root asset. Do not placerunnables/outside the asset root — the./-anchored payload below must resolve within it (AA.001). Standardize on binary.usd; author the equivalent.usdabelow and export it to.usd(e.g.Sdf.Layer.FindOrOpen("newton.usda").Export("newton.usd")), or keep.usdaif a binary cannot be compiled:
#usda 1.0
(
defaultPrim = "RootNode"
doc = """Newton overrides for sm_obs_orange_a02_01.usda"""
)
over "RootNode"
{
over "Geometry"
{
over "obs_orange_01_obj_01"
{
over "obs_orange_01_mesh_01" (
prepend apiSchemas = ["NewtonCollisionAPI", "PhysicsMeshCollisionAPI", "NewtonMeshCollisionAPI"]
)
{
float newton:contactGap = 0
}
}
}
}
- In the root asset layer, add the
Newtonentry tocustomLayerData.SimReady_Metadata.Variants.Physics(alongside anyPhysX/MuJoCoentries). TheVariantsdict lives insideSimReady_Metadata, never as a sibling top-levelcustomLayerData.Variantskey:
"Newton" = {
string prim = "/RootNode"
string variantSetName = "Newton"
string activateOption = "Enabled"
}
-
On
RootNode, add"Newton"toprepend variantSetsand add its default selection tovariants(string Newton = "Disabled"). -
Add the
variantSet "Newton"block with a payload-freeDisabledoption and anEnabledoption that prepends the payload:
variantSet "Newton" = {
"Disabled" {
}
"Enabled" (
prepend payload = @./runnables/physics/newton.usd@
) {
}
}
Note that the Enabled option holds only the payload arc and the Disabled option is empty (RV.010), and the payload authors only Newton + neutral data with no Mjc*/mjc:* (RV.011).
Validation
The RV.004-RV.006 + RV.010/RV.011 checks live in nv_core/tiers/simready_foundation_tier_core/simready/foundation/tier_core/capabilities/core/runtime_variants/validation.py and are generated into simready.foundation.tier_core.requirements as RV_001-RV_011. To run them locally:
- Build the core tier wheel, which is what generates the
RV_001-RV_011enums from the capability markdown:repo.bat build_tiers(writesnv_core/tiers/simready_foundation_tier_core/_build/dist/simready_foundation_tier_core-*.whl). - Create a Python 3.12 venv:
repo.bat uv venv --python 3.12 .venv_val. - Install USD, the validator deps, and the tier wheel into it:
repo.bat uv pip install --python .venv_val usd-core usd-validation-nvidia numpy nv_core/tiers/simready_foundation_tier_core/_build/dist/simready_foundation_tier_core-*.whl. - Invoke the venv Python directly (not
uv run, which spawns its own venv) against a small harness that importssimready.foundation.tier_core.capabilities.core.runtime_variants.validation, callsResetCaches()thenCheckStage(stage)on each checker, and reads results viachecker.GetIssues(). Installing the wheel puts the generated enums on the path, so noPYTHONPATHsetup is needed.
Confirm the Newton trio (RV_004/RV_005/RV_006) plus the isolation rules (RV_010/RV_011) pass on the Disabled-default stage. RV.011 recomposes each declared variant selection, so also spot-check that enabling Newton composes only Newton + neutral physics (no mjc:*, no physics:approximation = "sdf"). If the environment cannot be bootstrapped, fall back to inspecting the staged USD for the variant set, anchored payload, nested SimReady_Metadata.Variants.Physics.Newton entry, pure variant sections, and a Newton-only payload, and report validation as inspection-only.
Limitations
- Do not silently mutate the source asset; work on the requested staged output.
- Do not author PhysX or MuJoCo variants in this skill.
- Keep runtime data out of the root variant sections (RV.010) and keep the Newton payload strictly Newton — no
Mjc*/mjc:*orPhysx*/physx*:, and nophysics:approximation = "sdf"(RV.011). - Do not create geometry; the single-mesh collision delta only annotates existing meshes.
- Beyond the deterministic single-mesh collision delta, do not invent Newton runtime physics values (joints, articulation/scene/material tuning) that require domain knowledge; scaffold and hand off to
FET_003_NEWTON/FET_004_NEWTON/FET_022_NEWTON.
Report Fields
| Field | Meaning |
|---|---|
feature | Exact feature ID and version, for example FET_000_NEWTON@0.1.0. |
input | Source asset or package inspected. |
output | Staged output path, or in-place only when explicitly requested. |
requirements_repaired | Requirement IDs repaired in this pass (subset of RV.004-RV.006, RV.010, RV.011). |
requirements_blocked | Requirement IDs needing Newton override data or user input. |
validation | Command or inspection used to verify this exact feature. |
status | passed, failed, skipped, or blocked. |
next_step | The next exact feature skill or evidence needed. |
Signals
- GitHub stars
- 87
- Forks
- 18
- Last commit
- Sep 2026
ahel review
K1binfo
installs-packages
Automated review, not a security audit. Ruleset v1+k2.
Advanced
- Catalog kind
- skill
- Gateway key
simready-foundation-conform-fet-000-newton- Source
- github.com/nvidia/simready-foundation