[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-nvidia-jetson-init-source":3,"mdc--flyhjv-key":33,"related-org-nvidia-jetson-init-source":3741,"related-repo-nvidia-jetson-init-source":3902},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":22,"repoUrl":23,"updatedAt":24,"license":25,"forks":26,"topics":27,"repo":28,"sourceUrl":31,"mdContent":32},"jetson-init-source","configure Jetson BSP source workspaces","Set up the BSP source workspace: Linux_for_Tegra overlay tracker, bsp_sources, Crosstool-NG toolchain. Use after jetson-init-image; not for fetching inputs.",{"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,19],{"name":13,"slug":14,"type":15},"Hardware","hardware","tag",{"name":17,"slug":18,"type":15},"Linux","linux",{"name":20,"slug":21,"type":15},"Engineering","engineering",2473,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fskills","2026-07-14T05:26:05.033191","Apache-2.0",281,[],{"repoUrl":23,"stars":22,"forks":26,"topics":29,"description":30},[],"AI agent skills published by NVIDIA","https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fskills\u002Ftree\u002FHEAD\u002Fskills\u002Fjetson-init-source","---\nname: jetson-init-source\ndescription: >-\n  Set up the BSP source workspace: Linux_for_Tegra overlay tracker,\n  bsp_sources, Crosstool-NG toolchain. Use after jetson-init-image;\n  not for fetching inputs.\nversion: 0.0.1\nlicense: \"Apache-2.0\"\nmetadata:\n  data-classification: public\n  author: \"Jetson Team\"\n  tags:\n    - bsp\n    - workspace\n    - kernel\n    - bootstrap\n  domain: meta\n---\n\n# Initialize BSP Customization Workspace\n\n## Overview\n\nThis skill bootstraps the source-side workspace that customize-* \u002F build\nskills depend on: the `Linux_for_Tegra` overlay tracker (git repo for\npristine + customization commits), the `bsp_sources\u002F` mono-tree (kernel,\nOOT, nvgpu, display, hwpm, hardware DTs), and a working NVIDIA\nCrosstool-NG cross-compile prefix. It owns only the `source:` block in\nthe active profile and the on-disk source workspace under\n`\u003Csource.root_path>` (default: `\u003Cworkspace>\u002FSource`).\n\nResponsibilities:\n\n1. Optionally record a non-default `source.root_path`.\n2. Create or mount the `Linux_for_Tegra` overlay tracker.\n3. Materialize `bsp_sources` using the precedence in the \"Materialize the BSP-sources baseline\" step.\n4. Resolve and record `source.toolchain`.\n5. Clone extra user-defined repos from `source.repos:`.\n\n## When to invoke\n\n- The user asks to bootstrap, init, or sync the BSP customization\n  workspace.\n- A downstream customization skill refused with \"no workspace\n  tracker at `\u003Csource.root_path>\u002FLinux_for_Tegra\u002F`\".\n- After `jetson-init-image` (Setup's next step on a fresh target).\n\n## Procedure\n\n### Quick-start prefill mapping\n\nFollow the shared\n[`quick_start_prefill` contract](..\u002F..\u002Fcontext\u002Fbsp-customization-workflow.md#quick_start_prefill-contract).\nThis skill has source-specific mappings:\n\n- `quick_start_prefill.source.public_sources_archive` maps to the\n  Branch-A archive candidate.\n- `quick_start_prefill.source.repos` maps to proposed `source.repos:`\n  entries; validate reserved keys and `url:` \u002F `archive:` mutual\n  exclusion before writing.\n- `quick_start_prefill.source.toolchain` may be a cross-compile prefix,\n  a `gcc` path, a containing `bin\u002F` directory, an `x-tools.tbz2` archive\n  path, or `skip`.\n\nThis skill remains the only owner of `source.root_path`, `source.repos:`,\nand `source.toolchain` profile writes.\n\n### Resolve the active target + paths\n\nResolve the active profile + workspace defaults per the contract in\n[`..\u002F..\u002Fcontext\u002Ftarget-platform-contract.md`](..\u002F..\u002Fcontext\u002Ftarget-platform-contract.md).\n\n- **Refuse** if `\u003Cbsp_image.root_path>` does not contain\n  `Linux_for_Tegra\u002F` (BSP not extracted — route to `\u002Fjetson-init-image`).\n- If the profile has `source.root_path:`, use it. Otherwise\n  `\u003Csource.root_path>` defaults to `\u003Cworkspace>\u002FSource`; use that default\n  silently and do not write `source.root_path:` to the profile. Ask only\n  for an explicit custom path, unrelated content at the default path, or an\n  unwritable parent.\n\nRead `source.repos:` (if present) into a map keyed by entry name,\neach carrying optional `url`, `ref`, `subdir`, `path`. Reserved keys:\n`Linux_for_Tegra` (overlay tracker), `bsp_sources` (kernel-source\nrepo). Every other key is an extra user-defined repo.\n\n#### (Optional) prompt for `source.root_path` override\n\nOnly when `source.root_path` is absent from the profile **and** one of the\noverride conditions above applies:\n\n> `source.root_path`: default = `\u003Cworkspace>\u002FSource`. Press Enter to\n> accept, or enter an absolute path to override.\n\n- **On Enter** — keep the default; do not touch the profile.\n- **On override path** — validate the closest existing parent is\n  writable; refuse and re-prompt if not. Edit\n  `target-platform\u002F\u003Cactive>.yaml` in place to add\u002Fupdate\n  `source.root_path:`. Preserve all other blocks, comments, and\n  quoting — use a round-tripping YAML loader (e.g. `ruamel.yaml`).\n\nFires at most once per profile. Otherwise create `\u003Cworkspace>\u002FSource` as\nneeded and continue without prompting.\n\n### Materialize `Linux_for_Tegra`\n\nMount path is canonical: `\u003Csource.root_path>\u002FLinux_for_Tegra\u002F`.\n\n**Default** (no `source.repos.Linux_for_Tegra` entry):\n\n```bash\nLFT=\"\u003Csource.root_path>\u002FLinux_for_Tegra\"\nmkdir -p \"$LFT\"\n[ -d \"$LFT\u002F.git\" ] || git -C \"$LFT\" init\n```\n\nEmpty tracker. **Do not commit anything here** — pristine imports\nhappen file-by-file when customization skills run.\n\n**Override** (`url`, `ref`, optional `subdir`):\n\n```bash\n# Clone the user's repo to a side location, then mount the\n# expected tree (subdir or repo root) at the canonical path.\nCLONE=\"\u003Csource.root_path>\u002F.repos\u002FLinux_for_Tegra\"\ngit clone \u003Curl> -b \u003Cref> \"$CLONE\"\nln -s \"$CLONE\u002F\u003Csubdir or .>\" \"\u003Csource.root_path>\u002FLinux_for_Tegra\"\n```\n\nIf the mount already exists with valid git state, skip; refuse if it\nexists with unrelated content.\n\n### Materialize the BSP-sources baseline\n\nThree branches, dispatched **in precedence order** against the\nprofile entry `source.repos.bsp_sources`:\n\n| Order | Profile state | Branch |\n|---|---|---|\n| 1 | `url:` set | **C. Customer git clone** (explicit override always wins) |\n| 2 | `archive:` set, **OR** entry absent **AND** `\u003Cworkspace>\u002FDownloads\u002Fpublic_sources.tbz2` exists | **A. Local archive extraction** (default) |\n| 3 | Entry absent **AND** no local archive | **B. `source_sync.sh`** (fallback) |\n\n`url:` and `archive:` are **mutually exclusive** — refuse if both are\nset in the same entry.\n\nBranch A is the preferred default because it sidesteps NVIDIA git\negress entirely (the most common Setup failure mode). Branch B\nexists for fresh workspaces with no pre-downloaded tarball.\nBranch C is for customer forks of the whole BSP layout.\n\n#### Branch A — Local archive extraction (default)\n\nDefault branch: extract a pre-downloaded `public_sources.tbz2` into\n`\u003Csource.root_path>\u002Fbsp_sources\u002F` as a single mono-repo (`git init` +\npristine commit). See\n[`references\u002Fbranch-a-extraction.md`](references\u002Fbranch-a-extraction.md)\nfor the full archive shape, path-resolution rules, and the extraction\nscript (including the Tegra OOT Makefile force-replace workaround for\nR36.x).\n\nBranches B and C may produce per-component repos instead; downstream\nbuild logic still walks the canonical sub-paths under\n`\u003Csource.root_path>\u002Fbsp_sources\u002F`.\n\n#### Branch B — `source_sync.sh` (fallback)\n\nRuns only when no local archive is found and no `url:` is set.\nCreate the `bsp_sources\u002F` mount directory under `\u003Csource.root_path>`\nand run `source_sync.sh` from the extracted BSP with two flags:\n\n```bash\nmkdir -p \"\u003Csource.root_path>\u002Fbsp_sources\"\nbash \"\u003Cbsp_image.root_path>\u002FLinux_for_Tegra\u002Fsource\u002Fsource_sync.sh\" \\\n     -d \"\u003Csource.root_path>\u002Fbsp_sources\" \\\n     -t \"jetson_\u003Cmajor.minor>\"\n```\n\n- `-d \u003Csource.root_path>\u002Fbsp_sources` — write clones into the\n  `bsp_sources\u002F` subdir of the workspace, so the on-disk folder\n  matches the schema key. Without `-d`, the script writes under its\n  own directory (the BSP itself) — wrong for the overlay model.\n- `-t jetson_\u003Cmajor.minor>` — pin the tag to the BSP release line.\n  Derive from `bsp_image.version` by truncating to the first two\n  dotted components: `\"38.4.0\"` → `jetson_38.4`. **Tag-format\n  fallback**: if rejected, try `jetson_\u003Cbsp_image.version>` (older\n  L4T sometimes uses the full form). If that also fails, surface the\n  error and stop — never fall back to \"latest\" silently.\n\nRefuse if `source_sync.sh` does not exist: re-run `\u002Fjetson-init-image`\nto repopulate `Linux_for_Tegra\u002Fsource\u002F`.\n\n`source_sync.sh` exits 0 even when every clone failed — verify by\ncounting `Failed to clone` lines in its output and refuse if\nnon-zero. The most likely cause of universal failure is **blocked\ngit egress** to `gitlab.com\u002Fnvidia\u002Fnv-tegra` \u002F\n`nv-tegra.nvidia.com`; surface that explicitly and route the user\nto download `public_sources.tbz2` via `\u002Fquick-start` for Branch A.\n\n#### Branch C — Customer git clone (`url:` override)\n\nTriggered by an explicit `url:` field. Clone the customer repo once\nand expose its canonical kernel-side sub-paths under\n`\u003Csource.root_path>\u002Fbsp_sources\u002F`. The canonical sub-path list is\n**read from source_sync.sh's `SOURCE_INFO` at runtime** — do not\nhard-code it, so future NVIDIA additions\u002Fremovals propagate\nautomatically:\n\n```bash\n# Parse canonical sub-paths from source_sync.sh's SOURCE_INFO\n# (only the kernel-side entries marked `k:` in the second field).\nSUBPATHS=$(grep -oP '^\\s*k:[^:]+:' \\\n  \"\u003Cbsp_image.root_path>\u002FLinux_for_Tegra\u002Fsource\u002Fsource_sync.sh\" \\\n  | sed 's\u002F^\\s*k:\u002F\u002F; s\u002F:$\u002F\u002F')\n\nmkdir -p \"\u003Csource.root_path>\u002Fbsp_sources\"\nCLONE=\"\u003Csource.root_path>\u002F.repos\u002Fbsp_sources\"\ngit clone \u003Curl> -b \u003Cref> \"$CLONE\"\nROOT=\"$CLONE\u002F\u003Csubdir or .>\"\nfor SUB in $SUBPATHS; do\n  [ -d \"$ROOT\u002F$SUB\" ] && \\\n    ln -s \"$ROOT\u002F$SUB\" \"\u003Csource.root_path>\u002Fbsp_sources\u002F$SUB\"\ndone\n```\n\nReport any canonical sub-path expected for the active chip family\nbut not present inside the customer repo (warn, don't refuse —\ncustomer may legitimately not have all repos).\n\n### Resolve cross-compile toolchain\n\nThe downstream `jetson-build-source` reads `source.toolchain` from\nthis profile and exports it as `CROSS_COMPILE`. This step **must**\nland a valid prefix before init-source returns, or any subsequent\nkernel \u002F OOT \u002F DT build will refuse.\n\nNVIDIA's official **Crosstool-NG Toolchain gcc** is the canonical\ntoolchain for L4T. `jetson-download-bsp` owns any network fetch of\n`x-tools.tbz2`; this skill only discovers, extracts, validates, and\nwrites the resolved prefix. Resolution follows a three-step ladder:\n\n#### Auto-discover\n\nLook under `\u003Cworkspace>\u002Ftoolchain\u002Fx-tools\u002F` for the Crosstool-NG\nlayout — typically one of:\n\n```\n\u003Cworkspace>\u002Ftoolchain\u002Fx-tools\u002Faarch64-none-linux-gnu\u002Fbin\u002Faarch64-none-linux-gnu-gcc\n\u003Cworkspace>\u002Ftoolchain\u002Fx-tools\u002Faarch64-buildroot-linux-gnu\u002Fbin\u002Faarch64-buildroot-linux-gnu-gcc\n```\n\nGlob: `\u003Cworkspace>\u002Ftoolchain\u002Fx-tools\u002Faarch64-*-linux-gnu\u002Fbin\u002Faarch64-*-linux-gnu-gcc`.\nIf exactly one match, bind:\n\n```bash\nTC_PREFIX=\u003Cabsolute path to that ...\u002Fbin\u002F\u003Ctriple>->   # trailing dash mandatory\n```\n\nSkip to \"Write to profile\" below. If zero matches, fall through\nto \"Auto-extract from `Downloads\u002Fx-tools.tbz2`\" below. If multiple, refuse with the list and ask the user to\nremove the unwanted ones (we never pick one silently among\nambiguous installs — different Crosstool-NG flavors produce ABI-\nincompatible binaries).\n\n#### Auto-extract from `Downloads\u002Fx-tools.tbz2`\n\nIf `\u003Cworkspace>\u002FDownloads\u002Fx-tools.tbz2` exists (mirrors the\n`public_sources.tbz2` Branch-A pattern in the \"Materialize the BSP-sources baseline\" step — air-gapped \u002F\nno-egress users drop archives there):\n\n```bash\nfile -b \"\u003Cworkspace>\u002FDownloads\u002Fx-tools.tbz2\" | grep -q \"bzip2 compressed\" || \\\n  refuse \"\u003Cworkspace>\u002FDownloads\u002Fx-tools.tbz2 is not a bzip2 tarball\"\nmkdir -p \"\u003Cworkspace>\u002Ftoolchain\"\ntar xjf \"\u003Cworkspace>\u002FDownloads\u002Fx-tools.tbz2\" -C \"\u003Cworkspace>\u002Ftoolchain\"\n```\n\nThen re-run the \"Auto-discover\" pass above. Refuse if extraction succeeds\nbut no `x-tools\u002Faarch64-*-linux-gnu\u002Fbin\u002F` is produced (archive\ncontent doesn't match the Crosstool-NG layout).\n\n#### Prompt the user\n\nIf both Auto-discover and Auto-extract came up empty, ask:\n\n> No Crosstool-NG toolchain found at `\u003Cworkspace>\u002Ftoolchain\u002F` or in\n> `\u003Cworkspace>\u002FDownloads\u002Fx-tools.tbz2`.\n>\n> Reply with one of:\n>   - absolute path to your `aarch64-*-linux-gnu-gcc` binary or its\n>     containing `bin\u002F` directory,\n>   - `cancel` to abort.\n>\n> To fetch the archive instead, cancel this run, run\n> `\u002Fjetson-download-bsp`, then re-run `\u002Fjetson-init-source`.\n\nFor a path reply, validate via `[ -f \"${TC_PREFIX}gcc\" ]`. Refuse\nand re-prompt on failure.\n\n#### Write to profile\n\nOnce `$TC_PREFIX` resolves and `${TC_PREFIX}gcc` exists, write it\ninto the active profile using a round-tripping YAML loader:\n\n```yaml\nsource:\n  toolchain: \u003CTC_PREFIX>   # absolute, with trailing dash\n```\n\nIf `source:` is otherwise empty (no `root_path` override, no\n`repos:` entries), the `source:` block is now non-empty and stays\nin the profile. Future `jetson-init-source` runs **skip the \"Resolve cross-compile toolchain\" step**\nif `source.toolchain` is already set and points at a working `gcc`.\n\n### Clone extra user-defined repos\n\nFor each entry under `source.repos:` whose name is not\n`Linux_for_Tegra` or `bsp_sources`:\n\n```bash\nMOUNT=\"\u003Csource.root_path>\u002F\u003Centry.path or entry.name>\"\nif [ -n \"\u003Centry.subdir>\" ]; then\n  CLONE=\"\u003Csource.root_path>\u002F.repos\u002F\u003Centry.name>\"\n  git clone \u003Centry.url> -b \u003Centry.ref> \"$CLONE\"\n  ln -s \"$CLONE\u002F\u003Centry.subdir>\" \"$MOUNT\"\nelse\n  git clone \u003Centry.url> -b \u003Centry.ref> \"$MOUNT\"\nfi\n```\n\nRefuse if a mount path already exists with unrelated content.\n\n### Summary\n\nPrint:\n\n- Resolved `\u003Cworkspace>`, `\u003Cbsp_image.root_path>`, and\n  `\u003Csource.root_path>`.\n- For each materialized component: created, reused, skipped, or refused.\n- For `bsp_sources`: branch selected plus key evidence (archive path,\n  `source_sync.sh` failure count, or clone URL\u002Fref).\n- Toolchain prefix, resolution source, and `${TC_PREFIX}gcc --version`\n  first line.\n- Reminder that customize-* skills stage future BSP edits in\n  `\u003Csource.root_path>\u002FLinux_for_Tegra\u002F`; promote is what later copies\n  committed overlay changes into `bsp_image`.\n\nIf a downstream skill triggered this run, tell the user to re-issue\ntheir original request.\n\n## Gotchas\n\n- `Linux_for_Tegra` and `bsp_sources` mount paths are canonical.\n  `path:` applies only to extra user-defined repos.\n- The default `Linux_for_Tegra` tracker is intentionally empty; do not\n  pre-populate it.\n- `bsp_sources` precedence is `url:` → `archive:` → auto-discovered\n  `Downloads\u002Fpublic_sources.tbz2` → `source_sync.sh`. `url:` and\n  `archive:` are mutually exclusive.\n- Branch A auto-discovery does not prompt and is not written back to the\n  profile. Persist it only with `source.repos.bsp_sources.archive:`.\n- **Branch A `$DEST\u002FMakefile` collision.** Inner tarballs in\n  `public_sources.tbz2` ship two files named `Makefile`: the Tegra\n  orchestrator (`kernel_oot_modules_src.tbz2`) and the dGPU\u002FOpenRM\n  proprietary Makefile (`nvidia_kernel_display_driver_source_without_\n  root_dir.tbz2`). Alphabetical extraction order lets the dGPU one\n  win on R36.x; downstream arm64 cross-builds then fail with\n  `'-mlittle-endian' unrecognized`. Step 3a force-replaces from\n  `\u003Cbsp_image>\u002FLinux_for_Tegra\u002Fsource\u002FMakefile` when the Tegra\n  `modules: hwpm nvidia-oot nvgpu nvidia-display` signature is\n  missing. R38+ extractions already match; the check is a no-op there.\n- Branch C customer repos must expose the canonical `source_sync.sh`\n  sub-path layout, optionally shifted by `subdir:`.\n- Derive the `source_sync.sh` tag from `bsp_image.version` as\n  `jetson_\u003Cmajor.minor>` first; never fall back to an unpinned latest.\n- `jetson-download-bsp` owns network downloads of `public_sources.tbz2`\n  and `x-tools.tbz2`; this skill consumes local archives only.\n- `source.toolchain` must be an NVIDIA Crosstool-NG prefix with trailing\n  dash and a working `${prefix}gcc`. Never silently use `$PATH`.\n- Use a round-tripping YAML writer for profile edits.\n\n## Prerequisites\n\n- Active target profile resolved per\n  `..\u002F..\u002Fcontext\u002Ftarget-platform-contract.md`.\n- `\u002Fjetson-init-image` already run so `bsp_image.version` is recorded\n  (Branch B `source_sync.sh` tag derives from it).\n- For Branch A: a local `public_sources.tbz2` (and optionally\n  `x-tools.tbz2`) staged under `Downloads\u002F`.\n- For Branch C: customer Git access to the override repo URL.\n\n## Limitations\n\n- Owns only the `source:` block; never edits `bsp_image`,\n  `reference_devkit`, `custom_carrier`, or `documents`.\n- Network egress only for Branch B (`source_sync.sh`) and Branch C\n  (customer Git clone); Branch A is fully offline.\n- Refuses to silently substitute a system toolchain — the NVIDIA\n  Crosstool-NG prefix must be present or extractable.\n\n## Troubleshooting\n\n- **`${toolchain}gcc` not found** — re-stage `x-tools.tbz2` under\n  `Downloads\u002F` and rerun, or pass a verified absolute prefix path.\n- **`source_sync.sh` cannot resolve `jetson_\u003Cmajor.minor>` tag** — the\n  recorded `bsp_image.version` is wrong; re-run `\u002Fjetson-init-image`\n  to refresh it.\n- **`Linux_for_Tegra\u002F.git` shows uncommitted hand-edits** — abort and\n  ask the user to commit or stash; this skill expects a clean tracker.\n- **Branch C clone missing canonical sub-paths** — repo layout doesn't\n  match `source_sync.sh`; set `subdir:` to the right sub-root or fall\n  back to multi-repo overrides under `source.repos:`.\n\n## References\n\n- [`..\u002F..\u002Freferences\u002Fplatform_template.yaml`](..\u002F..\u002Freferences\u002Fplatform_template.yaml) — `source:` schema, including the `repos:` map.\n- [`..\u002F..\u002Fcontext\u002Ftarget-platform-contract.md`](..\u002F..\u002Fcontext\u002Ftarget-platform-contract.md) — target-platform contract.\n- [`..\u002F..\u002Fcontext\u002Fbsp-customization-workflow.md`](..\u002F..\u002Fcontext\u002Fbsp-customization-workflow.md#workflow-invariants) — Workspace edit protocol.\n- [`..\u002Fjetson-init-target\u002FSKILL.md`](..\u002Fjetson-init-target\u002FSKILL.md) — authors the profile this skill consumes.\n- [`..\u002Fjetson-init-image\u002FSKILL.md`](..\u002Fjetson-init-image\u002FSKILL.md) — extracts the BSP and back-fills `bsp_image.version`; run before this skill.\n",{"data":34,"body":45},{"name":4,"description":6,"version":35,"license":25,"metadata":36},"0.0.1",{"data-classification":37,"author":38,"tags":39,"domain":44},"public","Jetson Team",[40,41,42,43],"bsp","workspace","kernel","bootstrap","meta",{"type":46,"children":47},"root",[48,57,64,111,116,183,189,224,230,237,257,347,373,379,394,465,520,534,553,574,619,631,641,652,670,812,824,854,1016,1021,1027,1047,1193,1217,1222,1228,1268,1279,1291,1324,1425,1504,1530,1586,1599,1633,2039,2044,2050,2085,2112,2118,2131,2141,2154,2232,2245,2256,2276,2429,2442,2448,2453,2534,2547,2553,2574,2619,2680,2686,2711,2988,2993,2999,3004,3088,3093,3099,3372,3378,3447,3453,3514,3520,3635,3641,3735],{"type":49,"tag":50,"props":51,"children":53},"element","h1",{"id":52},"initialize-bsp-customization-workspace",[54],{"type":55,"value":56},"text","Initialize BSP Customization Workspace",{"type":49,"tag":58,"props":59,"children":61},"h2",{"id":60},"overview",[62],{"type":55,"value":63},"Overview",{"type":49,"tag":65,"props":66,"children":67},"p",{},[68,70,77,79,85,87,93,95,101,103,109],{"type":55,"value":69},"This skill bootstraps the source-side workspace that customize-* \u002F build\nskills depend on: the ",{"type":49,"tag":71,"props":72,"children":74},"code",{"className":73},[],[75],{"type":55,"value":76},"Linux_for_Tegra",{"type":55,"value":78}," overlay tracker (git repo for\npristine + customization commits), the ",{"type":49,"tag":71,"props":80,"children":82},{"className":81},[],[83],{"type":55,"value":84},"bsp_sources\u002F",{"type":55,"value":86}," mono-tree (kernel,\nOOT, nvgpu, display, hwpm, hardware DTs), and a working NVIDIA\nCrosstool-NG cross-compile prefix. It owns only the ",{"type":49,"tag":71,"props":88,"children":90},{"className":89},[],[91],{"type":55,"value":92},"source:",{"type":55,"value":94}," block in\nthe active profile and the on-disk source workspace under\n",{"type":49,"tag":71,"props":96,"children":98},{"className":97},[],[99],{"type":55,"value":100},"\u003Csource.root_path>",{"type":55,"value":102}," (default: ",{"type":49,"tag":71,"props":104,"children":106},{"className":105},[],[107],{"type":55,"value":108},"\u003Cworkspace>\u002FSource",{"type":55,"value":110},").",{"type":49,"tag":65,"props":112,"children":113},{},[114],{"type":55,"value":115},"Responsibilities:",{"type":49,"tag":117,"props":118,"children":119},"ol",{},[120,134,146,159,171],{"type":49,"tag":121,"props":122,"children":123},"li",{},[124,126,132],{"type":55,"value":125},"Optionally record a non-default ",{"type":49,"tag":71,"props":127,"children":129},{"className":128},[],[130],{"type":55,"value":131},"source.root_path",{"type":55,"value":133},".",{"type":49,"tag":121,"props":135,"children":136},{},[137,139,144],{"type":55,"value":138},"Create or mount the ",{"type":49,"tag":71,"props":140,"children":142},{"className":141},[],[143],{"type":55,"value":76},{"type":55,"value":145}," overlay tracker.",{"type":49,"tag":121,"props":147,"children":148},{},[149,151,157],{"type":55,"value":150},"Materialize ",{"type":49,"tag":71,"props":152,"children":154},{"className":153},[],[155],{"type":55,"value":156},"bsp_sources",{"type":55,"value":158}," using the precedence in the \"Materialize the BSP-sources baseline\" step.",{"type":49,"tag":121,"props":160,"children":161},{},[162,164,170],{"type":55,"value":163},"Resolve and record ",{"type":49,"tag":71,"props":165,"children":167},{"className":166},[],[168],{"type":55,"value":169},"source.toolchain",{"type":55,"value":133},{"type":49,"tag":121,"props":172,"children":173},{},[174,176,182],{"type":55,"value":175},"Clone extra user-defined repos from ",{"type":49,"tag":71,"props":177,"children":179},{"className":178},[],[180],{"type":55,"value":181},"source.repos:",{"type":55,"value":133},{"type":49,"tag":58,"props":184,"children":186},{"id":185},"when-to-invoke",[187],{"type":55,"value":188},"When to invoke",{"type":49,"tag":190,"props":191,"children":192},"ul",{},[193,198,211],{"type":49,"tag":121,"props":194,"children":195},{},[196],{"type":55,"value":197},"The user asks to bootstrap, init, or sync the BSP customization\nworkspace.",{"type":49,"tag":121,"props":199,"children":200},{},[201,203,209],{"type":55,"value":202},"A downstream customization skill refused with \"no workspace\ntracker at ",{"type":49,"tag":71,"props":204,"children":206},{"className":205},[],[207],{"type":55,"value":208},"\u003Csource.root_path>\u002FLinux_for_Tegra\u002F",{"type":55,"value":210},"\".",{"type":49,"tag":121,"props":212,"children":213},{},[214,216,222],{"type":55,"value":215},"After ",{"type":49,"tag":71,"props":217,"children":219},{"className":218},[],[220],{"type":55,"value":221},"jetson-init-image",{"type":55,"value":223}," (Setup's next step on a fresh target).",{"type":49,"tag":58,"props":225,"children":227},{"id":226},"procedure",[228],{"type":55,"value":229},"Procedure",{"type":49,"tag":231,"props":232,"children":234},"h3",{"id":233},"quick-start-prefill-mapping",[235],{"type":55,"value":236},"Quick-start prefill mapping",{"type":49,"tag":65,"props":238,"children":239},{},[240,242,255],{"type":55,"value":241},"Follow the shared\n",{"type":49,"tag":243,"props":244,"children":246},"a",{"href":245},"..\u002F..\u002Fcontext\u002Fbsp-customization-workflow.md#quick_start_prefill-contract",[247,253],{"type":49,"tag":71,"props":248,"children":250},{"className":249},[],[251],{"type":55,"value":252},"quick_start_prefill",{"type":55,"value":254}," contract",{"type":55,"value":256},".\nThis skill has source-specific mappings:",{"type":49,"tag":190,"props":258,"children":259},{},[260,271,305],{"type":49,"tag":121,"props":261,"children":262},{},[263,269],{"type":49,"tag":71,"props":264,"children":266},{"className":265},[],[267],{"type":55,"value":268},"quick_start_prefill.source.public_sources_archive",{"type":55,"value":270}," maps to the\nBranch-A archive candidate.",{"type":49,"tag":121,"props":272,"children":273},{},[274,280,282,287,289,295,297,303],{"type":49,"tag":71,"props":275,"children":277},{"className":276},[],[278],{"type":55,"value":279},"quick_start_prefill.source.repos",{"type":55,"value":281}," maps to proposed ",{"type":49,"tag":71,"props":283,"children":285},{"className":284},[],[286],{"type":55,"value":181},{"type":55,"value":288},"\nentries; validate reserved keys and ",{"type":49,"tag":71,"props":290,"children":292},{"className":291},[],[293],{"type":55,"value":294},"url:",{"type":55,"value":296}," \u002F ",{"type":49,"tag":71,"props":298,"children":300},{"className":299},[],[301],{"type":55,"value":302},"archive:",{"type":55,"value":304}," mutual\nexclusion before writing.",{"type":49,"tag":121,"props":306,"children":307},{},[308,314,316,322,324,330,332,338,340,346],{"type":49,"tag":71,"props":309,"children":311},{"className":310},[],[312],{"type":55,"value":313},"quick_start_prefill.source.toolchain",{"type":55,"value":315}," may be a cross-compile prefix,\na ",{"type":49,"tag":71,"props":317,"children":319},{"className":318},[],[320],{"type":55,"value":321},"gcc",{"type":55,"value":323}," path, a containing ",{"type":49,"tag":71,"props":325,"children":327},{"className":326},[],[328],{"type":55,"value":329},"bin\u002F",{"type":55,"value":331}," directory, an ",{"type":49,"tag":71,"props":333,"children":335},{"className":334},[],[336],{"type":55,"value":337},"x-tools.tbz2",{"type":55,"value":339}," archive\npath, or ",{"type":49,"tag":71,"props":341,"children":343},{"className":342},[],[344],{"type":55,"value":345},"skip",{"type":55,"value":133},{"type":49,"tag":65,"props":348,"children":349},{},[350,352,357,359,364,366,371],{"type":55,"value":351},"This skill remains the only owner of ",{"type":49,"tag":71,"props":353,"children":355},{"className":354},[],[356],{"type":55,"value":131},{"type":55,"value":358},", ",{"type":49,"tag":71,"props":360,"children":362},{"className":361},[],[363],{"type":55,"value":181},{"type":55,"value":365},",\nand ",{"type":49,"tag":71,"props":367,"children":369},{"className":368},[],[370],{"type":55,"value":169},{"type":55,"value":372}," profile writes.",{"type":49,"tag":231,"props":374,"children":376},{"id":375},"resolve-the-active-target-paths",[377],{"type":55,"value":378},"Resolve the active target + paths",{"type":49,"tag":65,"props":380,"children":381},{},[382,384,393],{"type":55,"value":383},"Resolve the active profile + workspace defaults per the contract in\n",{"type":49,"tag":243,"props":385,"children":387},{"href":386},"..\u002F..\u002Fcontext\u002Ftarget-platform-contract.md",[388],{"type":49,"tag":71,"props":389,"children":391},{"className":390},[],[392],{"type":55,"value":386},{"type":55,"value":133},{"type":49,"tag":190,"props":395,"children":396},{},[397,431],{"type":49,"tag":121,"props":398,"children":399},{},[400,406,408,414,416,422,424,430],{"type":49,"tag":401,"props":402,"children":403},"strong",{},[404],{"type":55,"value":405},"Refuse",{"type":55,"value":407}," if ",{"type":49,"tag":71,"props":409,"children":411},{"className":410},[],[412],{"type":55,"value":413},"\u003Cbsp_image.root_path>",{"type":55,"value":415}," does not contain\n",{"type":49,"tag":71,"props":417,"children":419},{"className":418},[],[420],{"type":55,"value":421},"Linux_for_Tegra\u002F",{"type":55,"value":423}," (BSP not extracted — route to ",{"type":49,"tag":71,"props":425,"children":427},{"className":426},[],[428],{"type":55,"value":429},"\u002Fjetson-init-image",{"type":55,"value":110},{"type":49,"tag":121,"props":432,"children":433},{},[434,436,442,444,449,451,456,458,463],{"type":55,"value":435},"If the profile has ",{"type":49,"tag":71,"props":437,"children":439},{"className":438},[],[440],{"type":55,"value":441},"source.root_path:",{"type":55,"value":443},", use it. Otherwise\n",{"type":49,"tag":71,"props":445,"children":447},{"className":446},[],[448],{"type":55,"value":100},{"type":55,"value":450}," defaults to ",{"type":49,"tag":71,"props":452,"children":454},{"className":453},[],[455],{"type":55,"value":108},{"type":55,"value":457},"; use that default\nsilently and do not write ",{"type":49,"tag":71,"props":459,"children":461},{"className":460},[],[462],{"type":55,"value":441},{"type":55,"value":464}," to the profile. Ask only\nfor an explicit custom path, unrelated content at the default path, or an\nunwritable parent.",{"type":49,"tag":65,"props":466,"children":467},{},[468,470,475,477,483,484,490,491,497,498,504,506,511,513,518],{"type":55,"value":469},"Read ",{"type":49,"tag":71,"props":471,"children":473},{"className":472},[],[474],{"type":55,"value":181},{"type":55,"value":476}," (if present) into a map keyed by entry name,\neach carrying optional ",{"type":49,"tag":71,"props":478,"children":480},{"className":479},[],[481],{"type":55,"value":482},"url",{"type":55,"value":358},{"type":49,"tag":71,"props":485,"children":487},{"className":486},[],[488],{"type":55,"value":489},"ref",{"type":55,"value":358},{"type":49,"tag":71,"props":492,"children":494},{"className":493},[],[495],{"type":55,"value":496},"subdir",{"type":55,"value":358},{"type":49,"tag":71,"props":499,"children":501},{"className":500},[],[502],{"type":55,"value":503},"path",{"type":55,"value":505},". Reserved keys:\n",{"type":49,"tag":71,"props":507,"children":509},{"className":508},[],[510],{"type":55,"value":76},{"type":55,"value":512}," (overlay tracker), ",{"type":49,"tag":71,"props":514,"children":516},{"className":515},[],[517],{"type":55,"value":156},{"type":55,"value":519}," (kernel-source\nrepo). Every other key is an extra user-defined repo.",{"type":49,"tag":521,"props":522,"children":524},"h4",{"id":523},"optional-prompt-for-sourceroot_path-override",[525,527,532],{"type":55,"value":526},"(Optional) prompt for ",{"type":49,"tag":71,"props":528,"children":530},{"className":529},[],[531],{"type":55,"value":131},{"type":55,"value":533}," override",{"type":49,"tag":65,"props":535,"children":536},{},[537,539,544,546,551],{"type":55,"value":538},"Only when ",{"type":49,"tag":71,"props":540,"children":542},{"className":541},[],[543],{"type":55,"value":131},{"type":55,"value":545}," is absent from the profile ",{"type":49,"tag":401,"props":547,"children":548},{},[549],{"type":55,"value":550},"and",{"type":55,"value":552}," one of the\noverride conditions above applies:",{"type":49,"tag":554,"props":555,"children":556},"blockquote",{},[557],{"type":49,"tag":65,"props":558,"children":559},{},[560,565,567,572],{"type":49,"tag":71,"props":561,"children":563},{"className":562},[],[564],{"type":55,"value":131},{"type":55,"value":566},": default = ",{"type":49,"tag":71,"props":568,"children":570},{"className":569},[],[571],{"type":55,"value":108},{"type":55,"value":573},". Press Enter to\naccept, or enter an absolute path to override.",{"type":49,"tag":190,"props":575,"children":576},{},[577,587],{"type":49,"tag":121,"props":578,"children":579},{},[580,585],{"type":49,"tag":401,"props":581,"children":582},{},[583],{"type":55,"value":584},"On Enter",{"type":55,"value":586}," — keep the default; do not touch the profile.",{"type":49,"tag":121,"props":588,"children":589},{},[590,595,597,603,605,610,612,618],{"type":49,"tag":401,"props":591,"children":592},{},[593],{"type":55,"value":594},"On override path",{"type":55,"value":596}," — validate the closest existing parent is\nwritable; refuse and re-prompt if not. Edit\n",{"type":49,"tag":71,"props":598,"children":600},{"className":599},[],[601],{"type":55,"value":602},"target-platform\u002F\u003Cactive>.yaml",{"type":55,"value":604}," in place to add\u002Fupdate\n",{"type":49,"tag":71,"props":606,"children":608},{"className":607},[],[609],{"type":55,"value":441},{"type":55,"value":611},". Preserve all other blocks, comments, and\nquoting — use a round-tripping YAML loader (e.g. ",{"type":49,"tag":71,"props":613,"children":615},{"className":614},[],[616],{"type":55,"value":617},"ruamel.yaml",{"type":55,"value":110},{"type":49,"tag":65,"props":620,"children":621},{},[622,624,629],{"type":55,"value":623},"Fires at most once per profile. Otherwise create ",{"type":49,"tag":71,"props":625,"children":627},{"className":626},[],[628],{"type":55,"value":108},{"type":55,"value":630}," as\nneeded and continue without prompting.",{"type":49,"tag":231,"props":632,"children":634},{"id":633},"materialize-linux_for_tegra",[635,636],{"type":55,"value":150},{"type":49,"tag":71,"props":637,"children":639},{"className":638},[],[640],{"type":55,"value":76},{"type":49,"tag":65,"props":642,"children":643},{},[644,646,651],{"type":55,"value":645},"Mount path is canonical: ",{"type":49,"tag":71,"props":647,"children":649},{"className":648},[],[650],{"type":55,"value":208},{"type":55,"value":133},{"type":49,"tag":65,"props":653,"children":654},{},[655,660,662,668],{"type":49,"tag":401,"props":656,"children":657},{},[658],{"type":55,"value":659},"Default",{"type":55,"value":661}," (no ",{"type":49,"tag":71,"props":663,"children":665},{"className":664},[],[666],{"type":55,"value":667},"source.repos.Linux_for_Tegra",{"type":55,"value":669}," entry):",{"type":49,"tag":671,"props":672,"children":677},"pre",{"className":673,"code":674,"language":675,"meta":676,"style":676},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","LFT=\"\u003Csource.root_path>\u002FLinux_for_Tegra\"\nmkdir -p \"$LFT\"\n[ -d \"$LFT\u002F.git\" ] || git -C \"$LFT\" init\n","bash","",[678],{"type":49,"tag":71,"props":679,"children":680},{"__ignoreMap":676},[681,715,744],{"type":49,"tag":682,"props":683,"children":686},"span",{"class":684,"line":685},"line",1,[687,693,699,704,710],{"type":49,"tag":682,"props":688,"children":690},{"style":689},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[691],{"type":55,"value":692},"LFT",{"type":49,"tag":682,"props":694,"children":696},{"style":695},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[697],{"type":55,"value":698},"=",{"type":49,"tag":682,"props":700,"children":701},{"style":695},[702],{"type":55,"value":703},"\"",{"type":49,"tag":682,"props":705,"children":707},{"style":706},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[708],{"type":55,"value":709},"\u003Csource.root_path>\u002FLinux_for_Tegra",{"type":49,"tag":682,"props":711,"children":712},{"style":695},[713],{"type":55,"value":714},"\"\n",{"type":49,"tag":682,"props":716,"children":718},{"class":684,"line":717},2,[719,725,730,735,740],{"type":49,"tag":682,"props":720,"children":722},{"style":721},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[723],{"type":55,"value":724},"mkdir",{"type":49,"tag":682,"props":726,"children":727},{"style":706},[728],{"type":55,"value":729}," -p",{"type":49,"tag":682,"props":731,"children":732},{"style":695},[733],{"type":55,"value":734}," \"",{"type":49,"tag":682,"props":736,"children":737},{"style":689},[738],{"type":55,"value":739},"$LFT",{"type":49,"tag":682,"props":741,"children":742},{"style":695},[743],{"type":55,"value":714},{"type":49,"tag":682,"props":745,"children":747},{"class":684,"line":746},3,[748,753,758,762,766,771,775,780,785,790,795,799,803,807],{"type":49,"tag":682,"props":749,"children":750},{"style":695},[751],{"type":55,"value":752},"[",{"type":49,"tag":682,"props":754,"children":755},{"style":695},[756],{"type":55,"value":757}," -d",{"type":49,"tag":682,"props":759,"children":760},{"style":695},[761],{"type":55,"value":734},{"type":49,"tag":682,"props":763,"children":764},{"style":689},[765],{"type":55,"value":739},{"type":49,"tag":682,"props":767,"children":768},{"style":706},[769],{"type":55,"value":770},"\u002F.git",{"type":49,"tag":682,"props":772,"children":773},{"style":695},[774],{"type":55,"value":703},{"type":49,"tag":682,"props":776,"children":777},{"style":695},[778],{"type":55,"value":779}," ]",{"type":49,"tag":682,"props":781,"children":782},{"style":695},[783],{"type":55,"value":784}," ||",{"type":49,"tag":682,"props":786,"children":787},{"style":721},[788],{"type":55,"value":789}," git",{"type":49,"tag":682,"props":791,"children":792},{"style":706},[793],{"type":55,"value":794}," -C",{"type":49,"tag":682,"props":796,"children":797},{"style":695},[798],{"type":55,"value":734},{"type":49,"tag":682,"props":800,"children":801},{"style":689},[802],{"type":55,"value":739},{"type":49,"tag":682,"props":804,"children":805},{"style":695},[806],{"type":55,"value":703},{"type":49,"tag":682,"props":808,"children":809},{"style":706},[810],{"type":55,"value":811}," init\n",{"type":49,"tag":65,"props":813,"children":814},{},[815,817,822],{"type":55,"value":816},"Empty tracker. ",{"type":49,"tag":401,"props":818,"children":819},{},[820],{"type":55,"value":821},"Do not commit anything here",{"type":55,"value":823}," — pristine imports\nhappen file-by-file when customization skills run.",{"type":49,"tag":65,"props":825,"children":826},{},[827,832,834,839,840,845,847,852],{"type":49,"tag":401,"props":828,"children":829},{},[830],{"type":55,"value":831},"Override",{"type":55,"value":833}," (",{"type":49,"tag":71,"props":835,"children":837},{"className":836},[],[838],{"type":55,"value":482},{"type":55,"value":358},{"type":49,"tag":71,"props":841,"children":843},{"className":842},[],[844],{"type":55,"value":489},{"type":55,"value":846},", optional ",{"type":49,"tag":71,"props":848,"children":850},{"className":849},[],[851],{"type":55,"value":496},{"type":55,"value":853},"):",{"type":49,"tag":671,"props":855,"children":857},{"className":673,"code":856,"language":675,"meta":676,"style":676},"# Clone the user's repo to a side location, then mount the\n# expected tree (subdir or repo root) at the canonical path.\nCLONE=\"\u003Csource.root_path>\u002F.repos\u002FLinux_for_Tegra\"\ngit clone \u003Curl> -b \u003Cref> \"$CLONE\"\nln -s \"$CLONE\u002F\u003Csubdir or .>\" \"\u003Csource.root_path>\u002FLinux_for_Tegra\"\n",[858],{"type":49,"tag":71,"props":859,"children":860},{"__ignoreMap":676},[861,870,878,903,973],{"type":49,"tag":682,"props":862,"children":863},{"class":684,"line":685},[864],{"type":49,"tag":682,"props":865,"children":867},{"style":866},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[868],{"type":55,"value":869},"# Clone the user's repo to a side location, then mount the\n",{"type":49,"tag":682,"props":871,"children":872},{"class":684,"line":717},[873],{"type":49,"tag":682,"props":874,"children":875},{"style":866},[876],{"type":55,"value":877},"# expected tree (subdir or repo root) at the canonical path.\n",{"type":49,"tag":682,"props":879,"children":880},{"class":684,"line":746},[881,886,890,894,899],{"type":49,"tag":682,"props":882,"children":883},{"style":689},[884],{"type":55,"value":885},"CLONE",{"type":49,"tag":682,"props":887,"children":888},{"style":695},[889],{"type":55,"value":698},{"type":49,"tag":682,"props":891,"children":892},{"style":695},[893],{"type":55,"value":703},{"type":49,"tag":682,"props":895,"children":896},{"style":706},[897],{"type":55,"value":898},"\u003Csource.root_path>\u002F.repos\u002FLinux_for_Tegra",{"type":49,"tag":682,"props":900,"children":901},{"style":695},[902],{"type":55,"value":714},{"type":49,"tag":682,"props":904,"children":906},{"class":684,"line":905},4,[907,912,917,922,927,932,937,942,946,951,956,960,964,969],{"type":49,"tag":682,"props":908,"children":909},{"style":721},[910],{"type":55,"value":911},"git",{"type":49,"tag":682,"props":913,"children":914},{"style":706},[915],{"type":55,"value":916}," clone",{"type":49,"tag":682,"props":918,"children":919},{"style":695},[920],{"type":55,"value":921}," \u003C",{"type":49,"tag":682,"props":923,"children":924},{"style":706},[925],{"type":55,"value":926},"ur",{"type":49,"tag":682,"props":928,"children":929},{"style":689},[930],{"type":55,"value":931},"l",{"type":49,"tag":682,"props":933,"children":934},{"style":695},[935],{"type":55,"value":936},">",{"type":49,"tag":682,"props":938,"children":939},{"style":706},[940],{"type":55,"value":941}," -b",{"type":49,"tag":682,"props":943,"children":944},{"style":695},[945],{"type":55,"value":921},{"type":49,"tag":682,"props":947,"children":948},{"style":706},[949],{"type":55,"value":950},"re",{"type":49,"tag":682,"props":952,"children":953},{"style":689},[954],{"type":55,"value":955},"f",{"type":49,"tag":682,"props":957,"children":958},{"style":695},[959],{"type":55,"value":936},{"type":49,"tag":682,"props":961,"children":962},{"style":695},[963],{"type":55,"value":734},{"type":49,"tag":682,"props":965,"children":966},{"style":689},[967],{"type":55,"value":968},"$CLONE",{"type":49,"tag":682,"props":970,"children":971},{"style":695},[972],{"type":55,"value":714},{"type":49,"tag":682,"props":974,"children":976},{"class":684,"line":975},5,[977,982,987,991,995,1000,1004,1008,1012],{"type":49,"tag":682,"props":978,"children":979},{"style":721},[980],{"type":55,"value":981},"ln",{"type":49,"tag":682,"props":983,"children":984},{"style":706},[985],{"type":55,"value":986}," -s",{"type":49,"tag":682,"props":988,"children":989},{"style":695},[990],{"type":55,"value":734},{"type":49,"tag":682,"props":992,"children":993},{"style":689},[994],{"type":55,"value":968},{"type":49,"tag":682,"props":996,"children":997},{"style":706},[998],{"type":55,"value":999},"\u002F\u003Csubdir or .>",{"type":49,"tag":682,"props":1001,"children":1002},{"style":695},[1003],{"type":55,"value":703},{"type":49,"tag":682,"props":1005,"children":1006},{"style":695},[1007],{"type":55,"value":734},{"type":49,"tag":682,"props":1009,"children":1010},{"style":706},[1011],{"type":55,"value":709},{"type":49,"tag":682,"props":1013,"children":1014},{"style":695},[1015],{"type":55,"value":714},{"type":49,"tag":65,"props":1017,"children":1018},{},[1019],{"type":55,"value":1020},"If the mount already exists with valid git state, skip; refuse if it\nexists with unrelated content.",{"type":49,"tag":231,"props":1022,"children":1024},{"id":1023},"materialize-the-bsp-sources-baseline",[1025],{"type":55,"value":1026},"Materialize the BSP-sources baseline",{"type":49,"tag":65,"props":1028,"children":1029},{},[1030,1032,1037,1039,1045],{"type":55,"value":1031},"Three branches, dispatched ",{"type":49,"tag":401,"props":1033,"children":1034},{},[1035],{"type":55,"value":1036},"in precedence order",{"type":55,"value":1038}," against the\nprofile entry ",{"type":49,"tag":71,"props":1040,"children":1042},{"className":1041},[],[1043],{"type":55,"value":1044},"source.repos.bsp_sources",{"type":55,"value":1046},":",{"type":49,"tag":1048,"props":1049,"children":1050},"table",{},[1051,1075],{"type":49,"tag":1052,"props":1053,"children":1054},"thead",{},[1055],{"type":49,"tag":1056,"props":1057,"children":1058},"tr",{},[1059,1065,1070],{"type":49,"tag":1060,"props":1061,"children":1062},"th",{},[1063],{"type":55,"value":1064},"Order",{"type":49,"tag":1060,"props":1066,"children":1067},{},[1068],{"type":55,"value":1069},"Profile state",{"type":49,"tag":1060,"props":1071,"children":1072},{},[1073],{"type":55,"value":1074},"Branch",{"type":49,"tag":1076,"props":1077,"children":1078},"tbody",{},[1079,1108,1158],{"type":49,"tag":1056,"props":1080,"children":1081},{},[1082,1088,1098],{"type":49,"tag":1083,"props":1084,"children":1085},"td",{},[1086],{"type":55,"value":1087},"1",{"type":49,"tag":1083,"props":1089,"children":1090},{},[1091,1096],{"type":49,"tag":71,"props":1092,"children":1094},{"className":1093},[],[1095],{"type":55,"value":294},{"type":55,"value":1097}," set",{"type":49,"tag":1083,"props":1099,"children":1100},{},[1101,1106],{"type":49,"tag":401,"props":1102,"children":1103},{},[1104],{"type":55,"value":1105},"C. Customer git clone",{"type":55,"value":1107}," (explicit override always wins)",{"type":49,"tag":1056,"props":1109,"children":1110},{},[1111,1116,1148],{"type":49,"tag":1083,"props":1112,"children":1113},{},[1114],{"type":55,"value":1115},"2",{"type":49,"tag":1083,"props":1117,"children":1118},{},[1119,1124,1126,1131,1133,1138,1140,1146],{"type":49,"tag":71,"props":1120,"children":1122},{"className":1121},[],[1123],{"type":55,"value":302},{"type":55,"value":1125}," set, ",{"type":49,"tag":401,"props":1127,"children":1128},{},[1129],{"type":55,"value":1130},"OR",{"type":55,"value":1132}," entry absent ",{"type":49,"tag":401,"props":1134,"children":1135},{},[1136],{"type":55,"value":1137},"AND",{"type":55,"value":1139}," ",{"type":49,"tag":71,"props":1141,"children":1143},{"className":1142},[],[1144],{"type":55,"value":1145},"\u003Cworkspace>\u002FDownloads\u002Fpublic_sources.tbz2",{"type":55,"value":1147}," exists",{"type":49,"tag":1083,"props":1149,"children":1150},{},[1151,1156],{"type":49,"tag":401,"props":1152,"children":1153},{},[1154],{"type":55,"value":1155},"A. Local archive extraction",{"type":55,"value":1157}," (default)",{"type":49,"tag":1056,"props":1159,"children":1160},{},[1161,1166,1177],{"type":49,"tag":1083,"props":1162,"children":1163},{},[1164],{"type":55,"value":1165},"3",{"type":49,"tag":1083,"props":1167,"children":1168},{},[1169,1171,1175],{"type":55,"value":1170},"Entry absent ",{"type":49,"tag":401,"props":1172,"children":1173},{},[1174],{"type":55,"value":1137},{"type":55,"value":1176}," no local archive",{"type":49,"tag":1083,"props":1178,"children":1179},{},[1180,1191],{"type":49,"tag":401,"props":1181,"children":1182},{},[1183,1185],{"type":55,"value":1184},"B. ",{"type":49,"tag":71,"props":1186,"children":1188},{"className":1187},[],[1189],{"type":55,"value":1190},"source_sync.sh",{"type":55,"value":1192}," (fallback)",{"type":49,"tag":65,"props":1194,"children":1195},{},[1196,1201,1203,1208,1210,1215],{"type":49,"tag":71,"props":1197,"children":1199},{"className":1198},[],[1200],{"type":55,"value":294},{"type":55,"value":1202}," and ",{"type":49,"tag":71,"props":1204,"children":1206},{"className":1205},[],[1207],{"type":55,"value":302},{"type":55,"value":1209}," are ",{"type":49,"tag":401,"props":1211,"children":1212},{},[1213],{"type":55,"value":1214},"mutually exclusive",{"type":55,"value":1216}," — refuse if both are\nset in the same entry.",{"type":49,"tag":65,"props":1218,"children":1219},{},[1220],{"type":55,"value":1221},"Branch A is the preferred default because it sidesteps NVIDIA git\negress entirely (the most common Setup failure mode). Branch B\nexists for fresh workspaces with no pre-downloaded tarball.\nBranch C is for customer forks of the whole BSP layout.",{"type":49,"tag":521,"props":1223,"children":1225},{"id":1224},"branch-a-local-archive-extraction-default",[1226],{"type":55,"value":1227},"Branch A — Local archive extraction (default)",{"type":49,"tag":65,"props":1229,"children":1230},{},[1231,1233,1239,1241,1247,1249,1255,1257,1266],{"type":55,"value":1232},"Default branch: extract a pre-downloaded ",{"type":49,"tag":71,"props":1234,"children":1236},{"className":1235},[],[1237],{"type":55,"value":1238},"public_sources.tbz2",{"type":55,"value":1240}," into\n",{"type":49,"tag":71,"props":1242,"children":1244},{"className":1243},[],[1245],{"type":55,"value":1246},"\u003Csource.root_path>\u002Fbsp_sources\u002F",{"type":55,"value":1248}," as a single mono-repo (",{"type":49,"tag":71,"props":1250,"children":1252},{"className":1251},[],[1253],{"type":55,"value":1254},"git init",{"type":55,"value":1256}," +\npristine commit). See\n",{"type":49,"tag":243,"props":1258,"children":1260},{"href":1259},"references\u002Fbranch-a-extraction.md",[1261],{"type":49,"tag":71,"props":1262,"children":1264},{"className":1263},[],[1265],{"type":55,"value":1259},{"type":55,"value":1267},"\nfor the full archive shape, path-resolution rules, and the extraction\nscript (including the Tegra OOT Makefile force-replace workaround for\nR36.x).",{"type":49,"tag":65,"props":1269,"children":1270},{},[1271,1273,1278],{"type":55,"value":1272},"Branches B and C may produce per-component repos instead; downstream\nbuild logic still walks the canonical sub-paths under\n",{"type":49,"tag":71,"props":1274,"children":1276},{"className":1275},[],[1277],{"type":55,"value":1246},{"type":55,"value":133},{"type":49,"tag":521,"props":1280,"children":1282},{"id":1281},"branch-b-source_syncsh-fallback",[1283,1285,1290],{"type":55,"value":1284},"Branch B — ",{"type":49,"tag":71,"props":1286,"children":1288},{"className":1287},[],[1289],{"type":55,"value":1190},{"type":55,"value":1192},{"type":49,"tag":65,"props":1292,"children":1293},{},[1294,1296,1301,1303,1308,1310,1315,1317,1322],{"type":55,"value":1295},"Runs only when no local archive is found and no ",{"type":49,"tag":71,"props":1297,"children":1299},{"className":1298},[],[1300],{"type":55,"value":294},{"type":55,"value":1302}," is set.\nCreate the ",{"type":49,"tag":71,"props":1304,"children":1306},{"className":1305},[],[1307],{"type":55,"value":84},{"type":55,"value":1309}," mount directory under ",{"type":49,"tag":71,"props":1311,"children":1313},{"className":1312},[],[1314],{"type":55,"value":100},{"type":55,"value":1316},"\nand run ",{"type":49,"tag":71,"props":1318,"children":1320},{"className":1319},[],[1321],{"type":55,"value":1190},{"type":55,"value":1323}," from the extracted BSP with two flags:",{"type":49,"tag":671,"props":1325,"children":1327},{"className":673,"code":1326,"language":675,"meta":676,"style":676},"mkdir -p \"\u003Csource.root_path>\u002Fbsp_sources\"\nbash \"\u003Cbsp_image.root_path>\u002FLinux_for_Tegra\u002Fsource\u002Fsource_sync.sh\" \\\n     -d \"\u003Csource.root_path>\u002Fbsp_sources\" \\\n     -t \"jetson_\u003Cmajor.minor>\"\n",[1328],{"type":49,"tag":71,"props":1329,"children":1330},{"__ignoreMap":676},[1331,1355,1380,1404],{"type":49,"tag":682,"props":1332,"children":1333},{"class":684,"line":685},[1334,1338,1342,1346,1351],{"type":49,"tag":682,"props":1335,"children":1336},{"style":721},[1337],{"type":55,"value":724},{"type":49,"tag":682,"props":1339,"children":1340},{"style":706},[1341],{"type":55,"value":729},{"type":49,"tag":682,"props":1343,"children":1344},{"style":695},[1345],{"type":55,"value":734},{"type":49,"tag":682,"props":1347,"children":1348},{"style":706},[1349],{"type":55,"value":1350},"\u003Csource.root_path>\u002Fbsp_sources",{"type":49,"tag":682,"props":1352,"children":1353},{"style":695},[1354],{"type":55,"value":714},{"type":49,"tag":682,"props":1356,"children":1357},{"class":684,"line":717},[1358,1362,1366,1371,1375],{"type":49,"tag":682,"props":1359,"children":1360},{"style":721},[1361],{"type":55,"value":675},{"type":49,"tag":682,"props":1363,"children":1364},{"style":695},[1365],{"type":55,"value":734},{"type":49,"tag":682,"props":1367,"children":1368},{"style":706},[1369],{"type":55,"value":1370},"\u003Cbsp_image.root_path>\u002FLinux_for_Tegra\u002Fsource\u002Fsource_sync.sh",{"type":49,"tag":682,"props":1372,"children":1373},{"style":695},[1374],{"type":55,"value":703},{"type":49,"tag":682,"props":1376,"children":1377},{"style":689},[1378],{"type":55,"value":1379}," \\\n",{"type":49,"tag":682,"props":1381,"children":1382},{"class":684,"line":746},[1383,1388,1392,1396,1400],{"type":49,"tag":682,"props":1384,"children":1385},{"style":706},[1386],{"type":55,"value":1387},"     -d",{"type":49,"tag":682,"props":1389,"children":1390},{"style":695},[1391],{"type":55,"value":734},{"type":49,"tag":682,"props":1393,"children":1394},{"style":706},[1395],{"type":55,"value":1350},{"type":49,"tag":682,"props":1397,"children":1398},{"style":695},[1399],{"type":55,"value":703},{"type":49,"tag":682,"props":1401,"children":1402},{"style":689},[1403],{"type":55,"value":1379},{"type":49,"tag":682,"props":1405,"children":1406},{"class":684,"line":905},[1407,1412,1416,1421],{"type":49,"tag":682,"props":1408,"children":1409},{"style":706},[1410],{"type":55,"value":1411},"     -t",{"type":49,"tag":682,"props":1413,"children":1414},{"style":695},[1415],{"type":55,"value":734},{"type":49,"tag":682,"props":1417,"children":1418},{"style":706},[1419],{"type":55,"value":1420},"jetson_\u003Cmajor.minor>",{"type":49,"tag":682,"props":1422,"children":1423},{"style":695},[1424],{"type":55,"value":714},{"type":49,"tag":190,"props":1426,"children":1427},{},[1428,1454],{"type":49,"tag":121,"props":1429,"children":1430},{},[1431,1437,1439,1444,1446,1452],{"type":49,"tag":71,"props":1432,"children":1434},{"className":1433},[],[1435],{"type":55,"value":1436},"-d \u003Csource.root_path>\u002Fbsp_sources",{"type":55,"value":1438}," — write clones into the\n",{"type":49,"tag":71,"props":1440,"children":1442},{"className":1441},[],[1443],{"type":55,"value":84},{"type":55,"value":1445}," subdir of the workspace, so the on-disk folder\nmatches the schema key. Without ",{"type":49,"tag":71,"props":1447,"children":1449},{"className":1448},[],[1450],{"type":55,"value":1451},"-d",{"type":55,"value":1453},", the script writes under its\nown directory (the BSP itself) — wrong for the overlay model.",{"type":49,"tag":121,"props":1455,"children":1456},{},[1457,1463,1465,1471,1473,1479,1481,1487,1489,1494,1496,1502],{"type":49,"tag":71,"props":1458,"children":1460},{"className":1459},[],[1461],{"type":55,"value":1462},"-t jetson_\u003Cmajor.minor>",{"type":55,"value":1464}," — pin the tag to the BSP release line.\nDerive from ",{"type":49,"tag":71,"props":1466,"children":1468},{"className":1467},[],[1469],{"type":55,"value":1470},"bsp_image.version",{"type":55,"value":1472}," by truncating to the first two\ndotted components: ",{"type":49,"tag":71,"props":1474,"children":1476},{"className":1475},[],[1477],{"type":55,"value":1478},"\"38.4.0\"",{"type":55,"value":1480}," → ",{"type":49,"tag":71,"props":1482,"children":1484},{"className":1483},[],[1485],{"type":55,"value":1486},"jetson_38.4",{"type":55,"value":1488},". ",{"type":49,"tag":401,"props":1490,"children":1491},{},[1492],{"type":55,"value":1493},"Tag-format\nfallback",{"type":55,"value":1495},": if rejected, try ",{"type":49,"tag":71,"props":1497,"children":1499},{"className":1498},[],[1500],{"type":55,"value":1501},"jetson_\u003Cbsp_image.version>",{"type":55,"value":1503}," (older\nL4T sometimes uses the full form). If that also fails, surface the\nerror and stop — never fall back to \"latest\" silently.",{"type":49,"tag":65,"props":1505,"children":1506},{},[1507,1509,1514,1516,1521,1523,1529],{"type":55,"value":1508},"Refuse if ",{"type":49,"tag":71,"props":1510,"children":1512},{"className":1511},[],[1513],{"type":55,"value":1190},{"type":55,"value":1515}," does not exist: re-run ",{"type":49,"tag":71,"props":1517,"children":1519},{"className":1518},[],[1520],{"type":55,"value":429},{"type":55,"value":1522},"\nto repopulate ",{"type":49,"tag":71,"props":1524,"children":1526},{"className":1525},[],[1527],{"type":55,"value":1528},"Linux_for_Tegra\u002Fsource\u002F",{"type":55,"value":133},{"type":49,"tag":65,"props":1531,"children":1532},{},[1533,1538,1540,1546,1548,1553,1555,1561,1563,1569,1571,1576,1578,1584],{"type":49,"tag":71,"props":1534,"children":1536},{"className":1535},[],[1537],{"type":55,"value":1190},{"type":55,"value":1539}," exits 0 even when every clone failed — verify by\ncounting ",{"type":49,"tag":71,"props":1541,"children":1543},{"className":1542},[],[1544],{"type":55,"value":1545},"Failed to clone",{"type":55,"value":1547}," lines in its output and refuse if\nnon-zero. The most likely cause of universal failure is ",{"type":49,"tag":401,"props":1549,"children":1550},{},[1551],{"type":55,"value":1552},"blocked\ngit egress",{"type":55,"value":1554}," to ",{"type":49,"tag":71,"props":1556,"children":1558},{"className":1557},[],[1559],{"type":55,"value":1560},"gitlab.com\u002Fnvidia\u002Fnv-tegra",{"type":55,"value":1562}," \u002F\n",{"type":49,"tag":71,"props":1564,"children":1566},{"className":1565},[],[1567],{"type":55,"value":1568},"nv-tegra.nvidia.com",{"type":55,"value":1570},"; surface that explicitly and route the user\nto download ",{"type":49,"tag":71,"props":1572,"children":1574},{"className":1573},[],[1575],{"type":55,"value":1238},{"type":55,"value":1577}," via ",{"type":49,"tag":71,"props":1579,"children":1581},{"className":1580},[],[1582],{"type":55,"value":1583},"\u002Fquick-start",{"type":55,"value":1585}," for Branch A.",{"type":49,"tag":521,"props":1587,"children":1589},{"id":1588},"branch-c-customer-git-clone-url-override",[1590,1592,1597],{"type":55,"value":1591},"Branch C — Customer git clone (",{"type":49,"tag":71,"props":1593,"children":1595},{"className":1594},[],[1596],{"type":55,"value":294},{"type":55,"value":1598}," override)",{"type":49,"tag":65,"props":1600,"children":1601},{},[1602,1604,1609,1611,1616,1618,1631],{"type":55,"value":1603},"Triggered by an explicit ",{"type":49,"tag":71,"props":1605,"children":1607},{"className":1606},[],[1608],{"type":55,"value":294},{"type":55,"value":1610}," field. Clone the customer repo once\nand expose its canonical kernel-side sub-paths under\n",{"type":49,"tag":71,"props":1612,"children":1614},{"className":1613},[],[1615],{"type":55,"value":1246},{"type":55,"value":1617},". The canonical sub-path list is\n",{"type":49,"tag":401,"props":1619,"children":1620},{},[1621,1623,1629],{"type":55,"value":1622},"read from source_sync.sh's ",{"type":49,"tag":71,"props":1624,"children":1626},{"className":1625},[],[1627],{"type":55,"value":1628},"SOURCE_INFO",{"type":55,"value":1630}," at runtime",{"type":55,"value":1632}," — do not\nhard-code it, so future NVIDIA additions\u002Fremovals propagate\nautomatically:",{"type":49,"tag":671,"props":1634,"children":1636},{"className":673,"code":1635,"language":675,"meta":676,"style":676},"# Parse canonical sub-paths from source_sync.sh's SOURCE_INFO\n# (only the kernel-side entries marked `k:` in the second field).\nSUBPATHS=$(grep -oP '^\\s*k:[^:]+:' \\\n  \"\u003Cbsp_image.root_path>\u002FLinux_for_Tegra\u002Fsource\u002Fsource_sync.sh\" \\\n  | sed 's\u002F^\\s*k:\u002F\u002F; s\u002F:$\u002F\u002F')\n\nmkdir -p \"\u003Csource.root_path>\u002Fbsp_sources\"\nCLONE=\"\u003Csource.root_path>\u002F.repos\u002Fbsp_sources\"\ngit clone \u003Curl> -b \u003Cref> \"$CLONE\"\nROOT=\"$CLONE\u002F\u003Csubdir or .>\"\nfor SUB in $SUBPATHS; do\n  [ -d \"$ROOT\u002F$SUB\" ] && \\\n    ln -s \"$ROOT\u002F$SUB\" \"\u003Csource.root_path>\u002Fbsp_sources\u002F$SUB\"\ndone\n",[1637],{"type":49,"tag":71,"props":1638,"children":1639},{"__ignoreMap":676},[1640,1648,1656,1698,1718,1749,1759,1783,1808,1868,1897,1932,1981,2030],{"type":49,"tag":682,"props":1641,"children":1642},{"class":684,"line":685},[1643],{"type":49,"tag":682,"props":1644,"children":1645},{"style":866},[1646],{"type":55,"value":1647},"# Parse canonical sub-paths from source_sync.sh's SOURCE_INFO\n",{"type":49,"tag":682,"props":1649,"children":1650},{"class":684,"line":717},[1651],{"type":49,"tag":682,"props":1652,"children":1653},{"style":866},[1654],{"type":55,"value":1655},"# (only the kernel-side entries marked `k:` in the second field).\n",{"type":49,"tag":682,"props":1657,"children":1658},{"class":684,"line":746},[1659,1664,1669,1674,1679,1684,1689,1694],{"type":49,"tag":682,"props":1660,"children":1661},{"style":689},[1662],{"type":55,"value":1663},"SUBPATHS",{"type":49,"tag":682,"props":1665,"children":1666},{"style":695},[1667],{"type":55,"value":1668},"=$(",{"type":49,"tag":682,"props":1670,"children":1671},{"style":721},[1672],{"type":55,"value":1673},"grep",{"type":49,"tag":682,"props":1675,"children":1676},{"style":706},[1677],{"type":55,"value":1678}," -oP",{"type":49,"tag":682,"props":1680,"children":1681},{"style":695},[1682],{"type":55,"value":1683}," '",{"type":49,"tag":682,"props":1685,"children":1686},{"style":706},[1687],{"type":55,"value":1688},"^\\s*k:[^:]+:",{"type":49,"tag":682,"props":1690,"children":1691},{"style":695},[1692],{"type":55,"value":1693},"'",{"type":49,"tag":682,"props":1695,"children":1696},{"style":689},[1697],{"type":55,"value":1379},{"type":49,"tag":682,"props":1699,"children":1700},{"class":684,"line":905},[1701,1706,1710,1714],{"type":49,"tag":682,"props":1702,"children":1703},{"style":695},[1704],{"type":55,"value":1705},"  \"",{"type":49,"tag":682,"props":1707,"children":1708},{"style":706},[1709],{"type":55,"value":1370},{"type":49,"tag":682,"props":1711,"children":1712},{"style":695},[1713],{"type":55,"value":703},{"type":49,"tag":682,"props":1715,"children":1716},{"style":689},[1717],{"type":55,"value":1379},{"type":49,"tag":682,"props":1719,"children":1720},{"class":684,"line":975},[1721,1726,1731,1735,1740,1744],{"type":49,"tag":682,"props":1722,"children":1723},{"style":695},[1724],{"type":55,"value":1725},"  |",{"type":49,"tag":682,"props":1727,"children":1728},{"style":721},[1729],{"type":55,"value":1730}," sed",{"type":49,"tag":682,"props":1732,"children":1733},{"style":695},[1734],{"type":55,"value":1683},{"type":49,"tag":682,"props":1736,"children":1737},{"style":706},[1738],{"type":55,"value":1739},"s\u002F^\\s*k:\u002F\u002F; s\u002F:$\u002F\u002F",{"type":49,"tag":682,"props":1741,"children":1742},{"style":695},[1743],{"type":55,"value":1693},{"type":49,"tag":682,"props":1745,"children":1746},{"style":695},[1747],{"type":55,"value":1748},")\n",{"type":49,"tag":682,"props":1750,"children":1752},{"class":684,"line":1751},6,[1753],{"type":49,"tag":682,"props":1754,"children":1756},{"emptyLinePlaceholder":1755},true,[1757],{"type":55,"value":1758},"\n",{"type":49,"tag":682,"props":1760,"children":1762},{"class":684,"line":1761},7,[1763,1767,1771,1775,1779],{"type":49,"tag":682,"props":1764,"children":1765},{"style":721},[1766],{"type":55,"value":724},{"type":49,"tag":682,"props":1768,"children":1769},{"style":706},[1770],{"type":55,"value":729},{"type":49,"tag":682,"props":1772,"children":1773},{"style":695},[1774],{"type":55,"value":734},{"type":49,"tag":682,"props":1776,"children":1777},{"style":706},[1778],{"type":55,"value":1350},{"type":49,"tag":682,"props":1780,"children":1781},{"style":695},[1782],{"type":55,"value":714},{"type":49,"tag":682,"props":1784,"children":1786},{"class":684,"line":1785},8,[1787,1791,1795,1799,1804],{"type":49,"tag":682,"props":1788,"children":1789},{"style":689},[1790],{"type":55,"value":885},{"type":49,"tag":682,"props":1792,"children":1793},{"style":695},[1794],{"type":55,"value":698},{"type":49,"tag":682,"props":1796,"children":1797},{"style":695},[1798],{"type":55,"value":703},{"type":49,"tag":682,"props":1800,"children":1801},{"style":706},[1802],{"type":55,"value":1803},"\u003Csource.root_path>\u002F.repos\u002Fbsp_sources",{"type":49,"tag":682,"props":1805,"children":1806},{"style":695},[1807],{"type":55,"value":714},{"type":49,"tag":682,"props":1809,"children":1811},{"class":684,"line":1810},9,[1812,1816,1820,1824,1828,1832,1836,1840,1844,1848,1852,1856,1860,1864],{"type":49,"tag":682,"props":1813,"children":1814},{"style":721},[1815],{"type":55,"value":911},{"type":49,"tag":682,"props":1817,"children":1818},{"style":706},[1819],{"type":55,"value":916},{"type":49,"tag":682,"props":1821,"children":1822},{"style":695},[1823],{"type":55,"value":921},{"type":49,"tag":682,"props":1825,"children":1826},{"style":706},[1827],{"type":55,"value":926},{"type":49,"tag":682,"props":1829,"children":1830},{"style":689},[1831],{"type":55,"value":931},{"type":49,"tag":682,"props":1833,"children":1834},{"style":695},[1835],{"type":55,"value":936},{"type":49,"tag":682,"props":1837,"children":1838},{"style":706},[1839],{"type":55,"value":941},{"type":49,"tag":682,"props":1841,"children":1842},{"style":695},[1843],{"type":55,"value":921},{"type":49,"tag":682,"props":1845,"children":1846},{"style":706},[1847],{"type":55,"value":950},{"type":49,"tag":682,"props":1849,"children":1850},{"style":689},[1851],{"type":55,"value":955},{"type":49,"tag":682,"props":1853,"children":1854},{"style":695},[1855],{"type":55,"value":936},{"type":49,"tag":682,"props":1857,"children":1858},{"style":695},[1859],{"type":55,"value":734},{"type":49,"tag":682,"props":1861,"children":1862},{"style":689},[1863],{"type":55,"value":968},{"type":49,"tag":682,"props":1865,"children":1866},{"style":695},[1867],{"type":55,"value":714},{"type":49,"tag":682,"props":1869,"children":1871},{"class":684,"line":1870},10,[1872,1877,1881,1885,1889,1893],{"type":49,"tag":682,"props":1873,"children":1874},{"style":689},[1875],{"type":55,"value":1876},"ROOT",{"type":49,"tag":682,"props":1878,"children":1879},{"style":695},[1880],{"type":55,"value":698},{"type":49,"tag":682,"props":1882,"children":1883},{"style":695},[1884],{"type":55,"value":703},{"type":49,"tag":682,"props":1886,"children":1887},{"style":689},[1888],{"type":55,"value":968},{"type":49,"tag":682,"props":1890,"children":1891},{"style":706},[1892],{"type":55,"value":999},{"type":49,"tag":682,"props":1894,"children":1895},{"style":695},[1896],{"type":55,"value":714},{"type":49,"tag":682,"props":1898,"children":1900},{"class":684,"line":1899},11,[1901,1907,1912,1917,1922,1927],{"type":49,"tag":682,"props":1902,"children":1904},{"style":1903},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[1905],{"type":55,"value":1906},"for",{"type":49,"tag":682,"props":1908,"children":1909},{"style":689},[1910],{"type":55,"value":1911}," SUB ",{"type":49,"tag":682,"props":1913,"children":1914},{"style":1903},[1915],{"type":55,"value":1916},"in",{"type":49,"tag":682,"props":1918,"children":1919},{"style":689},[1920],{"type":55,"value":1921}," $SUBPATHS",{"type":49,"tag":682,"props":1923,"children":1924},{"style":695},[1925],{"type":55,"value":1926},";",{"type":49,"tag":682,"props":1928,"children":1929},{"style":1903},[1930],{"type":55,"value":1931}," do\n",{"type":49,"tag":682,"props":1933,"children":1935},{"class":684,"line":1934},12,[1936,1941,1945,1949,1954,1959,1964,1968,1972,1977],{"type":49,"tag":682,"props":1937,"children":1938},{"style":695},[1939],{"type":55,"value":1940},"  [",{"type":49,"tag":682,"props":1942,"children":1943},{"style":695},[1944],{"type":55,"value":757},{"type":49,"tag":682,"props":1946,"children":1947},{"style":695},[1948],{"type":55,"value":734},{"type":49,"tag":682,"props":1950,"children":1951},{"style":689},[1952],{"type":55,"value":1953},"$ROOT",{"type":49,"tag":682,"props":1955,"children":1956},{"style":706},[1957],{"type":55,"value":1958},"\u002F",{"type":49,"tag":682,"props":1960,"children":1961},{"style":689},[1962],{"type":55,"value":1963},"$SUB",{"type":49,"tag":682,"props":1965,"children":1966},{"style":695},[1967],{"type":55,"value":703},{"type":49,"tag":682,"props":1969,"children":1970},{"style":695},[1971],{"type":55,"value":779},{"type":49,"tag":682,"props":1973,"children":1974},{"style":695},[1975],{"type":55,"value":1976}," &&",{"type":49,"tag":682,"props":1978,"children":1979},{"style":689},[1980],{"type":55,"value":1379},{"type":49,"tag":682,"props":1982,"children":1984},{"class":684,"line":1983},13,[1985,1990,1994,1998,2002,2006,2010,2014,2018,2022,2026],{"type":49,"tag":682,"props":1986,"children":1987},{"style":721},[1988],{"type":55,"value":1989},"    ln",{"type":49,"tag":682,"props":1991,"children":1992},{"style":706},[1993],{"type":55,"value":986},{"type":49,"tag":682,"props":1995,"children":1996},{"style":695},[1997],{"type":55,"value":734},{"type":49,"tag":682,"props":1999,"children":2000},{"style":689},[2001],{"type":55,"value":1953},{"type":49,"tag":682,"props":2003,"children":2004},{"style":706},[2005],{"type":55,"value":1958},{"type":49,"tag":682,"props":2007,"children":2008},{"style":689},[2009],{"type":55,"value":1963},{"type":49,"tag":682,"props":2011,"children":2012},{"style":695},[2013],{"type":55,"value":703},{"type":49,"tag":682,"props":2015,"children":2016},{"style":695},[2017],{"type":55,"value":734},{"type":49,"tag":682,"props":2019,"children":2020},{"style":706},[2021],{"type":55,"value":1246},{"type":49,"tag":682,"props":2023,"children":2024},{"style":689},[2025],{"type":55,"value":1963},{"type":49,"tag":682,"props":2027,"children":2028},{"style":695},[2029],{"type":55,"value":714},{"type":49,"tag":682,"props":2031,"children":2033},{"class":684,"line":2032},14,[2034],{"type":49,"tag":682,"props":2035,"children":2036},{"style":1903},[2037],{"type":55,"value":2038},"done\n",{"type":49,"tag":65,"props":2040,"children":2041},{},[2042],{"type":55,"value":2043},"Report any canonical sub-path expected for the active chip family\nbut not present inside the customer repo (warn, don't refuse —\ncustomer may legitimately not have all repos).",{"type":49,"tag":231,"props":2045,"children":2047},{"id":2046},"resolve-cross-compile-toolchain",[2048],{"type":55,"value":2049},"Resolve cross-compile toolchain",{"type":49,"tag":65,"props":2051,"children":2052},{},[2053,2055,2061,2063,2068,2070,2076,2078,2083],{"type":55,"value":2054},"The downstream ",{"type":49,"tag":71,"props":2056,"children":2058},{"className":2057},[],[2059],{"type":55,"value":2060},"jetson-build-source",{"type":55,"value":2062}," reads ",{"type":49,"tag":71,"props":2064,"children":2066},{"className":2065},[],[2067],{"type":55,"value":169},{"type":55,"value":2069}," from\nthis profile and exports it as ",{"type":49,"tag":71,"props":2071,"children":2073},{"className":2072},[],[2074],{"type":55,"value":2075},"CROSS_COMPILE",{"type":55,"value":2077},". This step ",{"type":49,"tag":401,"props":2079,"children":2080},{},[2081],{"type":55,"value":2082},"must",{"type":55,"value":2084},"\nland a valid prefix before init-source returns, or any subsequent\nkernel \u002F OOT \u002F DT build will refuse.",{"type":49,"tag":65,"props":2086,"children":2087},{},[2088,2090,2095,2097,2103,2105,2110],{"type":55,"value":2089},"NVIDIA's official ",{"type":49,"tag":401,"props":2091,"children":2092},{},[2093],{"type":55,"value":2094},"Crosstool-NG Toolchain gcc",{"type":55,"value":2096}," is the canonical\ntoolchain for L4T. ",{"type":49,"tag":71,"props":2098,"children":2100},{"className":2099},[],[2101],{"type":55,"value":2102},"jetson-download-bsp",{"type":55,"value":2104}," owns any network fetch of\n",{"type":49,"tag":71,"props":2106,"children":2108},{"className":2107},[],[2109],{"type":55,"value":337},{"type":55,"value":2111},"; this skill only discovers, extracts, validates, and\nwrites the resolved prefix. Resolution follows a three-step ladder:",{"type":49,"tag":521,"props":2113,"children":2115},{"id":2114},"auto-discover",[2116],{"type":55,"value":2117},"Auto-discover",{"type":49,"tag":65,"props":2119,"children":2120},{},[2121,2123,2129],{"type":55,"value":2122},"Look under ",{"type":49,"tag":71,"props":2124,"children":2126},{"className":2125},[],[2127],{"type":55,"value":2128},"\u003Cworkspace>\u002Ftoolchain\u002Fx-tools\u002F",{"type":55,"value":2130}," for the Crosstool-NG\nlayout — typically one of:",{"type":49,"tag":671,"props":2132,"children":2136},{"className":2133,"code":2135,"language":55},[2134],"language-text","\u003Cworkspace>\u002Ftoolchain\u002Fx-tools\u002Faarch64-none-linux-gnu\u002Fbin\u002Faarch64-none-linux-gnu-gcc\n\u003Cworkspace>\u002Ftoolchain\u002Fx-tools\u002Faarch64-buildroot-linux-gnu\u002Fbin\u002Faarch64-buildroot-linux-gnu-gcc\n",[2137],{"type":49,"tag":71,"props":2138,"children":2139},{"__ignoreMap":676},[2140],{"type":55,"value":2135},{"type":49,"tag":65,"props":2142,"children":2143},{},[2144,2146,2152],{"type":55,"value":2145},"Glob: ",{"type":49,"tag":71,"props":2147,"children":2149},{"className":2148},[],[2150],{"type":55,"value":2151},"\u003Cworkspace>\u002Ftoolchain\u002Fx-tools\u002Faarch64-*-linux-gnu\u002Fbin\u002Faarch64-*-linux-gnu-gcc",{"type":55,"value":2153},".\nIf exactly one match, bind:",{"type":49,"tag":671,"props":2155,"children":2157},{"className":673,"code":2156,"language":675,"meta":676,"style":676},"TC_PREFIX=\u003Cabsolute path to that ...\u002Fbin\u002F\u003Ctriple>->   # trailing dash mandatory\n",[2158],{"type":49,"tag":71,"props":2159,"children":2160},{"__ignoreMap":676},[2161],{"type":49,"tag":682,"props":2162,"children":2163},{"class":684,"line":685},[2164,2169,2174,2179,2184,2189,2194,2199,2204,2209,2214,2218,2223,2227],{"type":49,"tag":682,"props":2165,"children":2166},{"style":689},[2167],{"type":55,"value":2168},"TC_PREFIX",{"type":49,"tag":682,"props":2170,"children":2171},{"style":695},[2172],{"type":55,"value":2173},"=\u003C",{"type":49,"tag":682,"props":2175,"children":2176},{"style":706},[2177],{"type":55,"value":2178},"absolute",{"type":49,"tag":682,"props":2180,"children":2181},{"style":721},[2182],{"type":55,"value":2183}," path",{"type":49,"tag":682,"props":2185,"children":2186},{"style":706},[2187],{"type":55,"value":2188}," to",{"type":49,"tag":682,"props":2190,"children":2191},{"style":706},[2192],{"type":55,"value":2193}," that",{"type":49,"tag":682,"props":2195,"children":2196},{"style":706},[2197],{"type":55,"value":2198}," ...\u002Fbin\u002F",{"type":49,"tag":682,"props":2200,"children":2201},{"style":695},[2202],{"type":55,"value":2203},"\u003C",{"type":49,"tag":682,"props":2205,"children":2206},{"style":706},[2207],{"type":55,"value":2208},"tripl",{"type":49,"tag":682,"props":2210,"children":2211},{"style":689},[2212],{"type":55,"value":2213},"e",{"type":49,"tag":682,"props":2215,"children":2216},{"style":695},[2217],{"type":55,"value":936},{"type":49,"tag":682,"props":2219,"children":2220},{"style":689},[2221],{"type":55,"value":2222},"-",{"type":49,"tag":682,"props":2224,"children":2225},{"style":695},[2226],{"type":55,"value":936},{"type":49,"tag":682,"props":2228,"children":2229},{"style":866},[2230],{"type":55,"value":2231},"   # trailing dash mandatory\n",{"type":49,"tag":65,"props":2233,"children":2234},{},[2235,2237,2243],{"type":55,"value":2236},"Skip to \"Write to profile\" below. If zero matches, fall through\nto \"Auto-extract from ",{"type":49,"tag":71,"props":2238,"children":2240},{"className":2239},[],[2241],{"type":55,"value":2242},"Downloads\u002Fx-tools.tbz2",{"type":55,"value":2244},"\" below. If multiple, refuse with the list and ask the user to\nremove the unwanted ones (we never pick one silently among\nambiguous installs — different Crosstool-NG flavors produce ABI-\nincompatible binaries).",{"type":49,"tag":521,"props":2246,"children":2248},{"id":2247},"auto-extract-from-downloadsx-toolstbz2",[2249,2251],{"type":55,"value":2250},"Auto-extract from ",{"type":49,"tag":71,"props":2252,"children":2254},{"className":2253},[],[2255],{"type":55,"value":2242},{"type":49,"tag":65,"props":2257,"children":2258},{},[2259,2261,2267,2269,2274],{"type":55,"value":2260},"If ",{"type":49,"tag":71,"props":2262,"children":2264},{"className":2263},[],[2265],{"type":55,"value":2266},"\u003Cworkspace>\u002FDownloads\u002Fx-tools.tbz2",{"type":55,"value":2268}," exists (mirrors the\n",{"type":49,"tag":71,"props":2270,"children":2272},{"className":2271},[],[2273],{"type":55,"value":1238},{"type":55,"value":2275}," Branch-A pattern in the \"Materialize the BSP-sources baseline\" step — air-gapped \u002F\nno-egress users drop archives there):",{"type":49,"tag":671,"props":2277,"children":2279},{"className":673,"code":2278,"language":675,"meta":676,"style":676},"file -b \"\u003Cworkspace>\u002FDownloads\u002Fx-tools.tbz2\" | grep -q \"bzip2 compressed\" || \\\n  refuse \"\u003Cworkspace>\u002FDownloads\u002Fx-tools.tbz2 is not a bzip2 tarball\"\nmkdir -p \"\u003Cworkspace>\u002Ftoolchain\"\ntar xjf \"\u003Cworkspace>\u002FDownloads\u002Fx-tools.tbz2\" -C \"\u003Cworkspace>\u002Ftoolchain\"\n",[2280],{"type":49,"tag":71,"props":2281,"children":2282},{"__ignoreMap":676},[2283,2343,2364,2388],{"type":49,"tag":682,"props":2284,"children":2285},{"class":684,"line":685},[2286,2291,2295,2299,2303,2307,2312,2317,2322,2326,2331,2335,2339],{"type":49,"tag":682,"props":2287,"children":2288},{"style":721},[2289],{"type":55,"value":2290},"file",{"type":49,"tag":682,"props":2292,"children":2293},{"style":706},[2294],{"type":55,"value":941},{"type":49,"tag":682,"props":2296,"children":2297},{"style":695},[2298],{"type":55,"value":734},{"type":49,"tag":682,"props":2300,"children":2301},{"style":706},[2302],{"type":55,"value":2266},{"type":49,"tag":682,"props":2304,"children":2305},{"style":695},[2306],{"type":55,"value":703},{"type":49,"tag":682,"props":2308,"children":2309},{"style":695},[2310],{"type":55,"value":2311}," |",{"type":49,"tag":682,"props":2313,"children":2314},{"style":721},[2315],{"type":55,"value":2316}," grep",{"type":49,"tag":682,"props":2318,"children":2319},{"style":706},[2320],{"type":55,"value":2321}," -q",{"type":49,"tag":682,"props":2323,"children":2324},{"style":695},[2325],{"type":55,"value":734},{"type":49,"tag":682,"props":2327,"children":2328},{"style":706},[2329],{"type":55,"value":2330},"bzip2 compressed",{"type":49,"tag":682,"props":2332,"children":2333},{"style":695},[2334],{"type":55,"value":703},{"type":49,"tag":682,"props":2336,"children":2337},{"style":695},[2338],{"type":55,"value":784},{"type":49,"tag":682,"props":2340,"children":2341},{"style":689},[2342],{"type":55,"value":1379},{"type":49,"tag":682,"props":2344,"children":2345},{"class":684,"line":717},[2346,2351,2355,2360],{"type":49,"tag":682,"props":2347,"children":2348},{"style":721},[2349],{"type":55,"value":2350},"  refuse",{"type":49,"tag":682,"props":2352,"children":2353},{"style":695},[2354],{"type":55,"value":734},{"type":49,"tag":682,"props":2356,"children":2357},{"style":706},[2358],{"type":55,"value":2359},"\u003Cworkspace>\u002FDownloads\u002Fx-tools.tbz2 is not a bzip2 tarball",{"type":49,"tag":682,"props":2361,"children":2362},{"style":695},[2363],{"type":55,"value":714},{"type":49,"tag":682,"props":2365,"children":2366},{"class":684,"line":746},[2367,2371,2375,2379,2384],{"type":49,"tag":682,"props":2368,"children":2369},{"style":721},[2370],{"type":55,"value":724},{"type":49,"tag":682,"props":2372,"children":2373},{"style":706},[2374],{"type":55,"value":729},{"type":49,"tag":682,"props":2376,"children":2377},{"style":695},[2378],{"type":55,"value":734},{"type":49,"tag":682,"props":2380,"children":2381},{"style":706},[2382],{"type":55,"value":2383},"\u003Cworkspace>\u002Ftoolchain",{"type":49,"tag":682,"props":2385,"children":2386},{"style":695},[2387],{"type":55,"value":714},{"type":49,"tag":682,"props":2389,"children":2390},{"class":684,"line":905},[2391,2396,2401,2405,2409,2413,2417,2421,2425],{"type":49,"tag":682,"props":2392,"children":2393},{"style":721},[2394],{"type":55,"value":2395},"tar",{"type":49,"tag":682,"props":2397,"children":2398},{"style":706},[2399],{"type":55,"value":2400}," xjf",{"type":49,"tag":682,"props":2402,"children":2403},{"style":695},[2404],{"type":55,"value":734},{"type":49,"tag":682,"props":2406,"children":2407},{"style":706},[2408],{"type":55,"value":2266},{"type":49,"tag":682,"props":2410,"children":2411},{"style":695},[2412],{"type":55,"value":703},{"type":49,"tag":682,"props":2414,"children":2415},{"style":706},[2416],{"type":55,"value":794},{"type":49,"tag":682,"props":2418,"children":2419},{"style":695},[2420],{"type":55,"value":734},{"type":49,"tag":682,"props":2422,"children":2423},{"style":706},[2424],{"type":55,"value":2383},{"type":49,"tag":682,"props":2426,"children":2427},{"style":695},[2428],{"type":55,"value":714},{"type":49,"tag":65,"props":2430,"children":2431},{},[2432,2434,2440],{"type":55,"value":2433},"Then re-run the \"Auto-discover\" pass above. Refuse if extraction succeeds\nbut no ",{"type":49,"tag":71,"props":2435,"children":2437},{"className":2436},[],[2438],{"type":55,"value":2439},"x-tools\u002Faarch64-*-linux-gnu\u002Fbin\u002F",{"type":55,"value":2441}," is produced (archive\ncontent doesn't match the Crosstool-NG layout).",{"type":49,"tag":521,"props":2443,"children":2445},{"id":2444},"prompt-the-user",[2446],{"type":55,"value":2447},"Prompt the user",{"type":49,"tag":65,"props":2449,"children":2450},{},[2451],{"type":55,"value":2452},"If both Auto-discover and Auto-extract came up empty, ask:",{"type":49,"tag":554,"props":2454,"children":2455},{},[2456,2475,2480,2514],{"type":49,"tag":65,"props":2457,"children":2458},{},[2459,2461,2467,2469,2474],{"type":55,"value":2460},"No Crosstool-NG toolchain found at ",{"type":49,"tag":71,"props":2462,"children":2464},{"className":2463},[],[2465],{"type":55,"value":2466},"\u003Cworkspace>\u002Ftoolchain\u002F",{"type":55,"value":2468}," or in\n",{"type":49,"tag":71,"props":2470,"children":2472},{"className":2471},[],[2473],{"type":55,"value":2266},{"type":55,"value":133},{"type":49,"tag":65,"props":2476,"children":2477},{},[2478],{"type":55,"value":2479},"Reply with one of:",{"type":49,"tag":190,"props":2481,"children":2482},{},[2483,2503],{"type":49,"tag":121,"props":2484,"children":2485},{},[2486,2488,2494,2496,2501],{"type":55,"value":2487},"absolute path to your ",{"type":49,"tag":71,"props":2489,"children":2491},{"className":2490},[],[2492],{"type":55,"value":2493},"aarch64-*-linux-gnu-gcc",{"type":55,"value":2495}," binary or its\ncontaining ",{"type":49,"tag":71,"props":2497,"children":2499},{"className":2498},[],[2500],{"type":55,"value":329},{"type":55,"value":2502}," directory,",{"type":49,"tag":121,"props":2504,"children":2505},{},[2506,2512],{"type":49,"tag":71,"props":2507,"children":2509},{"className":2508},[],[2510],{"type":55,"value":2511},"cancel",{"type":55,"value":2513}," to abort.",{"type":49,"tag":65,"props":2515,"children":2516},{},[2517,2519,2525,2527,2533],{"type":55,"value":2518},"To fetch the archive instead, cancel this run, run\n",{"type":49,"tag":71,"props":2520,"children":2522},{"className":2521},[],[2523],{"type":55,"value":2524},"\u002Fjetson-download-bsp",{"type":55,"value":2526},", then re-run ",{"type":49,"tag":71,"props":2528,"children":2530},{"className":2529},[],[2531],{"type":55,"value":2532},"\u002Fjetson-init-source",{"type":55,"value":133},{"type":49,"tag":65,"props":2535,"children":2536},{},[2537,2539,2545],{"type":55,"value":2538},"For a path reply, validate via ",{"type":49,"tag":71,"props":2540,"children":2542},{"className":2541},[],[2543],{"type":55,"value":2544},"[ -f \"${TC_PREFIX}gcc\" ]",{"type":55,"value":2546},". Refuse\nand re-prompt on failure.",{"type":49,"tag":521,"props":2548,"children":2550},{"id":2549},"write-to-profile",[2551],{"type":55,"value":2552},"Write to profile",{"type":49,"tag":65,"props":2554,"children":2555},{},[2556,2558,2564,2566,2572],{"type":55,"value":2557},"Once ",{"type":49,"tag":71,"props":2559,"children":2561},{"className":2560},[],[2562],{"type":55,"value":2563},"$TC_PREFIX",{"type":55,"value":2565}," resolves and ",{"type":49,"tag":71,"props":2567,"children":2569},{"className":2568},[],[2570],{"type":55,"value":2571},"${TC_PREFIX}gcc",{"type":55,"value":2573}," exists, write it\ninto the active profile using a round-tripping YAML loader:",{"type":49,"tag":671,"props":2575,"children":2579},{"className":2576,"code":2577,"language":2578,"meta":676,"style":676},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","source:\n  toolchain: \u003CTC_PREFIX>   # absolute, with trailing dash\n","yaml",[2580],{"type":49,"tag":71,"props":2581,"children":2582},{"__ignoreMap":676},[2583,2597],{"type":49,"tag":682,"props":2584,"children":2585},{"class":684,"line":685},[2586,2592],{"type":49,"tag":682,"props":2587,"children":2589},{"style":2588},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[2590],{"type":55,"value":2591},"source",{"type":49,"tag":682,"props":2593,"children":2594},{"style":695},[2595],{"type":55,"value":2596},":\n",{"type":49,"tag":682,"props":2598,"children":2599},{"class":684,"line":717},[2600,2605,2609,2614],{"type":49,"tag":682,"props":2601,"children":2602},{"style":2588},[2603],{"type":55,"value":2604},"  toolchain",{"type":49,"tag":682,"props":2606,"children":2607},{"style":695},[2608],{"type":55,"value":1046},{"type":49,"tag":682,"props":2610,"children":2611},{"style":706},[2612],{"type":55,"value":2613}," \u003CTC_PREFIX>",{"type":49,"tag":682,"props":2615,"children":2616},{"style":866},[2617],{"type":55,"value":2618},"   # absolute, with trailing dash\n",{"type":49,"tag":65,"props":2620,"children":2621},{},[2622,2623,2628,2630,2636,2638,2644,2646,2651,2653,2658,2660,2665,2667,2672,2674,2679],{"type":55,"value":2260},{"type":49,"tag":71,"props":2624,"children":2626},{"className":2625},[],[2627],{"type":55,"value":92},{"type":55,"value":2629}," is otherwise empty (no ",{"type":49,"tag":71,"props":2631,"children":2633},{"className":2632},[],[2634],{"type":55,"value":2635},"root_path",{"type":55,"value":2637}," override, no\n",{"type":49,"tag":71,"props":2639,"children":2641},{"className":2640},[],[2642],{"type":55,"value":2643},"repos:",{"type":55,"value":2645}," entries), the ",{"type":49,"tag":71,"props":2647,"children":2649},{"className":2648},[],[2650],{"type":55,"value":92},{"type":55,"value":2652}," block is now non-empty and stays\nin the profile. Future ",{"type":49,"tag":71,"props":2654,"children":2656},{"className":2655},[],[2657],{"type":55,"value":4},{"type":55,"value":2659}," runs ",{"type":49,"tag":401,"props":2661,"children":2662},{},[2663],{"type":55,"value":2664},"skip the \"Resolve cross-compile toolchain\" step",{"type":55,"value":2666},"\nif ",{"type":49,"tag":71,"props":2668,"children":2670},{"className":2669},[],[2671],{"type":55,"value":169},{"type":55,"value":2673}," is already set and points at a working ",{"type":49,"tag":71,"props":2675,"children":2677},{"className":2676},[],[2678],{"type":55,"value":321},{"type":55,"value":133},{"type":49,"tag":231,"props":2681,"children":2683},{"id":2682},"clone-extra-user-defined-repos",[2684],{"type":55,"value":2685},"Clone extra user-defined repos",{"type":49,"tag":65,"props":2687,"children":2688},{},[2689,2691,2696,2698,2703,2705,2710],{"type":55,"value":2690},"For each entry under ",{"type":49,"tag":71,"props":2692,"children":2694},{"className":2693},[],[2695],{"type":55,"value":181},{"type":55,"value":2697}," whose name is not\n",{"type":49,"tag":71,"props":2699,"children":2701},{"className":2700},[],[2702],{"type":55,"value":76},{"type":55,"value":2704}," or ",{"type":49,"tag":71,"props":2706,"children":2708},{"className":2707},[],[2709],{"type":55,"value":156},{"type":55,"value":1046},{"type":49,"tag":671,"props":2712,"children":2714},{"className":673,"code":2713,"language":675,"meta":676,"style":676},"MOUNT=\"\u003Csource.root_path>\u002F\u003Centry.path or entry.name>\"\nif [ -n \"\u003Centry.subdir>\" ]; then\n  CLONE=\"\u003Csource.root_path>\u002F.repos\u002F\u003Centry.name>\"\n  git clone \u003Centry.url> -b \u003Centry.ref> \"$CLONE\"\n  ln -s \"$CLONE\u002F\u003Centry.subdir>\" \"$MOUNT\"\nelse\n  git clone \u003Centry.url> -b \u003Centry.ref> \"$MOUNT\"\nfi\n",[2715],{"type":49,"tag":71,"props":2716,"children":2717},{"__ignoreMap":676},[2718,2743,2784,2809,2871,2913,2921,2980],{"type":49,"tag":682,"props":2719,"children":2720},{"class":684,"line":685},[2721,2726,2730,2734,2739],{"type":49,"tag":682,"props":2722,"children":2723},{"style":689},[2724],{"type":55,"value":2725},"MOUNT",{"type":49,"tag":682,"props":2727,"children":2728},{"style":695},[2729],{"type":55,"value":698},{"type":49,"tag":682,"props":2731,"children":2732},{"style":695},[2733],{"type":55,"value":703},{"type":49,"tag":682,"props":2735,"children":2736},{"style":706},[2737],{"type":55,"value":2738},"\u003Csource.root_path>\u002F\u003Centry.path or entry.name>",{"type":49,"tag":682,"props":2740,"children":2741},{"style":695},[2742],{"type":55,"value":714},{"type":49,"tag":682,"props":2744,"children":2745},{"class":684,"line":717},[2746,2751,2756,2761,2765,2770,2774,2779],{"type":49,"tag":682,"props":2747,"children":2748},{"style":1903},[2749],{"type":55,"value":2750},"if",{"type":49,"tag":682,"props":2752,"children":2753},{"style":695},[2754],{"type":55,"value":2755}," [",{"type":49,"tag":682,"props":2757,"children":2758},{"style":695},[2759],{"type":55,"value":2760}," -n",{"type":49,"tag":682,"props":2762,"children":2763},{"style":695},[2764],{"type":55,"value":734},{"type":49,"tag":682,"props":2766,"children":2767},{"style":706},[2768],{"type":55,"value":2769},"\u003Centry.subdir>",{"type":49,"tag":682,"props":2771,"children":2772},{"style":695},[2773],{"type":55,"value":703},{"type":49,"tag":682,"props":2775,"children":2776},{"style":695},[2777],{"type":55,"value":2778}," ];",{"type":49,"tag":682,"props":2780,"children":2781},{"style":1903},[2782],{"type":55,"value":2783}," then\n",{"type":49,"tag":682,"props":2785,"children":2786},{"class":684,"line":746},[2787,2792,2796,2800,2805],{"type":49,"tag":682,"props":2788,"children":2789},{"style":689},[2790],{"type":55,"value":2791},"  CLONE",{"type":49,"tag":682,"props":2793,"children":2794},{"style":695},[2795],{"type":55,"value":698},{"type":49,"tag":682,"props":2797,"children":2798},{"style":695},[2799],{"type":55,"value":703},{"type":49,"tag":682,"props":2801,"children":2802},{"style":706},[2803],{"type":55,"value":2804},"\u003Csource.root_path>\u002F.repos\u002F\u003Centry.name>",{"type":49,"tag":682,"props":2806,"children":2807},{"style":695},[2808],{"type":55,"value":714},{"type":49,"tag":682,"props":2810,"children":2811},{"class":684,"line":905},[2812,2817,2821,2825,2830,2834,2838,2842,2846,2851,2855,2859,2863,2867],{"type":49,"tag":682,"props":2813,"children":2814},{"style":721},[2815],{"type":55,"value":2816},"  git",{"type":49,"tag":682,"props":2818,"children":2819},{"style":706},[2820],{"type":55,"value":916},{"type":49,"tag":682,"props":2822,"children":2823},{"style":695},[2824],{"type":55,"value":921},{"type":49,"tag":682,"props":2826,"children":2827},{"style":706},[2828],{"type":55,"value":2829},"entry.ur",{"type":49,"tag":682,"props":2831,"children":2832},{"style":689},[2833],{"type":55,"value":931},{"type":49,"tag":682,"props":2835,"children":2836},{"style":695},[2837],{"type":55,"value":936},{"type":49,"tag":682,"props":2839,"children":2840},{"style":706},[2841],{"type":55,"value":941},{"type":49,"tag":682,"props":2843,"children":2844},{"style":695},[2845],{"type":55,"value":921},{"type":49,"tag":682,"props":2847,"children":2848},{"style":706},[2849],{"type":55,"value":2850},"entry.re",{"type":49,"tag":682,"props":2852,"children":2853},{"style":689},[2854],{"type":55,"value":955},{"type":49,"tag":682,"props":2856,"children":2857},{"style":695},[2858],{"type":55,"value":936},{"type":49,"tag":682,"props":2860,"children":2861},{"style":695},[2862],{"type":55,"value":734},{"type":49,"tag":682,"props":2864,"children":2865},{"style":689},[2866],{"type":55,"value":968},{"type":49,"tag":682,"props":2868,"children":2869},{"style":695},[2870],{"type":55,"value":714},{"type":49,"tag":682,"props":2872,"children":2873},{"class":684,"line":975},[2874,2879,2883,2887,2891,2896,2900,2904,2909],{"type":49,"tag":682,"props":2875,"children":2876},{"style":721},[2877],{"type":55,"value":2878},"  ln",{"type":49,"tag":682,"props":2880,"children":2881},{"style":706},[2882],{"type":55,"value":986},{"type":49,"tag":682,"props":2884,"children":2885},{"style":695},[2886],{"type":55,"value":734},{"type":49,"tag":682,"props":2888,"children":2889},{"style":689},[2890],{"type":55,"value":968},{"type":49,"tag":682,"props":2892,"children":2893},{"style":706},[2894],{"type":55,"value":2895},"\u002F\u003Centry.subdir>",{"type":49,"tag":682,"props":2897,"children":2898},{"style":695},[2899],{"type":55,"value":703},{"type":49,"tag":682,"props":2901,"children":2902},{"style":695},[2903],{"type":55,"value":734},{"type":49,"tag":682,"props":2905,"children":2906},{"style":689},[2907],{"type":55,"value":2908},"$MOUNT",{"type":49,"tag":682,"props":2910,"children":2911},{"style":695},[2912],{"type":55,"value":714},{"type":49,"tag":682,"props":2914,"children":2915},{"class":684,"line":1751},[2916],{"type":49,"tag":682,"props":2917,"children":2918},{"style":1903},[2919],{"type":55,"value":2920},"else\n",{"type":49,"tag":682,"props":2922,"children":2923},{"class":684,"line":1761},[2924,2928,2932,2936,2940,2944,2948,2952,2956,2960,2964,2968,2972,2976],{"type":49,"tag":682,"props":2925,"children":2926},{"style":721},[2927],{"type":55,"value":2816},{"type":49,"tag":682,"props":2929,"children":2930},{"style":706},[2931],{"type":55,"value":916},{"type":49,"tag":682,"props":2933,"children":2934},{"style":695},[2935],{"type":55,"value":921},{"type":49,"tag":682,"props":2937,"children":2938},{"style":706},[2939],{"type":55,"value":2829},{"type":49,"tag":682,"props":2941,"children":2942},{"style":689},[2943],{"type":55,"value":931},{"type":49,"tag":682,"props":2945,"children":2946},{"style":695},[2947],{"type":55,"value":936},{"type":49,"tag":682,"props":2949,"children":2950},{"style":706},[2951],{"type":55,"value":941},{"type":49,"tag":682,"props":2953,"children":2954},{"style":695},[2955],{"type":55,"value":921},{"type":49,"tag":682,"props":2957,"children":2958},{"style":706},[2959],{"type":55,"value":2850},{"type":49,"tag":682,"props":2961,"children":2962},{"style":689},[2963],{"type":55,"value":955},{"type":49,"tag":682,"props":2965,"children":2966},{"style":695},[2967],{"type":55,"value":936},{"type":49,"tag":682,"props":2969,"children":2970},{"style":695},[2971],{"type":55,"value":734},{"type":49,"tag":682,"props":2973,"children":2974},{"style":689},[2975],{"type":55,"value":2908},{"type":49,"tag":682,"props":2977,"children":2978},{"style":695},[2979],{"type":55,"value":714},{"type":49,"tag":682,"props":2981,"children":2982},{"class":684,"line":1785},[2983],{"type":49,"tag":682,"props":2984,"children":2985},{"style":1903},[2986],{"type":55,"value":2987},"fi\n",{"type":49,"tag":65,"props":2989,"children":2990},{},[2991],{"type":55,"value":2992},"Refuse if a mount path already exists with unrelated content.",{"type":49,"tag":231,"props":2994,"children":2996},{"id":2995},"summary",[2997],{"type":55,"value":2998},"Summary",{"type":49,"tag":65,"props":3000,"children":3001},{},[3002],{"type":55,"value":3003},"Print:",{"type":49,"tag":190,"props":3005,"children":3006},{},[3007,3032,3037,3056,3069],{"type":49,"tag":121,"props":3008,"children":3009},{},[3010,3012,3018,3019,3024,3026,3031],{"type":55,"value":3011},"Resolved ",{"type":49,"tag":71,"props":3013,"children":3015},{"className":3014},[],[3016],{"type":55,"value":3017},"\u003Cworkspace>",{"type":55,"value":358},{"type":49,"tag":71,"props":3020,"children":3022},{"className":3021},[],[3023],{"type":55,"value":413},{"type":55,"value":3025},", and\n",{"type":49,"tag":71,"props":3027,"children":3029},{"className":3028},[],[3030],{"type":55,"value":100},{"type":55,"value":133},{"type":49,"tag":121,"props":3033,"children":3034},{},[3035],{"type":55,"value":3036},"For each materialized component: created, reused, skipped, or refused.",{"type":49,"tag":121,"props":3038,"children":3039},{},[3040,3042,3047,3049,3054],{"type":55,"value":3041},"For ",{"type":49,"tag":71,"props":3043,"children":3045},{"className":3044},[],[3046],{"type":55,"value":156},{"type":55,"value":3048},": branch selected plus key evidence (archive path,\n",{"type":49,"tag":71,"props":3050,"children":3052},{"className":3051},[],[3053],{"type":55,"value":1190},{"type":55,"value":3055}," failure count, or clone URL\u002Fref).",{"type":49,"tag":121,"props":3057,"children":3058},{},[3059,3061,3067],{"type":55,"value":3060},"Toolchain prefix, resolution source, and ",{"type":49,"tag":71,"props":3062,"children":3064},{"className":3063},[],[3065],{"type":55,"value":3066},"${TC_PREFIX}gcc --version",{"type":55,"value":3068},"\nfirst line.",{"type":49,"tag":121,"props":3070,"children":3071},{},[3072,3074,3079,3081,3087],{"type":55,"value":3073},"Reminder that customize-* skills stage future BSP edits in\n",{"type":49,"tag":71,"props":3075,"children":3077},{"className":3076},[],[3078],{"type":55,"value":208},{"type":55,"value":3080},"; promote is what later copies\ncommitted overlay changes into ",{"type":49,"tag":71,"props":3082,"children":3084},{"className":3083},[],[3085],{"type":55,"value":3086},"bsp_image",{"type":55,"value":133},{"type":49,"tag":65,"props":3089,"children":3090},{},[3091],{"type":55,"value":3092},"If a downstream skill triggered this run, tell the user to re-issue\ntheir original request.",{"type":49,"tag":58,"props":3094,"children":3096},{"id":3095},"gotchas",[3097],{"type":55,"value":3098},"Gotchas",{"type":49,"tag":190,"props":3100,"children":3101},{},[3102,3126,3138,3188,3200,3273,3292,3318,3342,3367],{"type":49,"tag":121,"props":3103,"children":3104},{},[3105,3110,3111,3116,3118,3124],{"type":49,"tag":71,"props":3106,"children":3108},{"className":3107},[],[3109],{"type":55,"value":76},{"type":55,"value":1202},{"type":49,"tag":71,"props":3112,"children":3114},{"className":3113},[],[3115],{"type":55,"value":156},{"type":55,"value":3117}," mount paths are canonical.\n",{"type":49,"tag":71,"props":3119,"children":3121},{"className":3120},[],[3122],{"type":55,"value":3123},"path:",{"type":55,"value":3125}," applies only to extra user-defined repos.",{"type":49,"tag":121,"props":3127,"children":3128},{},[3129,3131,3136],{"type":55,"value":3130},"The default ",{"type":49,"tag":71,"props":3132,"children":3134},{"className":3133},[],[3135],{"type":55,"value":76},{"type":55,"value":3137}," tracker is intentionally empty; do not\npre-populate it.",{"type":49,"tag":121,"props":3139,"children":3140},{},[3141,3146,3148,3153,3154,3159,3161,3167,3168,3173,3174,3179,3181,3186],{"type":49,"tag":71,"props":3142,"children":3144},{"className":3143},[],[3145],{"type":55,"value":156},{"type":55,"value":3147}," precedence is ",{"type":49,"tag":71,"props":3149,"children":3151},{"className":3150},[],[3152],{"type":55,"value":294},{"type":55,"value":1480},{"type":49,"tag":71,"props":3155,"children":3157},{"className":3156},[],[3158],{"type":55,"value":302},{"type":55,"value":3160}," → auto-discovered\n",{"type":49,"tag":71,"props":3162,"children":3164},{"className":3163},[],[3165],{"type":55,"value":3166},"Downloads\u002Fpublic_sources.tbz2",{"type":55,"value":1480},{"type":49,"tag":71,"props":3169,"children":3171},{"className":3170},[],[3172],{"type":55,"value":1190},{"type":55,"value":1488},{"type":49,"tag":71,"props":3175,"children":3177},{"className":3176},[],[3178],{"type":55,"value":294},{"type":55,"value":3180}," and\n",{"type":49,"tag":71,"props":3182,"children":3184},{"className":3183},[],[3185],{"type":55,"value":302},{"type":55,"value":3187}," are mutually exclusive.",{"type":49,"tag":121,"props":3189,"children":3190},{},[3191,3193,3199],{"type":55,"value":3192},"Branch A auto-discovery does not prompt and is not written back to the\nprofile. Persist it only with ",{"type":49,"tag":71,"props":3194,"children":3196},{"className":3195},[],[3197],{"type":55,"value":3198},"source.repos.bsp_sources.archive:",{"type":55,"value":133},{"type":49,"tag":121,"props":3201,"children":3202},{},[3203,3216,3218,3223,3225,3231,3233,3239,3241,3247,3249,3255,3257,3263,3265,3271],{"type":49,"tag":401,"props":3204,"children":3205},{},[3206,3208,3214],{"type":55,"value":3207},"Branch A ",{"type":49,"tag":71,"props":3209,"children":3211},{"className":3210},[],[3212],{"type":55,"value":3213},"$DEST\u002FMakefile",{"type":55,"value":3215}," collision.",{"type":55,"value":3217}," Inner tarballs in\n",{"type":49,"tag":71,"props":3219,"children":3221},{"className":3220},[],[3222],{"type":55,"value":1238},{"type":55,"value":3224}," ship two files named ",{"type":49,"tag":71,"props":3226,"children":3228},{"className":3227},[],[3229],{"type":55,"value":3230},"Makefile",{"type":55,"value":3232},": the Tegra\norchestrator (",{"type":49,"tag":71,"props":3234,"children":3236},{"className":3235},[],[3237],{"type":55,"value":3238},"kernel_oot_modules_src.tbz2",{"type":55,"value":3240},") and the dGPU\u002FOpenRM\nproprietary Makefile (",{"type":49,"tag":71,"props":3242,"children":3244},{"className":3243},[],[3245],{"type":55,"value":3246},"nvidia_kernel_display_driver_source_without_ root_dir.tbz2",{"type":55,"value":3248},"). Alphabetical extraction order lets the dGPU one\nwin on R36.x; downstream arm64 cross-builds then fail with\n",{"type":49,"tag":71,"props":3250,"children":3252},{"className":3251},[],[3253],{"type":55,"value":3254},"'-mlittle-endian' unrecognized",{"type":55,"value":3256},". Step 3a force-replaces from\n",{"type":49,"tag":71,"props":3258,"children":3260},{"className":3259},[],[3261],{"type":55,"value":3262},"\u003Cbsp_image>\u002FLinux_for_Tegra\u002Fsource\u002FMakefile",{"type":55,"value":3264}," when the Tegra\n",{"type":49,"tag":71,"props":3266,"children":3268},{"className":3267},[],[3269],{"type":55,"value":3270},"modules: hwpm nvidia-oot nvgpu nvidia-display",{"type":55,"value":3272}," signature is\nmissing. R38+ extractions already match; the check is a no-op there.",{"type":49,"tag":121,"props":3274,"children":3275},{},[3276,3278,3283,3285,3291],{"type":55,"value":3277},"Branch C customer repos must expose the canonical ",{"type":49,"tag":71,"props":3279,"children":3281},{"className":3280},[],[3282],{"type":55,"value":1190},{"type":55,"value":3284},"\nsub-path layout, optionally shifted by ",{"type":49,"tag":71,"props":3286,"children":3288},{"className":3287},[],[3289],{"type":55,"value":3290},"subdir:",{"type":55,"value":133},{"type":49,"tag":121,"props":3293,"children":3294},{},[3295,3297,3302,3304,3309,3311,3316],{"type":55,"value":3296},"Derive the ",{"type":49,"tag":71,"props":3298,"children":3300},{"className":3299},[],[3301],{"type":55,"value":1190},{"type":55,"value":3303}," tag from ",{"type":49,"tag":71,"props":3305,"children":3307},{"className":3306},[],[3308],{"type":55,"value":1470},{"type":55,"value":3310}," as\n",{"type":49,"tag":71,"props":3312,"children":3314},{"className":3313},[],[3315],{"type":55,"value":1420},{"type":55,"value":3317}," first; never fall back to an unpinned latest.",{"type":49,"tag":121,"props":3319,"children":3320},{},[3321,3326,3328,3333,3335,3340],{"type":49,"tag":71,"props":3322,"children":3324},{"className":3323},[],[3325],{"type":55,"value":2102},{"type":55,"value":3327}," owns network downloads of ",{"type":49,"tag":71,"props":3329,"children":3331},{"className":3330},[],[3332],{"type":55,"value":1238},{"type":55,"value":3334},"\nand ",{"type":49,"tag":71,"props":3336,"children":3338},{"className":3337},[],[3339],{"type":55,"value":337},{"type":55,"value":3341},"; this skill consumes local archives only.",{"type":49,"tag":121,"props":3343,"children":3344},{},[3345,3350,3352,3358,3360,3366],{"type":49,"tag":71,"props":3346,"children":3348},{"className":3347},[],[3349],{"type":55,"value":169},{"type":55,"value":3351}," must be an NVIDIA Crosstool-NG prefix with trailing\ndash and a working ",{"type":49,"tag":71,"props":3353,"children":3355},{"className":3354},[],[3356],{"type":55,"value":3357},"${prefix}gcc",{"type":55,"value":3359},". Never silently use ",{"type":49,"tag":71,"props":3361,"children":3363},{"className":3362},[],[3364],{"type":55,"value":3365},"$PATH",{"type":55,"value":133},{"type":49,"tag":121,"props":3368,"children":3369},{},[3370],{"type":55,"value":3371},"Use a round-tripping YAML writer for profile edits.",{"type":49,"tag":58,"props":3373,"children":3375},{"id":3374},"prerequisites",[3376],{"type":55,"value":3377},"Prerequisites",{"type":49,"tag":190,"props":3379,"children":3380},{},[3381,3392,3416,3442],{"type":49,"tag":121,"props":3382,"children":3383},{},[3384,3386,3391],{"type":55,"value":3385},"Active target profile resolved per\n",{"type":49,"tag":71,"props":3387,"children":3389},{"className":3388},[],[3390],{"type":55,"value":386},{"type":55,"value":133},{"type":49,"tag":121,"props":3393,"children":3394},{},[3395,3400,3402,3407,3409,3414],{"type":49,"tag":71,"props":3396,"children":3398},{"className":3397},[],[3399],{"type":55,"value":429},{"type":55,"value":3401}," already run so ",{"type":49,"tag":71,"props":3403,"children":3405},{"className":3404},[],[3406],{"type":55,"value":1470},{"type":55,"value":3408}," is recorded\n(Branch B ",{"type":49,"tag":71,"props":3410,"children":3412},{"className":3411},[],[3413],{"type":55,"value":1190},{"type":55,"value":3415}," tag derives from it).",{"type":49,"tag":121,"props":3417,"children":3418},{},[3419,3421,3426,3428,3433,3435,3441],{"type":55,"value":3420},"For Branch A: a local ",{"type":49,"tag":71,"props":3422,"children":3424},{"className":3423},[],[3425],{"type":55,"value":1238},{"type":55,"value":3427}," (and optionally\n",{"type":49,"tag":71,"props":3429,"children":3431},{"className":3430},[],[3432],{"type":55,"value":337},{"type":55,"value":3434},") staged under ",{"type":49,"tag":71,"props":3436,"children":3438},{"className":3437},[],[3439],{"type":55,"value":3440},"Downloads\u002F",{"type":55,"value":133},{"type":49,"tag":121,"props":3443,"children":3444},{},[3445],{"type":55,"value":3446},"For Branch C: customer Git access to the override repo URL.",{"type":49,"tag":58,"props":3448,"children":3450},{"id":3449},"limitations",[3451],{"type":55,"value":3452},"Limitations",{"type":49,"tag":190,"props":3454,"children":3455},{},[3456,3497,3509],{"type":49,"tag":121,"props":3457,"children":3458},{},[3459,3461,3466,3468,3473,3475,3481,3482,3488,3490,3496],{"type":55,"value":3460},"Owns only the ",{"type":49,"tag":71,"props":3462,"children":3464},{"className":3463},[],[3465],{"type":55,"value":92},{"type":55,"value":3467}," block; never edits ",{"type":49,"tag":71,"props":3469,"children":3471},{"className":3470},[],[3472],{"type":55,"value":3086},{"type":55,"value":3474},",\n",{"type":49,"tag":71,"props":3476,"children":3478},{"className":3477},[],[3479],{"type":55,"value":3480},"reference_devkit",{"type":55,"value":358},{"type":49,"tag":71,"props":3483,"children":3485},{"className":3484},[],[3486],{"type":55,"value":3487},"custom_carrier",{"type":55,"value":3489},", or ",{"type":49,"tag":71,"props":3491,"children":3493},{"className":3492},[],[3494],{"type":55,"value":3495},"documents",{"type":55,"value":133},{"type":49,"tag":121,"props":3498,"children":3499},{},[3500,3502,3507],{"type":55,"value":3501},"Network egress only for Branch B (",{"type":49,"tag":71,"props":3503,"children":3505},{"className":3504},[],[3506],{"type":55,"value":1190},{"type":55,"value":3508},") and Branch C\n(customer Git clone); Branch A is fully offline.",{"type":49,"tag":121,"props":3510,"children":3511},{},[3512],{"type":55,"value":3513},"Refuses to silently substitute a system toolchain — the NVIDIA\nCrosstool-NG prefix must be present or extractable.",{"type":49,"tag":58,"props":3515,"children":3517},{"id":3516},"troubleshooting",[3518],{"type":55,"value":3519},"Troubleshooting",{"type":49,"tag":190,"props":3521,"children":3522},{},[3523,3553,3589,3605],{"type":49,"tag":121,"props":3524,"children":3525},{},[3526,3537,3539,3544,3546,3551],{"type":49,"tag":401,"props":3527,"children":3528},{},[3529,3535],{"type":49,"tag":71,"props":3530,"children":3532},{"className":3531},[],[3533],{"type":55,"value":3534},"${toolchain}gcc",{"type":55,"value":3536}," not found",{"type":55,"value":3538}," — re-stage ",{"type":49,"tag":71,"props":3540,"children":3542},{"className":3541},[],[3543],{"type":55,"value":337},{"type":55,"value":3545}," under\n",{"type":49,"tag":71,"props":3547,"children":3549},{"className":3548},[],[3550],{"type":55,"value":3440},{"type":55,"value":3552}," and rerun, or pass a verified absolute prefix path.",{"type":49,"tag":121,"props":3554,"children":3555},{},[3556,3573,3575,3580,3582,3587],{"type":49,"tag":401,"props":3557,"children":3558},{},[3559,3564,3566,3571],{"type":49,"tag":71,"props":3560,"children":3562},{"className":3561},[],[3563],{"type":55,"value":1190},{"type":55,"value":3565}," cannot resolve ",{"type":49,"tag":71,"props":3567,"children":3569},{"className":3568},[],[3570],{"type":55,"value":1420},{"type":55,"value":3572}," tag",{"type":55,"value":3574}," — the\nrecorded ",{"type":49,"tag":71,"props":3576,"children":3578},{"className":3577},[],[3579],{"type":55,"value":1470},{"type":55,"value":3581}," is wrong; re-run ",{"type":49,"tag":71,"props":3583,"children":3585},{"className":3584},[],[3586],{"type":55,"value":429},{"type":55,"value":3588},"\nto refresh it.",{"type":49,"tag":121,"props":3590,"children":3591},{},[3592,3603],{"type":49,"tag":401,"props":3593,"children":3594},{},[3595,3601],{"type":49,"tag":71,"props":3596,"children":3598},{"className":3597},[],[3599],{"type":55,"value":3600},"Linux_for_Tegra\u002F.git",{"type":55,"value":3602}," shows uncommitted hand-edits",{"type":55,"value":3604}," — abort and\nask the user to commit or stash; this skill expects a clean tracker.",{"type":49,"tag":121,"props":3606,"children":3607},{},[3608,3613,3615,3620,3622,3627,3629,3634],{"type":49,"tag":401,"props":3609,"children":3610},{},[3611],{"type":55,"value":3612},"Branch C clone missing canonical sub-paths",{"type":55,"value":3614}," — repo layout doesn't\nmatch ",{"type":49,"tag":71,"props":3616,"children":3618},{"className":3617},[],[3619],{"type":55,"value":1190},{"type":55,"value":3621},"; set ",{"type":49,"tag":71,"props":3623,"children":3625},{"className":3624},[],[3626],{"type":55,"value":3290},{"type":55,"value":3628}," to the right sub-root or fall\nback to multi-repo overrides under ",{"type":49,"tag":71,"props":3630,"children":3632},{"className":3631},[],[3633],{"type":55,"value":181},{"type":55,"value":133},{"type":49,"tag":58,"props":3636,"children":3638},{"id":3637},"references",[3639],{"type":55,"value":3640},"References",{"type":49,"tag":190,"props":3642,"children":3643},{},[3644,3672,3685,3700,3714],{"type":49,"tag":121,"props":3645,"children":3646},{},[3647,3656,3658,3663,3665,3670],{"type":49,"tag":243,"props":3648,"children":3650},{"href":3649},"..\u002F..\u002Freferences\u002Fplatform_template.yaml",[3651],{"type":49,"tag":71,"props":3652,"children":3654},{"className":3653},[],[3655],{"type":55,"value":3649},{"type":55,"value":3657}," — ",{"type":49,"tag":71,"props":3659,"children":3661},{"className":3660},[],[3662],{"type":55,"value":92},{"type":55,"value":3664}," schema, including the ",{"type":49,"tag":71,"props":3666,"children":3668},{"className":3667},[],[3669],{"type":55,"value":2643},{"type":55,"value":3671}," map.",{"type":49,"tag":121,"props":3673,"children":3674},{},[3675,3683],{"type":49,"tag":243,"props":3676,"children":3677},{"href":386},[3678],{"type":49,"tag":71,"props":3679,"children":3681},{"className":3680},[],[3682],{"type":55,"value":386},{"type":55,"value":3684}," — target-platform contract.",{"type":49,"tag":121,"props":3686,"children":3687},{},[3688,3698],{"type":49,"tag":243,"props":3689,"children":3691},{"href":3690},"..\u002F..\u002Fcontext\u002Fbsp-customization-workflow.md#workflow-invariants",[3692],{"type":49,"tag":71,"props":3693,"children":3695},{"className":3694},[],[3696],{"type":55,"value":3697},"..\u002F..\u002Fcontext\u002Fbsp-customization-workflow.md",{"type":55,"value":3699}," — Workspace edit protocol.",{"type":49,"tag":121,"props":3701,"children":3702},{},[3703,3712],{"type":49,"tag":243,"props":3704,"children":3706},{"href":3705},"..\u002Fjetson-init-target\u002FSKILL.md",[3707],{"type":49,"tag":71,"props":3708,"children":3710},{"className":3709},[],[3711],{"type":55,"value":3705},{"type":55,"value":3713}," — authors the profile this skill consumes.",{"type":49,"tag":121,"props":3715,"children":3716},{},[3717,3726,3728,3733],{"type":49,"tag":243,"props":3718,"children":3720},{"href":3719},"..\u002Fjetson-init-image\u002FSKILL.md",[3721],{"type":49,"tag":71,"props":3722,"children":3724},{"className":3723},[],[3725],{"type":55,"value":3719},{"type":55,"value":3727}," — extracts the BSP and back-fills ",{"type":49,"tag":71,"props":3729,"children":3731},{"className":3730},[],[3732],{"type":55,"value":1470},{"type":55,"value":3734},"; run before this skill.",{"type":49,"tag":3736,"props":3737,"children":3738},"style",{},[3739],{"type":55,"value":3740},"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":3742,"total":3901},[3743,3761,3779,3790,3802,3816,3829,3843,3856,3867,3881,3890],{"slug":3744,"name":3744,"fn":3745,"description":3746,"org":3747,"tags":3748,"stars":3758,"repoUrl":3759,"updatedAt":3760},"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},[3749,3752,3755],{"name":3750,"slug":3751,"type":15},"Documentation","documentation",{"name":3753,"slug":3754,"type":15},"MCP","mcp",{"name":3756,"slug":3757,"type":15},"Search","search",21777,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FNemoClaw","2026-07-20T06:00:01.461044",{"slug":3762,"name":3762,"fn":3763,"description":3764,"org":3765,"tags":3766,"stars":3776,"repoUrl":3777,"updatedAt":3778},"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},[3767,3770,3773],{"name":3768,"slug":3769,"type":15},"Containers","containers",{"name":3771,"slug":3772,"type":15},"Deployment","deployment",{"name":3774,"slug":3775,"type":15},"Python","python",17049,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM","2026-07-27T06:06:11.249662",{"slug":3780,"name":3780,"fn":3781,"description":3782,"org":3783,"tags":3784,"stars":3776,"repoUrl":3777,"updatedAt":3789},"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},[3785,3788],{"name":3786,"slug":3787,"type":15},"CI\u002FCD","ci-cd",{"name":3771,"slug":3772,"type":15},"2026-07-14T05:25:59.97109",{"slug":3791,"name":3791,"fn":3792,"description":3793,"org":3794,"tags":3795,"stars":3776,"repoUrl":3777,"updatedAt":3801},"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},[3796,3797,3798],{"name":3786,"slug":3787,"type":15},{"name":3771,"slug":3772,"type":15},{"name":3799,"slug":3800,"type":15},"GitHub","github","2026-07-27T06:06:12.278222",{"slug":3803,"name":3803,"fn":3804,"description":3805,"org":3806,"tags":3807,"stars":3776,"repoUrl":3777,"updatedAt":3815},"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},[3808,3811,3812],{"name":3809,"slug":3810,"type":15},"Debugging","debugging",{"name":3799,"slug":3800,"type":15},{"name":3813,"slug":3814,"type":15},"Triage","triage","2026-07-14T05:25:57.442089",{"slug":3817,"name":3817,"fn":3818,"description":3819,"org":3820,"tags":3821,"stars":3776,"repoUrl":3777,"updatedAt":3828},"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},[3822,3825],{"name":3823,"slug":3824,"type":15},"Best Practices","best-practices",{"name":3826,"slug":3827,"type":15},"Code Analysis","code-analysis","2026-07-14T05:25:56.18433",{"slug":3830,"name":3830,"fn":3831,"description":3832,"org":3833,"tags":3834,"stars":3776,"repoUrl":3777,"updatedAt":3842},"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},[3835,3838,3841],{"name":3836,"slug":3837,"type":15},"Machine Learning","machine-learning",{"name":3839,"slug":3840,"type":15},"Migration","migration",{"name":9,"slug":8,"type":15},"2026-07-17T06:07:11.777011",{"slug":3844,"name":3844,"fn":3845,"description":3846,"org":3847,"tags":3848,"stars":3776,"repoUrl":3777,"updatedAt":3855},"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},[3849,3852],{"name":3850,"slug":3851,"type":15},"QA","qa",{"name":3853,"slug":3854,"type":15},"Testing","testing","2026-07-14T05:25:53.673039",{"slug":3857,"name":3857,"fn":3858,"description":3859,"org":3860,"tags":3861,"stars":3776,"repoUrl":3777,"updatedAt":3866},"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},[3862,3863],{"name":3771,"slug":3772,"type":15},{"name":3864,"slug":3865,"type":15},"Infrastructure","infrastructure","2026-07-14T05:25:49.362534",{"slug":3868,"name":3868,"fn":3869,"description":3870,"org":3871,"tags":3872,"stars":3776,"repoUrl":3777,"updatedAt":3880},"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},[3873,3876,3877],{"name":3874,"slug":3875,"type":15},"Code Review","code-review",{"name":3799,"slug":3800,"type":15},{"name":3878,"slug":3879,"type":15},"Pull Requests","pull-requests","2026-07-14T05:26:01.226578",{"slug":3882,"name":3882,"fn":3883,"description":3884,"org":3885,"tags":3886,"stars":3776,"repoUrl":3777,"updatedAt":3889},"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},[3887,3888],{"name":3850,"slug":3851,"type":15},{"name":3853,"slug":3854,"type":15},"2026-07-14T05:25:54.928983",{"slug":3891,"name":3891,"fn":3892,"description":3893,"org":3894,"tags":3895,"stars":3776,"repoUrl":3777,"updatedAt":3900},"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},[3896,3899],{"name":3897,"slug":3898,"type":15},"Automation","automation",{"name":3786,"slug":3787,"type":15},"2026-07-30T05:29:03.275638",496,{"items":3903,"total":3999},[3904,3921,3931,3945,3955,3970,3985],{"slug":3905,"name":3905,"fn":3906,"description":3907,"org":3908,"tags":3909,"stars":22,"repoUrl":23,"updatedAt":3920},"accelerated-computing-cudf","accelerate data processing with cuDF","Official NVIDIA-authored guidance for NVIDIA cuDF GPU DataFrames, pandas acceleration, dask-cuDF, ETL, joins, groupby, CSV\u002FParquet I\u002FO, nullable semantics, and multi-GPU DataFrame workloads.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3910,3913,3916,3917],{"name":3911,"slug":3912,"type":15},"Data Analysis","data-analysis",{"name":3914,"slug":3915,"type":15},"Data Engineering","data-engineering",{"name":9,"slug":8,"type":15},{"name":3918,"slug":3919,"type":15},"Performance","performance","2026-07-14T05:28:43.176466",{"slug":3922,"name":3922,"fn":3923,"description":3924,"org":3925,"tags":3926,"stars":22,"repoUrl":23,"updatedAt":3930},"aiq-deploy","deploy and manage NVIDIA AI-Q infrastructure","Use when asked to install, deploy, run, validate, troubleshoot, or stop NVIDIA AI-Q Blueprint infrastructure.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3927,3928,3929],{"name":3771,"slug":3772,"type":15},{"name":3864,"slug":3865,"type":15},{"name":9,"slug":8,"type":15},"2026-07-14T05:29:06.667109",{"slug":3932,"name":3932,"fn":3933,"description":3934,"org":3935,"tags":3936,"stars":22,"repoUrl":23,"updatedAt":3944},"aiq-research","conduct deep research with AI-Q","Use when asked to run deep research or AI-Q research through a reachable NVIDIA AI-Q Blueprint backend.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3937,3940,3941],{"name":3938,"slug":3939,"type":15},"Agents","agents",{"name":9,"slug":8,"type":15},{"name":3942,"slug":3943,"type":15},"Research","research","2026-07-14T05:28:06.816956",{"slug":3946,"name":3946,"fn":3947,"description":3948,"org":3949,"tags":3950,"stars":22,"repoUrl":23,"updatedAt":3954},"amc-run-sample-calibration","run AMC sample dataset calibration","Run end-to-end calibration on the shipped sample dataset (sdg_08_2_sample_data_010926.zip) against a running AMC microservice. Use when user says 'test sample dataset', 'run sample calibration', 'verify AMC install', or 'launch and test'.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3951,3952,3953],{"name":3911,"slug":3912,"type":15},{"name":9,"slug":8,"type":15},{"name":3853,"slug":3854,"type":15},"2026-07-17T05:29:03.913266",{"slug":3956,"name":3956,"fn":3957,"description":3958,"org":3959,"tags":3960,"stars":22,"repoUrl":23,"updatedAt":3969},"amc-run-video-calibration","calibrate video datasets with AutoMagicCalib","Calibrate a new dataset from pre-recorded video files via the AutoMagicCalib REST API. Use when user has local MP4s and says 'calibrate my videos', 'run AMC on these videos', or similar. For RTSP\u002Flive streams, use amc-run-rtsp-calibration instead.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3961,3962,3965,3966],{"name":3897,"slug":3898,"type":15},{"name":3963,"slug":3964,"type":15},"Imaging","imaging",{"name":9,"slug":8,"type":15},{"name":3967,"slug":3968,"type":15},"Video","video","2026-07-17T05:28:53.905004",{"slug":3971,"name":3971,"fn":3972,"description":3973,"org":3974,"tags":3975,"stars":22,"repoUrl":23,"updatedAt":3984},"amc-setup-calibration-stack","deploy AutoMagicCalib microservice with Docker","Launch AutoMagicCalib microservice and web UI from NGC release images via Docker Compose. Use when user says 'deploy auto calibration', 'launch auto calibration', 'launch AMC', 'start MS+UI', or 'set up auto-magic-calib'. Requires NGC API key.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3976,3977,3980,3981],{"name":3771,"slug":3772,"type":15},{"name":3978,"slug":3979,"type":15},"Docker","docker",{"name":9,"slug":8,"type":15},{"name":3982,"slug":3983,"type":15},"Operations","operations","2026-07-17T05:28:56.913999",{"slug":3986,"name":3986,"fn":3987,"description":3988,"org":3989,"tags":3990,"stars":22,"repoUrl":23,"updatedAt":3998},"cudaq-guide","develop quantum applications with CUDA-Q","CUDA-Q onboarding guide for installation, test programs, GPU simulation, QPU hardware, and quantum applications.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3991,3992,3995],{"name":9,"slug":8,"type":15},{"name":3993,"slug":3994,"type":15},"Quantum Computing","quantum-computing",{"name":3996,"slug":3997,"type":15},"Simulation","simulation","2026-07-14T05:26:58.898253",305]