[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-nvidia-jetson-derive-carrier":3,"mdc--307q5e-key":28,"related-org-nvidia-jetson-derive-carrier":2532,"related-repo-nvidia-jetson-derive-carrier":2693},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":17,"repoUrl":18,"updatedAt":19,"license":20,"forks":21,"topics":22,"repo":23,"sourceUrl":26,"mdContent":27},"jetson-derive-carrier","bootstrap custom Jetson carrier boards","Bootstrap a custom carrier board by forking carrier files and scaffolding a DT overlay from the reference devkit. Use after jetson-init-source; not for module-level or kernel-DTB changes.",{"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],{"name":13,"slug":14,"type":15},"Hardware","hardware","tag",{"name":9,"slug":8,"type":15},2473,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fskills","2026-07-14T05:26:28.913329","Apache-2.0",281,[],{"repoUrl":18,"stars":17,"forks":21,"topics":24,"description":25},[],"AI agent skills published by NVIDIA","https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fskills\u002Ftree\u002FHEAD\u002Fskills\u002Fjetson-derive-carrier","---\nname: jetson-derive-carrier\ndescription: >-\n  Bootstrap a custom carrier board by forking carrier files and\n  scaffolding a DT overlay from the reference devkit. Use after\n  jetson-init-source; not for module-level or kernel-DTB changes.\nversion: 0.0.1\nlicense: \"Apache-2.0\"\nmetadata:\n  data-classification: public\n  author: \"Jetson Team\"\n  tags:\n    - target-platform\n    - custom-carrier\n    - bring-up\n    - setup\n  domain: meta\n---\n\n# jetson-derive-carrier\n\nCustomize first-run gate for any `customize-*` skill on a custom\ncarrier. Resolve the active target per\n[`target-platform-contract.md`](..\u002F..\u002Fcontext\u002Ftarget-platform-contract.md).\n**Refuse** if no `custom_carrier:` block, or if\n`\u003Csource.root_path>\u002FLinux_for_Tegra\u002F.git` is missing\n(`jetson-init-source` first). Template file create\u002Fcopy rows land in a\nsingle overlay-tracker commit and copy **directly** to the\ncustom-carrier-renamed target path — reference-named pristine files\nare never staged (see [Fork plan](#fork-plan) for the local rule, which\noverrides the standard pristine + customization split from the\n[workflow](..\u002F..\u002Fcontext\u002Fbsp-customization-workflow.md#commit-batching-in-the-overlay-tracker));\nconf-chain discovery follows\n[per-board conf dispatch](..\u002F..\u002Fcontext\u002Fbsp-customization-software-layers.md#per-board-conf-dispatch--update_flash_args_common).\nKernel base DTB is **not** forked — carrier deltas layer as a DT\noverlay wired via `OVERLAY_DTB_FILE`.\n\n**Identifiers** (from active profile): `\u003Cchip>` from\n`reference_devkit.module.id` via\n[catalogue](..\u002F..\u002Freferences\u002Fbsp-platforms-catalogue.md) (unknown →\nwarn, fallback `tegra234`); `\u003Cmodule-id>`\u002F`\u003Cmodule-sku>` from\n`reference_devkit.module`; `\u003Ccarrier-id>`\u002F`\u003Ccarrier-sku>` from\n`reference_devkit.carrier`; `\u003Ccustom-id>`\u002F`\u003Ccustom-sku>`\u002F\n`\u003Ccustom-flash-conf>` from `custom_carrier`. `\u003Creal-conf>` =\n`readlink \u003Cbsp_image.root_path>\u002FLinux_for_Tegra\u002F\u003Creference_devkit.flash_config>`\n(NVIDIA convention `\u003Cdevkit>.conf` → `\u003Ccarrier>-\u003Cmodule>-a\u003Crev>.conf`;\nwarn + treat top-level as real + skip symlink-wrapper row if not a\nsymlink).\n\n`\u003Ccustom-id>` is a custom carrier board token, not necessarily an\nNVIDIA-style `pNNNN` ID. Use it verbatim in dash-form filenames and DT\ncompatible strings. When a target file family uses p-stripped numeric\ntokens, derive `\u003Ccustom-id-file-token>` as `NNNN` only if `\u003Ccustom-id>`\nmatches `^p[0-9]{4}$`; otherwise use `\u003Ccustom-id>` unchanged. Do not\nreject custom carrier IDs merely because they do not start with `p`.\n\n## Instructions\n\nThe fork plan below is the instruction set: one discovery pass, then a\nrow-by-row fork of the per-board fileset, gated by the commit-message\npreview before each `git commit`.\n\n### Fork plan\n\nEvery `git commit` produced by this skill — in the overlay tracker\n(`Linux_for_Tegra\u002F`) or the `hardware\u002F` source repo — runs through\nthe\n[commit message preview gate](..\u002F..\u002Fcontext\u002Fbsp-customization-workflow.md#commit-message-preview-gate).\nSurface the staged file list + proposed message to the operator\nand require accept \u002F edit \u002F cancel before each `git commit`; on\n**cancel** leave the index staged for manual resolution.\n\n**Materialize renamed forks even when bytes do not change.** For every\naccepted fork-plan row, create and track the custom-carrier target path;\ndo not skip a missing target because the fork is only a rename\u002Fcopy or is\nbyte-identical to the reference. This includes BCT forks such as pinmux,\nGPIO\u002FGPIOINT, padvoltage\u002FPMC, misc, and MB2 misc. Skip only when the\nAcceptance column allows it, the source is an explicit warn-and-skip\nmiss, or the expected target path is already tracked; in the last case,\nreport it as already derived and do not create an empty commit.\n\n**Template file create\u002Fcopy rows squash into one overlay-tracker\ncommit, and reference-named pristine files are never staged.** All\nrows that materialize a new (template-derived) file in the overlay\ntracker — board flash-conf, flash-conf symlink, MB1 BCT (pinmux,\nGPIO\u002FGPIOINT, padvoltage\u002FPMC, misc), MB2 BCT (misc), BPMP DTB (when\nopted in), nvpmodel, nvfancontrol — copy **directly** from\n`\u003Cbsp_image.root_path>\u002FLinux_for_Tegra\u002F\u003Crel>\u002F\u003Creference-name>` to\n`\u003Csource.root_path>\u002FLinux_for_Tegra\u002F\u003Crel>\u002F\u003Ccustom-name>` with any\ncontent edits applied before staging. The reference-named\n(`\u003Ccarrier-id>-\u003Ccarrier-sku>`-keyed) filename is never staged or\ncommitted in the overlay tracker — only the custom-carrier-renamed\nfile is tracked. This overrides the standard pristine + customization\nsplit from\n[commit batching](..\u002F..\u002Fcontext\u002Fbsp-customization-workflow.md#commit-batching-in-the-overlay-tracker).\nAll such rows land in a **single** overlay-tracker commit that adds:\n(i) the custom-carrier-named files at their target paths with content\nalready applied, (ii) the flash-conf symlink, and (iii) the targeted\nflash-conf content rewrites inside the renamed flash-conf for\n`PINMUX_CONFIG` \u002F `GPIO_CONFIG` \u002F `GPIOINT_CONFIG` \u002F `PMC_CONFIG` \u002F\n`MISC_CONFIG` \u002F `MB2_BCT` (plus `BPFDTB_FILE` when BPMP DTB is opted\nin). Rows that edit existing upstream files instead of creating\ntemplates — the `nvpower.sh` patch — and the overlay wire-up\n(`OVERLAY_DTB_FILE+=` append to the just-created flash-conf fork,\ntreated as a temporally distinct phase per\n[commit batching](..\u002F..\u002Fcontext\u002Fbsp-customization-workflow.md#commit-batching-in-the-overlay-tracker))\nremain separate commits per their own rows. The DT overlay skeleton\ncommits in `bsp_sources\u002Fhardware\u002F`, not the overlay tracker, so it is\nunaffected. The commit message preview gate fires once on the\nsquashed commit; warn-and-skipped rows do not contribute, and if every\nrow in the bundle is already tracked the commit is omitted entirely.\n\n### Discovery (single batched pass)\n\nRun **one** discovery pass; do not interleave with staging. **Do not\ntruncate listings** — every candidate filename in each scanned\ndirectory must be visible to the matcher. `head`, `tail`, `| head -N`,\n`| tail -N`, and any other row-limiting filter are out of bounds for\nthis step; use `ls -1` \u002F `find` unclipped, or grep on the full output.\nTruncating risks false warn-and-skip calls when the matching file\nsits past the cutoff. Capture:\n\n- Flash-conf vars: `DTB_FILE` \u002F `TBCDTB_FILE` \u002F `BPFDTB_FILE` \u002F\n  `PINMUX_CONFIG` \u002F `PMC_CONFIG` \u002F `GPIO_CONFIG` \u002F `GPIOINT_CONFIG`.\n  `DTB_FILE` \u002F `TBCDTB_FILE` are captured for **reference only** so\n  the overlay wire-up can derive `\u003Cdtb-stem>` for the overlay\n  filename — they are never rewritten by this skill.\n- BCT `.dts` at `bootloader\u002Fgeneric\u002FBCT\u002F`; `.dtsi` siblings live\n  **one level up at `bootloader\u002F`** — NOT alongside.\n- nvpmodel: `nvpmodel_\u003Cmodule-id>_\u003Cmodule-sku>*.conf`. nvfancontrol:\n  `nvfancontrol_\u003Cmodule-id>_\u003Cmodule-sku>_\u003Ccarrier-id>_\u003Ccarrier-sku>.conf`.\n- `nvpower.sh` anchors for (a)–(d): `\u003Ccarrier-id>` cvb branch,\n  `\u003Cmodule-id>-\u003Cmodule-sku>` SKU `elif`, `tegra\u003Cchip>` nvpmodel\n  cascade, `tegra\u003Cchip>` nvfancontrol cascade.\n\n| File \u002F category | Discovery | Acceptance | Fork rule |\n|---|---|---|---|\n| Board flash conf | `\u003Creal-conf>` | Always | Filename sub `\u003Ccarrier-id>-\u003Ccarrier-sku>` → `\u003Ccustom-id>-\u003Ccustom-sku>`. Content sub is **targeted, not blanket**: rewrite RHS only for vars whose file this skill forks — `PINMUX_CONFIG`, `PMC_CONFIG`, `GPIO_CONFIG` \u002F `GPIOINT_CONFIG`, `MISC_CONFIG`, `MB2_BCT`. Other carrier-keyed vars (`DTB_FILE`, `TBCDTB_FILE`, `SCR_CONFIG`, `PMIC_CONFIG`, `DEVICEPROD_CONFIG`, `PROD_CONFIG`, `MINRATCHET_CONFIG`, `UPHY_CONFIG`, dynamic `OVERLAY_DTB_FILE+=`) MUST stay at reference values — their files aren't forked here and a blanket `sed` would point them at nonexistent files. `DTB_FILE` \u002F `TBCDTB_FILE` specifically: base DTB is not forked; the overlay row appends a new `OVERLAY_DTB_FILE+=` line instead. `BPFDTB_FILE`: opt-in extra commit. Never touch `\u003Cchip>`, `\u003Cmodule-id>`, `xxxx`. |\n| Flash-conf symlink | Unconditional | Always (skip if `\u003Creal-conf>` not a symlink) | New symlink `\u003Ccustom-flash-conf>` → flash-conf fork |\n| MB1 BCT pinmux | `PINMUX_CONFIG` + `#include` follow ¶ | Always | Rename rule † |\n| MB1 BCT GPIO | `GPIO_CONFIG`\u002F`GPIOINT_CONFIG` + `#include` follow ¶ | Always | Rename rule † |\n| MB1 BCT padvoltage | `PMC_CONFIG` + `#include` follow ¶ | Always | Rename rule † |\n| MB1 BCT misc | `MISC_CONFIG` + `#include` follow ¶ | Always | Rename rule † |\n| MB2 BCT misc | `MB2_BCT` + `#include` follow ¶ | Always | Rename rule † |\n| Kernel DTB + source DTS | (reference only — see header) | Never forked | Base DTB stays at reference. No pristine binary copy in the overlay tracker; no source DTS fork in `bsp_sources\u002Fhardware\u002F`. Carrier deltas live entirely in the DT overlay (next row). |\n| DT overlay skeleton (NEW) | Unconditional | Always | Create `\u003Csource.root_path>\u002Fhardware\u002Fnvidia\u002F\u003Cchip>\u002Fnv-public\u002Foverlay\u002F\u003Cchip>-\u003Ccustom-id>-\u003Ccustom-sku>+\u003Cmodule-id>-\u003Cmodule-sku>.dts` (skeleton ‡); commit in `hardware\u002F`, push to origin |\n| Per-dir Makefile registration | `\u003Csource.root_path>\u002Fbsp_sources\u002Fhardware\u002Fnvidia\u002F\u003Cchip>\u002Fnv-public\u002Foverlay\u002FMakefile` | Always | Append `dtbo-y += \u003Cchip>-\u003Ccustom-id>-\u003Ccustom-sku>+\u003Cmodule-id>-\u003Cmodule-sku>.dtbo` after the **last literal-named** `dtbo-y +=` entry (BEFORE the `$(addprefix $(makefile-path)\u002F,$(dtbo-y))` prefix block — inserting after `dtbo-y += $(old-dtbo)` silently drops the .dtbo). Same position-sensitive idiom and snippet as the composite slot's Makefile patch in [`..\u002Fjetson-build-source\u002Freferences\u002Fcomposite-registration.md#makefile-patch-idempotent-position-sensitive`](..\u002Fjetson-build-source\u002Freferences\u002Fcomposite-registration.md#makefile-patch-idempotent-position-sensitive). Commit in `hardware\u002F`. Without this row, `nvidia-dtbs` never produces the `.dtbo` referenced by the next row's `OVERLAY_DTB_FILE+=` line and `flash.sh` aborts mid-flash on the missing file. |\n| Overlay wire-up | Unconditional | Always | Append `OVERLAY_DTB_FILE+=\",\u003Cchip>-\u003Ccustom-id>-\u003Ccustom-sku>+\u003Cmodule-id>-\u003Cmodule-sku>.dtbo\"` to flash-conf fork (extra commit) |\n| nvpmodel config | `rootfs\u002Fetc\u002Fnvpmodel\u002Fnvpmodel_\u003Cmodule-id-num>_\u003Cmodule-sku>.conf` | Always | Filename: append `_\u003Ccustom-id-file-token>_\u003Ccustom-sku>` |\n| nvfancontrol config | `rootfs\u002Fetc\u002Fnvpower\u002Fnvfancontrol\u002Fnvfancontrol_\u003Cmodule-id-num>_\u003Cmodule-sku>_\u003Ccarrier-id-num>_\u003Ccarrier-sku>.conf` | Always | Filename: substitute carrier portion (append `_\u003Ccustom-id-file-token>_\u003Ccustom-sku>` if source is module-keyed only) |\n| `nvpower.sh` patch | `rootfs\u002Fetc\u002Fsystemd\u002Fnvpower.sh` | Always | Pristine + single customization commit with 4 insertions: (a) cvb cascade `elif [[ \"${machine}\" =~ \"\u003Ccustom-id>\" ]]; then cvb=\"\u003Ccustom-id-file-token>\"` before reference; (b) inside module-SKU branch set `machine=\"\u003Cmodule-id>-\u003Cmodule-sku>-\u003Ccustom-id>-\u003Ccustom-sku>\"`; (c) nvpmodel cascade branch for composite machine key → `conf_file=` nvpmodel fork; (d) cvb-keyed nvfancontrol cascade branch → `conf_file=` nvfancontrol fork |\n| BPMP DTB | prebuilt at `bootloader\u002Fgeneric\u002F\u003CBPFDTB_FILE>` (alt naming: no `p` prefix, `xxxx` SKU) | **Opt-in** y\u002FN, default N — module-level, usually shared with reference | Fork binary: pristine + filename sub `-\u003Ccarrier-id-num>-` → `-\u003Ccustom-id-file-token>-` (content unchanged). Extra commit on flash-conf fork rewriting `BPFDTB_FILE` to the renamed binary. |\n\n¶ **`#include` follow.** Scan each captured `.dts` for `#include\n\"...\"` directives **anywhere** in the file (NVIDIA BSPs put them\ninside BCT node bodies); carrier-keyed includes join the fork list.\nStop at one level.\n\n† **Rename rule.** Carrier-keyed source (e.g.\n`…-p3834-xxxx-p4071-0000.dts`) → filename sub\n`\u003Ccarrier-id>-\u003Ccarrier-sku>` → `\u003Ccustom-id>-\u003Ccustom-sku>`; rewrite the\nflash-conf variable (e.g. `PINMUX_CONFIG`) to the renamed filename in\nthe same customization commit. **Module portion is preserved\nverbatim from pristine** — if pristine has `p3834-xxxx`, fork keeps\n`p3834-xxxx`; if pristine has `p3834-0008`, fork keeps `p3834-0008`.\nNever pin module-SKU on your own. Same rule for any other `xxxx`\nwildcard in the carrier-SKU position when pristine uses it (e.g.\n`p4071-xxxx` → `p1234-xxxx`). Module-keyed\nsource (e.g. `…-p3767-dp-a03.dtsi`) → append\n`_\u003Ccustom-id-file-token>_\u003Ccustom-sku>` (underscore-form) or\n`-\u003Ccustom-id>-\u003Ccustom-sku>` (dash-form) **plus** an extra commit on\nflash-conf fork rewriting the variable (e.g. `PINMUX_CONFIG`) to the\nsuffixed name. Content never substituted by default; prompt if\ncontent holds a literal carrier-id-sku self-reference.\n\n‡ **Overlay skeleton.** DT plugin overlay (`\u002Fplugin\u002F;`) with one\n`fragment@0` at `target-path = \"\u002F\"`; inside `__overlay__` set\n`model = \"\u003Ccustom_carrier.name> carrier board\"` and `compatible =\n\"nvidia,\u003Ccustom-id>-\u003Ccustom-sku>+\u003Cmodule-id>-\u003Cmodule-sku>\",\n\"nvidia,\u003Cchip>\"`. `nvpower.sh` machine narrowing reads `compatible`.\n\n### Edit verification\n\nRe-grep after every `sed` \u002F patch. `sed` silently no-ops on miss;\nexit code 0 proves nothing. Multi-line replacements: use Python\n`str.replace(old, new)`, not multi-line `sed` (brittle to whitespace\ndrift, silent no-ops). Refuse to commit on verification miss.\n\n**Summary.** Print forks per repo (count + commit SHAs), BPMP-DTB\ndecision, warn-and-skipped rows (mandatory source file missing on\nthis BSP — don't fail the run), overlay path written.\n\n## Examples\n\nTrigger phrases the operator might use:\n\n```text\nderive custom carrier\nbootstrap custom carrier\nfork carrier board from reference devkit\n```\n\nMinimal `custom_carrier:` block in the active profile that the skill\nexpects to find:\n\n```yaml\ncustom_carrier:\n  id: p1234            # any token; need not be NVIDIA pNNNN style\n  sku: 0000\n  flash_config: p1234.conf\n  name: Acme Custom Carrier\n```\n\n## Purpose\n\nCustomize the per-board fileset for a new carrier board so downstream\n`customize-*` skills, `nvpower.sh`, and the boot chain land on the\ncustom carrier instead of the reference devkit. Base DTB stays at the\nreference; carrier deltas live in a DT overlay so a re-derive against\na new reference BSP only needs to re-run this skill.\n\n## Prerequisites\n\n- Active profile resolved per\n  [`target-platform-contract.md`](..\u002F..\u002Fcontext\u002Ftarget-platform-contract.md)\n  with a `custom_carrier:` block (id, sku, flash-conf, friendly name).\n- `source.root_path\u002FLinux_for_Tegra\u002F.git` initialized — run\n  `\u002Fjetson-init-source` first; this skill refuses if the overlay\n  tracker is missing.\n- `bsp_image.root_path` populated by `\u002Fjetson-init-image` so the\n  reference flash-conf symlink can be resolved.\n- `reference_devkit:` populated (module + carrier) so the rename rule\n  has carrier-id\u002Fsku tokens to substitute away from.\n\n## Limitations\n\n- Kernel base DTB and its source DTS are **not** forked — carrier\n  deltas must layer through the DT overlay wired via\n  `OVERLAY_DTB_FILE`.\n- BPMP DTB fork is opt-in (default OFF). Most carrier swaps share the\n  reference BPMP DTB; only opt in when board power\u002Fclock topology\n  diverges.\n- Flash-conf content substitution is **targeted**, not blanket. Vars\n  whose files this skill does not fork (`DTB_FILE`, `TBCDTB_FILE`,\n  `SCR_CONFIG`, `PMIC_CONFIG`, `DEVICEPROD_CONFIG`, `PROD_CONFIG`,\n  `MINRATCHET_CONFIG`, `UPHY_CONFIG`, dynamic `OVERLAY_DTB_FILE+=`)\n  stay at reference values — rewriting them would point at files that\n  do not exist.\n- Custom-carrier IDs need not follow NVIDIA `pNNNN` style; the\n  p-stripped numeric token is derived only when the ID matches\n  `^p[0-9]{4}$`.\n- Does not customize module-level files. Use the relevant\n  `jetson-customize-*` skill for pinmux, clocks, fan curves,\n  nvpmodel, PCIe, UPHY, USB, MGBE, or camera deltas.\n\n## Troubleshooting\n\n- **Refuses with \"no `custom_carrier:` block\"** — declare the block in\n  the active profile before re-running; the skill will not infer it.\n- **Refuses with \".git missing in `Linux_for_Tegra\u002F`\"** — overlay\n  tracker not initialized. Run `\u002Fjetson-init-source` first.\n- **\"`\u003Creal-conf>` not a symlink\"** — NVIDIA convention is a\n  `\u003Cdevkit>.conf` symlink to `\u003Ccarrier>-\u003Cmodule>-a\u003Crev>.conf`; if the\n  top-level is the real conf, the skill warns, treats it as real, and\n  skips the symlink-wrapper row. Not an error.\n- **`sed` reported success but the edit is missing** — `sed` silently\n  no-ops on miss. The skill re-greps after every patch and refuses to\n  commit on verification miss; for multi-line replacements switch to\n  Python `str.replace`.\n- **\"chip: unknown\" \u002F fallback to `tegra234`** — module ID is not in\n  the [catalogue](..\u002F..\u002Freferences\u002Fbsp-platforms-catalogue.md); update\n  the catalogue rather than override in the profile.\n- **Commit message preview prompt blocks the run** — expected gate per\n  [commit-batching](..\u002F..\u002Fcontext\u002Fbsp-customization-workflow.md#commit-batching-in-the-overlay-tracker);\n  accept, edit, or cancel. On cancel the index is left staged for\n  manual resolution.\n- **A mandatory source file is missing on this BSP** — the row is\n  recorded as warn-and-skipped in the summary; the rest of the run\n  still completes.\n",{"data":29,"body":40},{"name":4,"description":6,"version":30,"license":20,"metadata":31},"0.0.1",{"data-classification":32,"author":33,"tags":34,"domain":39},"public","Jetson Team",[35,36,37,38],"target-platform","custom-carrier","bring-up","setup","meta",{"type":41,"children":42},"root",[43,50,156,305,367,374,386,392,442,452,588,594,659,849,1696,1735,1871,1943,1949,1983,1993,1999,2004,2016,2028,2135,2141,2160,2166,2240,2246,2369,2375,2526],{"type":44,"tag":45,"props":46,"children":47},"element","h1",{"id":4},[48],{"type":49,"value":4},"text",{"type":44,"tag":51,"props":52,"children":53},"p",{},[54,56,63,65,76,78,84,86,92,94,100,102,108,110,115,117,123,125,131,133,139,141,146,148,154],{"type":49,"value":55},"Customize first-run gate for any ",{"type":44,"tag":57,"props":58,"children":60},"code",{"className":59},[],[61],{"type":49,"value":62},"customize-*",{"type":49,"value":64}," skill on a custom\ncarrier. Resolve the active target per\n",{"type":44,"tag":66,"props":67,"children":69},"a",{"href":68},"..\u002F..\u002Fcontext\u002Ftarget-platform-contract.md",[70],{"type":44,"tag":57,"props":71,"children":73},{"className":72},[],[74],{"type":49,"value":75},"target-platform-contract.md",{"type":49,"value":77},".\n",{"type":44,"tag":79,"props":80,"children":81},"strong",{},[82],{"type":49,"value":83},"Refuse",{"type":49,"value":85}," if no ",{"type":44,"tag":57,"props":87,"children":89},{"className":88},[],[90],{"type":49,"value":91},"custom_carrier:",{"type":49,"value":93}," block, or if\n",{"type":44,"tag":57,"props":95,"children":97},{"className":96},[],[98],{"type":49,"value":99},"\u003Csource.root_path>\u002FLinux_for_Tegra\u002F.git",{"type":49,"value":101}," is missing\n(",{"type":44,"tag":57,"props":103,"children":105},{"className":104},[],[106],{"type":49,"value":107},"jetson-init-source",{"type":49,"value":109}," first). Template file create\u002Fcopy rows land in a\nsingle overlay-tracker commit and copy ",{"type":44,"tag":79,"props":111,"children":112},{},[113],{"type":49,"value":114},"directly",{"type":49,"value":116}," to the\ncustom-carrier-renamed target path — reference-named pristine files\nare never staged (see ",{"type":44,"tag":66,"props":118,"children":120},{"href":119},"#fork-plan",[121],{"type":49,"value":122},"Fork plan",{"type":49,"value":124}," for the local rule, which\noverrides the standard pristine + customization split from the\n",{"type":44,"tag":66,"props":126,"children":128},{"href":127},"..\u002F..\u002Fcontext\u002Fbsp-customization-workflow.md#commit-batching-in-the-overlay-tracker",[129],{"type":49,"value":130},"workflow",{"type":49,"value":132},");\nconf-chain discovery follows\n",{"type":44,"tag":66,"props":134,"children":136},{"href":135},"..\u002F..\u002Fcontext\u002Fbsp-customization-software-layers.md#per-board-conf-dispatch--update_flash_args_common",[137],{"type":49,"value":138},"per-board conf dispatch",{"type":49,"value":140},".\nKernel base DTB is ",{"type":44,"tag":79,"props":142,"children":143},{},[144],{"type":49,"value":145},"not",{"type":49,"value":147}," forked — carrier deltas layer as a DT\noverlay wired via ",{"type":44,"tag":57,"props":149,"children":151},{"className":150},[],[152],{"type":49,"value":153},"OVERLAY_DTB_FILE",{"type":49,"value":155},".",{"type":44,"tag":51,"props":157,"children":158},{},[159,164,166,172,174,180,182,188,190,196,198,204,206,212,213,219,221,227,228,234,235,241,242,248,249,255,257,263,265,271,273,279,281,287,289,295,297,303],{"type":44,"tag":79,"props":160,"children":161},{},[162],{"type":49,"value":163},"Identifiers",{"type":49,"value":165}," (from active profile): ",{"type":44,"tag":57,"props":167,"children":169},{"className":168},[],[170],{"type":49,"value":171},"\u003Cchip>",{"type":49,"value":173}," from\n",{"type":44,"tag":57,"props":175,"children":177},{"className":176},[],[178],{"type":49,"value":179},"reference_devkit.module.id",{"type":49,"value":181}," via\n",{"type":44,"tag":66,"props":183,"children":185},{"href":184},"..\u002F..\u002Freferences\u002Fbsp-platforms-catalogue.md",[186],{"type":49,"value":187},"catalogue",{"type":49,"value":189}," (unknown →\nwarn, fallback ",{"type":44,"tag":57,"props":191,"children":193},{"className":192},[],[194],{"type":49,"value":195},"tegra234",{"type":49,"value":197},"); ",{"type":44,"tag":57,"props":199,"children":201},{"className":200},[],[202],{"type":49,"value":203},"\u003Cmodule-id>",{"type":49,"value":205},"\u002F",{"type":44,"tag":57,"props":207,"children":209},{"className":208},[],[210],{"type":49,"value":211},"\u003Cmodule-sku>",{"type":49,"value":173},{"type":44,"tag":57,"props":214,"children":216},{"className":215},[],[217],{"type":49,"value":218},"reference_devkit.module",{"type":49,"value":220},"; ",{"type":44,"tag":57,"props":222,"children":224},{"className":223},[],[225],{"type":49,"value":226},"\u003Ccarrier-id>",{"type":49,"value":205},{"type":44,"tag":57,"props":229,"children":231},{"className":230},[],[232],{"type":49,"value":233},"\u003Ccarrier-sku>",{"type":49,"value":173},{"type":44,"tag":57,"props":236,"children":238},{"className":237},[],[239],{"type":49,"value":240},"reference_devkit.carrier",{"type":49,"value":220},{"type":44,"tag":57,"props":243,"children":245},{"className":244},[],[246],{"type":49,"value":247},"\u003Ccustom-id>",{"type":49,"value":205},{"type":44,"tag":57,"props":250,"children":252},{"className":251},[],[253],{"type":49,"value":254},"\u003Ccustom-sku>",{"type":49,"value":256},"\u002F\n",{"type":44,"tag":57,"props":258,"children":260},{"className":259},[],[261],{"type":49,"value":262},"\u003Ccustom-flash-conf>",{"type":49,"value":264}," from ",{"type":44,"tag":57,"props":266,"children":268},{"className":267},[],[269],{"type":49,"value":270},"custom_carrier",{"type":49,"value":272},". ",{"type":44,"tag":57,"props":274,"children":276},{"className":275},[],[277],{"type":49,"value":278},"\u003Creal-conf>",{"type":49,"value":280}," =\n",{"type":44,"tag":57,"props":282,"children":284},{"className":283},[],[285],{"type":49,"value":286},"readlink \u003Cbsp_image.root_path>\u002FLinux_for_Tegra\u002F\u003Creference_devkit.flash_config>",{"type":49,"value":288},"\n(NVIDIA convention ",{"type":44,"tag":57,"props":290,"children":292},{"className":291},[],[293],{"type":49,"value":294},"\u003Cdevkit>.conf",{"type":49,"value":296}," → ",{"type":44,"tag":57,"props":298,"children":300},{"className":299},[],[301],{"type":49,"value":302},"\u003Ccarrier>-\u003Cmodule>-a\u003Crev>.conf",{"type":49,"value":304},";\nwarn + treat top-level as real + skip symlink-wrapper row if not a\nsymlink).",{"type":44,"tag":51,"props":306,"children":307},{},[308,313,315,321,323,329,331,337,339,344,346,352,354,359,361,366],{"type":44,"tag":57,"props":309,"children":311},{"className":310},[],[312],{"type":49,"value":247},{"type":49,"value":314}," is a custom carrier board token, not necessarily an\nNVIDIA-style ",{"type":44,"tag":57,"props":316,"children":318},{"className":317},[],[319],{"type":49,"value":320},"pNNNN",{"type":49,"value":322}," ID. Use it verbatim in dash-form filenames and DT\ncompatible strings. When a target file family uses p-stripped numeric\ntokens, derive ",{"type":44,"tag":57,"props":324,"children":326},{"className":325},[],[327],{"type":49,"value":328},"\u003Ccustom-id-file-token>",{"type":49,"value":330}," as ",{"type":44,"tag":57,"props":332,"children":334},{"className":333},[],[335],{"type":49,"value":336},"NNNN",{"type":49,"value":338}," only if ",{"type":44,"tag":57,"props":340,"children":342},{"className":341},[],[343],{"type":49,"value":247},{"type":49,"value":345},"\nmatches ",{"type":44,"tag":57,"props":347,"children":349},{"className":348},[],[350],{"type":49,"value":351},"^p[0-9]{4}$",{"type":49,"value":353},"; otherwise use ",{"type":44,"tag":57,"props":355,"children":357},{"className":356},[],[358],{"type":49,"value":247},{"type":49,"value":360}," unchanged. Do not\nreject custom carrier IDs merely because they do not start with ",{"type":44,"tag":57,"props":362,"children":364},{"className":363},[],[365],{"type":49,"value":51},{"type":49,"value":155},{"type":44,"tag":368,"props":369,"children":371},"h2",{"id":370},"instructions",[372],{"type":49,"value":373},"Instructions",{"type":44,"tag":51,"props":375,"children":376},{},[377,379,385],{"type":49,"value":378},"The fork plan below is the instruction set: one discovery pass, then a\nrow-by-row fork of the per-board fileset, gated by the commit-message\npreview before each ",{"type":44,"tag":57,"props":380,"children":382},{"className":381},[],[383],{"type":49,"value":384},"git commit",{"type":49,"value":155},{"type":44,"tag":387,"props":388,"children":390},"h3",{"id":389},"fork-plan",[391],{"type":49,"value":122},{"type":44,"tag":51,"props":393,"children":394},{},[395,397,402,404,410,412,418,420,426,428,433,435,440],{"type":49,"value":396},"Every ",{"type":44,"tag":57,"props":398,"children":400},{"className":399},[],[401],{"type":49,"value":384},{"type":49,"value":403}," produced by this skill — in the overlay tracker\n(",{"type":44,"tag":57,"props":405,"children":407},{"className":406},[],[408],{"type":49,"value":409},"Linux_for_Tegra\u002F",{"type":49,"value":411},") or the ",{"type":44,"tag":57,"props":413,"children":415},{"className":414},[],[416],{"type":49,"value":417},"hardware\u002F",{"type":49,"value":419}," source repo — runs through\nthe\n",{"type":44,"tag":66,"props":421,"children":423},{"href":422},"..\u002F..\u002Fcontext\u002Fbsp-customization-workflow.md#commit-message-preview-gate",[424],{"type":49,"value":425},"commit message preview gate",{"type":49,"value":427},".\nSurface the staged file list + proposed message to the operator\nand require accept \u002F edit \u002F cancel before each ",{"type":44,"tag":57,"props":429,"children":431},{"className":430},[],[432],{"type":49,"value":384},{"type":49,"value":434},"; on\n",{"type":44,"tag":79,"props":436,"children":437},{},[438],{"type":49,"value":439},"cancel",{"type":49,"value":441}," leave the index staged for manual resolution.",{"type":44,"tag":51,"props":443,"children":444},{},[445,450],{"type":44,"tag":79,"props":446,"children":447},{},[448],{"type":49,"value":449},"Materialize renamed forks even when bytes do not change.",{"type":49,"value":451}," For every\naccepted fork-plan row, create and track the custom-carrier target path;\ndo not skip a missing target because the fork is only a rename\u002Fcopy or is\nbyte-identical to the reference. This includes BCT forks such as pinmux,\nGPIO\u002FGPIOINT, padvoltage\u002FPMC, misc, and MB2 misc. Skip only when the\nAcceptance column allows it, the source is an explicit warn-and-skip\nmiss, or the expected target path is already tracked; in the last case,\nreport it as already derived and do not create an empty commit.",{"type":44,"tag":51,"props":453,"children":454},{},[455,460,462,466,467,473,475,481,483,489,491,496,498,503,505,511,513,519,520,526,527,533,535,541,542,548,550,556,558,564,566,572,574,578,580,586],{"type":44,"tag":79,"props":456,"children":457},{},[458],{"type":49,"value":459},"Template file create\u002Fcopy rows squash into one overlay-tracker\ncommit, and reference-named pristine files are never staged.",{"type":49,"value":461}," All\nrows that materialize a new (template-derived) file in the overlay\ntracker — board flash-conf, flash-conf symlink, MB1 BCT (pinmux,\nGPIO\u002FGPIOINT, padvoltage\u002FPMC, misc), MB2 BCT (misc), BPMP DTB (when\nopted in), nvpmodel, nvfancontrol — copy ",{"type":44,"tag":79,"props":463,"children":464},{},[465],{"type":49,"value":114},{"type":49,"value":173},{"type":44,"tag":57,"props":468,"children":470},{"className":469},[],[471],{"type":49,"value":472},"\u003Cbsp_image.root_path>\u002FLinux_for_Tegra\u002F\u003Crel>\u002F\u003Creference-name>",{"type":49,"value":474}," to\n",{"type":44,"tag":57,"props":476,"children":478},{"className":477},[],[479],{"type":49,"value":480},"\u003Csource.root_path>\u002FLinux_for_Tegra\u002F\u003Crel>\u002F\u003Ccustom-name>",{"type":49,"value":482}," with any\ncontent edits applied before staging. The reference-named\n(",{"type":44,"tag":57,"props":484,"children":486},{"className":485},[],[487],{"type":49,"value":488},"\u003Ccarrier-id>-\u003Ccarrier-sku>",{"type":49,"value":490},"-keyed) filename is never staged or\ncommitted in the overlay tracker — only the custom-carrier-renamed\nfile is tracked. This overrides the standard pristine + customization\nsplit from\n",{"type":44,"tag":66,"props":492,"children":493},{"href":127},[494],{"type":49,"value":495},"commit batching",{"type":49,"value":497},".\nAll such rows land in a ",{"type":44,"tag":79,"props":499,"children":500},{},[501],{"type":49,"value":502},"single",{"type":49,"value":504}," overlay-tracker commit that adds:\n(i) the custom-carrier-named files at their target paths with content\nalready applied, (ii) the flash-conf symlink, and (iii) the targeted\nflash-conf content rewrites inside the renamed flash-conf for\n",{"type":44,"tag":57,"props":506,"children":508},{"className":507},[],[509],{"type":49,"value":510},"PINMUX_CONFIG",{"type":49,"value":512}," \u002F ",{"type":44,"tag":57,"props":514,"children":516},{"className":515},[],[517],{"type":49,"value":518},"GPIO_CONFIG",{"type":49,"value":512},{"type":44,"tag":57,"props":521,"children":523},{"className":522},[],[524],{"type":49,"value":525},"GPIOINT_CONFIG",{"type":49,"value":512},{"type":44,"tag":57,"props":528,"children":530},{"className":529},[],[531],{"type":49,"value":532},"PMC_CONFIG",{"type":49,"value":534}," \u002F\n",{"type":44,"tag":57,"props":536,"children":538},{"className":537},[],[539],{"type":49,"value":540},"MISC_CONFIG",{"type":49,"value":512},{"type":44,"tag":57,"props":543,"children":545},{"className":544},[],[546],{"type":49,"value":547},"MB2_BCT",{"type":49,"value":549}," (plus ",{"type":44,"tag":57,"props":551,"children":553},{"className":552},[],[554],{"type":49,"value":555},"BPFDTB_FILE",{"type":49,"value":557}," when BPMP DTB is opted\nin). Rows that edit existing upstream files instead of creating\ntemplates — the ",{"type":44,"tag":57,"props":559,"children":561},{"className":560},[],[562],{"type":49,"value":563},"nvpower.sh",{"type":49,"value":565}," patch — and the overlay wire-up\n(",{"type":44,"tag":57,"props":567,"children":569},{"className":568},[],[570],{"type":49,"value":571},"OVERLAY_DTB_FILE+=",{"type":49,"value":573}," append to the just-created flash-conf fork,\ntreated as a temporally distinct phase per\n",{"type":44,"tag":66,"props":575,"children":576},{"href":127},[577],{"type":49,"value":495},{"type":49,"value":579},")\nremain separate commits per their own rows. The DT overlay skeleton\ncommits in ",{"type":44,"tag":57,"props":581,"children":583},{"className":582},[],[584],{"type":49,"value":585},"bsp_sources\u002Fhardware\u002F",{"type":49,"value":587},", not the overlay tracker, so it is\nunaffected. The commit message preview gate fires once on the\nsquashed commit; warn-and-skipped rows do not contribute, and if every\nrow in the bundle is already tracked the commit is omitted entirely.",{"type":44,"tag":387,"props":589,"children":591},{"id":590},"discovery-single-batched-pass",[592],{"type":49,"value":593},"Discovery (single batched pass)",{"type":44,"tag":51,"props":595,"children":596},{},[597,599,604,606,611,613,619,621,627,628,634,636,642,644,650,651,657],{"type":49,"value":598},"Run ",{"type":44,"tag":79,"props":600,"children":601},{},[602],{"type":49,"value":603},"one",{"type":49,"value":605}," discovery pass; do not interleave with staging. ",{"type":44,"tag":79,"props":607,"children":608},{},[609],{"type":49,"value":610},"Do not\ntruncate listings",{"type":49,"value":612}," — every candidate filename in each scanned\ndirectory must be visible to the matcher. ",{"type":44,"tag":57,"props":614,"children":616},{"className":615},[],[617],{"type":49,"value":618},"head",{"type":49,"value":620},", ",{"type":44,"tag":57,"props":622,"children":624},{"className":623},[],[625],{"type":49,"value":626},"tail",{"type":49,"value":620},{"type":44,"tag":57,"props":629,"children":631},{"className":630},[],[632],{"type":49,"value":633},"| head -N",{"type":49,"value":635},",\n",{"type":44,"tag":57,"props":637,"children":639},{"className":638},[],[640],{"type":49,"value":641},"| tail -N",{"type":49,"value":643},", and any other row-limiting filter are out of bounds for\nthis step; use ",{"type":44,"tag":57,"props":645,"children":647},{"className":646},[],[648],{"type":49,"value":649},"ls -1",{"type":49,"value":512},{"type":44,"tag":57,"props":652,"children":654},{"className":653},[],[655],{"type":49,"value":656},"find",{"type":49,"value":658}," unclipped, or grep on the full output.\nTruncating risks false warn-and-skip calls when the matching file\nsits past the cutoff. Capture:",{"type":44,"tag":660,"props":661,"children":662},"ul",{},[663,741,782,802],{"type":44,"tag":664,"props":665,"children":666},"li",{},[667,669,675,676,682,683,688,689,694,695,700,701,706,707,712,713,718,719,724,726,731,733,739],{"type":49,"value":668},"Flash-conf vars: ",{"type":44,"tag":57,"props":670,"children":672},{"className":671},[],[673],{"type":49,"value":674},"DTB_FILE",{"type":49,"value":512},{"type":44,"tag":57,"props":677,"children":679},{"className":678},[],[680],{"type":49,"value":681},"TBCDTB_FILE",{"type":49,"value":512},{"type":44,"tag":57,"props":684,"children":686},{"className":685},[],[687],{"type":49,"value":555},{"type":49,"value":534},{"type":44,"tag":57,"props":690,"children":692},{"className":691},[],[693],{"type":49,"value":510},{"type":49,"value":512},{"type":44,"tag":57,"props":696,"children":698},{"className":697},[],[699],{"type":49,"value":532},{"type":49,"value":512},{"type":44,"tag":57,"props":702,"children":704},{"className":703},[],[705],{"type":49,"value":518},{"type":49,"value":512},{"type":44,"tag":57,"props":708,"children":710},{"className":709},[],[711],{"type":49,"value":525},{"type":49,"value":77},{"type":44,"tag":57,"props":714,"children":716},{"className":715},[],[717],{"type":49,"value":674},{"type":49,"value":512},{"type":44,"tag":57,"props":720,"children":722},{"className":721},[],[723],{"type":49,"value":681},{"type":49,"value":725}," are captured for ",{"type":44,"tag":79,"props":727,"children":728},{},[729],{"type":49,"value":730},"reference only",{"type":49,"value":732}," so\nthe overlay wire-up can derive ",{"type":44,"tag":57,"props":734,"children":736},{"className":735},[],[737],{"type":49,"value":738},"\u003Cdtb-stem>",{"type":49,"value":740}," for the overlay\nfilename — they are never rewritten by this skill.",{"type":44,"tag":664,"props":742,"children":743},{},[744,746,752,754,760,761,767,769,780],{"type":49,"value":745},"BCT ",{"type":44,"tag":57,"props":747,"children":749},{"className":748},[],[750],{"type":49,"value":751},".dts",{"type":49,"value":753}," at ",{"type":44,"tag":57,"props":755,"children":757},{"className":756},[],[758],{"type":49,"value":759},"bootloader\u002Fgeneric\u002FBCT\u002F",{"type":49,"value":220},{"type":44,"tag":57,"props":762,"children":764},{"className":763},[],[765],{"type":49,"value":766},".dtsi",{"type":49,"value":768}," siblings live\n",{"type":44,"tag":79,"props":770,"children":771},{},[772,774],{"type":49,"value":773},"one level up at ",{"type":44,"tag":57,"props":775,"children":777},{"className":776},[],[778],{"type":49,"value":779},"bootloader\u002F",{"type":49,"value":781}," — NOT alongside.",{"type":44,"tag":664,"props":783,"children":784},{},[785,787,793,795,801],{"type":49,"value":786},"nvpmodel: ",{"type":44,"tag":57,"props":788,"children":790},{"className":789},[],[791],{"type":49,"value":792},"nvpmodel_\u003Cmodule-id>_\u003Cmodule-sku>*.conf",{"type":49,"value":794},". nvfancontrol:\n",{"type":44,"tag":57,"props":796,"children":798},{"className":797},[],[799],{"type":49,"value":800},"nvfancontrol_\u003Cmodule-id>_\u003Cmodule-sku>_\u003Ccarrier-id>_\u003Ccarrier-sku>.conf",{"type":49,"value":155},{"type":44,"tag":664,"props":803,"children":804},{},[805,810,812,817,819,825,827,833,834,840,842,847],{"type":44,"tag":57,"props":806,"children":808},{"className":807},[],[809],{"type":49,"value":563},{"type":49,"value":811}," anchors for (a)–(d): ",{"type":44,"tag":57,"props":813,"children":815},{"className":814},[],[816],{"type":49,"value":226},{"type":49,"value":818}," cvb branch,\n",{"type":44,"tag":57,"props":820,"children":822},{"className":821},[],[823],{"type":49,"value":824},"\u003Cmodule-id>-\u003Cmodule-sku>",{"type":49,"value":826}," SKU ",{"type":44,"tag":57,"props":828,"children":830},{"className":829},[],[831],{"type":49,"value":832},"elif",{"type":49,"value":620},{"type":44,"tag":57,"props":835,"children":837},{"className":836},[],[838],{"type":49,"value":839},"tegra\u003Cchip>",{"type":49,"value":841}," nvpmodel\ncascade, ",{"type":44,"tag":57,"props":843,"children":845},{"className":844},[],[846],{"type":49,"value":839},{"type":49,"value":848}," nvfancontrol cascade.",{"type":44,"tag":850,"props":851,"children":852},"table",{},[853,882],{"type":44,"tag":854,"props":855,"children":856},"thead",{},[857],{"type":44,"tag":858,"props":859,"children":860},"tr",{},[861,867,872,877],{"type":44,"tag":862,"props":863,"children":864},"th",{},[865],{"type":49,"value":866},"File \u002F category",{"type":44,"tag":862,"props":868,"children":869},{},[870],{"type":49,"value":871},"Discovery",{"type":44,"tag":862,"props":873,"children":874},{},[875],{"type":49,"value":876},"Acceptance",{"type":44,"tag":862,"props":878,"children":879},{},[880],{"type":49,"value":881},"Fork rule",{"type":44,"tag":883,"props":884,"children":885},"tbody",{},[886,1087,1124,1159,1196,1227,1258,1289,1319,1355,1469,1497,1529,1562,1624],{"type":44,"tag":858,"props":887,"children":888},{},[889,895,903,908],{"type":44,"tag":890,"props":891,"children":892},"td",{},[893],{"type":49,"value":894},"Board flash conf",{"type":44,"tag":890,"props":896,"children":897},{},[898],{"type":44,"tag":57,"props":899,"children":901},{"className":900},[],[902],{"type":49,"value":278},{"type":44,"tag":890,"props":904,"children":905},{},[906],{"type":49,"value":907},"Always",{"type":44,"tag":890,"props":909,"children":910},{},[911,913,918,919,925,927,932,934,939,940,945,946,951,952,957,958,963,964,969,971,976,977,982,983,989,990,996,997,1003,1004,1010,1011,1017,1018,1024,1026,1031,1033,1039,1041,1046,1047,1052,1054,1059,1061,1066,1068,1073,1074,1079,1080,1086],{"type":49,"value":912},"Filename sub ",{"type":44,"tag":57,"props":914,"children":916},{"className":915},[],[917],{"type":49,"value":488},{"type":49,"value":296},{"type":44,"tag":57,"props":920,"children":922},{"className":921},[],[923],{"type":49,"value":924},"\u003Ccustom-id>-\u003Ccustom-sku>",{"type":49,"value":926},". Content sub is ",{"type":44,"tag":79,"props":928,"children":929},{},[930],{"type":49,"value":931},"targeted, not blanket",{"type":49,"value":933},": rewrite RHS only for vars whose file this skill forks — ",{"type":44,"tag":57,"props":935,"children":937},{"className":936},[],[938],{"type":49,"value":510},{"type":49,"value":620},{"type":44,"tag":57,"props":941,"children":943},{"className":942},[],[944],{"type":49,"value":532},{"type":49,"value":620},{"type":44,"tag":57,"props":947,"children":949},{"className":948},[],[950],{"type":49,"value":518},{"type":49,"value":512},{"type":44,"tag":57,"props":953,"children":955},{"className":954},[],[956],{"type":49,"value":525},{"type":49,"value":620},{"type":44,"tag":57,"props":959,"children":961},{"className":960},[],[962],{"type":49,"value":540},{"type":49,"value":620},{"type":44,"tag":57,"props":965,"children":967},{"className":966},[],[968],{"type":49,"value":547},{"type":49,"value":970},". Other carrier-keyed vars (",{"type":44,"tag":57,"props":972,"children":974},{"className":973},[],[975],{"type":49,"value":674},{"type":49,"value":620},{"type":44,"tag":57,"props":978,"children":980},{"className":979},[],[981],{"type":49,"value":681},{"type":49,"value":620},{"type":44,"tag":57,"props":984,"children":986},{"className":985},[],[987],{"type":49,"value":988},"SCR_CONFIG",{"type":49,"value":620},{"type":44,"tag":57,"props":991,"children":993},{"className":992},[],[994],{"type":49,"value":995},"PMIC_CONFIG",{"type":49,"value":620},{"type":44,"tag":57,"props":998,"children":1000},{"className":999},[],[1001],{"type":49,"value":1002},"DEVICEPROD_CONFIG",{"type":49,"value":620},{"type":44,"tag":57,"props":1005,"children":1007},{"className":1006},[],[1008],{"type":49,"value":1009},"PROD_CONFIG",{"type":49,"value":620},{"type":44,"tag":57,"props":1012,"children":1014},{"className":1013},[],[1015],{"type":49,"value":1016},"MINRATCHET_CONFIG",{"type":49,"value":620},{"type":44,"tag":57,"props":1019,"children":1021},{"className":1020},[],[1022],{"type":49,"value":1023},"UPHY_CONFIG",{"type":49,"value":1025},", dynamic ",{"type":44,"tag":57,"props":1027,"children":1029},{"className":1028},[],[1030],{"type":49,"value":571},{"type":49,"value":1032},") MUST stay at reference values — their files aren't forked here and a blanket ",{"type":44,"tag":57,"props":1034,"children":1036},{"className":1035},[],[1037],{"type":49,"value":1038},"sed",{"type":49,"value":1040}," would point them at nonexistent files. ",{"type":44,"tag":57,"props":1042,"children":1044},{"className":1043},[],[1045],{"type":49,"value":674},{"type":49,"value":512},{"type":44,"tag":57,"props":1048,"children":1050},{"className":1049},[],[1051],{"type":49,"value":681},{"type":49,"value":1053}," specifically: base DTB is not forked; the overlay row appends a new ",{"type":44,"tag":57,"props":1055,"children":1057},{"className":1056},[],[1058],{"type":49,"value":571},{"type":49,"value":1060}," line instead. ",{"type":44,"tag":57,"props":1062,"children":1064},{"className":1063},[],[1065],{"type":49,"value":555},{"type":49,"value":1067},": opt-in extra commit. Never touch ",{"type":44,"tag":57,"props":1069,"children":1071},{"className":1070},[],[1072],{"type":49,"value":171},{"type":49,"value":620},{"type":44,"tag":57,"props":1075,"children":1077},{"className":1076},[],[1078],{"type":49,"value":203},{"type":49,"value":620},{"type":44,"tag":57,"props":1081,"children":1083},{"className":1082},[],[1084],{"type":49,"value":1085},"xxxx",{"type":49,"value":155},{"type":44,"tag":858,"props":1088,"children":1089},{},[1090,1095,1100,1112],{"type":44,"tag":890,"props":1091,"children":1092},{},[1093],{"type":49,"value":1094},"Flash-conf symlink",{"type":44,"tag":890,"props":1096,"children":1097},{},[1098],{"type":49,"value":1099},"Unconditional",{"type":44,"tag":890,"props":1101,"children":1102},{},[1103,1105,1110],{"type":49,"value":1104},"Always (skip if ",{"type":44,"tag":57,"props":1106,"children":1108},{"className":1107},[],[1109],{"type":49,"value":278},{"type":49,"value":1111}," not a symlink)",{"type":44,"tag":890,"props":1113,"children":1114},{},[1115,1117,1122],{"type":49,"value":1116},"New symlink ",{"type":44,"tag":57,"props":1118,"children":1120},{"className":1119},[],[1121],{"type":49,"value":262},{"type":49,"value":1123}," → flash-conf fork",{"type":44,"tag":858,"props":1125,"children":1126},{},[1127,1132,1150,1154],{"type":44,"tag":890,"props":1128,"children":1129},{},[1130],{"type":49,"value":1131},"MB1 BCT pinmux",{"type":44,"tag":890,"props":1133,"children":1134},{},[1135,1140,1142,1148],{"type":44,"tag":57,"props":1136,"children":1138},{"className":1137},[],[1139],{"type":49,"value":510},{"type":49,"value":1141}," + ",{"type":44,"tag":57,"props":1143,"children":1145},{"className":1144},[],[1146],{"type":49,"value":1147},"#include",{"type":49,"value":1149}," follow ¶",{"type":44,"tag":890,"props":1151,"children":1152},{},[1153],{"type":49,"value":907},{"type":44,"tag":890,"props":1155,"children":1156},{},[1157],{"type":49,"value":1158},"Rename rule †",{"type":44,"tag":858,"props":1160,"children":1161},{},[1162,1167,1188,1192],{"type":44,"tag":890,"props":1163,"children":1164},{},[1165],{"type":49,"value":1166},"MB1 BCT GPIO",{"type":44,"tag":890,"props":1168,"children":1169},{},[1170,1175,1176,1181,1182,1187],{"type":44,"tag":57,"props":1171,"children":1173},{"className":1172},[],[1174],{"type":49,"value":518},{"type":49,"value":205},{"type":44,"tag":57,"props":1177,"children":1179},{"className":1178},[],[1180],{"type":49,"value":525},{"type":49,"value":1141},{"type":44,"tag":57,"props":1183,"children":1185},{"className":1184},[],[1186],{"type":49,"value":1147},{"type":49,"value":1149},{"type":44,"tag":890,"props":1189,"children":1190},{},[1191],{"type":49,"value":907},{"type":44,"tag":890,"props":1193,"children":1194},{},[1195],{"type":49,"value":1158},{"type":44,"tag":858,"props":1197,"children":1198},{},[1199,1204,1219,1223],{"type":44,"tag":890,"props":1200,"children":1201},{},[1202],{"type":49,"value":1203},"MB1 BCT padvoltage",{"type":44,"tag":890,"props":1205,"children":1206},{},[1207,1212,1213,1218],{"type":44,"tag":57,"props":1208,"children":1210},{"className":1209},[],[1211],{"type":49,"value":532},{"type":49,"value":1141},{"type":44,"tag":57,"props":1214,"children":1216},{"className":1215},[],[1217],{"type":49,"value":1147},{"type":49,"value":1149},{"type":44,"tag":890,"props":1220,"children":1221},{},[1222],{"type":49,"value":907},{"type":44,"tag":890,"props":1224,"children":1225},{},[1226],{"type":49,"value":1158},{"type":44,"tag":858,"props":1228,"children":1229},{},[1230,1235,1250,1254],{"type":44,"tag":890,"props":1231,"children":1232},{},[1233],{"type":49,"value":1234},"MB1 BCT misc",{"type":44,"tag":890,"props":1236,"children":1237},{},[1238,1243,1244,1249],{"type":44,"tag":57,"props":1239,"children":1241},{"className":1240},[],[1242],{"type":49,"value":540},{"type":49,"value":1141},{"type":44,"tag":57,"props":1245,"children":1247},{"className":1246},[],[1248],{"type":49,"value":1147},{"type":49,"value":1149},{"type":44,"tag":890,"props":1251,"children":1252},{},[1253],{"type":49,"value":907},{"type":44,"tag":890,"props":1255,"children":1256},{},[1257],{"type":49,"value":1158},{"type":44,"tag":858,"props":1259,"children":1260},{},[1261,1266,1281,1285],{"type":44,"tag":890,"props":1262,"children":1263},{},[1264],{"type":49,"value":1265},"MB2 BCT misc",{"type":44,"tag":890,"props":1267,"children":1268},{},[1269,1274,1275,1280],{"type":44,"tag":57,"props":1270,"children":1272},{"className":1271},[],[1273],{"type":49,"value":547},{"type":49,"value":1141},{"type":44,"tag":57,"props":1276,"children":1278},{"className":1277},[],[1279],{"type":49,"value":1147},{"type":49,"value":1149},{"type":44,"tag":890,"props":1282,"children":1283},{},[1284],{"type":49,"value":907},{"type":44,"tag":890,"props":1286,"children":1287},{},[1288],{"type":49,"value":1158},{"type":44,"tag":858,"props":1290,"children":1291},{},[1292,1297,1302,1307],{"type":44,"tag":890,"props":1293,"children":1294},{},[1295],{"type":49,"value":1296},"Kernel DTB + source DTS",{"type":44,"tag":890,"props":1298,"children":1299},{},[1300],{"type":49,"value":1301},"(reference only — see header)",{"type":44,"tag":890,"props":1303,"children":1304},{},[1305],{"type":49,"value":1306},"Never forked",{"type":44,"tag":890,"props":1308,"children":1309},{},[1310,1312,1317],{"type":49,"value":1311},"Base DTB stays at reference. No pristine binary copy in the overlay tracker; no source DTS fork in ",{"type":44,"tag":57,"props":1313,"children":1315},{"className":1314},[],[1316],{"type":49,"value":585},{"type":49,"value":1318},". Carrier deltas live entirely in the DT overlay (next row).",{"type":44,"tag":858,"props":1320,"children":1321},{},[1322,1327,1331,1335],{"type":44,"tag":890,"props":1323,"children":1324},{},[1325],{"type":49,"value":1326},"DT overlay skeleton (NEW)",{"type":44,"tag":890,"props":1328,"children":1329},{},[1330],{"type":49,"value":1099},{"type":44,"tag":890,"props":1332,"children":1333},{},[1334],{"type":49,"value":907},{"type":44,"tag":890,"props":1336,"children":1337},{},[1338,1340,1346,1348,1353],{"type":49,"value":1339},"Create ",{"type":44,"tag":57,"props":1341,"children":1343},{"className":1342},[],[1344],{"type":49,"value":1345},"\u003Csource.root_path>\u002Fhardware\u002Fnvidia\u002F\u003Cchip>\u002Fnv-public\u002Foverlay\u002F\u003Cchip>-\u003Ccustom-id>-\u003Ccustom-sku>+\u003Cmodule-id>-\u003Cmodule-sku>.dts",{"type":49,"value":1347}," (skeleton ‡); commit in ",{"type":44,"tag":57,"props":1349,"children":1351},{"className":1350},[],[1352],{"type":49,"value":417},{"type":49,"value":1354},", push to origin",{"type":44,"tag":858,"props":1356,"children":1357},{},[1358,1363,1372,1376],{"type":44,"tag":890,"props":1359,"children":1360},{},[1361],{"type":49,"value":1362},"Per-dir Makefile registration",{"type":44,"tag":890,"props":1364,"children":1365},{},[1366],{"type":44,"tag":57,"props":1367,"children":1369},{"className":1368},[],[1370],{"type":49,"value":1371},"\u003Csource.root_path>\u002Fbsp_sources\u002Fhardware\u002Fnvidia\u002F\u003Cchip>\u002Fnv-public\u002Foverlay\u002FMakefile",{"type":44,"tag":890,"props":1373,"children":1374},{},[1375],{"type":49,"value":907},{"type":44,"tag":890,"props":1377,"children":1378},{},[1379,1381,1387,1389,1394,1396,1402,1404,1410,1412,1418,1420,1429,1431,1436,1438,1444,1446,1452,1454,1459,1461,1467],{"type":49,"value":1380},"Append ",{"type":44,"tag":57,"props":1382,"children":1384},{"className":1383},[],[1385],{"type":49,"value":1386},"dtbo-y += \u003Cchip>-\u003Ccustom-id>-\u003Ccustom-sku>+\u003Cmodule-id>-\u003Cmodule-sku>.dtbo",{"type":49,"value":1388}," after the ",{"type":44,"tag":79,"props":1390,"children":1391},{},[1392],{"type":49,"value":1393},"last literal-named",{"type":49,"value":1395}," ",{"type":44,"tag":57,"props":1397,"children":1399},{"className":1398},[],[1400],{"type":49,"value":1401},"dtbo-y +=",{"type":49,"value":1403}," entry (BEFORE the ",{"type":44,"tag":57,"props":1405,"children":1407},{"className":1406},[],[1408],{"type":49,"value":1409},"$(addprefix $(makefile-path)\u002F,$(dtbo-y))",{"type":49,"value":1411}," prefix block — inserting after ",{"type":44,"tag":57,"props":1413,"children":1415},{"className":1414},[],[1416],{"type":49,"value":1417},"dtbo-y += $(old-dtbo)",{"type":49,"value":1419}," silently drops the .dtbo). Same position-sensitive idiom and snippet as the composite slot's Makefile patch in ",{"type":44,"tag":66,"props":1421,"children":1423},{"href":1422},"..\u002Fjetson-build-source\u002Freferences\u002Fcomposite-registration.md#makefile-patch-idempotent-position-sensitive",[1424],{"type":44,"tag":57,"props":1425,"children":1427},{"className":1426},[],[1428],{"type":49,"value":1422},{"type":49,"value":1430},". Commit in ",{"type":44,"tag":57,"props":1432,"children":1434},{"className":1433},[],[1435],{"type":49,"value":417},{"type":49,"value":1437},". Without this row, ",{"type":44,"tag":57,"props":1439,"children":1441},{"className":1440},[],[1442],{"type":49,"value":1443},"nvidia-dtbs",{"type":49,"value":1445}," never produces the ",{"type":44,"tag":57,"props":1447,"children":1449},{"className":1448},[],[1450],{"type":49,"value":1451},".dtbo",{"type":49,"value":1453}," referenced by the next row's ",{"type":44,"tag":57,"props":1455,"children":1457},{"className":1456},[],[1458],{"type":49,"value":571},{"type":49,"value":1460}," line and ",{"type":44,"tag":57,"props":1462,"children":1464},{"className":1463},[],[1465],{"type":49,"value":1466},"flash.sh",{"type":49,"value":1468}," aborts mid-flash on the missing file.",{"type":44,"tag":858,"props":1470,"children":1471},{},[1472,1477,1481,1485],{"type":44,"tag":890,"props":1473,"children":1474},{},[1475],{"type":49,"value":1476},"Overlay wire-up",{"type":44,"tag":890,"props":1478,"children":1479},{},[1480],{"type":49,"value":1099},{"type":44,"tag":890,"props":1482,"children":1483},{},[1484],{"type":49,"value":907},{"type":44,"tag":890,"props":1486,"children":1487},{},[1488,1489,1495],{"type":49,"value":1380},{"type":44,"tag":57,"props":1490,"children":1492},{"className":1491},[],[1493],{"type":49,"value":1494},"OVERLAY_DTB_FILE+=\",\u003Cchip>-\u003Ccustom-id>-\u003Ccustom-sku>+\u003Cmodule-id>-\u003Cmodule-sku>.dtbo\"",{"type":49,"value":1496}," to flash-conf fork (extra commit)",{"type":44,"tag":858,"props":1498,"children":1499},{},[1500,1505,1514,1518],{"type":44,"tag":890,"props":1501,"children":1502},{},[1503],{"type":49,"value":1504},"nvpmodel config",{"type":44,"tag":890,"props":1506,"children":1507},{},[1508],{"type":44,"tag":57,"props":1509,"children":1511},{"className":1510},[],[1512],{"type":49,"value":1513},"rootfs\u002Fetc\u002Fnvpmodel\u002Fnvpmodel_\u003Cmodule-id-num>_\u003Cmodule-sku>.conf",{"type":44,"tag":890,"props":1515,"children":1516},{},[1517],{"type":49,"value":907},{"type":44,"tag":890,"props":1519,"children":1520},{},[1521,1523],{"type":49,"value":1522},"Filename: append ",{"type":44,"tag":57,"props":1524,"children":1526},{"className":1525},[],[1527],{"type":49,"value":1528},"_\u003Ccustom-id-file-token>_\u003Ccustom-sku>",{"type":44,"tag":858,"props":1530,"children":1531},{},[1532,1537,1546,1550],{"type":44,"tag":890,"props":1533,"children":1534},{},[1535],{"type":49,"value":1536},"nvfancontrol config",{"type":44,"tag":890,"props":1538,"children":1539},{},[1540],{"type":44,"tag":57,"props":1541,"children":1543},{"className":1542},[],[1544],{"type":49,"value":1545},"rootfs\u002Fetc\u002Fnvpower\u002Fnvfancontrol\u002Fnvfancontrol_\u003Cmodule-id-num>_\u003Cmodule-sku>_\u003Ccarrier-id-num>_\u003Ccarrier-sku>.conf",{"type":44,"tag":890,"props":1547,"children":1548},{},[1549],{"type":49,"value":907},{"type":44,"tag":890,"props":1551,"children":1552},{},[1553,1555,1560],{"type":49,"value":1554},"Filename: substitute carrier portion (append ",{"type":44,"tag":57,"props":1556,"children":1558},{"className":1557},[],[1559],{"type":49,"value":1528},{"type":49,"value":1561}," if source is module-keyed only)",{"type":44,"tag":858,"props":1563,"children":1564},{},[1565,1575,1584,1588],{"type":44,"tag":890,"props":1566,"children":1567},{},[1568,1573],{"type":44,"tag":57,"props":1569,"children":1571},{"className":1570},[],[1572],{"type":49,"value":563},{"type":49,"value":1574}," patch",{"type":44,"tag":890,"props":1576,"children":1577},{},[1578],{"type":44,"tag":57,"props":1579,"children":1581},{"className":1580},[],[1582],{"type":49,"value":1583},"rootfs\u002Fetc\u002Fsystemd\u002Fnvpower.sh",{"type":44,"tag":890,"props":1585,"children":1586},{},[1587],{"type":49,"value":907},{"type":44,"tag":890,"props":1589,"children":1590},{},[1591,1593,1599,1601,1607,1609,1615,1617,1622],{"type":49,"value":1592},"Pristine + single customization commit with 4 insertions: (a) cvb cascade ",{"type":44,"tag":57,"props":1594,"children":1596},{"className":1595},[],[1597],{"type":49,"value":1598},"elif [[ \"${machine}\" =~ \"\u003Ccustom-id>\" ]]; then cvb=\"\u003Ccustom-id-file-token>\"",{"type":49,"value":1600}," before reference; (b) inside module-SKU branch set ",{"type":44,"tag":57,"props":1602,"children":1604},{"className":1603},[],[1605],{"type":49,"value":1606},"machine=\"\u003Cmodule-id>-\u003Cmodule-sku>-\u003Ccustom-id>-\u003Ccustom-sku>\"",{"type":49,"value":1608},"; (c) nvpmodel cascade branch for composite machine key → ",{"type":44,"tag":57,"props":1610,"children":1612},{"className":1611},[],[1613],{"type":49,"value":1614},"conf_file=",{"type":49,"value":1616}," nvpmodel fork; (d) cvb-keyed nvfancontrol cascade branch → ",{"type":44,"tag":57,"props":1618,"children":1620},{"className":1619},[],[1621],{"type":49,"value":1614},{"type":49,"value":1623}," nvfancontrol fork",{"type":44,"tag":858,"props":1625,"children":1626},{},[1627,1632,1659,1669],{"type":44,"tag":890,"props":1628,"children":1629},{},[1630],{"type":49,"value":1631},"BPMP DTB",{"type":44,"tag":890,"props":1633,"children":1634},{},[1635,1637,1643,1645,1650,1652,1657],{"type":49,"value":1636},"prebuilt at ",{"type":44,"tag":57,"props":1638,"children":1640},{"className":1639},[],[1641],{"type":49,"value":1642},"bootloader\u002Fgeneric\u002F\u003CBPFDTB_FILE>",{"type":49,"value":1644}," (alt naming: no ",{"type":44,"tag":57,"props":1646,"children":1648},{"className":1647},[],[1649],{"type":49,"value":51},{"type":49,"value":1651}," prefix, ",{"type":44,"tag":57,"props":1653,"children":1655},{"className":1654},[],[1656],{"type":49,"value":1085},{"type":49,"value":1658}," SKU)",{"type":44,"tag":890,"props":1660,"children":1661},{},[1662,1667],{"type":44,"tag":79,"props":1663,"children":1664},{},[1665],{"type":49,"value":1666},"Opt-in",{"type":49,"value":1668}," y\u002FN, default N — module-level, usually shared with reference",{"type":44,"tag":890,"props":1670,"children":1671},{},[1672,1674,1680,1681,1687,1689,1694],{"type":49,"value":1673},"Fork binary: pristine + filename sub ",{"type":44,"tag":57,"props":1675,"children":1677},{"className":1676},[],[1678],{"type":49,"value":1679},"-\u003Ccarrier-id-num>-",{"type":49,"value":296},{"type":44,"tag":57,"props":1682,"children":1684},{"className":1683},[],[1685],{"type":49,"value":1686},"-\u003Ccustom-id-file-token>-",{"type":49,"value":1688}," (content unchanged). Extra commit on flash-conf fork rewriting ",{"type":44,"tag":57,"props":1690,"children":1692},{"className":1691},[],[1693],{"type":49,"value":555},{"type":49,"value":1695}," to the renamed binary.",{"type":44,"tag":51,"props":1697,"children":1698},{},[1699,1701,1711,1713,1718,1720,1726,1728,1733],{"type":49,"value":1700},"¶ ",{"type":44,"tag":79,"props":1702,"children":1703},{},[1704,1709],{"type":44,"tag":57,"props":1705,"children":1707},{"className":1706},[],[1708],{"type":49,"value":1147},{"type":49,"value":1710}," follow.",{"type":49,"value":1712}," Scan each captured ",{"type":44,"tag":57,"props":1714,"children":1716},{"className":1715},[],[1717],{"type":49,"value":751},{"type":49,"value":1719}," for ",{"type":44,"tag":57,"props":1721,"children":1723},{"className":1722},[],[1724],{"type":49,"value":1725},"#include \"...\"",{"type":49,"value":1727}," directives ",{"type":44,"tag":79,"props":1729,"children":1730},{},[1731],{"type":49,"value":1732},"anywhere",{"type":49,"value":1734}," in the file (NVIDIA BSPs put them\ninside BCT node bodies); carrier-keyed includes join the fork list.\nStop at one level.",{"type":44,"tag":51,"props":1736,"children":1737},{},[1738,1740,1745,1747,1753,1755,1760,1761,1766,1768,1773,1775,1780,1782,1788,1790,1795,1797,1803,1805,1810,1812,1817,1819,1825,1826,1832,1834,1840,1842,1847,1849,1855,1857,1862,1864,1869],{"type":49,"value":1739},"† ",{"type":44,"tag":79,"props":1741,"children":1742},{},[1743],{"type":49,"value":1744},"Rename rule.",{"type":49,"value":1746}," Carrier-keyed source (e.g.\n",{"type":44,"tag":57,"props":1748,"children":1750},{"className":1749},[],[1751],{"type":49,"value":1752},"…-p3834-xxxx-p4071-0000.dts",{"type":49,"value":1754},") → filename sub\n",{"type":44,"tag":57,"props":1756,"children":1758},{"className":1757},[],[1759],{"type":49,"value":488},{"type":49,"value":296},{"type":44,"tag":57,"props":1762,"children":1764},{"className":1763},[],[1765],{"type":49,"value":924},{"type":49,"value":1767},"; rewrite the\nflash-conf variable (e.g. ",{"type":44,"tag":57,"props":1769,"children":1771},{"className":1770},[],[1772],{"type":49,"value":510},{"type":49,"value":1774},") to the renamed filename in\nthe same customization commit. ",{"type":44,"tag":79,"props":1776,"children":1777},{},[1778],{"type":49,"value":1779},"Module portion is preserved\nverbatim from pristine",{"type":49,"value":1781}," — if pristine has ",{"type":44,"tag":57,"props":1783,"children":1785},{"className":1784},[],[1786],{"type":49,"value":1787},"p3834-xxxx",{"type":49,"value":1789},", fork keeps\n",{"type":44,"tag":57,"props":1791,"children":1793},{"className":1792},[],[1794],{"type":49,"value":1787},{"type":49,"value":1796},"; if pristine has ",{"type":44,"tag":57,"props":1798,"children":1800},{"className":1799},[],[1801],{"type":49,"value":1802},"p3834-0008",{"type":49,"value":1804},", fork keeps ",{"type":44,"tag":57,"props":1806,"children":1808},{"className":1807},[],[1809],{"type":49,"value":1802},{"type":49,"value":1811},".\nNever pin module-SKU on your own. Same rule for any other ",{"type":44,"tag":57,"props":1813,"children":1815},{"className":1814},[],[1816],{"type":49,"value":1085},{"type":49,"value":1818},"\nwildcard in the carrier-SKU position when pristine uses it (e.g.\n",{"type":44,"tag":57,"props":1820,"children":1822},{"className":1821},[],[1823],{"type":49,"value":1824},"p4071-xxxx",{"type":49,"value":296},{"type":44,"tag":57,"props":1827,"children":1829},{"className":1828},[],[1830],{"type":49,"value":1831},"p1234-xxxx",{"type":49,"value":1833},"). Module-keyed\nsource (e.g. ",{"type":44,"tag":57,"props":1835,"children":1837},{"className":1836},[],[1838],{"type":49,"value":1839},"…-p3767-dp-a03.dtsi",{"type":49,"value":1841},") → append\n",{"type":44,"tag":57,"props":1843,"children":1845},{"className":1844},[],[1846],{"type":49,"value":1528},{"type":49,"value":1848}," (underscore-form) or\n",{"type":44,"tag":57,"props":1850,"children":1852},{"className":1851},[],[1853],{"type":49,"value":1854},"-\u003Ccustom-id>-\u003Ccustom-sku>",{"type":49,"value":1856}," (dash-form) ",{"type":44,"tag":79,"props":1858,"children":1859},{},[1860],{"type":49,"value":1861},"plus",{"type":49,"value":1863}," an extra commit on\nflash-conf fork rewriting the variable (e.g. ",{"type":44,"tag":57,"props":1865,"children":1867},{"className":1866},[],[1868],{"type":49,"value":510},{"type":49,"value":1870},") to the\nsuffixed name. Content never substituted by default; prompt if\ncontent holds a literal carrier-id-sku self-reference.",{"type":44,"tag":51,"props":1872,"children":1873},{},[1874,1876,1881,1883,1889,1891,1897,1898,1904,1906,1912,1914,1920,1922,1928,1929,1934,1936,1942],{"type":49,"value":1875},"‡ ",{"type":44,"tag":79,"props":1877,"children":1878},{},[1879],{"type":49,"value":1880},"Overlay skeleton.",{"type":49,"value":1882}," DT plugin overlay (",{"type":44,"tag":57,"props":1884,"children":1886},{"className":1885},[],[1887],{"type":49,"value":1888},"\u002Fplugin\u002F;",{"type":49,"value":1890},") with one\n",{"type":44,"tag":57,"props":1892,"children":1894},{"className":1893},[],[1895],{"type":49,"value":1896},"fragment@0",{"type":49,"value":753},{"type":44,"tag":57,"props":1899,"children":1901},{"className":1900},[],[1902],{"type":49,"value":1903},"target-path = \"\u002F\"",{"type":49,"value":1905},"; inside ",{"type":44,"tag":57,"props":1907,"children":1909},{"className":1908},[],[1910],{"type":49,"value":1911},"__overlay__",{"type":49,"value":1913}," set\n",{"type":44,"tag":57,"props":1915,"children":1917},{"className":1916},[],[1918],{"type":49,"value":1919},"model = \"\u003Ccustom_carrier.name> carrier board\"",{"type":49,"value":1921}," and ",{"type":44,"tag":57,"props":1923,"children":1925},{"className":1924},[],[1926],{"type":49,"value":1927},"compatible = \"nvidia,\u003Ccustom-id>-\u003Ccustom-sku>+\u003Cmodule-id>-\u003Cmodule-sku>\", \"nvidia,\u003Cchip>\"",{"type":49,"value":272},{"type":44,"tag":57,"props":1930,"children":1932},{"className":1931},[],[1933],{"type":49,"value":563},{"type":49,"value":1935}," machine narrowing reads ",{"type":44,"tag":57,"props":1937,"children":1939},{"className":1938},[],[1940],{"type":49,"value":1941},"compatible",{"type":49,"value":155},{"type":44,"tag":387,"props":1944,"children":1946},{"id":1945},"edit-verification",[1947],{"type":49,"value":1948},"Edit verification",{"type":44,"tag":51,"props":1950,"children":1951},{},[1952,1954,1959,1961,1966,1968,1974,1976,1981],{"type":49,"value":1953},"Re-grep after every ",{"type":44,"tag":57,"props":1955,"children":1957},{"className":1956},[],[1958],{"type":49,"value":1038},{"type":49,"value":1960}," \u002F patch. ",{"type":44,"tag":57,"props":1962,"children":1964},{"className":1963},[],[1965],{"type":49,"value":1038},{"type":49,"value":1967}," silently no-ops on miss;\nexit code 0 proves nothing. Multi-line replacements: use Python\n",{"type":44,"tag":57,"props":1969,"children":1971},{"className":1970},[],[1972],{"type":49,"value":1973},"str.replace(old, new)",{"type":49,"value":1975},", not multi-line ",{"type":44,"tag":57,"props":1977,"children":1979},{"className":1978},[],[1980],{"type":49,"value":1038},{"type":49,"value":1982}," (brittle to whitespace\ndrift, silent no-ops). Refuse to commit on verification miss.",{"type":44,"tag":51,"props":1984,"children":1985},{},[1986,1991],{"type":44,"tag":79,"props":1987,"children":1988},{},[1989],{"type":49,"value":1990},"Summary.",{"type":49,"value":1992}," Print forks per repo (count + commit SHAs), BPMP-DTB\ndecision, warn-and-skipped rows (mandatory source file missing on\nthis BSP — don't fail the run), overlay path written.",{"type":44,"tag":368,"props":1994,"children":1996},{"id":1995},"examples",[1997],{"type":49,"value":1998},"Examples",{"type":44,"tag":51,"props":2000,"children":2001},{},[2002],{"type":49,"value":2003},"Trigger phrases the operator might use:",{"type":44,"tag":2005,"props":2006,"children":2011},"pre",{"className":2007,"code":2009,"language":49,"meta":2010},[2008],"language-text","derive custom carrier\nbootstrap custom carrier\nfork carrier board from reference devkit\n","",[2012],{"type":44,"tag":57,"props":2013,"children":2014},{"__ignoreMap":2010},[2015],{"type":49,"value":2009},{"type":44,"tag":51,"props":2017,"children":2018},{},[2019,2021,2026],{"type":49,"value":2020},"Minimal ",{"type":44,"tag":57,"props":2022,"children":2024},{"className":2023},[],[2025],{"type":49,"value":91},{"type":49,"value":2027}," block in the active profile that the skill\nexpects to find:",{"type":44,"tag":2005,"props":2029,"children":2033},{"className":2030,"code":2031,"language":2032,"meta":2010,"style":2010},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","custom_carrier:\n  id: p1234            # any token; need not be NVIDIA pNNNN style\n  sku: 0000\n  flash_config: p1234.conf\n  name: Acme Custom Carrier\n","yaml",[2034],{"type":44,"tag":57,"props":2035,"children":2036},{"__ignoreMap":2010},[2037,2054,2080,2099,2117],{"type":44,"tag":2038,"props":2039,"children":2042},"span",{"class":2040,"line":2041},"line",1,[2043,2048],{"type":44,"tag":2038,"props":2044,"children":2046},{"style":2045},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[2047],{"type":49,"value":270},{"type":44,"tag":2038,"props":2049,"children":2051},{"style":2050},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[2052],{"type":49,"value":2053},":\n",{"type":44,"tag":2038,"props":2055,"children":2057},{"class":2040,"line":2056},2,[2058,2063,2068,2074],{"type":44,"tag":2038,"props":2059,"children":2060},{"style":2045},[2061],{"type":49,"value":2062},"  id",{"type":44,"tag":2038,"props":2064,"children":2065},{"style":2050},[2066],{"type":49,"value":2067},":",{"type":44,"tag":2038,"props":2069,"children":2071},{"style":2070},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[2072],{"type":49,"value":2073}," p1234",{"type":44,"tag":2038,"props":2075,"children":2077},{"style":2076},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[2078],{"type":49,"value":2079},"            # any token; need not be NVIDIA pNNNN style\n",{"type":44,"tag":2038,"props":2081,"children":2083},{"class":2040,"line":2082},3,[2084,2089,2093],{"type":44,"tag":2038,"props":2085,"children":2086},{"style":2045},[2087],{"type":49,"value":2088},"  sku",{"type":44,"tag":2038,"props":2090,"children":2091},{"style":2050},[2092],{"type":49,"value":2067},{"type":44,"tag":2038,"props":2094,"children":2096},{"style":2095},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[2097],{"type":49,"value":2098}," 0000\n",{"type":44,"tag":2038,"props":2100,"children":2102},{"class":2040,"line":2101},4,[2103,2108,2112],{"type":44,"tag":2038,"props":2104,"children":2105},{"style":2045},[2106],{"type":49,"value":2107},"  flash_config",{"type":44,"tag":2038,"props":2109,"children":2110},{"style":2050},[2111],{"type":49,"value":2067},{"type":44,"tag":2038,"props":2113,"children":2114},{"style":2070},[2115],{"type":49,"value":2116}," p1234.conf\n",{"type":44,"tag":2038,"props":2118,"children":2120},{"class":2040,"line":2119},5,[2121,2126,2130],{"type":44,"tag":2038,"props":2122,"children":2123},{"style":2045},[2124],{"type":49,"value":2125},"  name",{"type":44,"tag":2038,"props":2127,"children":2128},{"style":2050},[2129],{"type":49,"value":2067},{"type":44,"tag":2038,"props":2131,"children":2132},{"style":2070},[2133],{"type":49,"value":2134}," Acme Custom Carrier\n",{"type":44,"tag":368,"props":2136,"children":2138},{"id":2137},"purpose",[2139],{"type":49,"value":2140},"Purpose",{"type":44,"tag":51,"props":2142,"children":2143},{},[2144,2146,2151,2153,2158],{"type":49,"value":2145},"Customize the per-board fileset for a new carrier board so downstream\n",{"type":44,"tag":57,"props":2147,"children":2149},{"className":2148},[],[2150],{"type":49,"value":62},{"type":49,"value":2152}," skills, ",{"type":44,"tag":57,"props":2154,"children":2156},{"className":2155},[],[2157],{"type":49,"value":563},{"type":49,"value":2159},", and the boot chain land on the\ncustom carrier instead of the reference devkit. Base DTB stays at the\nreference; carrier deltas live in a DT overlay so a re-derive against\na new reference BSP only needs to re-run this skill.",{"type":44,"tag":368,"props":2161,"children":2163},{"id":2162},"prerequisites",[2164],{"type":49,"value":2165},"Prerequisites",{"type":44,"tag":660,"props":2167,"children":2168},{},[2169,2191,2210,2229],{"type":44,"tag":664,"props":2170,"children":2171},{},[2172,2174,2182,2184,2189],{"type":49,"value":2173},"Active profile resolved per\n",{"type":44,"tag":66,"props":2175,"children":2176},{"href":68},[2177],{"type":44,"tag":57,"props":2178,"children":2180},{"className":2179},[],[2181],{"type":49,"value":75},{"type":49,"value":2183},"\nwith a ",{"type":44,"tag":57,"props":2185,"children":2187},{"className":2186},[],[2188],{"type":49,"value":91},{"type":49,"value":2190}," block (id, sku, flash-conf, friendly name).",{"type":44,"tag":664,"props":2192,"children":2193},{},[2194,2200,2202,2208],{"type":44,"tag":57,"props":2195,"children":2197},{"className":2196},[],[2198],{"type":49,"value":2199},"source.root_path\u002FLinux_for_Tegra\u002F.git",{"type":49,"value":2201}," initialized — run\n",{"type":44,"tag":57,"props":2203,"children":2205},{"className":2204},[],[2206],{"type":49,"value":2207},"\u002Fjetson-init-source",{"type":49,"value":2209}," first; this skill refuses if the overlay\ntracker is missing.",{"type":44,"tag":664,"props":2211,"children":2212},{},[2213,2219,2221,2227],{"type":44,"tag":57,"props":2214,"children":2216},{"className":2215},[],[2217],{"type":49,"value":2218},"bsp_image.root_path",{"type":49,"value":2220}," populated by ",{"type":44,"tag":57,"props":2222,"children":2224},{"className":2223},[],[2225],{"type":49,"value":2226},"\u002Fjetson-init-image",{"type":49,"value":2228}," so the\nreference flash-conf symlink can be resolved.",{"type":44,"tag":664,"props":2230,"children":2231},{},[2232,2238],{"type":44,"tag":57,"props":2233,"children":2235},{"className":2234},[],[2236],{"type":49,"value":2237},"reference_devkit:",{"type":49,"value":2239}," populated (module + carrier) so the rename rule\nhas carrier-id\u002Fsku tokens to substitute away from.",{"type":44,"tag":368,"props":2241,"children":2243},{"id":2242},"limitations",[2244],{"type":49,"value":2245},"Limitations",{"type":44,"tag":660,"props":2247,"children":2248},{},[2249,2266,2271,2338,2356],{"type":44,"tag":664,"props":2250,"children":2251},{},[2252,2254,2258,2260,2265],{"type":49,"value":2253},"Kernel base DTB and its source DTS are ",{"type":44,"tag":79,"props":2255,"children":2256},{},[2257],{"type":49,"value":145},{"type":49,"value":2259}," forked — carrier\ndeltas must layer through the DT overlay wired via\n",{"type":44,"tag":57,"props":2261,"children":2263},{"className":2262},[],[2264],{"type":49,"value":153},{"type":49,"value":155},{"type":44,"tag":664,"props":2267,"children":2268},{},[2269],{"type":49,"value":2270},"BPMP DTB fork is opt-in (default OFF). Most carrier swaps share the\nreference BPMP DTB; only opt in when board power\u002Fclock topology\ndiverges.",{"type":44,"tag":664,"props":2272,"children":2273},{},[2274,2276,2281,2283,2288,2289,2294,2295,2300,2301,2306,2307,2312,2313,2318,2319,2324,2325,2330,2331,2336],{"type":49,"value":2275},"Flash-conf content substitution is ",{"type":44,"tag":79,"props":2277,"children":2278},{},[2279],{"type":49,"value":2280},"targeted",{"type":49,"value":2282},", not blanket. Vars\nwhose files this skill does not fork (",{"type":44,"tag":57,"props":2284,"children":2286},{"className":2285},[],[2287],{"type":49,"value":674},{"type":49,"value":620},{"type":44,"tag":57,"props":2290,"children":2292},{"className":2291},[],[2293],{"type":49,"value":681},{"type":49,"value":635},{"type":44,"tag":57,"props":2296,"children":2298},{"className":2297},[],[2299],{"type":49,"value":988},{"type":49,"value":620},{"type":44,"tag":57,"props":2302,"children":2304},{"className":2303},[],[2305],{"type":49,"value":995},{"type":49,"value":620},{"type":44,"tag":57,"props":2308,"children":2310},{"className":2309},[],[2311],{"type":49,"value":1002},{"type":49,"value":620},{"type":44,"tag":57,"props":2314,"children":2316},{"className":2315},[],[2317],{"type":49,"value":1009},{"type":49,"value":635},{"type":44,"tag":57,"props":2320,"children":2322},{"className":2321},[],[2323],{"type":49,"value":1016},{"type":49,"value":620},{"type":44,"tag":57,"props":2326,"children":2328},{"className":2327},[],[2329],{"type":49,"value":1023},{"type":49,"value":1025},{"type":44,"tag":57,"props":2332,"children":2334},{"className":2333},[],[2335],{"type":49,"value":571},{"type":49,"value":2337},")\nstay at reference values — rewriting them would point at files that\ndo not exist.",{"type":44,"tag":664,"props":2339,"children":2340},{},[2341,2343,2348,2350,2355],{"type":49,"value":2342},"Custom-carrier IDs need not follow NVIDIA ",{"type":44,"tag":57,"props":2344,"children":2346},{"className":2345},[],[2347],{"type":49,"value":320},{"type":49,"value":2349}," style; the\np-stripped numeric token is derived only when the ID matches\n",{"type":44,"tag":57,"props":2351,"children":2353},{"className":2352},[],[2354],{"type":49,"value":351},{"type":49,"value":155},{"type":44,"tag":664,"props":2357,"children":2358},{},[2359,2361,2367],{"type":49,"value":2360},"Does not customize module-level files. Use the relevant\n",{"type":44,"tag":57,"props":2362,"children":2364},{"className":2363},[],[2365],{"type":49,"value":2366},"jetson-customize-*",{"type":49,"value":2368}," skill for pinmux, clocks, fan curves,\nnvpmodel, PCIe, UPHY, USB, MGBE, or camera deltas.",{"type":44,"tag":368,"props":2370,"children":2372},{"id":2371},"troubleshooting",[2373],{"type":49,"value":2374},"Troubleshooting",{"type":44,"tag":660,"props":2376,"children":2377},{},[2378,2395,2419,2449,2478,2499,2516],{"type":44,"tag":664,"props":2379,"children":2380},{},[2381,2393],{"type":44,"tag":79,"props":2382,"children":2383},{},[2384,2386,2391],{"type":49,"value":2385},"Refuses with \"no ",{"type":44,"tag":57,"props":2387,"children":2389},{"className":2388},[],[2390],{"type":49,"value":91},{"type":49,"value":2392}," block\"",{"type":49,"value":2394}," — declare the block in\nthe active profile before re-running; the skill will not infer it.",{"type":44,"tag":664,"props":2396,"children":2397},{},[2398,2410,2412,2417],{"type":44,"tag":79,"props":2399,"children":2400},{},[2401,2403,2408],{"type":49,"value":2402},"Refuses with \".git missing in ",{"type":44,"tag":57,"props":2404,"children":2406},{"className":2405},[],[2407],{"type":49,"value":409},{"type":49,"value":2409},"\"",{"type":49,"value":2411}," — overlay\ntracker not initialized. Run ",{"type":44,"tag":57,"props":2413,"children":2415},{"className":2414},[],[2416],{"type":49,"value":2207},{"type":49,"value":2418}," first.",{"type":44,"tag":664,"props":2420,"children":2421},{},[2422,2433,2435,2440,2442,2447],{"type":44,"tag":79,"props":2423,"children":2424},{},[2425,2426,2431],{"type":49,"value":2409},{"type":44,"tag":57,"props":2427,"children":2429},{"className":2428},[],[2430],{"type":49,"value":278},{"type":49,"value":2432}," not a symlink\"",{"type":49,"value":2434}," — NVIDIA convention is a\n",{"type":44,"tag":57,"props":2436,"children":2438},{"className":2437},[],[2439],{"type":49,"value":294},{"type":49,"value":2441}," symlink to ",{"type":44,"tag":57,"props":2443,"children":2445},{"className":2444},[],[2446],{"type":49,"value":302},{"type":49,"value":2448},"; if the\ntop-level is the real conf, the skill warns, treats it as real, and\nskips the symlink-wrapper row. Not an error.",{"type":44,"tag":664,"props":2450,"children":2451},{},[2452,2462,2464,2469,2471,2477],{"type":44,"tag":79,"props":2453,"children":2454},{},[2455,2460],{"type":44,"tag":57,"props":2456,"children":2458},{"className":2457},[],[2459],{"type":49,"value":1038},{"type":49,"value":2461}," reported success but the edit is missing",{"type":49,"value":2463}," — ",{"type":44,"tag":57,"props":2465,"children":2467},{"className":2466},[],[2468],{"type":49,"value":1038},{"type":49,"value":2470}," silently\nno-ops on miss. The skill re-greps after every patch and refuses to\ncommit on verification miss; for multi-line replacements switch to\nPython ",{"type":44,"tag":57,"props":2472,"children":2474},{"className":2473},[],[2475],{"type":49,"value":2476},"str.replace",{"type":49,"value":155},{"type":44,"tag":664,"props":2479,"children":2480},{},[2481,2491,2493,2497],{"type":44,"tag":79,"props":2482,"children":2483},{},[2484,2486],{"type":49,"value":2485},"\"chip: unknown\" \u002F fallback to ",{"type":44,"tag":57,"props":2487,"children":2489},{"className":2488},[],[2490],{"type":49,"value":195},{"type":49,"value":2492}," — module ID is not in\nthe ",{"type":44,"tag":66,"props":2494,"children":2495},{"href":184},[2496],{"type":49,"value":187},{"type":49,"value":2498},"; update\nthe catalogue rather than override in the profile.",{"type":44,"tag":664,"props":2500,"children":2501},{},[2502,2507,2509,2514],{"type":44,"tag":79,"props":2503,"children":2504},{},[2505],{"type":49,"value":2506},"Commit message preview prompt blocks the run",{"type":49,"value":2508}," — expected gate per\n",{"type":44,"tag":66,"props":2510,"children":2511},{"href":127},[2512],{"type":49,"value":2513},"commit-batching",{"type":49,"value":2515},";\naccept, edit, or cancel. On cancel the index is left staged for\nmanual resolution.",{"type":44,"tag":664,"props":2517,"children":2518},{},[2519,2524],{"type":44,"tag":79,"props":2520,"children":2521},{},[2522],{"type":49,"value":2523},"A mandatory source file is missing on this BSP",{"type":49,"value":2525}," — the row is\nrecorded as warn-and-skipped in the summary; the rest of the run\nstill completes.",{"type":44,"tag":2527,"props":2528,"children":2529},"style",{},[2530],{"type":49,"value":2531},"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":2533,"total":2692},[2534,2552,2570,2581,2593,2607,2620,2634,2647,2658,2672,2681],{"slug":2535,"name":2535,"fn":2536,"description":2537,"org":2538,"tags":2539,"stars":2549,"repoUrl":2550,"updatedAt":2551},"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},[2540,2543,2546],{"name":2541,"slug":2542,"type":15},"Documentation","documentation",{"name":2544,"slug":2545,"type":15},"MCP","mcp",{"name":2547,"slug":2548,"type":15},"Search","search",21777,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FNemoClaw","2026-07-20T06:00:01.461044",{"slug":2553,"name":2553,"fn":2554,"description":2555,"org":2556,"tags":2557,"stars":2567,"repoUrl":2568,"updatedAt":2569},"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},[2558,2561,2564],{"name":2559,"slug":2560,"type":15},"Containers","containers",{"name":2562,"slug":2563,"type":15},"Deployment","deployment",{"name":2565,"slug":2566,"type":15},"Python","python",17049,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM","2026-07-27T06:06:11.249662",{"slug":2571,"name":2571,"fn":2572,"description":2573,"org":2574,"tags":2575,"stars":2567,"repoUrl":2568,"updatedAt":2580},"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},[2576,2579],{"name":2577,"slug":2578,"type":15},"CI\u002FCD","ci-cd",{"name":2562,"slug":2563,"type":15},"2026-07-14T05:25:59.97109",{"slug":2582,"name":2582,"fn":2583,"description":2584,"org":2585,"tags":2586,"stars":2567,"repoUrl":2568,"updatedAt":2592},"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},[2587,2588,2589],{"name":2577,"slug":2578,"type":15},{"name":2562,"slug":2563,"type":15},{"name":2590,"slug":2591,"type":15},"GitHub","github","2026-07-27T06:06:12.278222",{"slug":2594,"name":2594,"fn":2595,"description":2596,"org":2597,"tags":2598,"stars":2567,"repoUrl":2568,"updatedAt":2606},"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},[2599,2602,2603],{"name":2600,"slug":2601,"type":15},"Debugging","debugging",{"name":2590,"slug":2591,"type":15},{"name":2604,"slug":2605,"type":15},"Triage","triage","2026-07-14T05:25:57.442089",{"slug":2608,"name":2608,"fn":2609,"description":2610,"org":2611,"tags":2612,"stars":2567,"repoUrl":2568,"updatedAt":2619},"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},[2613,2616],{"name":2614,"slug":2615,"type":15},"Best Practices","best-practices",{"name":2617,"slug":2618,"type":15},"Code Analysis","code-analysis","2026-07-14T05:25:56.18433",{"slug":2621,"name":2621,"fn":2622,"description":2623,"org":2624,"tags":2625,"stars":2567,"repoUrl":2568,"updatedAt":2633},"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},[2626,2629,2632],{"name":2627,"slug":2628,"type":15},"Machine Learning","machine-learning",{"name":2630,"slug":2631,"type":15},"Migration","migration",{"name":9,"slug":8,"type":15},"2026-07-17T06:07:11.777011",{"slug":2635,"name":2635,"fn":2636,"description":2637,"org":2638,"tags":2639,"stars":2567,"repoUrl":2568,"updatedAt":2646},"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},[2640,2643],{"name":2641,"slug":2642,"type":15},"QA","qa",{"name":2644,"slug":2645,"type":15},"Testing","testing","2026-07-14T05:25:53.673039",{"slug":2648,"name":2648,"fn":2649,"description":2650,"org":2651,"tags":2652,"stars":2567,"repoUrl":2568,"updatedAt":2657},"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},[2653,2654],{"name":2562,"slug":2563,"type":15},{"name":2655,"slug":2656,"type":15},"Infrastructure","infrastructure","2026-07-14T05:25:49.362534",{"slug":2659,"name":2659,"fn":2660,"description":2661,"org":2662,"tags":2663,"stars":2567,"repoUrl":2568,"updatedAt":2671},"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},[2664,2667,2668],{"name":2665,"slug":2666,"type":15},"Code Review","code-review",{"name":2590,"slug":2591,"type":15},{"name":2669,"slug":2670,"type":15},"Pull Requests","pull-requests","2026-07-14T05:26:01.226578",{"slug":2673,"name":2673,"fn":2674,"description":2675,"org":2676,"tags":2677,"stars":2567,"repoUrl":2568,"updatedAt":2680},"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},[2678,2679],{"name":2641,"slug":2642,"type":15},{"name":2644,"slug":2645,"type":15},"2026-07-14T05:25:54.928983",{"slug":2682,"name":2682,"fn":2683,"description":2684,"org":2685,"tags":2686,"stars":2567,"repoUrl":2568,"updatedAt":2691},"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},[2687,2690],{"name":2688,"slug":2689,"type":15},"Automation","automation",{"name":2577,"slug":2578,"type":15},"2026-07-30T05:29:03.275638",496,{"items":2694,"total":2790},[2695,2712,2722,2736,2746,2761,2776],{"slug":2696,"name":2696,"fn":2697,"description":2698,"org":2699,"tags":2700,"stars":17,"repoUrl":18,"updatedAt":2711},"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},[2701,2704,2707,2708],{"name":2702,"slug":2703,"type":15},"Data Analysis","data-analysis",{"name":2705,"slug":2706,"type":15},"Data Engineering","data-engineering",{"name":9,"slug":8,"type":15},{"name":2709,"slug":2710,"type":15},"Performance","performance","2026-07-14T05:28:43.176466",{"slug":2713,"name":2713,"fn":2714,"description":2715,"org":2716,"tags":2717,"stars":17,"repoUrl":18,"updatedAt":2721},"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},[2718,2719,2720],{"name":2562,"slug":2563,"type":15},{"name":2655,"slug":2656,"type":15},{"name":9,"slug":8,"type":15},"2026-07-14T05:29:06.667109",{"slug":2723,"name":2723,"fn":2724,"description":2725,"org":2726,"tags":2727,"stars":17,"repoUrl":18,"updatedAt":2735},"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},[2728,2731,2732],{"name":2729,"slug":2730,"type":15},"Agents","agents",{"name":9,"slug":8,"type":15},{"name":2733,"slug":2734,"type":15},"Research","research","2026-07-14T05:28:06.816956",{"slug":2737,"name":2737,"fn":2738,"description":2739,"org":2740,"tags":2741,"stars":17,"repoUrl":18,"updatedAt":2745},"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},[2742,2743,2744],{"name":2702,"slug":2703,"type":15},{"name":9,"slug":8,"type":15},{"name":2644,"slug":2645,"type":15},"2026-07-17T05:29:03.913266",{"slug":2747,"name":2747,"fn":2748,"description":2749,"org":2750,"tags":2751,"stars":17,"repoUrl":18,"updatedAt":2760},"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},[2752,2753,2756,2757],{"name":2688,"slug":2689,"type":15},{"name":2754,"slug":2755,"type":15},"Imaging","imaging",{"name":9,"slug":8,"type":15},{"name":2758,"slug":2759,"type":15},"Video","video","2026-07-17T05:28:53.905004",{"slug":2762,"name":2762,"fn":2763,"description":2764,"org":2765,"tags":2766,"stars":17,"repoUrl":18,"updatedAt":2775},"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},[2767,2768,2771,2772],{"name":2562,"slug":2563,"type":15},{"name":2769,"slug":2770,"type":15},"Docker","docker",{"name":9,"slug":8,"type":15},{"name":2773,"slug":2774,"type":15},"Operations","operations","2026-07-17T05:28:56.913999",{"slug":2777,"name":2777,"fn":2778,"description":2779,"org":2780,"tags":2781,"stars":17,"repoUrl":18,"updatedAt":2789},"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},[2782,2783,2786],{"name":9,"slug":8,"type":15},{"name":2784,"slug":2785,"type":15},"Quantum Computing","quantum-computing",{"name":2787,"slug":2788,"type":15},"Simulation","simulation","2026-07-14T05:26:58.898253",305]