[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-nvidia-simready-foundation-conform-fet-024-base-articulation":3,"mdc--4coiy5-key":34,"related-repo-nvidia-simready-foundation-conform-fet-024-base-articulation":1416,"related-org-nvidia-simready-foundation-conform-fet-024-base-articulation":1502},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":29,"sourceUrl":32,"mdContent":33},"simready-foundation-conform-fet-024-base-articulation","repair SimReady base articulation roots","Use for repairing SimReady base articulation roots and PhysX collision-clearance evidence.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},"nvidia","NVIDIA","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fnvidia.png",[12,16,17,20],{"name":13,"slug":14,"type":15},"3D","3d","tag",{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},"Simulation","simulation",{"name":21,"slug":22,"type":15},"Physics","physics",52,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fsimready-foundation","2026-07-14T05:33:54.264496","Apache-2.0",8,[],{"repoUrl":24,"stars":23,"forks":27,"topics":30,"description":31},[],"SimReady Foundation is a central repository for defining simulation content specifications based on various runtime use cases. ","https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fsimready-foundation\u002Ftree\u002FHEAD\u002Fskills\u002Fsimready-foundation-conform-fet-024-base-articulation","---\nname: simready-foundation-conform-fet-024-base-articulation\ndescription: \"Use for repairing SimReady base articulation roots and PhysX collision-clearance evidence.\"\nlicense: Apache-2.0\nmetadata:\n  author: \"Shaad Boochoon \u003Csboochoon@nvidia.com>\"\n  tags:\n    - simready\n    - conformance\n    - robotics\n---\n\n\n# SimReady Conform FET-024 Base Articulation\n\n## Purpose\nUse this workflow skill when the selected profile, validation report, or user request targets `FET024_BASE_ARTICULATION_NEUTRAL` or `FET024_BASE_ARTICULATION_PHYSX`. FET024 repairs the base articulation contract for robot-body assets: exactly one articulation root for the articulated mechanism, plus PhysX collision-clearance checks for the PhysX variant.\n\nThis is a base-articulation repair skill, not a full robot topology, driven-joint, or collision-generation skill. Work on a staged copy under the requested output directory, preserve composed joint\u002Fbody behavior, and stop at the first FET024 issue that needs robot topology, root-joint intent, collider redesign, or a PhysX runtime contact check.\n\n## Prerequisites\n\nRead the source-of-truth files named below before editing. Work on staged outputs where the skill requires them, and keep validation evidence with the result.\n\n## Source of Truth\n\nBefore changing an asset, load the exact FET024 manifest selected by the profile:\n\n- `nv_core\u002Fsr_specs\u002Fdocs\u002Ffeatures\u002FFET_024-base_articulation_neutral-0.1.0.json`\n- `nv_core\u002Fsr_specs\u002Fdocs\u002Ffeatures\u002FFET_024-base_articulation_physx-0.1.0.json`\n- `nv_core\u002Fsr_specs\u002Fdocs\u002Ffeatures\u002FFET_024-base_articulation.md`\n- `nv_core\u002Fsr_specs\u002Fdocs\u002Fcapabilities\u002Fphysics_bodies\u002Fbase_articulation\u002Frequirements.md`\n- `nv_core\u002Fsr_specs\u002Fdocs\u002Fcapabilities\u002Fphysics_bodies\u002Fbase_articulation\u002Fvalidation.py`\n\nTreat the selected JSON manifest as authoritative for the required IDs. If the markdown, manifest, validator, or report disagree on a requirement ID or behavior, follow the validation report for the current gate and call out the mismatch in the stage summary.\n\nFor per-requirement repair details, read `references\u002Ffet024-requirements.md` when a FET024 validation report or inspection identifies matching failures.\n\n## Inputs\n\nCollect these before editing:\n\n| Input | Requirement |\n|---|---|\n| `usd_asset` | Required robot `.usd`, `.usda`, `.usdc`, or unpacked USD-family asset to repair. |\n| `output_root` | Required or inferred folder for staged assets and reports. |\n| `simready_profile` | Robot profile being validated, such as `Robot-Body-Neutral`, `Robot-Body-Runnable`, or `Robot-Body-Isaac`. |\n| `profile_version` | Profile version, if supplied by the user or validation command. |\n| `validation_report` | Preferred JSON or markdown report from the failing profile or feature validation gate. |\n| `fet024_variant` | Selected feature ID and version, such as `FET024_BASE_ARTICULATION_NEUTRAL@0.1.0` or `FET024_BASE_ARTICULATION_PHYSX@0.1.0`. |\n| `articulation_root_policy` | Intended articulation root: robot root, root body, root joint, or user\u002Fsource-approved target prim. |\n| `joint_topology` | Existing body and joint graph used to identify the articulation and adjacency. |\n| `collision_clearance_policy` | User-approved strategy for resolving non-adjacent collision overlap, if BA.002 fails. |\n| `physx_runtime` | Whether PhysX schemas\u002Fruntime contact checks are available for BA.002 validation. |\n\n## Instructions\n\nUse this checklist when changing the repository:\n\n1. Confirm the input asset exists and determine whether the selected profile uses the neutral or PhysX FET024 variant.\n2. Parse the validation report and filter to FET024\u002FBA failures. Do not repair driven-joint APIs, mimic joints, joint limits, robot core schema, or broad multibody topology issues in this skill unless they directly block the FET024 root decision.\n3. Load the selected FET024 manifest version and the requirement repair map.\n4. Create a staged output folder under `output_root`; do not mutate the source unless the user explicitly asks for in-place repair.\n5. Inspect the stage before editing:\n   - default prim, robot root, and model hierarchy\n   - existing `UsdPhysics.ArticulationRootAPI` applications and authored layers\n   - all rigid body prims, static or kinematic body flags, and root body candidates\n   - all `UsdPhysics.Joint` prims, `physics:body0`, `physics:body1`, and root joint candidates\n   - whether the selected robot type or FET021 root-joint policy implies fixed-base or floating-base behavior\n   - PhysX joint APIs, collision mesh APIs, and reported contact\u002Fcollision pairs for the PhysX variant\n6. Decide the articulation root before authoring:\n   - Use a source- or user-approved articulation root when provided.\n   - For a fixed-base manipulator or end effector, the root joint or robot root may be the correct articulation anchor depending on the authored USD pattern.\n   - For a floating or mobile robot, the root body is usually the correct articulation root.\n   - If the profile authoring guide requires the default robot root and that root clearly owns the whole articulation, use the default prim.\n   - Block when more than one root candidate is plausible.\n7. Apply repairs in this order:\n   - Remove extra `ArticulationRootAPI` opinions only when the intended single root is clear.\n   - Apply `UsdPhysics.ArticulationRootAPI` to the chosen root prim in the correct physics\u002Fsource layer.\n   - Preserve FET021 robot root and robot joint relationship order; do not reorder joints unless needed to identify a documented root joint.\n   - For the PhysX variant, inspect any reported non-adjacent collider pairs and adjacency from PhysX joints.\n   - Resolve BA.002 only with an approved collider strategy, such as simplified collision geometry, collider clearance adjustment, or excluding a non-critical loop outside the articulation through the appropriate joint feature.\n8. Rerun the same profile validation gate, or the narrowest available FET024 validation gate. For PhysX BA.002, record whether PhysX runtime contact reporting was actually available.\n9. Summarize the stage as passed, failed, skipped, or blocked. Stop when FET024 passes or the next FET024 failure requires root intent, topology repair, collider redesign, or missing PhysX runtime validation.\n\n## Examples\n\nExample request:\n\n```text\nRepair FET024 base articulation root placement failures on a robot USD asset.\n```\n\nExpected result summary:\n\n```text\nstaged_asset: repaired copy or output directory\nvalidation: selected feature\u002Fprofile gate and report path\nremaining_failures: next failing requirement IDs, if any\n```\n\n## Repair Policy\n\nMake automatic repairs only when the intended result is mechanical and locally verifiable:\n\n- Apply `UsdPhysics.ArticulationRootAPI` when exactly one articulation root candidate is clear from the robot root, root body, root joint, or source metadata.\n- Remove duplicate articulation roots only when they plainly duplicate the same mechanism and one canonical root is known.\n- Move the articulation root API opinion to the correct staged physics\u002Fsource layer when doing so preserves the composed API and satisfies source-layer policy.\n- Report BA.002 collision pairs and adjacency evidence when the validator or runtime supplies them.\n\nBlock and report instead of guessing when:\n\n- There are multiple disconnected articulated mechanisms.\n- The asset has joints but no clear root body or root joint.\n- Root placement conflicts with FET021 robot type or root-joint pinning.\n- Fixing BA.002 would require moving visual geometry, changing joint transforms, or changing default robot pose.\n- Collision meshes must be regenerated or simplified and no collider strategy is approved.\n- PhysX schemas or contact simulation are unavailable for a PhysX BA.002 check.\n\n## Variant Guidance\n\nFor `FET024_BASE_ARTICULATION_NEUTRAL@0.1.0`, the manifest requires `BA.001`: the stage must have exactly one `UsdPhysics.ArticulationRootAPI` application for the articulated asset.\n\nFor `FET024_BASE_ARTICULATION_PHYSX@0.1.0`, the manifest depends on the neutral FET024 variant and adds `BA.002`: non-adjacent collision meshes in the articulation hierarchy must not clash at the default pose. Do not treat a PhysX BA.002 pass as meaningful unless the environment can run the needed PhysX contact or validator check; if the current checker cannot produce collision pairs, record the limitation.\n\n## Validation Handoff\n\nPreserve reports under the staged output directory. If the Physical AI Skill Hub validation commands are available, use the same profile gate that exposed the failure:\n\n```bash\nuv run --python 3.12 validate-simready-profile \u003Cstaged-usd> \\\n  --profile \u003Cprofile> \\\n  --profile-version \u003Cversion> \\\n  --foundation-root \u003Csimready-foundation-root> \\\n  --foundation-spec-root \u003Csimready-foundation-root>\u002Fnv_core\u002Fsr_specs\u002Fdocs \\\n  --report \u003Coutput-root>\u002Fsimready-profile-after-fet024.json\n```\n\nCount this skill as successful when the selected FET024 variant passes, even if the full Robot-Body profile still fails on driven joints, robot core, or Isaac composition. Report those remaining failures as handoff work for their own features.\n\n## Limitations\n\n- Do not silently mutate the source asset; work on the requested staged output.\n- Do not hide later profile failures after the selected feature gate passes or fails.\n- Do not invent geometry, metadata, or runtime behavior that conflicts with the asset intent.\n\n## Troubleshooting\n\n- Error: validation tooling is unavailable. Solution: run the narrowest available USD or static check and report the gap.\n- Error: a repair would change asset intent. Solution: stop and ask for direction or stage the smallest reversible edit.\n- Error: later profile gates still fail. Solution: report the next failing feature and hand off to the matching conformance skill.\n\n## Resources\n\n- `assets\u002Fopenai.yaml` preserves optional UI metadata for clients that read skill display hints. It is not required for the workflow.\n- `references\u002F` contains detailed requirement notes; load only the files needed for the active validation failure.\n\n## Summary Format\n\nReport:\n\n| Field | Meaning |\n|---|---|\n| `input_usd_path` | Original USD path. |\n| `output_usd_path` | Latest staged\u002Frepaired USD path. |\n| `profile` and `profile_version` | Validation target. |\n| `fet024_variant` | Selected FET024 feature ID and version. |\n| `articulation_root` | Chosen prim with `UsdPhysics.ArticulationRootAPI`. |\n| `root_selection_evidence` | Why this prim is the correct articulation root. |\n| `removed_roots` | Extra articulation roots removed or left blocked. |\n| `collision_pairs` | Non-adjacent collider pairs reported for BA.002. |\n| `collision_repairs` | Collider clearance, approximation, or policy changes made. |\n| `requirements_repaired` | Requirement IDs changed by this skill. |\n| `requirements_blocked` | Requirement IDs that need root intent, topology, collider strategy, or PhysX runtime validation. |\n| `validation_report` | Path to the rerun validation report. |\n| `next_step` | Usually the next failing Robot-Body feature or a blocked FET024 requirement. |\n\nKeep the user-facing summary short: what articulation root changed, whether PhysX collision clearance was checked, what still fails, and the first validation gate that blocks progress.\n",{"data":35,"body":42},{"name":4,"description":6,"license":26,"metadata":36},{"author":37,"tags":38},"Shaad Boochoon \u003Csboochoon@nvidia.com>",[39,40,41],"simready","conformance","robotics",{"type":43,"children":44},"root",[45,54,61,84,89,95,100,106,111,161,166,179,185,190,448,454,459,650,656,661,673,678,687,693,698,727,732,765,771,798,817,823,828,1056,1061,1067,1085,1091,1109,1115,1140,1146,1151,1405,1410],{"type":46,"tag":47,"props":48,"children":50},"element","h1",{"id":49},"simready-conform-fet-024-base-articulation",[51],{"type":52,"value":53},"text","SimReady Conform FET-024 Base Articulation",{"type":46,"tag":55,"props":56,"children":58},"h2",{"id":57},"purpose",[59],{"type":52,"value":60},"Purpose",{"type":46,"tag":62,"props":63,"children":64},"p",{},[65,67,74,76,82],{"type":52,"value":66},"Use this workflow skill when the selected profile, validation report, or user request targets ",{"type":46,"tag":68,"props":69,"children":71},"code",{"className":70},[],[72],{"type":52,"value":73},"FET024_BASE_ARTICULATION_NEUTRAL",{"type":52,"value":75}," or ",{"type":46,"tag":68,"props":77,"children":79},{"className":78},[],[80],{"type":52,"value":81},"FET024_BASE_ARTICULATION_PHYSX",{"type":52,"value":83},". FET024 repairs the base articulation contract for robot-body assets: exactly one articulation root for the articulated mechanism, plus PhysX collision-clearance checks for the PhysX variant.",{"type":46,"tag":62,"props":85,"children":86},{},[87],{"type":52,"value":88},"This is a base-articulation repair skill, not a full robot topology, driven-joint, or collision-generation skill. Work on a staged copy under the requested output directory, preserve composed joint\u002Fbody behavior, and stop at the first FET024 issue that needs robot topology, root-joint intent, collider redesign, or a PhysX runtime contact check.",{"type":46,"tag":55,"props":90,"children":92},{"id":91},"prerequisites",[93],{"type":52,"value":94},"Prerequisites",{"type":46,"tag":62,"props":96,"children":97},{},[98],{"type":52,"value":99},"Read the source-of-truth files named below before editing. Work on staged outputs where the skill requires them, and keep validation evidence with the result.",{"type":46,"tag":55,"props":101,"children":103},{"id":102},"source-of-truth",[104],{"type":52,"value":105},"Source of Truth",{"type":46,"tag":62,"props":107,"children":108},{},[109],{"type":52,"value":110},"Before changing an asset, load the exact FET024 manifest selected by the profile:",{"type":46,"tag":112,"props":113,"children":114},"ul",{},[115,125,134,143,152],{"type":46,"tag":116,"props":117,"children":118},"li",{},[119],{"type":46,"tag":68,"props":120,"children":122},{"className":121},[],[123],{"type":52,"value":124},"nv_core\u002Fsr_specs\u002Fdocs\u002Ffeatures\u002FFET_024-base_articulation_neutral-0.1.0.json",{"type":46,"tag":116,"props":126,"children":127},{},[128],{"type":46,"tag":68,"props":129,"children":131},{"className":130},[],[132],{"type":52,"value":133},"nv_core\u002Fsr_specs\u002Fdocs\u002Ffeatures\u002FFET_024-base_articulation_physx-0.1.0.json",{"type":46,"tag":116,"props":135,"children":136},{},[137],{"type":46,"tag":68,"props":138,"children":140},{"className":139},[],[141],{"type":52,"value":142},"nv_core\u002Fsr_specs\u002Fdocs\u002Ffeatures\u002FFET_024-base_articulation.md",{"type":46,"tag":116,"props":144,"children":145},{},[146],{"type":46,"tag":68,"props":147,"children":149},{"className":148},[],[150],{"type":52,"value":151},"nv_core\u002Fsr_specs\u002Fdocs\u002Fcapabilities\u002Fphysics_bodies\u002Fbase_articulation\u002Frequirements.md",{"type":46,"tag":116,"props":153,"children":154},{},[155],{"type":46,"tag":68,"props":156,"children":158},{"className":157},[],[159],{"type":52,"value":160},"nv_core\u002Fsr_specs\u002Fdocs\u002Fcapabilities\u002Fphysics_bodies\u002Fbase_articulation\u002Fvalidation.py",{"type":46,"tag":62,"props":162,"children":163},{},[164],{"type":52,"value":165},"Treat the selected JSON manifest as authoritative for the required IDs. If the markdown, manifest, validator, or report disagree on a requirement ID or behavior, follow the validation report for the current gate and call out the mismatch in the stage summary.",{"type":46,"tag":62,"props":167,"children":168},{},[169,171,177],{"type":52,"value":170},"For per-requirement repair details, read ",{"type":46,"tag":68,"props":172,"children":174},{"className":173},[],[175],{"type":52,"value":176},"references\u002Ffet024-requirements.md",{"type":52,"value":178}," when a FET024 validation report or inspection identifies matching failures.",{"type":46,"tag":55,"props":180,"children":182},{"id":181},"inputs",[183],{"type":52,"value":184},"Inputs",{"type":46,"tag":62,"props":186,"children":187},{},[188],{"type":52,"value":189},"Collect these before editing:",{"type":46,"tag":191,"props":192,"children":193},"table",{},[194,213],{"type":46,"tag":195,"props":196,"children":197},"thead",{},[198],{"type":46,"tag":199,"props":200,"children":201},"tr",{},[202,208],{"type":46,"tag":203,"props":204,"children":205},"th",{},[206],{"type":52,"value":207},"Input",{"type":46,"tag":203,"props":209,"children":210},{},[211],{"type":52,"value":212},"Requirement",{"type":46,"tag":214,"props":215,"children":216},"tbody",{},[217,258,275,315,332,349,380,397,414,431],{"type":46,"tag":199,"props":218,"children":219},{},[220,230],{"type":46,"tag":221,"props":222,"children":223},"td",{},[224],{"type":46,"tag":68,"props":225,"children":227},{"className":226},[],[228],{"type":52,"value":229},"usd_asset",{"type":46,"tag":221,"props":231,"children":232},{},[233,235,241,243,249,250,256],{"type":52,"value":234},"Required robot ",{"type":46,"tag":68,"props":236,"children":238},{"className":237},[],[239],{"type":52,"value":240},".usd",{"type":52,"value":242},", ",{"type":46,"tag":68,"props":244,"children":246},{"className":245},[],[247],{"type":52,"value":248},".usda",{"type":52,"value":242},{"type":46,"tag":68,"props":251,"children":253},{"className":252},[],[254],{"type":52,"value":255},".usdc",{"type":52,"value":257},", or unpacked USD-family asset to repair.",{"type":46,"tag":199,"props":259,"children":260},{},[261,270],{"type":46,"tag":221,"props":262,"children":263},{},[264],{"type":46,"tag":68,"props":265,"children":267},{"className":266},[],[268],{"type":52,"value":269},"output_root",{"type":46,"tag":221,"props":271,"children":272},{},[273],{"type":52,"value":274},"Required or inferred folder for staged assets and reports.",{"type":46,"tag":199,"props":276,"children":277},{},[278,287],{"type":46,"tag":221,"props":279,"children":280},{},[281],{"type":46,"tag":68,"props":282,"children":284},{"className":283},[],[285],{"type":52,"value":286},"simready_profile",{"type":46,"tag":221,"props":288,"children":289},{},[290,292,298,299,305,307,313],{"type":52,"value":291},"Robot profile being validated, such as ",{"type":46,"tag":68,"props":293,"children":295},{"className":294},[],[296],{"type":52,"value":297},"Robot-Body-Neutral",{"type":52,"value":242},{"type":46,"tag":68,"props":300,"children":302},{"className":301},[],[303],{"type":52,"value":304},"Robot-Body-Runnable",{"type":52,"value":306},", or ",{"type":46,"tag":68,"props":308,"children":310},{"className":309},[],[311],{"type":52,"value":312},"Robot-Body-Isaac",{"type":52,"value":314},".",{"type":46,"tag":199,"props":316,"children":317},{},[318,327],{"type":46,"tag":221,"props":319,"children":320},{},[321],{"type":46,"tag":68,"props":322,"children":324},{"className":323},[],[325],{"type":52,"value":326},"profile_version",{"type":46,"tag":221,"props":328,"children":329},{},[330],{"type":52,"value":331},"Profile version, if supplied by the user or validation command.",{"type":46,"tag":199,"props":333,"children":334},{},[335,344],{"type":46,"tag":221,"props":336,"children":337},{},[338],{"type":46,"tag":68,"props":339,"children":341},{"className":340},[],[342],{"type":52,"value":343},"validation_report",{"type":46,"tag":221,"props":345,"children":346},{},[347],{"type":52,"value":348},"Preferred JSON or markdown report from the failing profile or feature validation gate.",{"type":46,"tag":199,"props":350,"children":351},{},[352,361],{"type":46,"tag":221,"props":353,"children":354},{},[355],{"type":46,"tag":68,"props":356,"children":358},{"className":357},[],[359],{"type":52,"value":360},"fet024_variant",{"type":46,"tag":221,"props":362,"children":363},{},[364,366,372,373,379],{"type":52,"value":365},"Selected feature ID and version, such as ",{"type":46,"tag":68,"props":367,"children":369},{"className":368},[],[370],{"type":52,"value":371},"FET024_BASE_ARTICULATION_NEUTRAL@0.1.0",{"type":52,"value":75},{"type":46,"tag":68,"props":374,"children":376},{"className":375},[],[377],{"type":52,"value":378},"FET024_BASE_ARTICULATION_PHYSX@0.1.0",{"type":52,"value":314},{"type":46,"tag":199,"props":381,"children":382},{},[383,392],{"type":46,"tag":221,"props":384,"children":385},{},[386],{"type":46,"tag":68,"props":387,"children":389},{"className":388},[],[390],{"type":52,"value":391},"articulation_root_policy",{"type":46,"tag":221,"props":393,"children":394},{},[395],{"type":52,"value":396},"Intended articulation root: robot root, root body, root joint, or user\u002Fsource-approved target prim.",{"type":46,"tag":199,"props":398,"children":399},{},[400,409],{"type":46,"tag":221,"props":401,"children":402},{},[403],{"type":46,"tag":68,"props":404,"children":406},{"className":405},[],[407],{"type":52,"value":408},"joint_topology",{"type":46,"tag":221,"props":410,"children":411},{},[412],{"type":52,"value":413},"Existing body and joint graph used to identify the articulation and adjacency.",{"type":46,"tag":199,"props":415,"children":416},{},[417,426],{"type":46,"tag":221,"props":418,"children":419},{},[420],{"type":46,"tag":68,"props":421,"children":423},{"className":422},[],[424],{"type":52,"value":425},"collision_clearance_policy",{"type":46,"tag":221,"props":427,"children":428},{},[429],{"type":52,"value":430},"User-approved strategy for resolving non-adjacent collision overlap, if BA.002 fails.",{"type":46,"tag":199,"props":432,"children":433},{},[434,443],{"type":46,"tag":221,"props":435,"children":436},{},[437],{"type":46,"tag":68,"props":438,"children":440},{"className":439},[],[441],{"type":52,"value":442},"physx_runtime",{"type":46,"tag":221,"props":444,"children":445},{},[446],{"type":52,"value":447},"Whether PhysX schemas\u002Fruntime contact checks are available for BA.002 validation.",{"type":46,"tag":55,"props":449,"children":451},{"id":450},"instructions",[452],{"type":52,"value":453},"Instructions",{"type":46,"tag":62,"props":455,"children":456},{},[457],{"type":52,"value":458},"Use this checklist when changing the repository:",{"type":46,"tag":460,"props":461,"children":462},"ol",{},[463,468,473,478,490,559,592,640,645],{"type":46,"tag":116,"props":464,"children":465},{},[466],{"type":52,"value":467},"Confirm the input asset exists and determine whether the selected profile uses the neutral or PhysX FET024 variant.",{"type":46,"tag":116,"props":469,"children":470},{},[471],{"type":52,"value":472},"Parse the validation report and filter to FET024\u002FBA failures. Do not repair driven-joint APIs, mimic joints, joint limits, robot core schema, or broad multibody topology issues in this skill unless they directly block the FET024 root decision.",{"type":46,"tag":116,"props":474,"children":475},{},[476],{"type":52,"value":477},"Load the selected FET024 manifest version and the requirement repair map.",{"type":46,"tag":116,"props":479,"children":480},{},[481,483,488],{"type":52,"value":482},"Create a staged output folder under ",{"type":46,"tag":68,"props":484,"children":486},{"className":485},[],[487],{"type":52,"value":269},{"type":52,"value":489},"; do not mutate the source unless the user explicitly asks for in-place repair.",{"type":46,"tag":116,"props":491,"children":492},{},[493,495],{"type":52,"value":494},"Inspect the stage before editing:\n",{"type":46,"tag":112,"props":496,"children":497},{},[498,503,516,521,549,554],{"type":46,"tag":116,"props":499,"children":500},{},[501],{"type":52,"value":502},"default prim, robot root, and model hierarchy",{"type":46,"tag":116,"props":504,"children":505},{},[506,508,514],{"type":52,"value":507},"existing ",{"type":46,"tag":68,"props":509,"children":511},{"className":510},[],[512],{"type":52,"value":513},"UsdPhysics.ArticulationRootAPI",{"type":52,"value":515}," applications and authored layers",{"type":46,"tag":116,"props":517,"children":518},{},[519],{"type":52,"value":520},"all rigid body prims, static or kinematic body flags, and root body candidates",{"type":46,"tag":116,"props":522,"children":523},{},[524,526,532,534,540,541,547],{"type":52,"value":525},"all ",{"type":46,"tag":68,"props":527,"children":529},{"className":528},[],[530],{"type":52,"value":531},"UsdPhysics.Joint",{"type":52,"value":533}," prims, ",{"type":46,"tag":68,"props":535,"children":537},{"className":536},[],[538],{"type":52,"value":539},"physics:body0",{"type":52,"value":242},{"type":46,"tag":68,"props":542,"children":544},{"className":543},[],[545],{"type":52,"value":546},"physics:body1",{"type":52,"value":548},", and root joint candidates",{"type":46,"tag":116,"props":550,"children":551},{},[552],{"type":52,"value":553},"whether the selected robot type or FET021 root-joint policy implies fixed-base or floating-base behavior",{"type":46,"tag":116,"props":555,"children":556},{},[557],{"type":52,"value":558},"PhysX joint APIs, collision mesh APIs, and reported contact\u002Fcollision pairs for the PhysX variant",{"type":46,"tag":116,"props":560,"children":561},{},[562,564],{"type":52,"value":563},"Decide the articulation root before authoring:\n",{"type":46,"tag":112,"props":565,"children":566},{},[567,572,577,582,587],{"type":46,"tag":116,"props":568,"children":569},{},[570],{"type":52,"value":571},"Use a source- or user-approved articulation root when provided.",{"type":46,"tag":116,"props":573,"children":574},{},[575],{"type":52,"value":576},"For a fixed-base manipulator or end effector, the root joint or robot root may be the correct articulation anchor depending on the authored USD pattern.",{"type":46,"tag":116,"props":578,"children":579},{},[580],{"type":52,"value":581},"For a floating or mobile robot, the root body is usually the correct articulation root.",{"type":46,"tag":116,"props":583,"children":584},{},[585],{"type":52,"value":586},"If the profile authoring guide requires the default robot root and that root clearly owns the whole articulation, use the default prim.",{"type":46,"tag":116,"props":588,"children":589},{},[590],{"type":52,"value":591},"Block when more than one root candidate is plausible.",{"type":46,"tag":116,"props":593,"children":594},{},[595,597],{"type":52,"value":596},"Apply repairs in this order:\n",{"type":46,"tag":112,"props":598,"children":599},{},[600,613,625,630,635],{"type":46,"tag":116,"props":601,"children":602},{},[603,605,611],{"type":52,"value":604},"Remove extra ",{"type":46,"tag":68,"props":606,"children":608},{"className":607},[],[609],{"type":52,"value":610},"ArticulationRootAPI",{"type":52,"value":612}," opinions only when the intended single root is clear.",{"type":46,"tag":116,"props":614,"children":615},{},[616,618,623],{"type":52,"value":617},"Apply ",{"type":46,"tag":68,"props":619,"children":621},{"className":620},[],[622],{"type":52,"value":513},{"type":52,"value":624}," to the chosen root prim in the correct physics\u002Fsource layer.",{"type":46,"tag":116,"props":626,"children":627},{},[628],{"type":52,"value":629},"Preserve FET021 robot root and robot joint relationship order; do not reorder joints unless needed to identify a documented root joint.",{"type":46,"tag":116,"props":631,"children":632},{},[633],{"type":52,"value":634},"For the PhysX variant, inspect any reported non-adjacent collider pairs and adjacency from PhysX joints.",{"type":46,"tag":116,"props":636,"children":637},{},[638],{"type":52,"value":639},"Resolve BA.002 only with an approved collider strategy, such as simplified collision geometry, collider clearance adjustment, or excluding a non-critical loop outside the articulation through the appropriate joint feature.",{"type":46,"tag":116,"props":641,"children":642},{},[643],{"type":52,"value":644},"Rerun the same profile validation gate, or the narrowest available FET024 validation gate. For PhysX BA.002, record whether PhysX runtime contact reporting was actually available.",{"type":46,"tag":116,"props":646,"children":647},{},[648],{"type":52,"value":649},"Summarize the stage as passed, failed, skipped, or blocked. Stop when FET024 passes or the next FET024 failure requires root intent, topology repair, collider redesign, or missing PhysX runtime validation.",{"type":46,"tag":55,"props":651,"children":653},{"id":652},"examples",[654],{"type":52,"value":655},"Examples",{"type":46,"tag":62,"props":657,"children":658},{},[659],{"type":52,"value":660},"Example request:",{"type":46,"tag":662,"props":663,"children":668},"pre",{"className":664,"code":666,"language":52,"meta":667},[665],"language-text","Repair FET024 base articulation root placement failures on a robot USD asset.\n","",[669],{"type":46,"tag":68,"props":670,"children":671},{"__ignoreMap":667},[672],{"type":52,"value":666},{"type":46,"tag":62,"props":674,"children":675},{},[676],{"type":52,"value":677},"Expected result summary:",{"type":46,"tag":662,"props":679,"children":682},{"className":680,"code":681,"language":52,"meta":667},[665],"staged_asset: repaired copy or output directory\nvalidation: selected feature\u002Fprofile gate and report path\nremaining_failures: next failing requirement IDs, if any\n",[683],{"type":46,"tag":68,"props":684,"children":685},{"__ignoreMap":667},[686],{"type":52,"value":681},{"type":46,"tag":55,"props":688,"children":690},{"id":689},"repair-policy",[691],{"type":52,"value":692},"Repair Policy",{"type":46,"tag":62,"props":694,"children":695},{},[696],{"type":52,"value":697},"Make automatic repairs only when the intended result is mechanical and locally verifiable:",{"type":46,"tag":112,"props":699,"children":700},{},[701,712,717,722],{"type":46,"tag":116,"props":702,"children":703},{},[704,705,710],{"type":52,"value":617},{"type":46,"tag":68,"props":706,"children":708},{"className":707},[],[709],{"type":52,"value":513},{"type":52,"value":711}," when exactly one articulation root candidate is clear from the robot root, root body, root joint, or source metadata.",{"type":46,"tag":116,"props":713,"children":714},{},[715],{"type":52,"value":716},"Remove duplicate articulation roots only when they plainly duplicate the same mechanism and one canonical root is known.",{"type":46,"tag":116,"props":718,"children":719},{},[720],{"type":52,"value":721},"Move the articulation root API opinion to the correct staged physics\u002Fsource layer when doing so preserves the composed API and satisfies source-layer policy.",{"type":46,"tag":116,"props":723,"children":724},{},[725],{"type":52,"value":726},"Report BA.002 collision pairs and adjacency evidence when the validator or runtime supplies them.",{"type":46,"tag":62,"props":728,"children":729},{},[730],{"type":52,"value":731},"Block and report instead of guessing when:",{"type":46,"tag":112,"props":733,"children":734},{},[735,740,745,750,755,760],{"type":46,"tag":116,"props":736,"children":737},{},[738],{"type":52,"value":739},"There are multiple disconnected articulated mechanisms.",{"type":46,"tag":116,"props":741,"children":742},{},[743],{"type":52,"value":744},"The asset has joints but no clear root body or root joint.",{"type":46,"tag":116,"props":746,"children":747},{},[748],{"type":52,"value":749},"Root placement conflicts with FET021 robot type or root-joint pinning.",{"type":46,"tag":116,"props":751,"children":752},{},[753],{"type":52,"value":754},"Fixing BA.002 would require moving visual geometry, changing joint transforms, or changing default robot pose.",{"type":46,"tag":116,"props":756,"children":757},{},[758],{"type":52,"value":759},"Collision meshes must be regenerated or simplified and no collider strategy is approved.",{"type":46,"tag":116,"props":761,"children":762},{},[763],{"type":52,"value":764},"PhysX schemas or contact simulation are unavailable for a PhysX BA.002 check.",{"type":46,"tag":55,"props":766,"children":768},{"id":767},"variant-guidance",[769],{"type":52,"value":770},"Variant Guidance",{"type":46,"tag":62,"props":772,"children":773},{},[774,776,781,783,789,791,796],{"type":52,"value":775},"For ",{"type":46,"tag":68,"props":777,"children":779},{"className":778},[],[780],{"type":52,"value":371},{"type":52,"value":782},", the manifest requires ",{"type":46,"tag":68,"props":784,"children":786},{"className":785},[],[787],{"type":52,"value":788},"BA.001",{"type":52,"value":790},": the stage must have exactly one ",{"type":46,"tag":68,"props":792,"children":794},{"className":793},[],[795],{"type":52,"value":513},{"type":52,"value":797}," application for the articulated asset.",{"type":46,"tag":62,"props":799,"children":800},{},[801,802,807,809,815],{"type":52,"value":775},{"type":46,"tag":68,"props":803,"children":805},{"className":804},[],[806],{"type":52,"value":378},{"type":52,"value":808},", the manifest depends on the neutral FET024 variant and adds ",{"type":46,"tag":68,"props":810,"children":812},{"className":811},[],[813],{"type":52,"value":814},"BA.002",{"type":52,"value":816},": non-adjacent collision meshes in the articulation hierarchy must not clash at the default pose. Do not treat a PhysX BA.002 pass as meaningful unless the environment can run the needed PhysX contact or validator check; if the current checker cannot produce collision pairs, record the limitation.",{"type":46,"tag":55,"props":818,"children":820},{"id":819},"validation-handoff",[821],{"type":52,"value":822},"Validation Handoff",{"type":46,"tag":62,"props":824,"children":825},{},[826],{"type":52,"value":827},"Preserve reports under the staged output directory. If the Physical AI Skill Hub validation commands are available, use the same profile gate that exposed the failure:",{"type":46,"tag":662,"props":829,"children":833},{"className":830,"code":831,"language":832,"meta":667,"style":667},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","uv run --python 3.12 validate-simready-profile \u003Cstaged-usd> \\\n  --profile \u003Cprofile> \\\n  --profile-version \u003Cversion> \\\n  --foundation-root \u003Csimready-foundation-root> \\\n  --foundation-spec-root \u003Csimready-foundation-root>\u002Fnv_core\u002Fsr_specs\u002Fdocs \\\n  --report \u003Coutput-root>\u002Fsimready-profile-after-fet024.json\n","bash",[834],{"type":46,"tag":68,"props":835,"children":836},{"__ignoreMap":667},[837,898,929,960,991,1025],{"type":46,"tag":838,"props":839,"children":842},"span",{"class":840,"line":841},"line",1,[843,849,855,860,866,871,877,882,888,893],{"type":46,"tag":838,"props":844,"children":846},{"style":845},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[847],{"type":52,"value":848},"uv",{"type":46,"tag":838,"props":850,"children":852},{"style":851},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[853],{"type":52,"value":854}," run",{"type":46,"tag":838,"props":856,"children":857},{"style":851},[858],{"type":52,"value":859}," --python",{"type":46,"tag":838,"props":861,"children":863},{"style":862},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[864],{"type":52,"value":865}," 3.12",{"type":46,"tag":838,"props":867,"children":868},{"style":851},[869],{"type":52,"value":870}," validate-simready-profile",{"type":46,"tag":838,"props":872,"children":874},{"style":873},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[875],{"type":52,"value":876}," \u003C",{"type":46,"tag":838,"props":878,"children":879},{"style":851},[880],{"type":52,"value":881},"staged-us",{"type":46,"tag":838,"props":883,"children":885},{"style":884},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[886],{"type":52,"value":887},"d",{"type":46,"tag":838,"props":889,"children":890},{"style":873},[891],{"type":52,"value":892},">",{"type":46,"tag":838,"props":894,"children":895},{"style":884},[896],{"type":52,"value":897}," \\\n",{"type":46,"tag":838,"props":899,"children":901},{"class":840,"line":900},2,[902,907,911,916,921,925],{"type":46,"tag":838,"props":903,"children":904},{"style":851},[905],{"type":52,"value":906},"  --profile",{"type":46,"tag":838,"props":908,"children":909},{"style":873},[910],{"type":52,"value":876},{"type":46,"tag":838,"props":912,"children":913},{"style":851},[914],{"type":52,"value":915},"profil",{"type":46,"tag":838,"props":917,"children":918},{"style":884},[919],{"type":52,"value":920},"e",{"type":46,"tag":838,"props":922,"children":923},{"style":873},[924],{"type":52,"value":892},{"type":46,"tag":838,"props":926,"children":927},{"style":884},[928],{"type":52,"value":897},{"type":46,"tag":838,"props":930,"children":932},{"class":840,"line":931},3,[933,938,942,947,952,956],{"type":46,"tag":838,"props":934,"children":935},{"style":851},[936],{"type":52,"value":937},"  --profile-version",{"type":46,"tag":838,"props":939,"children":940},{"style":873},[941],{"type":52,"value":876},{"type":46,"tag":838,"props":943,"children":944},{"style":851},[945],{"type":52,"value":946},"versio",{"type":46,"tag":838,"props":948,"children":949},{"style":884},[950],{"type":52,"value":951},"n",{"type":46,"tag":838,"props":953,"children":954},{"style":873},[955],{"type":52,"value":892},{"type":46,"tag":838,"props":957,"children":958},{"style":884},[959],{"type":52,"value":897},{"type":46,"tag":838,"props":961,"children":963},{"class":840,"line":962},4,[964,969,973,978,983,987],{"type":46,"tag":838,"props":965,"children":966},{"style":851},[967],{"type":52,"value":968},"  --foundation-root",{"type":46,"tag":838,"props":970,"children":971},{"style":873},[972],{"type":52,"value":876},{"type":46,"tag":838,"props":974,"children":975},{"style":851},[976],{"type":52,"value":977},"simready-foundation-roo",{"type":46,"tag":838,"props":979,"children":980},{"style":884},[981],{"type":52,"value":982},"t",{"type":46,"tag":838,"props":984,"children":985},{"style":873},[986],{"type":52,"value":892},{"type":46,"tag":838,"props":988,"children":989},{"style":884},[990],{"type":52,"value":897},{"type":46,"tag":838,"props":992,"children":994},{"class":840,"line":993},5,[995,1000,1004,1008,1012,1016,1021],{"type":46,"tag":838,"props":996,"children":997},{"style":851},[998],{"type":52,"value":999},"  --foundation-spec-root",{"type":46,"tag":838,"props":1001,"children":1002},{"style":873},[1003],{"type":52,"value":876},{"type":46,"tag":838,"props":1005,"children":1006},{"style":851},[1007],{"type":52,"value":977},{"type":46,"tag":838,"props":1009,"children":1010},{"style":884},[1011],{"type":52,"value":982},{"type":46,"tag":838,"props":1013,"children":1014},{"style":873},[1015],{"type":52,"value":892},{"type":46,"tag":838,"props":1017,"children":1018},{"style":851},[1019],{"type":52,"value":1020},"\u002Fnv_core\u002Fsr_specs\u002Fdocs",{"type":46,"tag":838,"props":1022,"children":1023},{"style":884},[1024],{"type":52,"value":897},{"type":46,"tag":838,"props":1026,"children":1028},{"class":840,"line":1027},6,[1029,1034,1038,1043,1047,1051],{"type":46,"tag":838,"props":1030,"children":1031},{"style":851},[1032],{"type":52,"value":1033},"  --report",{"type":46,"tag":838,"props":1035,"children":1036},{"style":873},[1037],{"type":52,"value":876},{"type":46,"tag":838,"props":1039,"children":1040},{"style":851},[1041],{"type":52,"value":1042},"output-roo",{"type":46,"tag":838,"props":1044,"children":1045},{"style":884},[1046],{"type":52,"value":982},{"type":46,"tag":838,"props":1048,"children":1049},{"style":873},[1050],{"type":52,"value":892},{"type":46,"tag":838,"props":1052,"children":1053},{"style":851},[1054],{"type":52,"value":1055},"\u002Fsimready-profile-after-fet024.json\n",{"type":46,"tag":62,"props":1057,"children":1058},{},[1059],{"type":52,"value":1060},"Count this skill as successful when the selected FET024 variant passes, even if the full Robot-Body profile still fails on driven joints, robot core, or Isaac composition. Report those remaining failures as handoff work for their own features.",{"type":46,"tag":55,"props":1062,"children":1064},{"id":1063},"limitations",[1065],{"type":52,"value":1066},"Limitations",{"type":46,"tag":112,"props":1068,"children":1069},{},[1070,1075,1080],{"type":46,"tag":116,"props":1071,"children":1072},{},[1073],{"type":52,"value":1074},"Do not silently mutate the source asset; work on the requested staged output.",{"type":46,"tag":116,"props":1076,"children":1077},{},[1078],{"type":52,"value":1079},"Do not hide later profile failures after the selected feature gate passes or fails.",{"type":46,"tag":116,"props":1081,"children":1082},{},[1083],{"type":52,"value":1084},"Do not invent geometry, metadata, or runtime behavior that conflicts with the asset intent.",{"type":46,"tag":55,"props":1086,"children":1088},{"id":1087},"troubleshooting",[1089],{"type":52,"value":1090},"Troubleshooting",{"type":46,"tag":112,"props":1092,"children":1093},{},[1094,1099,1104],{"type":46,"tag":116,"props":1095,"children":1096},{},[1097],{"type":52,"value":1098},"Error: validation tooling is unavailable. Solution: run the narrowest available USD or static check and report the gap.",{"type":46,"tag":116,"props":1100,"children":1101},{},[1102],{"type":52,"value":1103},"Error: a repair would change asset intent. Solution: stop and ask for direction or stage the smallest reversible edit.",{"type":46,"tag":116,"props":1105,"children":1106},{},[1107],{"type":52,"value":1108},"Error: later profile gates still fail. Solution: report the next failing feature and hand off to the matching conformance skill.",{"type":46,"tag":55,"props":1110,"children":1112},{"id":1111},"resources",[1113],{"type":52,"value":1114},"Resources",{"type":46,"tag":112,"props":1116,"children":1117},{},[1118,1129],{"type":46,"tag":116,"props":1119,"children":1120},{},[1121,1127],{"type":46,"tag":68,"props":1122,"children":1124},{"className":1123},[],[1125],{"type":52,"value":1126},"assets\u002Fopenai.yaml",{"type":52,"value":1128}," preserves optional UI metadata for clients that read skill display hints. It is not required for the workflow.",{"type":46,"tag":116,"props":1130,"children":1131},{},[1132,1138],{"type":46,"tag":68,"props":1133,"children":1135},{"className":1134},[],[1136],{"type":52,"value":1137},"references\u002F",{"type":52,"value":1139}," contains detailed requirement notes; load only the files needed for the active validation failure.",{"type":46,"tag":55,"props":1141,"children":1143},{"id":1142},"summary-format",[1144],{"type":52,"value":1145},"Summary Format",{"type":46,"tag":62,"props":1147,"children":1148},{},[1149],{"type":52,"value":1150},"Report:",{"type":46,"tag":191,"props":1152,"children":1153},{},[1154,1170],{"type":46,"tag":195,"props":1155,"children":1156},{},[1157],{"type":46,"tag":199,"props":1158,"children":1159},{},[1160,1165],{"type":46,"tag":203,"props":1161,"children":1162},{},[1163],{"type":52,"value":1164},"Field",{"type":46,"tag":203,"props":1166,"children":1167},{},[1168],{"type":52,"value":1169},"Meaning",{"type":46,"tag":214,"props":1171,"children":1172},{},[1173,1190,1207,1231,1247,1270,1287,1304,1321,1338,1355,1372,1388],{"type":46,"tag":199,"props":1174,"children":1175},{},[1176,1185],{"type":46,"tag":221,"props":1177,"children":1178},{},[1179],{"type":46,"tag":68,"props":1180,"children":1182},{"className":1181},[],[1183],{"type":52,"value":1184},"input_usd_path",{"type":46,"tag":221,"props":1186,"children":1187},{},[1188],{"type":52,"value":1189},"Original USD path.",{"type":46,"tag":199,"props":1191,"children":1192},{},[1193,1202],{"type":46,"tag":221,"props":1194,"children":1195},{},[1196],{"type":46,"tag":68,"props":1197,"children":1199},{"className":1198},[],[1200],{"type":52,"value":1201},"output_usd_path",{"type":46,"tag":221,"props":1203,"children":1204},{},[1205],{"type":52,"value":1206},"Latest staged\u002Frepaired USD path.",{"type":46,"tag":199,"props":1208,"children":1209},{},[1210,1226],{"type":46,"tag":221,"props":1211,"children":1212},{},[1213,1219,1221],{"type":46,"tag":68,"props":1214,"children":1216},{"className":1215},[],[1217],{"type":52,"value":1218},"profile",{"type":52,"value":1220}," and ",{"type":46,"tag":68,"props":1222,"children":1224},{"className":1223},[],[1225],{"type":52,"value":326},{"type":46,"tag":221,"props":1227,"children":1228},{},[1229],{"type":52,"value":1230},"Validation target.",{"type":46,"tag":199,"props":1232,"children":1233},{},[1234,1242],{"type":46,"tag":221,"props":1235,"children":1236},{},[1237],{"type":46,"tag":68,"props":1238,"children":1240},{"className":1239},[],[1241],{"type":52,"value":360},{"type":46,"tag":221,"props":1243,"children":1244},{},[1245],{"type":52,"value":1246},"Selected FET024 feature ID and version.",{"type":46,"tag":199,"props":1248,"children":1249},{},[1250,1259],{"type":46,"tag":221,"props":1251,"children":1252},{},[1253],{"type":46,"tag":68,"props":1254,"children":1256},{"className":1255},[],[1257],{"type":52,"value":1258},"articulation_root",{"type":46,"tag":221,"props":1260,"children":1261},{},[1262,1264,1269],{"type":52,"value":1263},"Chosen prim with ",{"type":46,"tag":68,"props":1265,"children":1267},{"className":1266},[],[1268],{"type":52,"value":513},{"type":52,"value":314},{"type":46,"tag":199,"props":1271,"children":1272},{},[1273,1282],{"type":46,"tag":221,"props":1274,"children":1275},{},[1276],{"type":46,"tag":68,"props":1277,"children":1279},{"className":1278},[],[1280],{"type":52,"value":1281},"root_selection_evidence",{"type":46,"tag":221,"props":1283,"children":1284},{},[1285],{"type":52,"value":1286},"Why this prim is the correct articulation root.",{"type":46,"tag":199,"props":1288,"children":1289},{},[1290,1299],{"type":46,"tag":221,"props":1291,"children":1292},{},[1293],{"type":46,"tag":68,"props":1294,"children":1296},{"className":1295},[],[1297],{"type":52,"value":1298},"removed_roots",{"type":46,"tag":221,"props":1300,"children":1301},{},[1302],{"type":52,"value":1303},"Extra articulation roots removed or left blocked.",{"type":46,"tag":199,"props":1305,"children":1306},{},[1307,1316],{"type":46,"tag":221,"props":1308,"children":1309},{},[1310],{"type":46,"tag":68,"props":1311,"children":1313},{"className":1312},[],[1314],{"type":52,"value":1315},"collision_pairs",{"type":46,"tag":221,"props":1317,"children":1318},{},[1319],{"type":52,"value":1320},"Non-adjacent collider pairs reported for BA.002.",{"type":46,"tag":199,"props":1322,"children":1323},{},[1324,1333],{"type":46,"tag":221,"props":1325,"children":1326},{},[1327],{"type":46,"tag":68,"props":1328,"children":1330},{"className":1329},[],[1331],{"type":52,"value":1332},"collision_repairs",{"type":46,"tag":221,"props":1334,"children":1335},{},[1336],{"type":52,"value":1337},"Collider clearance, approximation, or policy changes made.",{"type":46,"tag":199,"props":1339,"children":1340},{},[1341,1350],{"type":46,"tag":221,"props":1342,"children":1343},{},[1344],{"type":46,"tag":68,"props":1345,"children":1347},{"className":1346},[],[1348],{"type":52,"value":1349},"requirements_repaired",{"type":46,"tag":221,"props":1351,"children":1352},{},[1353],{"type":52,"value":1354},"Requirement IDs changed by this skill.",{"type":46,"tag":199,"props":1356,"children":1357},{},[1358,1367],{"type":46,"tag":221,"props":1359,"children":1360},{},[1361],{"type":46,"tag":68,"props":1362,"children":1364},{"className":1363},[],[1365],{"type":52,"value":1366},"requirements_blocked",{"type":46,"tag":221,"props":1368,"children":1369},{},[1370],{"type":52,"value":1371},"Requirement IDs that need root intent, topology, collider strategy, or PhysX runtime validation.",{"type":46,"tag":199,"props":1373,"children":1374},{},[1375,1383],{"type":46,"tag":221,"props":1376,"children":1377},{},[1378],{"type":46,"tag":68,"props":1379,"children":1381},{"className":1380},[],[1382],{"type":52,"value":343},{"type":46,"tag":221,"props":1384,"children":1385},{},[1386],{"type":52,"value":1387},"Path to the rerun validation report.",{"type":46,"tag":199,"props":1389,"children":1390},{},[1391,1400],{"type":46,"tag":221,"props":1392,"children":1393},{},[1394],{"type":46,"tag":68,"props":1395,"children":1397},{"className":1396},[],[1398],{"type":52,"value":1399},"next_step",{"type":46,"tag":221,"props":1401,"children":1402},{},[1403],{"type":52,"value":1404},"Usually the next failing Robot-Body feature or a blocked FET024 requirement.",{"type":46,"tag":62,"props":1406,"children":1407},{},[1408],{"type":52,"value":1409},"Keep the user-facing summary short: what articulation root changed, whether PhysX collision clearance was checked, what still fails, and the first validation gate that blocks progress.",{"type":46,"tag":1411,"props":1412,"children":1413},"style",{},[1414],{"type":52,"value":1415},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":1417,"total":1501},[1418,1430,1443,1453,1466,1477,1490],{"slug":1419,"name":1419,"fn":1420,"description":1421,"org":1422,"tags":1423,"stars":23,"repoUrl":24,"updatedAt":1429},"simready-foundation-add-capability","add SimReady capability documentation","Add SimReady capability docs, requirement indexes, validation stubs, and registrations for new requirement families.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1424,1427,1428],{"name":1425,"slug":1426,"type":15},"Documentation","documentation",{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},"2026-07-14T05:34:08.047242",{"slug":1431,"name":1431,"fn":1432,"description":1433,"org":1434,"tags":1435,"stars":23,"repoUrl":24,"updatedAt":1442},"simready-foundation-add-feature","add SimReady features and documentation","Use for adding SimReady feature docs, manifests, requirement mappings, validation strategy, and index entries.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1436,1437,1440,1441],{"name":1425,"slug":1426,"type":15},{"name":1438,"slug":1439,"type":15},"Engineering","engineering",{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},"2026-07-14T05:34:23.330216",{"slug":1444,"name":1444,"fn":1445,"description":1446,"org":1447,"tags":1448,"stars":23,"repoUrl":24,"updatedAt":1452},"simready-foundation-add-feature-adapter","mutate USD assets with feature adapters","Use for adding SimReady feature adapters that mutate USD assets between exact feature or profile versions.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1449,1450,1451],{"name":1438,"slug":1439,"type":15},{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},"2026-07-14T05:34:02.999518",{"slug":1454,"name":1454,"fn":1455,"description":1456,"org":1457,"tags":1458,"stars":23,"repoUrl":24,"updatedAt":1465},"simready-foundation-add-profile","add SimReady profile versions","Use for adding SimReady profile versions with feature bundles, docs, indexes, and validation notes.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1459,1460,1461,1462],{"name":1425,"slug":1426,"type":15},{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},{"name":1463,"slug":1464,"type":15},"Validation","validation","2026-07-14T05:34:00.482781",{"slug":1467,"name":1467,"fn":1468,"description":1469,"org":1470,"tags":1471,"stars":23,"repoUrl":24,"updatedAt":1476},"simready-foundation-add-requirement","add atomic SimReady requirements","Use for adding atomic SimReady requirements with stable IDs, docs, examples, indexes, and validator follow-up.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1472,1473,1474,1475],{"name":1425,"slug":1426,"type":15},{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},{"name":1463,"slug":1464,"type":15},"2026-07-14T05:34:11.881936",{"slug":1478,"name":1478,"fn":1479,"description":1480,"org":1481,"tags":1482,"stars":23,"repoUrl":24,"updatedAt":1489},"simready-foundation-add-runtime-test","add SimReady runtime tests","Use for adding SimReady runtime tests, runner expectations, batch\u002Fjob\u002Freport notes, and validation evidence.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1483,1484,1485,1488],{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},{"name":1486,"slug":1487,"type":15},"Testing","testing",{"name":1463,"slug":1464,"type":15},"2026-07-14T05:34:09.295859",{"slug":1491,"name":1491,"fn":1492,"description":1493,"org":1494,"tags":1495,"stars":23,"repoUrl":24,"updatedAt":1500},"simready-foundation-add-validator","add executable SimReady validators","Use for adding executable SimReady validators that report requirement IDs with focused pass\u002Ffail coverage.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1496,1497,1498,1499],{"name":1438,"slug":1439,"type":15},{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},{"name":1463,"slug":1464,"type":15},"2026-07-14T05:34:14.407249",26,{"items":1503,"total":1658},[1504,1520,1538,1549,1561,1575,1588,1602,1613,1624,1638,1647],{"slug":1505,"name":1505,"fn":1506,"description":1507,"org":1508,"tags":1509,"stars":1517,"repoUrl":1518,"updatedAt":1519},"nemoclaw-user-guide","retrieve NemoClaw documentation and configuration","Guides human users' AI agents to the NemoClaw docs MCP server and canonical Fern documentation in Markdown form. Use when users ask how to install, configure, operate, troubleshoot, secure, or learn NemoClaw with an AI coding assistant. Trigger keywords - nemoclaw docs, use nemoclaw with ai agent, nemoclaw mcp docs, nemoclaw install help, nemoclaw quickstart, nemoclaw markdown docs, llms.txt, agent skills.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1510,1511,1514],{"name":1425,"slug":1426,"type":15},{"name":1512,"slug":1513,"type":15},"MCP","mcp",{"name":1515,"slug":1516,"type":15},"Search","search",21777,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FNemoClaw","2026-07-20T06:00:01.461044",{"slug":1521,"name":1521,"fn":1522,"description":1523,"org":1524,"tags":1525,"stars":1535,"repoUrl":1536,"updatedAt":1537},"mcore-build-and-dependency","manage Megatron-LM development environments","Container-based dev environment setup and dependency management for Megatron-LM. Covers acquiring and launching the CI container, uv package management, and updating uv.lock.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1526,1529,1532],{"name":1527,"slug":1528,"type":15},"Containers","containers",{"name":1530,"slug":1531,"type":15},"Deployment","deployment",{"name":1533,"slug":1534,"type":15},"Python","python",17049,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM","2026-07-27T06:06:11.249662",{"slug":1539,"name":1539,"fn":1540,"description":1541,"org":1542,"tags":1543,"stars":1535,"repoUrl":1536,"updatedAt":1548},"mcore-bump-base-image","update NVIDIA PyTorch base images","Bump the NVIDIA PyTorch base image (`nvcr.io\u002Fnvidia\u002Fpytorch:YY.MM-py3`) used by Megatron-LM CI. Covers the two pin sites (GitHub CI in `docker\u002F.ngc_version.dev` and GitLab CI in `.gitlab\u002Fstages\u002F01.build.yml`), the post-bump CI loop (re-run functional tests, refresh golden values, mark broken tests), and the gotchas that bit PRs",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1544,1547],{"name":1545,"slug":1546,"type":15},"CI\u002FCD","ci-cd",{"name":1530,"slug":1531,"type":15},"2026-07-14T05:25:59.97109",{"slug":1550,"name":1550,"fn":1551,"description":1552,"org":1553,"tags":1554,"stars":1535,"repoUrl":1536,"updatedAt":1560},"mcore-cicd","manage CI\u002FCD pipelines for Megatron-LM","CI\u002FCD reference for Megatron-LM. Covers CI pipeline structure, PR scope labels, triggering internal GitLab CI (which force-pushes the current branch to a pull-request\u002FBRANCH ref — always dry-run and verify the destination first; never run against shared or protected branches), and CI failure investigation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1555,1556,1557],{"name":1545,"slug":1546,"type":15},{"name":1530,"slug":1531,"type":15},{"name":1558,"slug":1559,"type":15},"GitHub","github","2026-07-27T06:06:12.278222",{"slug":1562,"name":1562,"fn":1563,"description":1564,"org":1565,"tags":1566,"stars":1535,"repoUrl":1536,"updatedAt":1574},"mcore-create-issue","investigate CI failures and create issues","Investigate a failing GitHub Actions run or job and create a GitHub issue for the failure.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1567,1570,1571],{"name":1568,"slug":1569,"type":15},"Debugging","debugging",{"name":1558,"slug":1559,"type":15},{"name":1572,"slug":1573,"type":15},"Triage","triage","2026-07-14T05:25:57.442089",{"slug":1576,"name":1576,"fn":1577,"description":1578,"org":1579,"tags":1580,"stars":1535,"repoUrl":1536,"updatedAt":1587},"mcore-linting-and-formatting","lint and format Megatron-LM code","Linting and formatting for Megatron-LM. Covers running autoformat.sh, tools (ruff, black, isort, pylint, mypy), and code style rules.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1581,1584],{"name":1582,"slug":1583,"type":15},"Best Practices","best-practices",{"name":1585,"slug":1586,"type":15},"Code Analysis","code-analysis","2026-07-14T05:25:56.18433",{"slug":1589,"name":1589,"fn":1590,"description":1591,"org":1592,"tags":1593,"stars":1535,"repoUrl":1536,"updatedAt":1601},"mcore-migrate-gpt-to-hybrid","migrate Megatron-LM models to HybridModel","Migration guide for moving Megatron Core GPTModel checkpoints, model providers, training commands, and layer mappings to HybridModel.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1594,1597,1600],{"name":1595,"slug":1596,"type":15},"Machine Learning","machine-learning",{"name":1598,"slug":1599,"type":15},"Migration","migration",{"name":9,"slug":8,"type":15},"2026-07-17T06:07:11.777011",{"slug":1603,"name":1603,"fn":1604,"description":1605,"org":1606,"tags":1607,"stars":1535,"repoUrl":1536,"updatedAt":1612},"mcore-onboard-gb200-1node-tests","onboard functional tests for GB200","Onboard 1-node GitHub MR functional tests for GB200 from existing mr-scoped 2-node tests.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1608,1611],{"name":1609,"slug":1610,"type":15},"QA","qa",{"name":1486,"slug":1487,"type":15},"2026-07-14T05:25:53.673039",{"slug":1614,"name":1614,"fn":1615,"description":1616,"org":1617,"tags":1618,"stars":1535,"repoUrl":1536,"updatedAt":1623},"mcore-run-on-slurm","launch distributed training jobs on SLURM","How to launch distributed Megatron-LM training jobs on a SLURM cluster. Covers a minimal sbatch skeleton, environment-variable setup for torch.distributed.run, CUDA_DEVICE_MAX_CONNECTIONS rules across hardware and parallelism modes, container conventions, monitoring, and per-rank failure diagnosis.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1619,1620],{"name":1530,"slug":1531,"type":15},{"name":1621,"slug":1622,"type":15},"Infrastructure","infrastructure","2026-07-14T05:25:49.362534",{"slug":1625,"name":1625,"fn":1626,"description":1627,"org":1628,"tags":1629,"stars":1535,"repoUrl":1536,"updatedAt":1637},"mcore-split-pr","split pull requests to reduce review load","Split a PR into multiple PRs to reduce the number of required CODEOWNERS reviewer groups.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1630,1633,1634],{"name":1631,"slug":1632,"type":15},"Code Review","code-review",{"name":1558,"slug":1559,"type":15},{"name":1635,"slug":1636,"type":15},"Pull Requests","pull-requests","2026-07-14T05:26:01.226578",{"slug":1639,"name":1639,"fn":1640,"description":1641,"org":1642,"tags":1643,"stars":1535,"repoUrl":1536,"updatedAt":1646},"mcore-testing","run and manage Megatron-LM tests","Test system for Megatron-LM. Covers test layout, recipe YAML structure, adding and running unit and functional tests, golden values, marker filters, and CI parity.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1644,1645],{"name":1609,"slug":1610,"type":15},{"name":1486,"slug":1487,"type":15},"2026-07-14T05:25:54.928983",{"slug":1648,"name":1648,"fn":1649,"description":1650,"org":1651,"tags":1652,"stars":1535,"repoUrl":1536,"updatedAt":1657},"nightly-sync","manage nightly main-to-dev sync workflows","Domain knowledge for the nightly main-to-dev sync workflow. Covers merge strategy, CI architecture, failure investigation, and known issues.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1653,1656],{"name":1654,"slug":1655,"type":15},"Automation","automation",{"name":1545,"slug":1546,"type":15},"2026-07-30T05:29:03.275638",496]