[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-nvidia-simready-package":3,"mdc--s3sxdo-key":34,"related-repo-nvidia-simready-package":1887,"related-org-nvidia-simready-package":1971},{"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-package","create validated SimReady packages from USD","Guide a user from a folder of USD files to a validated SimReady package: set up the venv (including the user-provided WRAPP wheel) and then run ``create_simready_package.py``, which performs pre-validation, build, and post-validation in one shot.\n",{"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},"Packaging","packaging","tag",{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},"Simulation","simulation",{"name":21,"slug":22,"type":15},"Engineering","engineering",52,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fsimready-foundation","2026-07-14T05:34:27.068303",null,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\u002Fnv_core\u002Fpackage_sample","---\nname: simready-package\ndescription: >\n  Guide a user from a folder of USD files to a validated SimReady package:\n  set up the venv (including the user-provided WRAPP wheel) and then run\n  ``create_simready_package.py``, which performs pre-validation, build,\n  and post-validation in one shot.\ntriggers:\n  - validate my SimReady asset\n  - validate my SimReady folder\n  - package my SimReady asset\n  - create a SimReady package\n  - publish a SimReady package\n  - check if my folder can be packaged\n  - SimReady packaging workflow\ntools:\n  - bash\n  - python\ndependencies:\n  - python >=3.10\n  - a locally downloaded WRAPP 2.2.0 wheel from NGC\n---\n\n# SimReady Packaging Skill\n\nDrive the end-to-end packaging workflow in `simready_foundations\u002Fnv_core\u002Fpackage_sample\u002F`\nfor a user who wants to publish a folder of USD files as a SimReady package.\n\n## When to Use\n\nUse this skill when the user asks to validate, package, or publish a folder\nof USD files as a SimReady package — or when they mention \"WRAPP\", \"SimReady\npackage\", or `create_simready_package.py`.\n\nDo **not** use it for general-purpose USD validation or for validating\npackages that were not produced through `create_simready_package.py` in this\nsample.\n\n## Overview\n\nThe workflow has two stages from the agent's perspective:\n\n```\n0. Bootstrap the venv   ──►   1. Run create_simready_package.py\n   (one-time)                   (pre-validate ─► build ─► post-validate)\n```\n\nThe sample directory is `simready_foundations\u002Fnv_core\u002Fpackage_sample\u002F`.\nEvery command below is invoked from that directory with the venv activated.\n\n`create_simready_package.py` drives the three workflow phases internally\n— drive **it**, not the underlying modules. The `sr_pkg_sample.*` Python\nAPI exists for users who want to wire the workflow into their own tooling\nand is documented in the README; an agent doing command-line work should\nalways go through `create_simready_package.py`.\n\n## Stage 0 — Bootstrap the venv\n\nThis is the hardest part of the workflow. Work through it carefully and\nconfirm each precondition before running anything.\n\n1. **Check for an existing venv.** If `simready_foundations\u002Fnv_core\u002Fpackage_sample\u002F.venv\u002F`\n   already exists AND the user can activate it and `import simready.validate`\n   and `import wrapp` succeed, skip to stage 1. Otherwise continue.\n\n2. **Locate the WRAPP wheel.** WRAPP (`omni-wrapp-minimal`) is not on\n   the default public index. Ask the user if they already have the\n   wheel downloaded. If yes, confirm it exists (`test -f \"$path\"`).\n   If no, point them at the NGC download page:\n   https:\u002F\u002Fcatalog.ngc.nvidia.com\u002Forgs\u002Fnvidia\u002Fteams\u002Fomniverse\u002Fresources\u002Fwrapp_clt\u002Ffiles?version=2.2.0\n   (free NGC account; file is `omni_wrapp_minimal-2.2.0-py3-none-any.whl`).\n\n3. **Run the setup script** from the sample directory:\n   ```bash\n   cd simready_foundations\u002Fnv_core\u002Fpackage_sample\n   .\u002Fsetup_venv.sh --wrapp-wheel \u002Fpath\u002Fto\u002Fomni_wrapp_minimal-2.2.0-py3-none-any.whl\n   ```\n   For development setups (private package index or locally built\n   wheels), the script also accepts `--extra-index \u003Curl>` and\n   additional `--*-wheel` flags — see the\n   [README](README.md#development-alternative-package-sources).\n\n   The script:\n   - creates `.venv\u002F` right next to itself (i.e. inside\n     `simready_foundations\u002Fnv_core\u002Fpackage_sample\u002F.venv\u002F`),\n   - installs `simready-validate` (which pulls in\n     `omniverse-asset-validator`, `omniverse-usd-profiles`, etc. as\n     declared dependencies) from the public index at\n     `https:\u002F\u002Fpypi.nvidia.com\u002F` (no VPN needed),\n   - installs WRAPP with the `[local]` extra so it can talk to local\n     `file:\u002F\u002F` repos (other extras — `nucleus`, `s3`, `azure`,\n     `storage-api` — are documented in the README and can be layered\n     on top with a follow-up `pip install`),\n   - installs `pytest`,\n   - runs `wrapp version` and fails the bootstrap if the Local File\n     System backend is DISABLED.\n\n4. **Activate.** From `simready_foundations\u002Fnv_core\u002Fpackage_sample\u002F`,\n   source the venv for every subsequent command:\n   ```bash\n   source .venv\u002Fbin\u002Factivate\n   ```\n\nCommon failures:\n- *\"Could not find a version that satisfies the requirement ...\"* —\n  the package is not available on the default indexes. If the user has\n  access to an additional package index, re-run with\n  `--extra-index \u003Curl>`. Otherwise check network connectivity to\n  `pypi.nvidia.com`.\n\nIf two consecutive retries fail, hand control back to the user and point\nthem at the [human README](README.md). Do not keep trying.\n\n## Stage 1 — Run `create_simready_package.py`\n\nCollect the five positional arguments **and** the `--root-usd` flag from\nthe user. Prompt for any that are missing:\n\n1. `\u003Cname>` — package name, e.g. `apple_a01`. Lowercase, no spaces.\n2. `\u003Cversion>` — version string, e.g. `1.0.0`.\n3. `\u003Clicense>` — [SPDX identifier](https:\u002F\u002Fspdx.org\u002Flicenses\u002F). If the\n   user is unsure, ask what license applies to the asset they are\n   publishing. Common public-use choices: `Apache-2.0`, `MIT`,\n   `CC-BY-4.0`, `CC-BY-NC-4.0`. For proprietary or bespoke licenses, a\n   `LicenseRef-\u003Cidentifier>` expression is appropriate. Do **not** pick a\n   license on the user's behalf.\n4. `\u003Csource>` — the folder that contains the USDs (and every file they\n   reference) the user wants to publish.\n5. `\u003Crepo>` — a WRAPP repository. Either a local directory path (e.g.\n   `\u002Ftmp\u002Fmy_repo` or `~\u002Fmy_repo`) or a `file:\u002F\u002F` URL.\n6. `--root-usd PATH` — the relative path (inside `\u003Csource>`) of each\n   root USD entry point (repeatable).  **Required** unless\n   `.metadata\u002Fcom.nvidia.simready.root_usds.json` already exists in\n   `\u003Csource>` from a prior run.  If the source intentionally has no\n   USD files, pass `--no-usd-files` instead.\n\nThen run:\n\n```bash\npython create_simready_package.py \u003Cname> \u003Cversion> \u003Clicense> \u003Csource> \u003Crepo> \\\n    --root-usd \u003Crelative\u002Fpath\u002Fto\u002Froot.usd>\n```\n\nThe script runs three phases in order:\n\n1. **Pre-validation** (`Package-Candidate` profile) — does `\u003Csource>`\n   look like something we can package?\n2. **Create** — actually build the package via WRAPP and emit the\n   SimReady metadata.\n3. **Post-validation** (`Package` profile) — does the freshly built\n   package conform?\n\nIt exits `0` only if every phase that ran exited `0`. On failure it\nreturns the non-zero exit code of the first phase that failed; the\noutput identifies which phase that was.\n\n### Interpreting failures\n\n| First failing phase | Headline check | What to tell the user |\n|---------------------|----------------|-----------------------|\n| Pre-validation | `FET031_PACKAGE_SELF_CONTAINED` | The source failed `AA.001` (anchored asset paths) — at least one USD reference points outside the source folder. Quote the offending path from each `FAIL \u003CFET>: \u003Cusd>` line and link to [anchored-asset-paths.md](..\u002Fsr_specs\u002Fdocs\u002Fcapabilities\u002Fcore\u002Fatomic_asset\u002Frequirements\u002Fanchored-asset-paths.md). Typical fix: change absolute or search paths to `.\u002Frelative\u002F...`. Offer to open the offending USD; do **not** rewrite USD paths automatically. |\n| Pre-validation (exit 2) | \"no root USD files specified\" | The user forgot `--root-usd`. Ask them for the relative path(s) of the entry-point USD(s) inside `\u003Csource>`. If the folder intentionally has no USDs, suggest `--no-usd-files`. |\n| Pre-validation (exit 2) | other `UsageError` | The source path doesn't exist or isn't a directory. |\n| Create | \"source folder is already a WRAPP package with name '\u003Cexisting>'\" | The source root carries a `.\u003Cexisting>.wrapp` marker from a previous build. The user can either delete that marker, or rerun with `\u003Cexisting>` as the package name. Surface the error verbatim — it names both the file and the existing package. |\n| Create | \"contains installed WRAPP subpackages (...); nested packages are not yet supported\" | The source has one or more `.wrapp` files in **subfolders** (the root check above only catches the root). Nested packages aren't part of the standard yet; ask the user to remove the nested `.wrapp` files before retrying. |\n| Post-validation | `FAIL FET030_PACKAGING_CORE` | The package definition itself is malformed (hashes, metadata entries, file references). Cite the failing requirement code from the output. |\n| Post-validation | `FAIL FET032_PACKAGING_INTROSPECTION` | The BOM is missing or invalid. For a package freshly made by the create step this typically means the BOM write was skipped — re-run `create_simready_package.py`. |\n\nOn full success the script prints a `Wrote ...:` line for each\nmetadata file plus an `OK: created \u003Cname> \u003Cversion>` line, and the\npost-validation summary lists `PASS` for every `Package`-profile\nfeature.\n\n### Conformance metadata trust handoff\n\nIn the default full flow, pre-validation writes `.metadata\u002F` files\n(BOM, root_usds, conformance JSONs with `content_hash`) into the\nsource folder.  The create step recomputes `content_hash` from the\ncurrent source and compares — a match proves the source hasn't\nchanged since pre-validation, so the conformance results are\nregistered in the package definition's `metadata` array (covered by\n`package_hash`).  A mismatch aborts with a clear error.\n\nPost-validation writes an \"evidence\" conformance JSON that records the\n`Package`-profile result.  Evidence files are **not** covered by\n`package_hash` (they are post-creation artefacts).\n\nWhen `--skip-pre-validation` is used, the create step still looks for\nexisting `.metadata\u002Fconformance.*.json` files.  If found and the\n`content_hash` matches, they are registered; if not found, the package\ndefinition carries only the BOM entry.\n\n### Skipping a phase\n\nTwo opt-out flags let the user skip individual phases when they have\nalready done that work or want to defer it:\n\n- `--skip-pre-validation` — go straight to the build. Suggest only\n  when the user has just run `--only-pre-validation` against the same\n  source folder.  The create step still verifies any existing\n  `.metadata\u002F` conformance files.\n- `--skip-post-validation` — stop after the build. Suggest when the\n  user plans to validate the published package later (e.g. on a\n  different machine).\n\n### Single-phase modes\n\nTwo `--only-*` modes run a single phase. They are mutually exclusive\nwith each other and with the default flow — positional arguments are\nrejected, and the matching `--source` \u002F `--package-def` flag is\nrequired:\n\n- `--only-pre-validation --source \u003Cfolder> --root-usd \u003Cpath>` —\n  pre-flight only.  Useful while iterating on `AA.001` errors before\n  the user is ready to build.  `--root-usd` is required (same rules\n  as the default flow).\n- `--only-post-validation --package-def \u003Cpath>` — `Package`-profile\n  validation only. Useful for re-checking a package the user (or\n  someone else) published earlier.\n\n### `--no-wrapp` (no-WRAPP fallback)\n\nIf the user does not have (or cannot install) the WRAPP wheel, or\nexplicitly says they only need a minimal package skeleton, the\n`--no-wrapp` flag swaps the build phase for a WRAPP-less alternative\nthat writes a single `com.nvidia.simready.packaging.json` (required\nfields only — no BOM, no `.metadata\u002F`, no file hashes) directly into\nthe `\u003Csource>` folder. The source folder *is* the package in this\nmode, so the `\u003Crepo>` positional argument is dropped:\n\n```bash\npython create_simready_package.py \u003Cname> \u003Cversion> \u003Clicense> \u003Csource> --no-wrapp\n```\n\nImportant caveats to surface to the user before suggesting this\nmode:\n\n- The resulting package will FAIL post-validation features that\n  inspect the BOM (e.g. `FET032_PACKAGING_INTROSPECTION`). That is\n  expected. Combine with `--skip-post-validation` when you want a\n  clean exit.\n- This is the right answer for \"I just need a SimReady-stamped\n  folder for a quick demo \u002F experiment\" or \"I cannot install WRAPP\n  in this environment\" — not for actual publication. If the user\n  intends to publish the package, steer them back to the full\n  WRAPP-driven default flow.\n\n## Notes for the Agent\n\n- The script exits `0` on success. Do not assume success from stdout\n  alone — always inspect `returncode`.\n- Activate the venv once at the start of the conversation and remind\n  the user it must remain active across commands.\n- The tests under `tests\u002F` exist as a reference; you should not need to\n  run pytest for the packaging workflow itself, only when debugging the\n  scripts.\n- Never modify the user's USD files; only read them. Suggest fixes in\n  plain English.\n- Conformance metadata (`.metadata\u002F` files) and root-USDs metadata\n  are produced automatically by the default full flow.  The user can\n  control them with `--write-metadata` and `--write-evidence`.\n- The Python API under `sr_pkg_sample\u002F` exists for users who want to\n  embed the workflow in their own tooling. As an agent doing command-line\n  work, always drive `create_simready_package.py`.\n",{"data":35,"body":50},{"name":4,"description":6,"triggers":36,"tools":44,"dependencies":47},[37,38,39,40,41,42,43],"validate my SimReady asset","validate my SimReady folder","package my SimReady asset","create a SimReady package","publish a SimReady package","check if my folder can be packaged","SimReady packaging workflow",[45,46],"bash","python",[48,49],"python >=3.10","a locally downloaded WRAPP 2.2.0 wheel from NGC",{"type":51,"children":52},"root",[53,62,77,84,97,117,123,128,140,152,183,189,194,548,553,581,594,605,625,821,826,969,974,1029,1049,1056,1335,1371,1377,1421,1446,1474,1480,1485,1524,1530,1559,1604,1616,1664,1751,1756,1784,1790,1881],{"type":54,"tag":55,"props":56,"children":58},"element","h1",{"id":57},"simready-packaging-skill",[59],{"type":60,"value":61},"text","SimReady Packaging Skill",{"type":54,"tag":63,"props":64,"children":65},"p",{},[66,68,75],{"type":60,"value":67},"Drive the end-to-end packaging workflow in ",{"type":54,"tag":69,"props":70,"children":72},"code",{"className":71},[],[73],{"type":60,"value":74},"simready_foundations\u002Fnv_core\u002Fpackage_sample\u002F",{"type":60,"value":76},"\nfor a user who wants to publish a folder of USD files as a SimReady package.",{"type":54,"tag":78,"props":79,"children":81},"h2",{"id":80},"when-to-use",[82],{"type":60,"value":83},"When to Use",{"type":54,"tag":63,"props":85,"children":86},{},[87,89,95],{"type":60,"value":88},"Use this skill when the user asks to validate, package, or publish a folder\nof USD files as a SimReady package — or when they mention \"WRAPP\", \"SimReady\npackage\", or ",{"type":54,"tag":69,"props":90,"children":92},{"className":91},[],[93],{"type":60,"value":94},"create_simready_package.py",{"type":60,"value":96},".",{"type":54,"tag":63,"props":98,"children":99},{},[100,102,108,110,115],{"type":60,"value":101},"Do ",{"type":54,"tag":103,"props":104,"children":105},"strong",{},[106],{"type":60,"value":107},"not",{"type":60,"value":109}," use it for general-purpose USD validation or for validating\npackages that were not produced through ",{"type":54,"tag":69,"props":111,"children":113},{"className":112},[],[114],{"type":60,"value":94},{"type":60,"value":116}," in this\nsample.",{"type":54,"tag":78,"props":118,"children":120},{"id":119},"overview",[121],{"type":60,"value":122},"Overview",{"type":54,"tag":63,"props":124,"children":125},{},[126],{"type":60,"value":127},"The workflow has two stages from the agent's perspective:",{"type":54,"tag":129,"props":130,"children":134},"pre",{"className":131,"code":133,"language":60},[132],"language-text","0. Bootstrap the venv   ──►   1. Run create_simready_package.py\n   (one-time)                   (pre-validate ─► build ─► post-validate)\n",[135],{"type":54,"tag":69,"props":136,"children":138},{"__ignoreMap":137},"",[139],{"type":60,"value":133},{"type":54,"tag":63,"props":141,"children":142},{},[143,145,150],{"type":60,"value":144},"The sample directory is ",{"type":54,"tag":69,"props":146,"children":148},{"className":147},[],[149],{"type":60,"value":74},{"type":60,"value":151},".\nEvery command below is invoked from that directory with the venv activated.",{"type":54,"tag":63,"props":153,"children":154},{},[155,160,162,167,169,175,177,182],{"type":54,"tag":69,"props":156,"children":158},{"className":157},[],[159],{"type":60,"value":94},{"type":60,"value":161}," drives the three workflow phases internally\n— drive ",{"type":54,"tag":103,"props":163,"children":164},{},[165],{"type":60,"value":166},"it",{"type":60,"value":168},", not the underlying modules. The ",{"type":54,"tag":69,"props":170,"children":172},{"className":171},[],[173],{"type":60,"value":174},"sr_pkg_sample.*",{"type":60,"value":176}," Python\nAPI exists for users who want to wire the workflow into their own tooling\nand is documented in the README; an agent doing command-line work should\nalways go through ",{"type":54,"tag":69,"props":178,"children":180},{"className":179},[],[181],{"type":60,"value":94},{"type":60,"value":96},{"type":54,"tag":78,"props":184,"children":186},{"id":185},"stage-0-bootstrap-the-venv",[187],{"type":60,"value":188},"Stage 0 — Bootstrap the venv",{"type":54,"tag":63,"props":190,"children":191},{},[192],{"type":60,"value":193},"This is the hardest part of the workflow. Work through it carefully and\nconfirm each precondition before running anything.",{"type":54,"tag":195,"props":196,"children":197},"ol",{},[198,233,277,511],{"type":54,"tag":199,"props":200,"children":201},"li",{},[202,207,209,215,217,223,225,231],{"type":54,"tag":103,"props":203,"children":204},{},[205],{"type":60,"value":206},"Check for an existing venv.",{"type":60,"value":208}," If ",{"type":54,"tag":69,"props":210,"children":212},{"className":211},[],[213],{"type":60,"value":214},"simready_foundations\u002Fnv_core\u002Fpackage_sample\u002F.venv\u002F",{"type":60,"value":216},"\nalready exists AND the user can activate it and ",{"type":54,"tag":69,"props":218,"children":220},{"className":219},[],[221],{"type":60,"value":222},"import simready.validate",{"type":60,"value":224},"\nand ",{"type":54,"tag":69,"props":226,"children":228},{"className":227},[],[229],{"type":60,"value":230},"import wrapp",{"type":60,"value":232}," succeed, skip to stage 1. Otherwise continue.",{"type":54,"tag":199,"props":234,"children":235},{},[236,241,243,249,251,257,259,267,269,275],{"type":54,"tag":103,"props":237,"children":238},{},[239],{"type":60,"value":240},"Locate the WRAPP wheel.",{"type":60,"value":242}," WRAPP (",{"type":54,"tag":69,"props":244,"children":246},{"className":245},[],[247],{"type":60,"value":248},"omni-wrapp-minimal",{"type":60,"value":250},") is not on\nthe default public index. Ask the user if they already have the\nwheel downloaded. If yes, confirm it exists (",{"type":54,"tag":69,"props":252,"children":254},{"className":253},[],[255],{"type":60,"value":256},"test -f \"$path\"",{"type":60,"value":258},").\nIf no, point them at the NGC download page:\n",{"type":54,"tag":260,"props":261,"children":265},"a",{"href":262,"rel":263},"https:\u002F\u002Fcatalog.ngc.nvidia.com\u002Forgs\u002Fnvidia\u002Fteams\u002Fomniverse\u002Fresources\u002Fwrapp_clt\u002Ffiles?version=2.2.0",[264],"nofollow",[266],{"type":60,"value":262},{"type":60,"value":268},"\n(free NGC account; file is ",{"type":54,"tag":69,"props":270,"children":272},{"className":271},[],[273],{"type":60,"value":274},"omni_wrapp_minimal-2.2.0-py3-none-any.whl",{"type":60,"value":276},").",{"type":54,"tag":199,"props":278,"children":279},{},[280,285,287,333,337,339,345,347,353,355,361,362,365,367],{"type":54,"tag":103,"props":281,"children":282},{},[283],{"type":60,"value":284},"Run the setup script",{"type":60,"value":286}," from the sample directory:",{"type":54,"tag":129,"props":288,"children":291},{"className":289,"code":290,"language":45,"meta":137,"style":137},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","cd simready_foundations\u002Fnv_core\u002Fpackage_sample\n.\u002Fsetup_venv.sh --wrapp-wheel \u002Fpath\u002Fto\u002Fomni_wrapp_minimal-2.2.0-py3-none-any.whl\n",[292],{"type":54,"tag":69,"props":293,"children":294},{"__ignoreMap":137},[295,313],{"type":54,"tag":296,"props":297,"children":300},"span",{"class":298,"line":299},"line",1,[301,307],{"type":54,"tag":296,"props":302,"children":304},{"style":303},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[305],{"type":60,"value":306},"cd",{"type":54,"tag":296,"props":308,"children":310},{"style":309},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[311],{"type":60,"value":312}," simready_foundations\u002Fnv_core\u002Fpackage_sample\n",{"type":54,"tag":296,"props":314,"children":316},{"class":298,"line":315},2,[317,323,328],{"type":54,"tag":296,"props":318,"children":320},{"style":319},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[321],{"type":60,"value":322},".\u002Fsetup_venv.sh",{"type":54,"tag":296,"props":324,"children":325},{"style":309},[326],{"type":60,"value":327}," --wrapp-wheel",{"type":54,"tag":296,"props":329,"children":330},{"style":309},[331],{"type":60,"value":332}," \u002Fpath\u002Fto\u002Fomni_wrapp_minimal-2.2.0-py3-none-any.whl\n",{"type":54,"tag":334,"props":335,"children":336},"br",{},[],{"type":60,"value":338},"For development setups (private package index or locally built\nwheels), the script also accepts ",{"type":54,"tag":69,"props":340,"children":342},{"className":341},[],[343],{"type":60,"value":344},"--extra-index \u003Curl>",{"type":60,"value":346}," and\nadditional ",{"type":54,"tag":69,"props":348,"children":350},{"className":349},[],[351],{"type":60,"value":352},"--*-wheel",{"type":60,"value":354}," flags — see the\n",{"type":54,"tag":260,"props":356,"children":358},{"href":357},"README.md#development-alternative-package-sources",[359],{"type":60,"value":360},"README",{"type":60,"value":96},{"type":54,"tag":334,"props":363,"children":364},{},[],{"type":60,"value":366},"The script:",{"type":54,"tag":368,"props":369,"children":370},"ul",{},[371,391,428,486,498],{"type":54,"tag":199,"props":372,"children":373},{},[374,376,382,384,389],{"type":60,"value":375},"creates ",{"type":54,"tag":69,"props":377,"children":379},{"className":378},[],[380],{"type":60,"value":381},".venv\u002F",{"type":60,"value":383}," right next to itself (i.e. inside\n",{"type":54,"tag":69,"props":385,"children":387},{"className":386},[],[388],{"type":60,"value":214},{"type":60,"value":390},"),",{"type":54,"tag":199,"props":392,"children":393},{},[394,396,402,404,410,412,418,420,426],{"type":60,"value":395},"installs ",{"type":54,"tag":69,"props":397,"children":399},{"className":398},[],[400],{"type":60,"value":401},"simready-validate",{"type":60,"value":403}," (which pulls in\n",{"type":54,"tag":69,"props":405,"children":407},{"className":406},[],[408],{"type":60,"value":409},"omniverse-asset-validator",{"type":60,"value":411},", ",{"type":54,"tag":69,"props":413,"children":415},{"className":414},[],[416],{"type":60,"value":417},"omniverse-usd-profiles",{"type":60,"value":419},", etc. as\ndeclared dependencies) from the public index at\n",{"type":54,"tag":69,"props":421,"children":423},{"className":422},[],[424],{"type":60,"value":425},"https:\u002F\u002Fpypi.nvidia.com\u002F",{"type":60,"value":427}," (no VPN needed),",{"type":54,"tag":199,"props":429,"children":430},{},[431,433,439,441,447,449,455,456,462,463,469,471,477,479,485],{"type":60,"value":432},"installs WRAPP with the ",{"type":54,"tag":69,"props":434,"children":436},{"className":435},[],[437],{"type":60,"value":438},"[local]",{"type":60,"value":440}," extra so it can talk to local\n",{"type":54,"tag":69,"props":442,"children":444},{"className":443},[],[445],{"type":60,"value":446},"file:\u002F\u002F",{"type":60,"value":448}," repos (other extras — ",{"type":54,"tag":69,"props":450,"children":452},{"className":451},[],[453],{"type":60,"value":454},"nucleus",{"type":60,"value":411},{"type":54,"tag":69,"props":457,"children":459},{"className":458},[],[460],{"type":60,"value":461},"s3",{"type":60,"value":411},{"type":54,"tag":69,"props":464,"children":466},{"className":465},[],[467],{"type":60,"value":468},"azure",{"type":60,"value":470},",\n",{"type":54,"tag":69,"props":472,"children":474},{"className":473},[],[475],{"type":60,"value":476},"storage-api",{"type":60,"value":478}," — are documented in the README and can be layered\non top with a follow-up ",{"type":54,"tag":69,"props":480,"children":482},{"className":481},[],[483],{"type":60,"value":484},"pip install",{"type":60,"value":390},{"type":54,"tag":199,"props":487,"children":488},{},[489,490,496],{"type":60,"value":395},{"type":54,"tag":69,"props":491,"children":493},{"className":492},[],[494],{"type":60,"value":495},"pytest",{"type":60,"value":497},",",{"type":54,"tag":199,"props":499,"children":500},{},[501,503,509],{"type":60,"value":502},"runs ",{"type":54,"tag":69,"props":504,"children":506},{"className":505},[],[507],{"type":60,"value":508},"wrapp version",{"type":60,"value":510}," and fails the bootstrap if the Local File\nSystem backend is DISABLED.",{"type":54,"tag":199,"props":512,"children":513},{},[514,519,521,526,528],{"type":54,"tag":103,"props":515,"children":516},{},[517],{"type":60,"value":518},"Activate.",{"type":60,"value":520}," From ",{"type":54,"tag":69,"props":522,"children":524},{"className":523},[],[525],{"type":60,"value":74},{"type":60,"value":527},",\nsource the venv for every subsequent command:",{"type":54,"tag":129,"props":529,"children":531},{"className":289,"code":530,"language":45,"meta":137,"style":137},"source .venv\u002Fbin\u002Factivate\n",[532],{"type":54,"tag":69,"props":533,"children":534},{"__ignoreMap":137},[535],{"type":54,"tag":296,"props":536,"children":537},{"class":298,"line":299},[538,543],{"type":54,"tag":296,"props":539,"children":540},{"style":303},[541],{"type":60,"value":542},"source",{"type":54,"tag":296,"props":544,"children":545},{"style":309},[546],{"type":60,"value":547}," .venv\u002Fbin\u002Factivate\n",{"type":54,"tag":63,"props":549,"children":550},{},[551],{"type":60,"value":552},"Common failures:",{"type":54,"tag":368,"props":554,"children":555},{},[556],{"type":54,"tag":199,"props":557,"children":558},{},[559,565,567,572,574,580],{"type":54,"tag":560,"props":561,"children":562},"em",{},[563],{"type":60,"value":564},"\"Could not find a version that satisfies the requirement ...\"",{"type":60,"value":566}," —\nthe package is not available on the default indexes. If the user has\naccess to an additional package index, re-run with\n",{"type":54,"tag":69,"props":568,"children":570},{"className":569},[],[571],{"type":60,"value":344},{"type":60,"value":573},". Otherwise check network connectivity to\n",{"type":54,"tag":69,"props":575,"children":577},{"className":576},[],[578],{"type":60,"value":579},"pypi.nvidia.com",{"type":60,"value":96},{"type":54,"tag":63,"props":582,"children":583},{},[584,586,592],{"type":60,"value":585},"If two consecutive retries fail, hand control back to the user and point\nthem at the ",{"type":54,"tag":260,"props":587,"children":589},{"href":588},"README.md",[590],{"type":60,"value":591},"human README",{"type":60,"value":593},". Do not keep trying.",{"type":54,"tag":78,"props":595,"children":597},{"id":596},"stage-1-run-create_simready_packagepy",[598,600],{"type":60,"value":599},"Stage 1 — Run ",{"type":54,"tag":69,"props":601,"children":603},{"className":602},[],[604],{"type":60,"value":94},{"type":54,"tag":63,"props":606,"children":607},{},[608,610,615,617,623],{"type":60,"value":609},"Collect the five positional arguments ",{"type":54,"tag":103,"props":611,"children":612},{},[613],{"type":60,"value":614},"and",{"type":60,"value":616}," the ",{"type":54,"tag":69,"props":618,"children":620},{"className":619},[],[621],{"type":60,"value":622},"--root-usd",{"type":60,"value":624}," flag from\nthe user. Prompt for any that are missing:",{"type":54,"tag":195,"props":626,"children":627},{},[628,647,665,728,739,773],{"type":54,"tag":199,"props":629,"children":630},{},[631,637,639,645],{"type":54,"tag":69,"props":632,"children":634},{"className":633},[],[635],{"type":60,"value":636},"\u003Cname>",{"type":60,"value":638}," — package name, e.g. ",{"type":54,"tag":69,"props":640,"children":642},{"className":641},[],[643],{"type":60,"value":644},"apple_a01",{"type":60,"value":646},". Lowercase, no spaces.",{"type":54,"tag":199,"props":648,"children":649},{},[650,656,658,664],{"type":54,"tag":69,"props":651,"children":653},{"className":652},[],[654],{"type":60,"value":655},"\u003Cversion>",{"type":60,"value":657}," — version string, e.g. ",{"type":54,"tag":69,"props":659,"children":661},{"className":660},[],[662],{"type":60,"value":663},"1.0.0",{"type":60,"value":96},{"type":54,"tag":199,"props":666,"children":667},{},[668,674,676,683,685,691,692,698,699,705,706,712,714,720,722,726],{"type":54,"tag":69,"props":669,"children":671},{"className":670},[],[672],{"type":60,"value":673},"\u003Clicense>",{"type":60,"value":675}," — ",{"type":54,"tag":260,"props":677,"children":680},{"href":678,"rel":679},"https:\u002F\u002Fspdx.org\u002Flicenses\u002F",[264],[681],{"type":60,"value":682},"SPDX identifier",{"type":60,"value":684},". If the\nuser is unsure, ask what license applies to the asset they are\npublishing. Common public-use choices: ",{"type":54,"tag":69,"props":686,"children":688},{"className":687},[],[689],{"type":60,"value":690},"Apache-2.0",{"type":60,"value":411},{"type":54,"tag":69,"props":693,"children":695},{"className":694},[],[696],{"type":60,"value":697},"MIT",{"type":60,"value":470},{"type":54,"tag":69,"props":700,"children":702},{"className":701},[],[703],{"type":60,"value":704},"CC-BY-4.0",{"type":60,"value":411},{"type":54,"tag":69,"props":707,"children":709},{"className":708},[],[710],{"type":60,"value":711},"CC-BY-NC-4.0",{"type":60,"value":713},". For proprietary or bespoke licenses, a\n",{"type":54,"tag":69,"props":715,"children":717},{"className":716},[],[718],{"type":60,"value":719},"LicenseRef-\u003Cidentifier>",{"type":60,"value":721}," expression is appropriate. Do ",{"type":54,"tag":103,"props":723,"children":724},{},[725],{"type":60,"value":107},{"type":60,"value":727}," pick a\nlicense on the user's behalf.",{"type":54,"tag":199,"props":729,"children":730},{},[731,737],{"type":54,"tag":69,"props":732,"children":734},{"className":733},[],[735],{"type":60,"value":736},"\u003Csource>",{"type":60,"value":738}," — the folder that contains the USDs (and every file they\nreference) the user wants to publish.",{"type":54,"tag":199,"props":740,"children":741},{},[742,748,750,756,758,764,766,771],{"type":54,"tag":69,"props":743,"children":745},{"className":744},[],[746],{"type":60,"value":747},"\u003Crepo>",{"type":60,"value":749}," — a WRAPP repository. Either a local directory path (e.g.\n",{"type":54,"tag":69,"props":751,"children":753},{"className":752},[],[754],{"type":60,"value":755},"\u002Ftmp\u002Fmy_repo",{"type":60,"value":757}," or ",{"type":54,"tag":69,"props":759,"children":761},{"className":760},[],[762],{"type":60,"value":763},"~\u002Fmy_repo",{"type":60,"value":765},") or a ",{"type":54,"tag":69,"props":767,"children":769},{"className":768},[],[770],{"type":60,"value":446},{"type":60,"value":772}," URL.",{"type":54,"tag":199,"props":774,"children":775},{},[776,782,784,789,791,796,798,804,806,811,813,819],{"type":54,"tag":69,"props":777,"children":779},{"className":778},[],[780],{"type":60,"value":781},"--root-usd PATH",{"type":60,"value":783}," — the relative path (inside ",{"type":54,"tag":69,"props":785,"children":787},{"className":786},[],[788],{"type":60,"value":736},{"type":60,"value":790},") of each\nroot USD entry point (repeatable).  ",{"type":54,"tag":103,"props":792,"children":793},{},[794],{"type":60,"value":795},"Required",{"type":60,"value":797}," unless\n",{"type":54,"tag":69,"props":799,"children":801},{"className":800},[],[802],{"type":60,"value":803},".metadata\u002Fcom.nvidia.simready.root_usds.json",{"type":60,"value":805}," already exists in\n",{"type":54,"tag":69,"props":807,"children":809},{"className":808},[],[810],{"type":60,"value":736},{"type":60,"value":812}," from a prior run.  If the source intentionally has no\nUSD files, pass ",{"type":54,"tag":69,"props":814,"children":816},{"className":815},[],[817],{"type":60,"value":818},"--no-usd-files",{"type":60,"value":820}," instead.",{"type":54,"tag":63,"props":822,"children":823},{},[824],{"type":60,"value":825},"Then run:",{"type":54,"tag":129,"props":827,"children":829},{"className":289,"code":828,"language":45,"meta":137,"style":137},"python create_simready_package.py \u003Cname> \u003Cversion> \u003Clicense> \u003Csource> \u003Crepo> \\\n    --root-usd \u003Crelative\u002Fpath\u002Fto\u002Froot.usd>\n",[830],{"type":54,"tag":69,"props":831,"children":832},{"__ignoreMap":137},[833,942],{"type":54,"tag":296,"props":834,"children":835},{"class":298,"line":299},[836,840,845,851,856,862,867,871,876,881,885,889,894,898,902,906,911,915,919,923,928,933,937],{"type":54,"tag":296,"props":837,"children":838},{"style":319},[839],{"type":60,"value":46},{"type":54,"tag":296,"props":841,"children":842},{"style":309},[843],{"type":60,"value":844}," create_simready_package.py",{"type":54,"tag":296,"props":846,"children":848},{"style":847},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[849],{"type":60,"value":850}," \u003C",{"type":54,"tag":296,"props":852,"children":853},{"style":309},[854],{"type":60,"value":855},"nam",{"type":54,"tag":296,"props":857,"children":859},{"style":858},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[860],{"type":60,"value":861},"e",{"type":54,"tag":296,"props":863,"children":864},{"style":847},[865],{"type":60,"value":866},">",{"type":54,"tag":296,"props":868,"children":869},{"style":847},[870],{"type":60,"value":850},{"type":54,"tag":296,"props":872,"children":873},{"style":309},[874],{"type":60,"value":875},"versio",{"type":54,"tag":296,"props":877,"children":878},{"style":858},[879],{"type":60,"value":880},"n",{"type":54,"tag":296,"props":882,"children":883},{"style":847},[884],{"type":60,"value":866},{"type":54,"tag":296,"props":886,"children":887},{"style":847},[888],{"type":60,"value":850},{"type":54,"tag":296,"props":890,"children":891},{"style":309},[892],{"type":60,"value":893},"licens",{"type":54,"tag":296,"props":895,"children":896},{"style":858},[897],{"type":60,"value":861},{"type":54,"tag":296,"props":899,"children":900},{"style":847},[901],{"type":60,"value":866},{"type":54,"tag":296,"props":903,"children":904},{"style":847},[905],{"type":60,"value":850},{"type":54,"tag":296,"props":907,"children":908},{"style":309},[909],{"type":60,"value":910},"sourc",{"type":54,"tag":296,"props":912,"children":913},{"style":858},[914],{"type":60,"value":861},{"type":54,"tag":296,"props":916,"children":917},{"style":847},[918],{"type":60,"value":866},{"type":54,"tag":296,"props":920,"children":921},{"style":847},[922],{"type":60,"value":850},{"type":54,"tag":296,"props":924,"children":925},{"style":309},[926],{"type":60,"value":927},"rep",{"type":54,"tag":296,"props":929,"children":930},{"style":858},[931],{"type":60,"value":932},"o",{"type":54,"tag":296,"props":934,"children":935},{"style":847},[936],{"type":60,"value":866},{"type":54,"tag":296,"props":938,"children":939},{"style":858},[940],{"type":60,"value":941}," \\\n",{"type":54,"tag":296,"props":943,"children":944},{"class":298,"line":315},[945,950,954,959,964],{"type":54,"tag":296,"props":946,"children":947},{"style":309},[948],{"type":60,"value":949},"    --root-usd",{"type":54,"tag":296,"props":951,"children":952},{"style":847},[953],{"type":60,"value":850},{"type":54,"tag":296,"props":955,"children":956},{"style":309},[957],{"type":60,"value":958},"relative\u002Fpath\u002Fto\u002Froot.us",{"type":54,"tag":296,"props":960,"children":961},{"style":858},[962],{"type":60,"value":963},"d",{"type":54,"tag":296,"props":965,"children":966},{"style":847},[967],{"type":60,"value":968},">\n",{"type":54,"tag":63,"props":970,"children":971},{},[972],{"type":60,"value":973},"The script runs three phases in order:",{"type":54,"tag":195,"props":975,"children":976},{},[977,1002,1012],{"type":54,"tag":199,"props":978,"children":979},{},[980,985,987,993,995,1000],{"type":54,"tag":103,"props":981,"children":982},{},[983],{"type":60,"value":984},"Pre-validation",{"type":60,"value":986}," (",{"type":54,"tag":69,"props":988,"children":990},{"className":989},[],[991],{"type":60,"value":992},"Package-Candidate",{"type":60,"value":994}," profile) — does ",{"type":54,"tag":69,"props":996,"children":998},{"className":997},[],[999],{"type":60,"value":736},{"type":60,"value":1001},"\nlook like something we can package?",{"type":54,"tag":199,"props":1003,"children":1004},{},[1005,1010],{"type":54,"tag":103,"props":1006,"children":1007},{},[1008],{"type":60,"value":1009},"Create",{"type":60,"value":1011}," — actually build the package via WRAPP and emit the\nSimReady metadata.",{"type":54,"tag":199,"props":1013,"children":1014},{},[1015,1020,1021,1027],{"type":54,"tag":103,"props":1016,"children":1017},{},[1018],{"type":60,"value":1019},"Post-validation",{"type":60,"value":986},{"type":54,"tag":69,"props":1022,"children":1024},{"className":1023},[],[1025],{"type":60,"value":1026},"Package",{"type":60,"value":1028}," profile) — does the freshly built\npackage conform?",{"type":54,"tag":63,"props":1030,"children":1031},{},[1032,1034,1040,1042,1047],{"type":60,"value":1033},"It exits ",{"type":54,"tag":69,"props":1035,"children":1037},{"className":1036},[],[1038],{"type":60,"value":1039},"0",{"type":60,"value":1041}," only if every phase that ran exited ",{"type":54,"tag":69,"props":1043,"children":1045},{"className":1044},[],[1046],{"type":60,"value":1039},{"type":60,"value":1048},". On failure it\nreturns the non-zero exit code of the first phase that failed; the\noutput identifies which phase that was.",{"type":54,"tag":1050,"props":1051,"children":1053},"h3",{"id":1052},"interpreting-failures",[1054],{"type":60,"value":1055},"Interpreting failures",{"type":54,"tag":1057,"props":1058,"children":1059},"table",{},[1060,1084],{"type":54,"tag":1061,"props":1062,"children":1063},"thead",{},[1064],{"type":54,"tag":1065,"props":1066,"children":1067},"tr",{},[1068,1074,1079],{"type":54,"tag":1069,"props":1070,"children":1071},"th",{},[1072],{"type":60,"value":1073},"First failing phase",{"type":54,"tag":1069,"props":1075,"children":1076},{},[1077],{"type":60,"value":1078},"Headline check",{"type":54,"tag":1069,"props":1080,"children":1081},{},[1082],{"type":60,"value":1083},"What to tell the user",{"type":54,"tag":1085,"props":1086,"children":1087},"tbody",{},[1088,1148,1186,1209,1248,1287,1308],{"type":54,"tag":1065,"props":1089,"children":1090},{},[1091,1096,1105],{"type":54,"tag":1092,"props":1093,"children":1094},"td",{},[1095],{"type":60,"value":984},{"type":54,"tag":1092,"props":1097,"children":1098},{},[1099],{"type":54,"tag":69,"props":1100,"children":1102},{"className":1101},[],[1103],{"type":60,"value":1104},"FET031_PACKAGE_SELF_CONTAINED",{"type":54,"tag":1092,"props":1106,"children":1107},{},[1108,1110,1116,1118,1124,1126,1132,1134,1140,1142,1146],{"type":60,"value":1109},"The source failed ",{"type":54,"tag":69,"props":1111,"children":1113},{"className":1112},[],[1114],{"type":60,"value":1115},"AA.001",{"type":60,"value":1117}," (anchored asset paths) — at least one USD reference points outside the source folder. Quote the offending path from each ",{"type":54,"tag":69,"props":1119,"children":1121},{"className":1120},[],[1122],{"type":60,"value":1123},"FAIL \u003CFET>: \u003Cusd>",{"type":60,"value":1125}," line and link to ",{"type":54,"tag":260,"props":1127,"children":1129},{"href":1128},"..\u002Fsr_specs\u002Fdocs\u002Fcapabilities\u002Fcore\u002Fatomic_asset\u002Frequirements\u002Fanchored-asset-paths.md",[1130],{"type":60,"value":1131},"anchored-asset-paths.md",{"type":60,"value":1133},". Typical fix: change absolute or search paths to ",{"type":54,"tag":69,"props":1135,"children":1137},{"className":1136},[],[1138],{"type":60,"value":1139},".\u002Frelative\u002F...",{"type":60,"value":1141},". Offer to open the offending USD; do ",{"type":54,"tag":103,"props":1143,"children":1144},{},[1145],{"type":60,"value":107},{"type":60,"value":1147}," rewrite USD paths automatically.",{"type":54,"tag":1065,"props":1149,"children":1150},{},[1151,1156,1161],{"type":54,"tag":1092,"props":1152,"children":1153},{},[1154],{"type":60,"value":1155},"Pre-validation (exit 2)",{"type":54,"tag":1092,"props":1157,"children":1158},{},[1159],{"type":60,"value":1160},"\"no root USD files specified\"",{"type":54,"tag":1092,"props":1162,"children":1163},{},[1164,1166,1171,1173,1178,1180,1185],{"type":60,"value":1165},"The user forgot ",{"type":54,"tag":69,"props":1167,"children":1169},{"className":1168},[],[1170],{"type":60,"value":622},{"type":60,"value":1172},". Ask them for the relative path(s) of the entry-point USD(s) inside ",{"type":54,"tag":69,"props":1174,"children":1176},{"className":1175},[],[1177],{"type":60,"value":736},{"type":60,"value":1179},". If the folder intentionally has no USDs, suggest ",{"type":54,"tag":69,"props":1181,"children":1183},{"className":1182},[],[1184],{"type":60,"value":818},{"type":60,"value":96},{"type":54,"tag":1065,"props":1187,"children":1188},{},[1189,1193,1204],{"type":54,"tag":1092,"props":1190,"children":1191},{},[1192],{"type":60,"value":1155},{"type":54,"tag":1092,"props":1194,"children":1195},{},[1196,1198],{"type":60,"value":1197},"other ",{"type":54,"tag":69,"props":1199,"children":1201},{"className":1200},[],[1202],{"type":60,"value":1203},"UsageError",{"type":54,"tag":1092,"props":1205,"children":1206},{},[1207],{"type":60,"value":1208},"The source path doesn't exist or isn't a directory.",{"type":54,"tag":1065,"props":1210,"children":1211},{},[1212,1216,1227],{"type":54,"tag":1092,"props":1213,"children":1214},{},[1215],{"type":60,"value":1009},{"type":54,"tag":1092,"props":1217,"children":1218},{},[1219,1221],{"type":60,"value":1220},"\"source folder is already a WRAPP package with name '",{"type":54,"tag":1222,"props":1223,"children":1224},"existing",{},[1225],{"type":60,"value":1226},"'\"",{"type":54,"tag":1092,"props":1228,"children":1229},{},[1230,1232,1238,1240,1246],{"type":60,"value":1231},"The source root carries a ",{"type":54,"tag":69,"props":1233,"children":1235},{"className":1234},[],[1236],{"type":60,"value":1237},".\u003Cexisting>.wrapp",{"type":60,"value":1239}," marker from a previous build. The user can either delete that marker, or rerun with ",{"type":54,"tag":69,"props":1241,"children":1243},{"className":1242},[],[1244],{"type":60,"value":1245},"\u003Cexisting>",{"type":60,"value":1247}," as the package name. Surface the error verbatim — it names both the file and the existing package.",{"type":54,"tag":1065,"props":1249,"children":1250},{},[1251,1255,1260],{"type":54,"tag":1092,"props":1252,"children":1253},{},[1254],{"type":60,"value":1009},{"type":54,"tag":1092,"props":1256,"children":1257},{},[1258],{"type":60,"value":1259},"\"contains installed WRAPP subpackages (...); nested packages are not yet supported\"",{"type":54,"tag":1092,"props":1261,"children":1262},{},[1263,1265,1271,1273,1278,1280,1285],{"type":60,"value":1264},"The source has one or more ",{"type":54,"tag":69,"props":1266,"children":1268},{"className":1267},[],[1269],{"type":60,"value":1270},".wrapp",{"type":60,"value":1272}," files in ",{"type":54,"tag":103,"props":1274,"children":1275},{},[1276],{"type":60,"value":1277},"subfolders",{"type":60,"value":1279}," (the root check above only catches the root). Nested packages aren't part of the standard yet; ask the user to remove the nested ",{"type":54,"tag":69,"props":1281,"children":1283},{"className":1282},[],[1284],{"type":60,"value":1270},{"type":60,"value":1286}," files before retrying.",{"type":54,"tag":1065,"props":1288,"children":1289},{},[1290,1294,1303],{"type":54,"tag":1092,"props":1291,"children":1292},{},[1293],{"type":60,"value":1019},{"type":54,"tag":1092,"props":1295,"children":1296},{},[1297],{"type":54,"tag":69,"props":1298,"children":1300},{"className":1299},[],[1301],{"type":60,"value":1302},"FAIL FET030_PACKAGING_CORE",{"type":54,"tag":1092,"props":1304,"children":1305},{},[1306],{"type":60,"value":1307},"The package definition itself is malformed (hashes, metadata entries, file references). Cite the failing requirement code from the output.",{"type":54,"tag":1065,"props":1309,"children":1310},{},[1311,1315,1324],{"type":54,"tag":1092,"props":1312,"children":1313},{},[1314],{"type":60,"value":1019},{"type":54,"tag":1092,"props":1316,"children":1317},{},[1318],{"type":54,"tag":69,"props":1319,"children":1321},{"className":1320},[],[1322],{"type":60,"value":1323},"FAIL FET032_PACKAGING_INTROSPECTION",{"type":54,"tag":1092,"props":1325,"children":1326},{},[1327,1329,1334],{"type":60,"value":1328},"The BOM is missing or invalid. For a package freshly made by the create step this typically means the BOM write was skipped — re-run ",{"type":54,"tag":69,"props":1330,"children":1332},{"className":1331},[],[1333],{"type":60,"value":94},{"type":60,"value":96},{"type":54,"tag":63,"props":1336,"children":1337},{},[1338,1340,1346,1348,1354,1356,1362,1364,1369],{"type":60,"value":1339},"On full success the script prints a ",{"type":54,"tag":69,"props":1341,"children":1343},{"className":1342},[],[1344],{"type":60,"value":1345},"Wrote ...:",{"type":60,"value":1347}," line for each\nmetadata file plus an ",{"type":54,"tag":69,"props":1349,"children":1351},{"className":1350},[],[1352],{"type":60,"value":1353},"OK: created \u003Cname> \u003Cversion>",{"type":60,"value":1355}," line, and the\npost-validation summary lists ",{"type":54,"tag":69,"props":1357,"children":1359},{"className":1358},[],[1360],{"type":60,"value":1361},"PASS",{"type":60,"value":1363}," for every ",{"type":54,"tag":69,"props":1365,"children":1367},{"className":1366},[],[1368],{"type":60,"value":1026},{"type":60,"value":1370},"-profile\nfeature.",{"type":54,"tag":1050,"props":1372,"children":1374},{"id":1373},"conformance-metadata-trust-handoff",[1375],{"type":60,"value":1376},"Conformance metadata trust handoff",{"type":54,"tag":63,"props":1378,"children":1379},{},[1380,1382,1388,1390,1396,1398,1403,1405,1411,1413,1419],{"type":60,"value":1381},"In the default full flow, pre-validation writes ",{"type":54,"tag":69,"props":1383,"children":1385},{"className":1384},[],[1386],{"type":60,"value":1387},".metadata\u002F",{"type":60,"value":1389}," files\n(BOM, root_usds, conformance JSONs with ",{"type":54,"tag":69,"props":1391,"children":1393},{"className":1392},[],[1394],{"type":60,"value":1395},"content_hash",{"type":60,"value":1397},") into the\nsource folder.  The create step recomputes ",{"type":54,"tag":69,"props":1399,"children":1401},{"className":1400},[],[1402],{"type":60,"value":1395},{"type":60,"value":1404}," from the\ncurrent source and compares — a match proves the source hasn't\nchanged since pre-validation, so the conformance results are\nregistered in the package definition's ",{"type":54,"tag":69,"props":1406,"children":1408},{"className":1407},[],[1409],{"type":60,"value":1410},"metadata",{"type":60,"value":1412}," array (covered by\n",{"type":54,"tag":69,"props":1414,"children":1416},{"className":1415},[],[1417],{"type":60,"value":1418},"package_hash",{"type":60,"value":1420},").  A mismatch aborts with a clear error.",{"type":54,"tag":63,"props":1422,"children":1423},{},[1424,1426,1431,1433,1437,1439,1444],{"type":60,"value":1425},"Post-validation writes an \"evidence\" conformance JSON that records the\n",{"type":54,"tag":69,"props":1427,"children":1429},{"className":1428},[],[1430],{"type":60,"value":1026},{"type":60,"value":1432},"-profile result.  Evidence files are ",{"type":54,"tag":103,"props":1434,"children":1435},{},[1436],{"type":60,"value":107},{"type":60,"value":1438}," covered by\n",{"type":54,"tag":69,"props":1440,"children":1442},{"className":1441},[],[1443],{"type":60,"value":1418},{"type":60,"value":1445}," (they are post-creation artefacts).",{"type":54,"tag":63,"props":1447,"children":1448},{},[1449,1451,1457,1459,1465,1467,1472],{"type":60,"value":1450},"When ",{"type":54,"tag":69,"props":1452,"children":1454},{"className":1453},[],[1455],{"type":60,"value":1456},"--skip-pre-validation",{"type":60,"value":1458}," is used, the create step still looks for\nexisting ",{"type":54,"tag":69,"props":1460,"children":1462},{"className":1461},[],[1463],{"type":60,"value":1464},".metadata\u002Fconformance.*.json",{"type":60,"value":1466}," files.  If found and the\n",{"type":54,"tag":69,"props":1468,"children":1470},{"className":1469},[],[1471],{"type":60,"value":1395},{"type":60,"value":1473}," matches, they are registered; if not found, the package\ndefinition carries only the BOM entry.",{"type":54,"tag":1050,"props":1475,"children":1477},{"id":1476},"skipping-a-phase",[1478],{"type":60,"value":1479},"Skipping a phase",{"type":54,"tag":63,"props":1481,"children":1482},{},[1483],{"type":60,"value":1484},"Two opt-out flags let the user skip individual phases when they have\nalready done that work or want to defer it:",{"type":54,"tag":368,"props":1486,"children":1487},{},[1488,1513],{"type":54,"tag":199,"props":1489,"children":1490},{},[1491,1496,1498,1504,1506,1511],{"type":54,"tag":69,"props":1492,"children":1494},{"className":1493},[],[1495],{"type":60,"value":1456},{"type":60,"value":1497}," — go straight to the build. Suggest only\nwhen the user has just run ",{"type":54,"tag":69,"props":1499,"children":1501},{"className":1500},[],[1502],{"type":60,"value":1503},"--only-pre-validation",{"type":60,"value":1505}," against the same\nsource folder.  The create step still verifies any existing\n",{"type":54,"tag":69,"props":1507,"children":1509},{"className":1508},[],[1510],{"type":60,"value":1387},{"type":60,"value":1512}," conformance files.",{"type":54,"tag":199,"props":1514,"children":1515},{},[1516,1522],{"type":54,"tag":69,"props":1517,"children":1519},{"className":1518},[],[1520],{"type":60,"value":1521},"--skip-post-validation",{"type":60,"value":1523}," — stop after the build. Suggest when the\nuser plans to validate the published package later (e.g. on a\ndifferent machine).",{"type":54,"tag":1050,"props":1525,"children":1527},{"id":1526},"single-phase-modes",[1528],{"type":60,"value":1529},"Single-phase modes",{"type":54,"tag":63,"props":1531,"children":1532},{},[1533,1535,1541,1543,1549,1551,1557],{"type":60,"value":1534},"Two ",{"type":54,"tag":69,"props":1536,"children":1538},{"className":1537},[],[1539],{"type":60,"value":1540},"--only-*",{"type":60,"value":1542}," modes run a single phase. They are mutually exclusive\nwith each other and with the default flow — positional arguments are\nrejected, and the matching ",{"type":54,"tag":69,"props":1544,"children":1546},{"className":1545},[],[1547],{"type":60,"value":1548},"--source",{"type":60,"value":1550}," \u002F ",{"type":54,"tag":69,"props":1552,"children":1554},{"className":1553},[],[1555],{"type":60,"value":1556},"--package-def",{"type":60,"value":1558}," flag is\nrequired:",{"type":54,"tag":368,"props":1560,"children":1561},{},[1562,1587],{"type":54,"tag":199,"props":1563,"children":1564},{},[1565,1571,1573,1578,1580,1585],{"type":54,"tag":69,"props":1566,"children":1568},{"className":1567},[],[1569],{"type":60,"value":1570},"--only-pre-validation --source \u003Cfolder> --root-usd \u003Cpath>",{"type":60,"value":1572}," —\npre-flight only.  Useful while iterating on ",{"type":54,"tag":69,"props":1574,"children":1576},{"className":1575},[],[1577],{"type":60,"value":1115},{"type":60,"value":1579}," errors before\nthe user is ready to build.  ",{"type":54,"tag":69,"props":1581,"children":1583},{"className":1582},[],[1584],{"type":60,"value":622},{"type":60,"value":1586}," is required (same rules\nas the default flow).",{"type":54,"tag":199,"props":1588,"children":1589},{},[1590,1596,1597,1602],{"type":54,"tag":69,"props":1591,"children":1593},{"className":1592},[],[1594],{"type":60,"value":1595},"--only-post-validation --package-def \u003Cpath>",{"type":60,"value":675},{"type":54,"tag":69,"props":1598,"children":1600},{"className":1599},[],[1601],{"type":60,"value":1026},{"type":60,"value":1603},"-profile\nvalidation only. Useful for re-checking a package the user (or\nsomeone else) published earlier.",{"type":54,"tag":1050,"props":1605,"children":1607},{"id":1606},"no-wrapp-no-wrapp-fallback",[1608,1614],{"type":54,"tag":69,"props":1609,"children":1611},{"className":1610},[],[1612],{"type":60,"value":1613},"--no-wrapp",{"type":60,"value":1615}," (no-WRAPP fallback)",{"type":54,"tag":63,"props":1617,"children":1618},{},[1619,1621,1626,1628,1634,1636,1641,1643,1648,1650,1655,1657,1662],{"type":60,"value":1620},"If the user does not have (or cannot install) the WRAPP wheel, or\nexplicitly says they only need a minimal package skeleton, the\n",{"type":54,"tag":69,"props":1622,"children":1624},{"className":1623},[],[1625],{"type":60,"value":1613},{"type":60,"value":1627}," flag swaps the build phase for a WRAPP-less alternative\nthat writes a single ",{"type":54,"tag":69,"props":1629,"children":1631},{"className":1630},[],[1632],{"type":60,"value":1633},"com.nvidia.simready.packaging.json",{"type":60,"value":1635}," (required\nfields only — no BOM, no ",{"type":54,"tag":69,"props":1637,"children":1639},{"className":1638},[],[1640],{"type":60,"value":1387},{"type":60,"value":1642},", no file hashes) directly into\nthe ",{"type":54,"tag":69,"props":1644,"children":1646},{"className":1645},[],[1647],{"type":60,"value":736},{"type":60,"value":1649}," folder. The source folder ",{"type":54,"tag":560,"props":1651,"children":1652},{},[1653],{"type":60,"value":1654},"is",{"type":60,"value":1656}," the package in this\nmode, so the ",{"type":54,"tag":69,"props":1658,"children":1660},{"className":1659},[],[1661],{"type":60,"value":747},{"type":60,"value":1663}," positional argument is dropped:",{"type":54,"tag":129,"props":1665,"children":1667},{"className":289,"code":1666,"language":45,"meta":137,"style":137},"python create_simready_package.py \u003Cname> \u003Cversion> \u003Clicense> \u003Csource> --no-wrapp\n",[1668],{"type":54,"tag":69,"props":1669,"children":1670},{"__ignoreMap":137},[1671],{"type":54,"tag":296,"props":1672,"children":1673},{"class":298,"line":299},[1674,1678,1682,1686,1690,1694,1698,1702,1706,1710,1714,1718,1722,1726,1730,1734,1738,1742,1746],{"type":54,"tag":296,"props":1675,"children":1676},{"style":319},[1677],{"type":60,"value":46},{"type":54,"tag":296,"props":1679,"children":1680},{"style":309},[1681],{"type":60,"value":844},{"type":54,"tag":296,"props":1683,"children":1684},{"style":847},[1685],{"type":60,"value":850},{"type":54,"tag":296,"props":1687,"children":1688},{"style":309},[1689],{"type":60,"value":855},{"type":54,"tag":296,"props":1691,"children":1692},{"style":858},[1693],{"type":60,"value":861},{"type":54,"tag":296,"props":1695,"children":1696},{"style":847},[1697],{"type":60,"value":866},{"type":54,"tag":296,"props":1699,"children":1700},{"style":847},[1701],{"type":60,"value":850},{"type":54,"tag":296,"props":1703,"children":1704},{"style":309},[1705],{"type":60,"value":875},{"type":54,"tag":296,"props":1707,"children":1708},{"style":858},[1709],{"type":60,"value":880},{"type":54,"tag":296,"props":1711,"children":1712},{"style":847},[1713],{"type":60,"value":866},{"type":54,"tag":296,"props":1715,"children":1716},{"style":847},[1717],{"type":60,"value":850},{"type":54,"tag":296,"props":1719,"children":1720},{"style":309},[1721],{"type":60,"value":893},{"type":54,"tag":296,"props":1723,"children":1724},{"style":858},[1725],{"type":60,"value":861},{"type":54,"tag":296,"props":1727,"children":1728},{"style":847},[1729],{"type":60,"value":866},{"type":54,"tag":296,"props":1731,"children":1732},{"style":847},[1733],{"type":60,"value":850},{"type":54,"tag":296,"props":1735,"children":1736},{"style":309},[1737],{"type":60,"value":910},{"type":54,"tag":296,"props":1739,"children":1740},{"style":858},[1741],{"type":60,"value":861},{"type":54,"tag":296,"props":1743,"children":1744},{"style":847},[1745],{"type":60,"value":866},{"type":54,"tag":296,"props":1747,"children":1748},{"style":309},[1749],{"type":60,"value":1750}," --no-wrapp\n",{"type":54,"tag":63,"props":1752,"children":1753},{},[1754],{"type":60,"value":1755},"Important caveats to surface to the user before suggesting this\nmode:",{"type":54,"tag":368,"props":1757,"children":1758},{},[1759,1779],{"type":54,"tag":199,"props":1760,"children":1761},{},[1762,1764,1770,1772,1777],{"type":60,"value":1763},"The resulting package will FAIL post-validation features that\ninspect the BOM (e.g. ",{"type":54,"tag":69,"props":1765,"children":1767},{"className":1766},[],[1768],{"type":60,"value":1769},"FET032_PACKAGING_INTROSPECTION",{"type":60,"value":1771},"). That is\nexpected. Combine with ",{"type":54,"tag":69,"props":1773,"children":1775},{"className":1774},[],[1776],{"type":60,"value":1521},{"type":60,"value":1778}," when you want a\nclean exit.",{"type":54,"tag":199,"props":1780,"children":1781},{},[1782],{"type":60,"value":1783},"This is the right answer for \"I just need a SimReady-stamped\nfolder for a quick demo \u002F experiment\" or \"I cannot install WRAPP\nin this environment\" — not for actual publication. If the user\nintends to publish the package, steer them back to the full\nWRAPP-driven default flow.",{"type":54,"tag":78,"props":1785,"children":1787},{"id":1786},"notes-for-the-agent",[1788],{"type":60,"value":1789},"Notes for the Agent",{"type":54,"tag":368,"props":1791,"children":1792},{},[1793,1812,1817,1830,1835,1862],{"type":54,"tag":199,"props":1794,"children":1795},{},[1796,1798,1803,1805,1811],{"type":60,"value":1797},"The script exits ",{"type":54,"tag":69,"props":1799,"children":1801},{"className":1800},[],[1802],{"type":60,"value":1039},{"type":60,"value":1804}," on success. Do not assume success from stdout\nalone — always inspect ",{"type":54,"tag":69,"props":1806,"children":1808},{"className":1807},[],[1809],{"type":60,"value":1810},"returncode",{"type":60,"value":96},{"type":54,"tag":199,"props":1813,"children":1814},{},[1815],{"type":60,"value":1816},"Activate the venv once at the start of the conversation and remind\nthe user it must remain active across commands.",{"type":54,"tag":199,"props":1818,"children":1819},{},[1820,1822,1828],{"type":60,"value":1821},"The tests under ",{"type":54,"tag":69,"props":1823,"children":1825},{"className":1824},[],[1826],{"type":60,"value":1827},"tests\u002F",{"type":60,"value":1829}," exist as a reference; you should not need to\nrun pytest for the packaging workflow itself, only when debugging the\nscripts.",{"type":54,"tag":199,"props":1831,"children":1832},{},[1833],{"type":60,"value":1834},"Never modify the user's USD files; only read them. Suggest fixes in\nplain English.",{"type":54,"tag":199,"props":1836,"children":1837},{},[1838,1840,1845,1847,1853,1855,1861],{"type":60,"value":1839},"Conformance metadata (",{"type":54,"tag":69,"props":1841,"children":1843},{"className":1842},[],[1844],{"type":60,"value":1387},{"type":60,"value":1846}," files) and root-USDs metadata\nare produced automatically by the default full flow.  The user can\ncontrol them with ",{"type":54,"tag":69,"props":1848,"children":1850},{"className":1849},[],[1851],{"type":60,"value":1852},"--write-metadata",{"type":60,"value":1854}," and ",{"type":54,"tag":69,"props":1856,"children":1858},{"className":1857},[],[1859],{"type":60,"value":1860},"--write-evidence",{"type":60,"value":96},{"type":54,"tag":199,"props":1863,"children":1864},{},[1865,1867,1873,1875,1880],{"type":60,"value":1866},"The Python API under ",{"type":54,"tag":69,"props":1868,"children":1870},{"className":1869},[],[1871],{"type":60,"value":1872},"sr_pkg_sample\u002F",{"type":60,"value":1874}," exists for users who want to\nembed the workflow in their own tooling. As an agent doing command-line\nwork, always drive ",{"type":54,"tag":69,"props":1876,"children":1878},{"className":1877},[],[1879],{"type":60,"value":94},{"type":60,"value":96},{"type":54,"tag":1882,"props":1883,"children":1884},"style",{},[1885],{"type":60,"value":1886},"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":1888,"total":1970},[1889,1901,1912,1922,1935,1946,1959],{"slug":1890,"name":1890,"fn":1891,"description":1892,"org":1893,"tags":1894,"stars":23,"repoUrl":24,"updatedAt":1900},"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},[1895,1898,1899],{"name":1896,"slug":1897,"type":15},"Documentation","documentation",{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},"2026-07-14T05:34:08.047242",{"slug":1902,"name":1902,"fn":1903,"description":1904,"org":1905,"tags":1906,"stars":23,"repoUrl":24,"updatedAt":1911},"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},[1907,1908,1909,1910],{"name":1896,"slug":1897,"type":15},{"name":21,"slug":22,"type":15},{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},"2026-07-14T05:34:23.330216",{"slug":1913,"name":1913,"fn":1914,"description":1915,"org":1916,"tags":1917,"stars":23,"repoUrl":24,"updatedAt":1921},"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},[1918,1919,1920],{"name":21,"slug":22,"type":15},{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},"2026-07-14T05:34:02.999518",{"slug":1923,"name":1923,"fn":1924,"description":1925,"org":1926,"tags":1927,"stars":23,"repoUrl":24,"updatedAt":1934},"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},[1928,1929,1930,1931],{"name":1896,"slug":1897,"type":15},{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},{"name":1932,"slug":1933,"type":15},"Validation","validation","2026-07-14T05:34:00.482781",{"slug":1936,"name":1936,"fn":1937,"description":1938,"org":1939,"tags":1940,"stars":23,"repoUrl":24,"updatedAt":1945},"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},[1941,1942,1943,1944],{"name":1896,"slug":1897,"type":15},{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},{"name":1932,"slug":1933,"type":15},"2026-07-14T05:34:11.881936",{"slug":1947,"name":1947,"fn":1948,"description":1949,"org":1950,"tags":1951,"stars":23,"repoUrl":24,"updatedAt":1958},"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},[1952,1953,1954,1957],{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},{"name":1955,"slug":1956,"type":15},"Testing","testing",{"name":1932,"slug":1933,"type":15},"2026-07-14T05:34:09.295859",{"slug":1960,"name":1960,"fn":1961,"description":1962,"org":1963,"tags":1964,"stars":23,"repoUrl":24,"updatedAt":1969},"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},[1965,1966,1967,1968],{"name":21,"slug":22,"type":15},{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},{"name":1932,"slug":1933,"type":15},"2026-07-14T05:34:14.407249",26,{"items":1972,"total":2126},[1973,1989,2006,2017,2029,2043,2056,2070,2081,2092,2106,2115],{"slug":1974,"name":1974,"fn":1975,"description":1976,"org":1977,"tags":1978,"stars":1986,"repoUrl":1987,"updatedAt":1988},"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},[1979,1980,1983],{"name":1896,"slug":1897,"type":15},{"name":1981,"slug":1982,"type":15},"MCP","mcp",{"name":1984,"slug":1985,"type":15},"Search","search",21777,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FNemoClaw","2026-07-20T06:00:01.461044",{"slug":1990,"name":1990,"fn":1991,"description":1992,"org":1993,"tags":1994,"stars":2003,"repoUrl":2004,"updatedAt":2005},"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},[1995,1998,2001],{"name":1996,"slug":1997,"type":15},"Containers","containers",{"name":1999,"slug":2000,"type":15},"Deployment","deployment",{"name":2002,"slug":46,"type":15},"Python",17049,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM","2026-07-27T06:06:11.249662",{"slug":2007,"name":2007,"fn":2008,"description":2009,"org":2010,"tags":2011,"stars":2003,"repoUrl":2004,"updatedAt":2016},"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},[2012,2015],{"name":2013,"slug":2014,"type":15},"CI\u002FCD","ci-cd",{"name":1999,"slug":2000,"type":15},"2026-07-14T05:25:59.97109",{"slug":2018,"name":2018,"fn":2019,"description":2020,"org":2021,"tags":2022,"stars":2003,"repoUrl":2004,"updatedAt":2028},"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},[2023,2024,2025],{"name":2013,"slug":2014,"type":15},{"name":1999,"slug":2000,"type":15},{"name":2026,"slug":2027,"type":15},"GitHub","github","2026-07-27T06:06:12.278222",{"slug":2030,"name":2030,"fn":2031,"description":2032,"org":2033,"tags":2034,"stars":2003,"repoUrl":2004,"updatedAt":2042},"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},[2035,2038,2039],{"name":2036,"slug":2037,"type":15},"Debugging","debugging",{"name":2026,"slug":2027,"type":15},{"name":2040,"slug":2041,"type":15},"Triage","triage","2026-07-14T05:25:57.442089",{"slug":2044,"name":2044,"fn":2045,"description":2046,"org":2047,"tags":2048,"stars":2003,"repoUrl":2004,"updatedAt":2055},"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},[2049,2052],{"name":2050,"slug":2051,"type":15},"Best Practices","best-practices",{"name":2053,"slug":2054,"type":15},"Code Analysis","code-analysis","2026-07-14T05:25:56.18433",{"slug":2057,"name":2057,"fn":2058,"description":2059,"org":2060,"tags":2061,"stars":2003,"repoUrl":2004,"updatedAt":2069},"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},[2062,2065,2068],{"name":2063,"slug":2064,"type":15},"Machine Learning","machine-learning",{"name":2066,"slug":2067,"type":15},"Migration","migration",{"name":9,"slug":8,"type":15},"2026-07-17T06:07:11.777011",{"slug":2071,"name":2071,"fn":2072,"description":2073,"org":2074,"tags":2075,"stars":2003,"repoUrl":2004,"updatedAt":2080},"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},[2076,2079],{"name":2077,"slug":2078,"type":15},"QA","qa",{"name":1955,"slug":1956,"type":15},"2026-07-14T05:25:53.673039",{"slug":2082,"name":2082,"fn":2083,"description":2084,"org":2085,"tags":2086,"stars":2003,"repoUrl":2004,"updatedAt":2091},"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},[2087,2088],{"name":1999,"slug":2000,"type":15},{"name":2089,"slug":2090,"type":15},"Infrastructure","infrastructure","2026-07-14T05:25:49.362534",{"slug":2093,"name":2093,"fn":2094,"description":2095,"org":2096,"tags":2097,"stars":2003,"repoUrl":2004,"updatedAt":2105},"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},[2098,2101,2102],{"name":2099,"slug":2100,"type":15},"Code Review","code-review",{"name":2026,"slug":2027,"type":15},{"name":2103,"slug":2104,"type":15},"Pull Requests","pull-requests","2026-07-14T05:26:01.226578",{"slug":2107,"name":2107,"fn":2108,"description":2109,"org":2110,"tags":2111,"stars":2003,"repoUrl":2004,"updatedAt":2114},"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},[2112,2113],{"name":2077,"slug":2078,"type":15},{"name":1955,"slug":1956,"type":15},"2026-07-14T05:25:54.928983",{"slug":2116,"name":2116,"fn":2117,"description":2118,"org":2119,"tags":2120,"stars":2003,"repoUrl":2004,"updatedAt":2125},"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},[2121,2124],{"name":2122,"slug":2123,"type":15},"Automation","automation",{"name":2013,"slug":2014,"type":15},"2026-07-30T05:29:03.275638",496]