[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-nvidia-doca-erasure-coding":3,"mdc--xqjnmd-key":28,"related-repo-nvidia-doca-erasure-coding":1466,"related-org-nvidia-doca-erasure-coding":1572},{"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},"doca-erasure-coding","program DOCA erasure coding contexts","Use this skill when the user is doing hands-on DOCA Erasure Coding programming on a BlueField DPU, ConnectX NIC, or host — bringing up a doca_ec context, picking among the create \u002F recover \u002F update tasks, choosing matrix type \u002F N \u002F K \u002F block size, querying doca_ec_cap_* before sizing, setting doca_mmap src\u002Fdst permissions, or debugging DOCA_ERROR_* returns from doca_ec_task_*. Trigger even when the user does not name \"DOCA Erasure Coding\" or \"Reed-Solomon\" — typical implicit phrasings include \"one data block changed, how do I refresh parity without re-encoding\", \"a disk failed and 2 parity blocks are gone, can I rebuild\", \"RAID-6 resilience across 12 disks\", \"my doca_ec_task_create returns NOT_PERMITTED\", or \"is this N+K layout still recoverable\". Refuse and route elsewhere for non-Reed-Solomon codes (fountain \u002F LDPC \u002F raptor), pure-replication designs, network FEC, or other DOCA accelerator libraries (SHA \u002F Compress \u002F AES-GCM \u002F DMA) — those belong to other skills.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},"nvidia","NVIDIA","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fnvidia.png",[12,14],{"name":9,"slug":8,"type":13},"tag",{"name":15,"slug":16,"type":13},"Engineering","engineering",2473,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fskills","2026-07-20T06:24:05.220234","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\u002Fdoca-erasure-coding","---\nlicense: Apache-2.0\nname: doca-erasure-coding\ndescription: >\n  Use this skill when the user is doing hands-on DOCA Erasure Coding\n  programming on a BlueField DPU, ConnectX NIC, or host — bringing\n  up a doca_ec context, picking among the create \u002F recover \u002F update\n  tasks, choosing matrix type \u002F N \u002F K \u002F block size, querying\n  doca_ec_cap_* before sizing, setting doca_mmap src\u002Fdst\n  permissions, or debugging DOCA_ERROR_* returns from\n  doca_ec_task_*. Trigger even when the user does not name \"DOCA\n  Erasure Coding\" or \"Reed-Solomon\" — typical implicit phrasings\n  include \"one data block changed, how do I refresh parity without\n  re-encoding\", \"a disk failed and 2 parity blocks are gone, can I\n  rebuild\", \"RAID-6 resilience across 12 disks\", \"my\n  doca_ec_task_create returns NOT_PERMITTED\", or \"is this N+K layout\n  still recoverable\". Refuse and route elsewhere for non-Reed-Solomon\n  codes (fountain \u002F LDPC \u002F raptor), pure-replication designs,\n  network FEC, or other DOCA accelerator libraries (SHA \u002F Compress \u002F\n  AES-GCM \u002F DMA) — those belong to other skills.\nmetadata:\n  kind: library\ncompatibility: >\n  Requires DOCA SDK installed at \u002Fopt\u002Fmellanox\u002Fdoca on Linux (Ubuntu\n  22.04\u002F24.04 or RHEL\u002FSLES) with a BlueField DPU or ConnectX NIC\n  attached. Reads the user's local install via `pkg-config\n  doca-erasure-coding` and inspects\n  \u002Fopt\u002Fmellanox\u002Fdoca\u002F{lib,include,samples,applications}.\n---\n\n# DOCA Erasure Coding\n\n**Where to start:** This skill assumes DOCA is already installed and\nthe user is doing **hands-on erasure-coding work** on a BlueField \u002F\nConnectX \u002F host with DOCA. Open [`TASKS.md`](TASKS.md) if the user\nwants to *do* something (configure \u002F build \u002F modify \u002F run \u002F test \u002F\ndebug); open [`CAPABILITIES.md`](CAPABILITIES.md) when the question\nis *what can DOCA Erasure Coding express* on this version. If the\nuser has not installed DOCA yet, route to\n[`doca-setup`](..\u002F..\u002Fdoca-setup\u002FSKILL.md) first. If the user is\nasking *\"should I even use erasure coding here, or just replicate\nthe data?\"*, the path-selection rule in\n[`CAPABILITIES.md ## Capabilities and modes`](CAPABILITIES.md#capabilities-and-modes)\nis the first stop — erasure coding is a **storage-resilience**\nprimitive (RAID-6 \u002F distributed file system parity \u002F object-storage\nerasure-coded buckets), not a network primitive and not a\nreplication substitute.\n\n## Example questions this skill answers well\n\nThe CLASSES of DOCA Erasure Coding questions this skill is built\nto answer, each with one worked example. The agent should treat\nthe *class* as the load-bearing piece — the worked example is a\nsingle instance.\n\n- **\"Should I offload this erasure coding to DOCA, or do it on the\n  CPU — or just replicate the data instead?\"** — worked example:\n  *\"I am writing a distributed object store that wants RAID-6-like\n  resilience across 12 disks; is doca-erasure-coding the right\n  primitive, or should I just keep three copies?\"*. Answered by\n  the path-selection table in\n  [`CAPABILITIES.md ## Capabilities and modes`](CAPABILITIES.md#capabilities-and-modes)\n  + the *\"when NOT to use doca-erasure-coding\"* bullets in\n  [`CAPABILITIES.md ## Safety policy`](CAPABILITIES.md#safety-policy).\n- **\"Does my device support the EC task type, block size, N+K\n  layout, and matrix type I want?\"** — worked example: *\"is\n  `doca_ec_task_create` on this BlueField, what is the maximum\n  block size, what is the cap on N+K, and does the device\n  advertise a Vandermonde Reed-Solomon matrix?\"*. Answered by\n  the per-task + matrix + size capability-query rule\n  (`doca_ec_cap_task_create_is_supported`,\n  `_task_recover_is_supported`, `_task_update_is_supported`,\n  `_task_galois_mul_is_supported` — the 4th public task on the\n  EC accelerator, `doca_ec_cap_get_max_block_size`,\n  `doca_ec_cap_get_max_buf_list_len`, and per-variant\n  `doca_ec_matrix_create()` constructor success — the public\n  header does NOT ship a `doca_ec_cap_get_matrix_*` family) in\n  [`CAPABILITIES.md ## Capabilities and modes`](CAPABILITIES.md#capabilities-and-modes)\n  + the discovery step in\n  [`TASKS.md ## configure`](TASKS.md#configure).\n- **\"One source block changed — do I have to recompute all the\n  parity from scratch?\"** — worked example: *\"I have 8 data + 4\n  parity blocks on disk; one data block was just rewritten. How\n  do I express the parity update without re-running the full\n  encode?\"*. Answered by the `doca_ec_task_update` row in the\n  task-type table in\n  [`CAPABILITIES.md ## Capabilities and modes`](CAPABILITIES.md#capabilities-and-modes)\n  + the update-vs-re-encode rule in\n  [`CAPABILITIES.md ## Safety policy`](CAPABILITIES.md#safety-policy)\n  + the modify-from-sample slot for switching between create and\n  update tasks in\n  [`TASKS.md ## modify`](TASKS.md#modify).\n- **\"K of my N+K blocks went missing — how do I reconstruct\n  them?\"** — worked example: *\"a disk failed; the 8 data blocks\n  are intact but 2 of the 4 parity blocks are gone; can DOCA\n  recover them?\"*. Answered by the\n  `doca_ec_task_recover` row in the task-type table in\n  [`CAPABILITIES.md ## Capabilities and modes`](CAPABILITIES.md#capabilities-and-modes)\n  + the recover smoke (encode → drop a block → recover → bit-compare)\n  in [`TASKS.md ## test`](TASKS.md#test).\n- **\"What permissions does the source \u002F destination mmap need?\"** —\n  worked example: *\"my `doca_ec_task_create` returns\n  `DOCA_ERROR_NOT_PERMITTED`\"*. Answered by the permission matrix\n  in [`CAPABILITIES.md ## Safety policy`](CAPABILITIES.md#safety-policy)\n  + the mmap-set-permissions checklist in\n  [`TASKS.md ## test`](TASKS.md#test).\n- **\"Is this DOCA Erasure Coding API available on my installed\n  DOCA version?\"** — worked example: *\"is `doca_ec_task_update` in\n  the DOCA I have installed, or do I have to recompute parity from\n  scratch?\"*. Answered by the version-compatibility overlay in\n  [`CAPABILITIES.md ## Version compatibility`](CAPABILITIES.md#version-compatibility),\n  which cross-links the canonical detection chain in\n  [`doca-version`](..\u002F..\u002Fdoca-version\u002FSKILL.md) and adds the\n  EC-specific *\"discover per-task support + matrix type via cap\n  query\"* bullets.\n- **\"What does this `DOCA_ERROR_*` from an EC call mean and which\n  layer caused it?\"** — worked example: *\"`DOCA_ERROR_INVALID_VALUE`\n  on `doca_ec_task_create_allocate_init` with block_size = 4 MiB\"*.\n  Answered by the EC overlay on the cross-library taxonomy in\n  [`CAPABILITIES.md ## Error taxonomy`](CAPABILITIES.md#error-taxonomy)\n  + the layered ladder in\n  [`TASKS.md ## debug`](TASKS.md#debug) that escalates to\n  [`doca-debug`](..\u002F..\u002Fdoca-debug\u002FSKILL.md).\n\n## Audience\n\nThis skill serves **external developers building applications that\nconsume the DOCA Erasure Coding library** — i.e., users whose code\ncalls `doca_ec_*` (directly in C\u002FC++, or through FFI\u002Fbindings from\nanother language) to offload Reed-Solomon erasure coding onto a\nBlueField DPU or ConnectX accelerator. It is *not* for NVIDIA\ndevelopers contributing to DOCA Erasure Coding itself.\n\nThe canonical fit is **distributed storage**: RAID-6-style block\nlayouts, distributed file system parity, object-storage\nerasure-coded buckets, and any data-durability workload where the\nN data + K redundancy block model lets the system tolerate K\nsimultaneous block losses without data loss. The skill keeps the\nagent oriented to that domain: erasure coding is operationally\ndistinct from pure replication (which keeps M whole copies) and\nfrom RAID-6 the disk layout (which is one specific instance of\nthe N=k, K=2 case); confusing them produces wrong recommendations.\n\n**Language scope.** DOCA Erasure Coding ships as a C library with\n`pkg-config` module name `doca-erasure-coding`. The shipped samples\nare written in C. C and C++ consumers are the canonical case and\nthe worked examples in `TASKS.md` assume that path. Other-language\nconsumers (Rust, Go, Python, …) consume the same `*.so` through\nFFI or language-specific bindings; the skill's contribution in\nthat case is to keep the lifecycle, capability-discovery,\npermission, error-taxonomy, and create-vs-recover-vs-update\nguidance language-neutral, and to route the agent to the public C\nABI as the authoritative surface that any wrapper will eventually\ncall.\n\n## When to load this skill\n\nLoad this skill when the user is doing hands-on DOCA Erasure\nCoding work, in any language. Concretely:\n\n- Initializing a `doca_ec` context on a `doca_dev` and configuring\n  at least one task type (`doca_ec_task_create`,\n  `doca_ec_task_recover`, and\u002For `doca_ec_task_update`) before\n  `doca_ctx_start()`.\n- Choosing between the **create** task (encode N data blocks into\n  K redundancy blocks), the **recover** task (reconstruct up to K\n  missing blocks given the surviving subset), and the **update**\n  task (incrementally update redundancy blocks when one source\n  block changes — much cheaper than re-encoding from scratch).\n- Picking the coding parameters: matrix type \u002F coding scheme\n  (typically Vandermonde or Cauchy for Reed-Solomon), N (number\n  of data blocks), K (number of redundancy blocks), and block\n  size (all blocks the same size).\n- Setting permissions on `doca_mmap` correctly for the source\n  buffers — data blocks for create, data + parity for recover —\n  (`DOCA_ACCESS_FLAG_LOCAL_READ_ONLY` at minimum) and the\n  destination buffers — redundancy blocks for create, recovered\n  blocks for recover, updated parity for update —\n  (`DOCA_ACCESS_FLAG_LOCAL_READ_WRITE`).\n- Sizing blocks against\n  `doca_ec_cap_get_max_block_size(devinfo)` and N+K against\n  `doca_ec_cap_get_max_buf_list_len(devinfo, &max_buf_list_len)`.\n- Checking which task types and matrix schemes this device's\n  accelerator advertises via the\n  `doca_ec_cap_task_*_is_supported` (including the 4th task\n  `_task_galois_mul_is_supported`) and per-variant\n  `doca_ec_matrix_create()` constructor success — the public\n  header does NOT ship a `doca_ec_cap_get_matrix_*`\n  families against the active `doca_devinfo`.\n- Validating against a known-vector recover smoke (encode a small\n  N + K layout, simulate one block loss, recover, bit-compare\n  against the original block) before pushing bulk storage data\n  through the accelerator.\n- Recognising when **update** is the right task (single source\n  block changed in an existing N + K layout — `doca_ec_task_update`\n  is far cheaper than recomputing all K parity blocks via a fresh\n  `doca_ec_task_create`).\n- Debugging a `DOCA_ERROR_*` returned from an EC call (lifecycle\n  vs. block-size vs. N+K vs. matrix-type vs. permission vs.\n  queue pressure) and the task-completion event on the progress\n  engine.\n- Designing or extending non-C bindings (Rust, Go, Python, …)\n  that wrap the EC C ABI — for the lifecycle, permission,\n  capability, and create-vs-recover-vs-update rules the wrapper\n  must honor.\n\nDo **not** load this skill for general DOCA orientation, install\nof DOCA itself, non-Reed-Solomon erasure codes (fountain codes,\nLDPC — those belong on a CPU library, not the DOCA accelerator),\npure replication \u002F mirroring designs (erasure coding is the wrong\nprimitive when one extra copy is the right answer), or other\nDOCA libraries. For those, use\n[`doca-public-knowledge-map`](..\u002F..\u002Fdoca-public-knowledge-map\u002FSKILL.md).\n\n## What this skill provides\n\nThis is a **thin loader**. The body keeps only the orientation\nneeded to pick the right next file. The substantive\nEC-specific material lives in two companion files:\n\n- `CAPABILITIES.md` — what DOCA Erasure Coding can express on\n  this version: the three task types (create \u002F recover \u002F update,\n  each independently capability-gated), the matrix-type + N + K +\n  block-size configuration surface, the capability-query family\n  (`doca_ec_cap_*` for task support, max block size, max N+K,\n  supported matrix types), the EC error taxonomy (mapped onto\n  the cross-library `DOCA_ERROR_*` set), the observability\n  surface (per-task completion events on the progress engine),\n  the safety policy that gates source \u002F destination mmap\n  permission decisions, and the path-selection rule (when to use\n  doca-erasure-coding versus a CPU EC library versus pure\n  replication versus RAID-6 on disk).\n- `TASKS.md` — step-by-step workflows for the six in-scope EC\n  verbs: `configure`, `build`, `modify`, `run`, `test`, `debug`.\n  Plus a `Deferred task verbs` block that points out-of-scope\n  questions at the right next skill.\n\nThe skill assumes a host or BlueField where DOCA is already\ninstalled at the standard location and the user has the\nprivileges their public install profile expects. It does not\ncover installing DOCA — that path goes through\n[`doca-setup`](..\u002F..\u002Fdoca-setup\u002FSKILL.md).\n\n## What this skill deliberately does not ship\n\nThis skill is **agent guidance**, not a samples or templates\nbundle. To keep the boundary clean, it deliberately does not\ncontain — and pull requests should not add:\n\n- **Pre-written DOCA EC application source code, in any\n  language.** The verified EC source code is the shipped C\n  samples at `\u002Fopt\u002Fmellanox\u002Fdoca\u002Fsamples\u002Fdoca_erasure_coding\u002F`.\n  The agent's job is to route the user to those files and\n  prescribe a minimum-diff modification on them via the universal\n  modify-a-sample workflow in\n  [`doca-programming-guide`](..\u002F..\u002Fdoca-programming-guide\u002FSKILL.md),\n  layered with the EC-specific overrides in\n  [`TASKS.md ## modify`](TASKS.md#modify).\n- **Pre-computed parity tables for arbitrary N + K layouts.**\n  The skill tells the agent to use a *known-vector* smoke\n  (encode a tiny N + K layout from a fixed input, simulate\n  losing one block, recover, bit-compare against the original)\n  as the smoke before bulk; it does not ship a vector bank of\n  its own.\n- **Standalone build manifests** (`meson.build`,\n  `CMakeLists.txt`, `Cargo.toml`, …) parked inside the skill.\n  The agent constructs the build manifest *in the user's\n  project directory* against the user's installed DOCA, where\n  `pkg-config --modversion doca-erasure-coding` is the source of\n  truth.\n- **A `samples\u002F`, `bindings\u002F`, or `reference\u002F` subtree** of any\n  kind. A mock or incomplete artifact in this skill's tree, even\n  one labeled \"reference\", is misleading: users will read it as\n  buildable.\n\n## Loading order\n\n1. Read this `SKILL.md` first to confirm the user's question is in\n   scope (storage-domain resilience — N data + K redundancy\n   blocks — and not a network or replication question\n   misclassified as erasure coding).\n2. **For the EC capability matrix, the three task types\n   (create \u002F recover \u002F update), the matrix-type + N + K +\n   block-size configuration surface, the capability-query rules,\n   permission matrix, error taxonomy, observability, and safety \u002F\n   path-selection policy, see [CAPABILITIES.md](CAPABILITIES.md).**\n3. **For step-by-step workflows — configure, build, modify, run,\n   test, debug — see [TASKS.md](TASKS.md).**\n\nBoth companion files cross-link to each other,\n[`doca-version`](..\u002F..\u002Fdoca-version\u002FSKILL.md) for the canonical\nversion-handling rules, and\n[`doca-public-knowledge-map`](..\u002F..\u002Fdoca-public-knowledge-map\u002FSKILL.md)\nwhenever the right answer is \"look it up in the public docs or\nthe installed package layout\" rather than \"EC-specific guidance\".\n\n## Related skills\n\n- [`doca-public-knowledge-map`](..\u002F..\u002Fdoca-public-knowledge-map\u002FSKILL.md) —\n  the routing table for every public DOCA documentation source\n  and the on-disk layout of an installed DOCA package. The DOCA\n  Erasure Coding page lives at\n  \u003Chttps:\u002F\u002Fdocs.nvidia.com\u002Fdoca\u002Fsdk\u002FDOCA-Erasure-Coding\u002Findex.html>;\n  the install-tree layout (samples directory, header location)\n  belongs to the public knowledge map, not to this skill.\n- [`doca-setup`](..\u002F..\u002Fdoca-setup\u002FSKILL.md) — env preparation,\n  install verification, and the *I have no install yet* path\n  with the public NGC DOCA container. This skill assumes its\n  preconditions are satisfied.\n- [`doca-version`](..\u002F..\u002Fdoca-version\u002FSKILL.md) — canonical DOCA\n  version-handling rules. This skill's\n  [`## Version compatibility`](CAPABILITIES.md#version-compatibility)\n  cross-links the four-way match rule and adds only the\n  EC-specific *\"discover per-task support + supported matrix\n  types + max block size + max N+K via cap query\"* overlay.\n- [`doca-structured-tools-contract`](..\u002F..\u002Fdoca-structured-tools-contract\u002FSKILL.md) —\n  the bundle's structured-tools precedence rule (detect \u002F prefer\n  \u002F fall back \u002F report). The Command appendix in\n  [TASKS.md](TASKS.md) honors this contract.\n- [`doca-programming-guide`](..\u002F..\u002Fdoca-programming-guide\u002FSKILL.md) —\n  general DOCA programming patterns shared by every library: the\n  canonical `pkg-config` + meson build pattern, the universal\n  modify-a-shipped-sample first-app workflow, the universal\n  lifecycle, the cross-library `DOCA_ERROR_*` taxonomy, and the\n  program-side debug order. This skill layers EC specifics on\n  top.\n- [`doca-debug`](..\u002F..\u002Fdoca-debug\u002FSKILL.md) — the cross-cutting\n  debug ladder (install \u002F version \u002F build \u002F link \u002F runtime \u002F\n  program \u002F driver). EC-specific debug (task-not-supported,\n  matrix-type-unsupported, block-size-over-max, N+K-over-max,\n  recover-with-too-many-missing) overlays on top of that ladder.\n",{"data":29,"body":33},{"license":20,"name":4,"description":6,"metadata":30,"compatibility":32},{"kind":31},"library","Requires DOCA SDK installed at \u002Fopt\u002Fmellanox\u002Fdoca on Linux (Ubuntu 22.04\u002F24.04 or RHEL\u002FSLES) with a BlueField DPU or ConnectX NIC attached. Reads the user's local install via `pkg-config doca-erasure-coding` and inspects \u002Fopt\u002Fmellanox\u002Fdoca\u002F{lib,include,samples,applications}.\n",{"type":34,"children":35},"root",[36,44,140,147,159,636,642,669,681,721,727,732,949,971,977,989,1078,1092,1098,1110,1249,1255,1298,1323,1329],{"type":37,"tag":38,"props":39,"children":40},"element","h1",{"id":4},[41],{"type":42,"value":43},"text","DOCA Erasure Coding",{"type":37,"tag":45,"props":46,"children":47},"p",{},[48,54,56,61,63,74,76,82,84,93,95,100,102,112,114,119,121,131,133,138],{"type":37,"tag":49,"props":50,"children":51},"strong",{},[52],{"type":42,"value":53},"Where to start:",{"type":42,"value":55}," This skill assumes DOCA is already installed and\nthe user is doing ",{"type":37,"tag":49,"props":57,"children":58},{},[59],{"type":42,"value":60},"hands-on erasure-coding work",{"type":42,"value":62}," on a BlueField \u002F\nConnectX \u002F host with DOCA. Open ",{"type":37,"tag":64,"props":65,"children":67},"a",{"href":66},"TASKS.md",[68],{"type":37,"tag":69,"props":70,"children":72},"code",{"className":71},[],[73],{"type":42,"value":66},{"type":42,"value":75}," if the user\nwants to ",{"type":37,"tag":77,"props":78,"children":79},"em",{},[80],{"type":42,"value":81},"do",{"type":42,"value":83}," something (configure \u002F build \u002F modify \u002F run \u002F test \u002F\ndebug); open ",{"type":37,"tag":64,"props":85,"children":87},{"href":86},"CAPABILITIES.md",[88],{"type":37,"tag":69,"props":89,"children":91},{"className":90},[],[92],{"type":42,"value":86},{"type":42,"value":94}," when the question\nis ",{"type":37,"tag":77,"props":96,"children":97},{},[98],{"type":42,"value":99},"what can DOCA Erasure Coding express",{"type":42,"value":101}," on this version. If the\nuser has not installed DOCA yet, route to\n",{"type":37,"tag":64,"props":103,"children":105},{"href":104},"..\u002F..\u002Fdoca-setup\u002FSKILL.md",[106],{"type":37,"tag":69,"props":107,"children":109},{"className":108},[],[110],{"type":42,"value":111},"doca-setup",{"type":42,"value":113}," first. If the user is\nasking ",{"type":37,"tag":77,"props":115,"children":116},{},[117],{"type":42,"value":118},"\"should I even use erasure coding here, or just replicate\nthe data?\"",{"type":42,"value":120},", the path-selection rule in\n",{"type":37,"tag":64,"props":122,"children":124},{"href":123},"CAPABILITIES.md#capabilities-and-modes",[125],{"type":37,"tag":69,"props":126,"children":128},{"className":127},[],[129],{"type":42,"value":130},"CAPABILITIES.md ## Capabilities and modes",{"type":42,"value":132},"\nis the first stop — erasure coding is a ",{"type":37,"tag":49,"props":134,"children":135},{},[136],{"type":42,"value":137},"storage-resilience",{"type":42,"value":139},"\nprimitive (RAID-6 \u002F distributed file system parity \u002F object-storage\nerasure-coded buckets), not a network primitive and not a\nreplication substitute.",{"type":37,"tag":141,"props":142,"children":144},"h2",{"id":143},"example-questions-this-skill-answers-well",[145],{"type":42,"value":146},"Example questions this skill answers well",{"type":37,"tag":45,"props":148,"children":149},{},[150,152,157],{"type":42,"value":151},"The CLASSES of DOCA Erasure Coding questions this skill is built\nto answer, each with one worked example. The agent should treat\nthe ",{"type":37,"tag":77,"props":153,"children":154},{},[155],{"type":42,"value":156},"class",{"type":42,"value":158}," as the load-bearing piece — the worked example is a\nsingle instance.",{"type":37,"tag":160,"props":161,"children":162},"ul",{},[163,216,330,394,445,502,556],{"type":37,"tag":164,"props":165,"children":166},"li",{},[167,172,174,179,181,189],{"type":37,"tag":49,"props":168,"children":169},{},[170],{"type":42,"value":171},"\"Should I offload this erasure coding to DOCA, or do it on the\nCPU — or just replicate the data instead?\"",{"type":42,"value":173}," — worked example:\n",{"type":37,"tag":77,"props":175,"children":176},{},[177],{"type":42,"value":178},"\"I am writing a distributed object store that wants RAID-6-like\nresilience across 12 disks; is doca-erasure-coding the right\nprimitive, or should I just keep three copies?\"",{"type":42,"value":180},". Answered by\nthe path-selection table in\n",{"type":37,"tag":64,"props":182,"children":183},{"href":123},[184],{"type":37,"tag":69,"props":185,"children":187},{"className":186},[],[188],{"type":42,"value":130},{"type":37,"tag":160,"props":190,"children":191},{},[192],{"type":37,"tag":164,"props":193,"children":194},{},[195,197,202,204,214],{"type":42,"value":196},"the ",{"type":37,"tag":77,"props":198,"children":199},{},[200],{"type":42,"value":201},"\"when NOT to use doca-erasure-coding\"",{"type":42,"value":203}," bullets in\n",{"type":37,"tag":64,"props":205,"children":207},{"href":206},"CAPABILITIES.md#safety-policy",[208],{"type":37,"tag":69,"props":209,"children":211},{"className":210},[],[212],{"type":42,"value":213},"CAPABILITIES.md ## Safety policy",{"type":42,"value":215},".",{"type":37,"tag":164,"props":217,"children":218},{},[219,224,226,239,241,247,249,255,257,263,264,270,272,278,279,285,287,293,295,301,303,311],{"type":37,"tag":49,"props":220,"children":221},{},[222],{"type":42,"value":223},"\"Does my device support the EC task type, block size, N+K\nlayout, and matrix type I want?\"",{"type":42,"value":225}," — worked example: ",{"type":37,"tag":77,"props":227,"children":228},{},[229,231,237],{"type":42,"value":230},"\"is\n",{"type":37,"tag":69,"props":232,"children":234},{"className":233},[],[235],{"type":42,"value":236},"doca_ec_task_create",{"type":42,"value":238}," on this BlueField, what is the maximum\nblock size, what is the cap on N+K, and does the device\nadvertise a Vandermonde Reed-Solomon matrix?\"",{"type":42,"value":240},". Answered by\nthe per-task + matrix + size capability-query rule\n(",{"type":37,"tag":69,"props":242,"children":244},{"className":243},[],[245],{"type":42,"value":246},"doca_ec_cap_task_create_is_supported",{"type":42,"value":248},",\n",{"type":37,"tag":69,"props":250,"children":252},{"className":251},[],[253],{"type":42,"value":254},"_task_recover_is_supported",{"type":42,"value":256},", ",{"type":37,"tag":69,"props":258,"children":260},{"className":259},[],[261],{"type":42,"value":262},"_task_update_is_supported",{"type":42,"value":248},{"type":37,"tag":69,"props":265,"children":267},{"className":266},[],[268],{"type":42,"value":269},"_task_galois_mul_is_supported",{"type":42,"value":271}," — the 4th public task on the\nEC accelerator, ",{"type":37,"tag":69,"props":273,"children":275},{"className":274},[],[276],{"type":42,"value":277},"doca_ec_cap_get_max_block_size",{"type":42,"value":248},{"type":37,"tag":69,"props":280,"children":282},{"className":281},[],[283],{"type":42,"value":284},"doca_ec_cap_get_max_buf_list_len",{"type":42,"value":286},", and per-variant\n",{"type":37,"tag":69,"props":288,"children":290},{"className":289},[],[291],{"type":42,"value":292},"doca_ec_matrix_create()",{"type":42,"value":294}," constructor success — the public\nheader does NOT ship a ",{"type":37,"tag":69,"props":296,"children":298},{"className":297},[],[299],{"type":42,"value":300},"doca_ec_cap_get_matrix_*",{"type":42,"value":302}," family) in\n",{"type":37,"tag":64,"props":304,"children":305},{"href":123},[306],{"type":37,"tag":69,"props":307,"children":309},{"className":308},[],[310],{"type":42,"value":130},{"type":37,"tag":160,"props":312,"children":313},{},[314],{"type":37,"tag":164,"props":315,"children":316},{},[317,319,329],{"type":42,"value":318},"the discovery step in\n",{"type":37,"tag":64,"props":320,"children":322},{"href":321},"TASKS.md#configure",[323],{"type":37,"tag":69,"props":324,"children":326},{"className":325},[],[327],{"type":42,"value":328},"TASKS.md ## configure",{"type":42,"value":215},{"type":37,"tag":164,"props":331,"children":332},{},[333,338,339,344,346,352,354,362],{"type":37,"tag":49,"props":334,"children":335},{},[336],{"type":42,"value":337},"\"One source block changed — do I have to recompute all the\nparity from scratch?\"",{"type":42,"value":225},{"type":37,"tag":77,"props":340,"children":341},{},[342],{"type":42,"value":343},"\"I have 8 data + 4\nparity blocks on disk; one data block was just rewritten. How\ndo I express the parity update without re-running the full\nencode?\"",{"type":42,"value":345},". Answered by the ",{"type":37,"tag":69,"props":347,"children":349},{"className":348},[],[350],{"type":42,"value":351},"doca_ec_task_update",{"type":42,"value":353}," row in the\ntask-type table in\n",{"type":37,"tag":64,"props":355,"children":356},{"href":123},[357],{"type":37,"tag":69,"props":358,"children":360},{"className":359},[],[361],{"type":42,"value":130},{"type":37,"tag":160,"props":363,"children":364},{},[365,378],{"type":37,"tag":164,"props":366,"children":367},{},[368,370],{"type":42,"value":369},"the update-vs-re-encode rule in\n",{"type":37,"tag":64,"props":371,"children":372},{"href":206},[373],{"type":37,"tag":69,"props":374,"children":376},{"className":375},[],[377],{"type":42,"value":213},{"type":37,"tag":164,"props":379,"children":380},{},[381,383,393],{"type":42,"value":382},"the modify-from-sample slot for switching between create and\nupdate tasks in\n",{"type":37,"tag":64,"props":384,"children":386},{"href":385},"TASKS.md#modify",[387],{"type":37,"tag":69,"props":388,"children":390},{"className":389},[],[391],{"type":42,"value":392},"TASKS.md ## modify",{"type":42,"value":215},{"type":37,"tag":164,"props":395,"children":396},{},[397,402,403,408,410,416,418,426],{"type":37,"tag":49,"props":398,"children":399},{},[400],{"type":42,"value":401},"\"K of my N+K blocks went missing — how do I reconstruct\nthem?\"",{"type":42,"value":225},{"type":37,"tag":77,"props":404,"children":405},{},[406],{"type":42,"value":407},"\"a disk failed; the 8 data blocks\nare intact but 2 of the 4 parity blocks are gone; can DOCA\nrecover them?\"",{"type":42,"value":409},". Answered by the\n",{"type":37,"tag":69,"props":411,"children":413},{"className":412},[],[414],{"type":42,"value":415},"doca_ec_task_recover",{"type":42,"value":417}," row in the task-type table in\n",{"type":37,"tag":64,"props":419,"children":420},{"href":123},[421],{"type":37,"tag":69,"props":422,"children":424},{"className":423},[],[425],{"type":42,"value":130},{"type":37,"tag":160,"props":427,"children":428},{},[429],{"type":37,"tag":164,"props":430,"children":431},{},[432,434,444],{"type":42,"value":433},"the recover smoke (encode → drop a block → recover → bit-compare)\nin ",{"type":37,"tag":64,"props":435,"children":437},{"href":436},"TASKS.md#test",[438],{"type":37,"tag":69,"props":439,"children":441},{"className":440},[],[442],{"type":42,"value":443},"TASKS.md ## test",{"type":42,"value":215},{"type":37,"tag":164,"props":446,"children":447},{},[448,453,455,475,477,485],{"type":37,"tag":49,"props":449,"children":450},{},[451],{"type":42,"value":452},"\"What permissions does the source \u002F destination mmap need?\"",{"type":42,"value":454}," —\nworked example: ",{"type":37,"tag":77,"props":456,"children":457},{},[458,460,465,467,473],{"type":42,"value":459},"\"my ",{"type":37,"tag":69,"props":461,"children":463},{"className":462},[],[464],{"type":42,"value":236},{"type":42,"value":466}," returns\n",{"type":37,"tag":69,"props":468,"children":470},{"className":469},[],[471],{"type":42,"value":472},"DOCA_ERROR_NOT_PERMITTED",{"type":42,"value":474},"\"",{"type":42,"value":476},". Answered by the permission matrix\nin ",{"type":37,"tag":64,"props":478,"children":479},{"href":206},[480],{"type":37,"tag":69,"props":481,"children":483},{"className":482},[],[484],{"type":42,"value":213},{"type":37,"tag":160,"props":486,"children":487},{},[488],{"type":37,"tag":164,"props":489,"children":490},{},[491,493,501],{"type":42,"value":492},"the mmap-set-permissions checklist in\n",{"type":37,"tag":64,"props":494,"children":495},{"href":436},[496],{"type":37,"tag":69,"props":497,"children":499},{"className":498},[],[500],{"type":42,"value":443},{"type":42,"value":215},{"type":37,"tag":164,"props":503,"children":504},{},[505,510,511,523,525,535,537,547,549,554],{"type":37,"tag":49,"props":506,"children":507},{},[508],{"type":42,"value":509},"\"Is this DOCA Erasure Coding API available on my installed\nDOCA version?\"",{"type":42,"value":225},{"type":37,"tag":77,"props":512,"children":513},{},[514,516,521],{"type":42,"value":515},"\"is ",{"type":37,"tag":69,"props":517,"children":519},{"className":518},[],[520],{"type":42,"value":351},{"type":42,"value":522}," in\nthe DOCA I have installed, or do I have to recompute parity from\nscratch?\"",{"type":42,"value":524},". Answered by the version-compatibility overlay in\n",{"type":37,"tag":64,"props":526,"children":528},{"href":527},"CAPABILITIES.md#version-compatibility",[529],{"type":37,"tag":69,"props":530,"children":532},{"className":531},[],[533],{"type":42,"value":534},"CAPABILITIES.md ## Version compatibility",{"type":42,"value":536},",\nwhich cross-links the canonical detection chain in\n",{"type":37,"tag":64,"props":538,"children":540},{"href":539},"..\u002F..\u002Fdoca-version\u002FSKILL.md",[541],{"type":37,"tag":69,"props":542,"children":544},{"className":543},[],[545],{"type":42,"value":546},"doca-version",{"type":42,"value":548}," and adds the\nEC-specific ",{"type":37,"tag":77,"props":550,"children":551},{},[552],{"type":42,"value":553},"\"discover per-task support + matrix type via cap\nquery\"",{"type":42,"value":555}," bullets.",{"type":37,"tag":164,"props":557,"children":558},{},[559,572,573,593,595,605],{"type":37,"tag":49,"props":560,"children":561},{},[562,564,570],{"type":42,"value":563},"\"What does this ",{"type":37,"tag":69,"props":565,"children":567},{"className":566},[],[568],{"type":42,"value":569},"DOCA_ERROR_*",{"type":42,"value":571}," from an EC call mean and which\nlayer caused it?\"",{"type":42,"value":225},{"type":37,"tag":77,"props":574,"children":575},{},[576,577,583,585,591],{"type":42,"value":474},{"type":37,"tag":69,"props":578,"children":580},{"className":579},[],[581],{"type":42,"value":582},"DOCA_ERROR_INVALID_VALUE",{"type":42,"value":584},"\non ",{"type":37,"tag":69,"props":586,"children":588},{"className":587},[],[589],{"type":42,"value":590},"doca_ec_task_create_allocate_init",{"type":42,"value":592}," with block_size = 4 MiB\"",{"type":42,"value":594},".\nAnswered by the EC overlay on the cross-library taxonomy in\n",{"type":37,"tag":64,"props":596,"children":598},{"href":597},"CAPABILITIES.md#error-taxonomy",[599],{"type":37,"tag":69,"props":600,"children":602},{"className":601},[],[603],{"type":42,"value":604},"CAPABILITIES.md ## Error taxonomy",{"type":37,"tag":160,"props":606,"children":607},{},[608],{"type":37,"tag":164,"props":609,"children":610},{},[611,613,623,625,635],{"type":42,"value":612},"the layered ladder in\n",{"type":37,"tag":64,"props":614,"children":616},{"href":615},"TASKS.md#debug",[617],{"type":37,"tag":69,"props":618,"children":620},{"className":619},[],[621],{"type":42,"value":622},"TASKS.md ## debug",{"type":42,"value":624}," that escalates to\n",{"type":37,"tag":64,"props":626,"children":628},{"href":627},"..\u002F..\u002Fdoca-debug\u002FSKILL.md",[629],{"type":37,"tag":69,"props":630,"children":632},{"className":631},[],[633],{"type":42,"value":634},"doca-debug",{"type":42,"value":215},{"type":37,"tag":141,"props":637,"children":639},{"id":638},"audience",[640],{"type":42,"value":641},"Audience",{"type":37,"tag":45,"props":643,"children":644},{},[645,647,652,654,660,662,667],{"type":42,"value":646},"This skill serves ",{"type":37,"tag":49,"props":648,"children":649},{},[650],{"type":42,"value":651},"external developers building applications that\nconsume the DOCA Erasure Coding library",{"type":42,"value":653}," — i.e., users whose code\ncalls ",{"type":37,"tag":69,"props":655,"children":657},{"className":656},[],[658],{"type":42,"value":659},"doca_ec_*",{"type":42,"value":661}," (directly in C\u002FC++, or through FFI\u002Fbindings from\nanother language) to offload Reed-Solomon erasure coding onto a\nBlueField DPU or ConnectX accelerator. It is ",{"type":37,"tag":77,"props":663,"children":664},{},[665],{"type":42,"value":666},"not",{"type":42,"value":668}," for NVIDIA\ndevelopers contributing to DOCA Erasure Coding itself.",{"type":37,"tag":45,"props":670,"children":671},{},[672,674,679],{"type":42,"value":673},"The canonical fit is ",{"type":37,"tag":49,"props":675,"children":676},{},[677],{"type":42,"value":678},"distributed storage",{"type":42,"value":680},": RAID-6-style block\nlayouts, distributed file system parity, object-storage\nerasure-coded buckets, and any data-durability workload where the\nN data + K redundancy block model lets the system tolerate K\nsimultaneous block losses without data loss. The skill keeps the\nagent oriented to that domain: erasure coding is operationally\ndistinct from pure replication (which keeps M whole copies) and\nfrom RAID-6 the disk layout (which is one specific instance of\nthe N=k, K=2 case); confusing them produces wrong recommendations.",{"type":37,"tag":45,"props":682,"children":683},{},[684,689,691,697,699,704,706,711,713,719],{"type":37,"tag":49,"props":685,"children":686},{},[687],{"type":42,"value":688},"Language scope.",{"type":42,"value":690}," DOCA Erasure Coding ships as a C library with\n",{"type":37,"tag":69,"props":692,"children":694},{"className":693},[],[695],{"type":42,"value":696},"pkg-config",{"type":42,"value":698}," module name ",{"type":37,"tag":69,"props":700,"children":702},{"className":701},[],[703],{"type":42,"value":4},{"type":42,"value":705},". The shipped samples\nare written in C. C and C++ consumers are the canonical case and\nthe worked examples in ",{"type":37,"tag":69,"props":707,"children":709},{"className":708},[],[710],{"type":42,"value":66},{"type":42,"value":712}," assume that path. Other-language\nconsumers (Rust, Go, Python, …) consume the same ",{"type":37,"tag":69,"props":714,"children":716},{"className":715},[],[717],{"type":42,"value":718},"*.so",{"type":42,"value":720}," through\nFFI or language-specific bindings; the skill's contribution in\nthat case is to keep the lifecycle, capability-discovery,\npermission, error-taxonomy, and create-vs-recover-vs-update\nguidance language-neutral, and to route the agent to the public C\nABI as the authoritative surface that any wrapper will eventually\ncall.",{"type":37,"tag":141,"props":722,"children":724},{"id":723},"when-to-load-this-skill",[725],{"type":42,"value":726},"When to load this skill",{"type":37,"tag":45,"props":728,"children":729},{},[730],{"type":42,"value":731},"Load this skill when the user is doing hands-on DOCA Erasure\nCoding work, in any language. Concretely:",{"type":37,"tag":160,"props":733,"children":734},{},[735,783,809,814,843,863,903,908,932,944],{"type":37,"tag":164,"props":736,"children":737},{},[738,740,746,748,754,756,761,762,767,769,774,776,782],{"type":42,"value":739},"Initializing a ",{"type":37,"tag":69,"props":741,"children":743},{"className":742},[],[744],{"type":42,"value":745},"doca_ec",{"type":42,"value":747}," context on a ",{"type":37,"tag":69,"props":749,"children":751},{"className":750},[],[752],{"type":42,"value":753},"doca_dev",{"type":42,"value":755}," and configuring\nat least one task type (",{"type":37,"tag":69,"props":757,"children":759},{"className":758},[],[760],{"type":42,"value":236},{"type":42,"value":248},{"type":37,"tag":69,"props":763,"children":765},{"className":764},[],[766],{"type":42,"value":415},{"type":42,"value":768},", and\u002For ",{"type":37,"tag":69,"props":770,"children":772},{"className":771},[],[773],{"type":42,"value":351},{"type":42,"value":775},") before\n",{"type":37,"tag":69,"props":777,"children":779},{"className":778},[],[780],{"type":42,"value":781},"doca_ctx_start()",{"type":42,"value":215},{"type":37,"tag":164,"props":784,"children":785},{},[786,788,793,795,800,802,807],{"type":42,"value":787},"Choosing between the ",{"type":37,"tag":49,"props":789,"children":790},{},[791],{"type":42,"value":792},"create",{"type":42,"value":794}," task (encode N data blocks into\nK redundancy blocks), the ",{"type":37,"tag":49,"props":796,"children":797},{},[798],{"type":42,"value":799},"recover",{"type":42,"value":801}," task (reconstruct up to K\nmissing blocks given the surviving subset), and the ",{"type":37,"tag":49,"props":803,"children":804},{},[805],{"type":42,"value":806},"update",{"type":42,"value":808},"\ntask (incrementally update redundancy blocks when one source\nblock changes — much cheaper than re-encoding from scratch).",{"type":37,"tag":164,"props":810,"children":811},{},[812],{"type":42,"value":813},"Picking the coding parameters: matrix type \u002F coding scheme\n(typically Vandermonde or Cauchy for Reed-Solomon), N (number\nof data blocks), K (number of redundancy blocks), and block\nsize (all blocks the same size).",{"type":37,"tag":164,"props":815,"children":816},{},[817,819,825,827,833,835,841],{"type":42,"value":818},"Setting permissions on ",{"type":37,"tag":69,"props":820,"children":822},{"className":821},[],[823],{"type":42,"value":824},"doca_mmap",{"type":42,"value":826}," correctly for the source\nbuffers — data blocks for create, data + parity for recover —\n(",{"type":37,"tag":69,"props":828,"children":830},{"className":829},[],[831],{"type":42,"value":832},"DOCA_ACCESS_FLAG_LOCAL_READ_ONLY",{"type":42,"value":834}," at minimum) and the\ndestination buffers — redundancy blocks for create, recovered\nblocks for recover, updated parity for update —\n(",{"type":37,"tag":69,"props":836,"children":838},{"className":837},[],[839],{"type":42,"value":840},"DOCA_ACCESS_FLAG_LOCAL_READ_WRITE",{"type":42,"value":842},").",{"type":37,"tag":164,"props":844,"children":845},{},[846,848,854,856,862],{"type":42,"value":847},"Sizing blocks against\n",{"type":37,"tag":69,"props":849,"children":851},{"className":850},[],[852],{"type":42,"value":853},"doca_ec_cap_get_max_block_size(devinfo)",{"type":42,"value":855}," and N+K against\n",{"type":37,"tag":69,"props":857,"children":859},{"className":858},[],[860],{"type":42,"value":861},"doca_ec_cap_get_max_buf_list_len(devinfo, &max_buf_list_len)",{"type":42,"value":215},{"type":37,"tag":164,"props":864,"children":865},{},[866,868,874,876,881,883,888,889,894,896,902],{"type":42,"value":867},"Checking which task types and matrix schemes this device's\naccelerator advertises via the\n",{"type":37,"tag":69,"props":869,"children":871},{"className":870},[],[872],{"type":42,"value":873},"doca_ec_cap_task_*_is_supported",{"type":42,"value":875}," (including the 4th task\n",{"type":37,"tag":69,"props":877,"children":879},{"className":878},[],[880],{"type":42,"value":269},{"type":42,"value":882},") and per-variant\n",{"type":37,"tag":69,"props":884,"children":886},{"className":885},[],[887],{"type":42,"value":292},{"type":42,"value":294},{"type":37,"tag":69,"props":890,"children":892},{"className":891},[],[893],{"type":42,"value":300},{"type":42,"value":895},"\nfamilies against the active ",{"type":37,"tag":69,"props":897,"children":899},{"className":898},[],[900],{"type":42,"value":901},"doca_devinfo",{"type":42,"value":215},{"type":37,"tag":164,"props":904,"children":905},{},[906],{"type":42,"value":907},"Validating against a known-vector recover smoke (encode a small\nN + K layout, simulate one block loss, recover, bit-compare\nagainst the original block) before pushing bulk storage data\nthrough the accelerator.",{"type":37,"tag":164,"props":909,"children":910},{},[911,913,917,919,924,926,931],{"type":42,"value":912},"Recognising when ",{"type":37,"tag":49,"props":914,"children":915},{},[916],{"type":42,"value":806},{"type":42,"value":918}," is the right task (single source\nblock changed in an existing N + K layout — ",{"type":37,"tag":69,"props":920,"children":922},{"className":921},[],[923],{"type":42,"value":351},{"type":42,"value":925},"\nis far cheaper than recomputing all K parity blocks via a fresh\n",{"type":37,"tag":69,"props":927,"children":929},{"className":928},[],[930],{"type":42,"value":236},{"type":42,"value":842},{"type":37,"tag":164,"props":933,"children":934},{},[935,937,942],{"type":42,"value":936},"Debugging a ",{"type":37,"tag":69,"props":938,"children":940},{"className":939},[],[941],{"type":42,"value":569},{"type":42,"value":943}," returned from an EC call (lifecycle\nvs. block-size vs. N+K vs. matrix-type vs. permission vs.\nqueue pressure) and the task-completion event on the progress\nengine.",{"type":37,"tag":164,"props":945,"children":946},{},[947],{"type":42,"value":948},"Designing or extending non-C bindings (Rust, Go, Python, …)\nthat wrap the EC C ABI — for the lifecycle, permission,\ncapability, and create-vs-recover-vs-update rules the wrapper\nmust honor.",{"type":37,"tag":45,"props":950,"children":951},{},[952,954,958,960,970],{"type":42,"value":953},"Do ",{"type":37,"tag":49,"props":955,"children":956},{},[957],{"type":42,"value":666},{"type":42,"value":959}," load this skill for general DOCA orientation, install\nof DOCA itself, non-Reed-Solomon erasure codes (fountain codes,\nLDPC — those belong on a CPU library, not the DOCA accelerator),\npure replication \u002F mirroring designs (erasure coding is the wrong\nprimitive when one extra copy is the right answer), or other\nDOCA libraries. For those, use\n",{"type":37,"tag":64,"props":961,"children":963},{"href":962},"..\u002F..\u002Fdoca-public-knowledge-map\u002FSKILL.md",[964],{"type":37,"tag":69,"props":965,"children":967},{"className":966},[],[968],{"type":42,"value":969},"doca-public-knowledge-map",{"type":42,"value":215},{"type":37,"tag":141,"props":972,"children":974},{"id":973},"what-this-skill-provides",[975],{"type":42,"value":976},"What this skill provides",{"type":37,"tag":45,"props":978,"children":979},{},[980,982,987],{"type":42,"value":981},"This is a ",{"type":37,"tag":49,"props":983,"children":984},{},[985],{"type":42,"value":986},"thin loader",{"type":42,"value":988},". The body keeps only the orientation\nneeded to pick the right next file. The substantive\nEC-specific material lives in two companion files:",{"type":37,"tag":160,"props":990,"children":991},{},[992,1017],{"type":37,"tag":164,"props":993,"children":994},{},[995,1000,1002,1008,1010,1015],{"type":37,"tag":69,"props":996,"children":998},{"className":997},[],[999],{"type":42,"value":86},{"type":42,"value":1001}," — what DOCA Erasure Coding can express on\nthis version: the three task types (create \u002F recover \u002F update,\neach independently capability-gated), the matrix-type + N + K +\nblock-size configuration surface, the capability-query family\n(",{"type":37,"tag":69,"props":1003,"children":1005},{"className":1004},[],[1006],{"type":42,"value":1007},"doca_ec_cap_*",{"type":42,"value":1009}," for task support, max block size, max N+K,\nsupported matrix types), the EC error taxonomy (mapped onto\nthe cross-library ",{"type":37,"tag":69,"props":1011,"children":1013},{"className":1012},[],[1014],{"type":42,"value":569},{"type":42,"value":1016}," set), the observability\nsurface (per-task completion events on the progress engine),\nthe safety policy that gates source \u002F destination mmap\npermission decisions, and the path-selection rule (when to use\ndoca-erasure-coding versus a CPU EC library versus pure\nreplication versus RAID-6 on disk).",{"type":37,"tag":164,"props":1018,"children":1019},{},[1020,1025,1027,1033,1034,1040,1041,1047,1048,1054,1055,1061,1062,1068,1070,1076],{"type":37,"tag":69,"props":1021,"children":1023},{"className":1022},[],[1024],{"type":42,"value":66},{"type":42,"value":1026}," — step-by-step workflows for the six in-scope EC\nverbs: ",{"type":37,"tag":69,"props":1028,"children":1030},{"className":1029},[],[1031],{"type":42,"value":1032},"configure",{"type":42,"value":256},{"type":37,"tag":69,"props":1035,"children":1037},{"className":1036},[],[1038],{"type":42,"value":1039},"build",{"type":42,"value":256},{"type":37,"tag":69,"props":1042,"children":1044},{"className":1043},[],[1045],{"type":42,"value":1046},"modify",{"type":42,"value":256},{"type":37,"tag":69,"props":1049,"children":1051},{"className":1050},[],[1052],{"type":42,"value":1053},"run",{"type":42,"value":256},{"type":37,"tag":69,"props":1056,"children":1058},{"className":1057},[],[1059],{"type":42,"value":1060},"test",{"type":42,"value":256},{"type":37,"tag":69,"props":1063,"children":1065},{"className":1064},[],[1066],{"type":42,"value":1067},"debug",{"type":42,"value":1069},".\nPlus a ",{"type":37,"tag":69,"props":1071,"children":1073},{"className":1072},[],[1074],{"type":42,"value":1075},"Deferred task verbs",{"type":42,"value":1077}," block that points out-of-scope\nquestions at the right next skill.",{"type":37,"tag":45,"props":1079,"children":1080},{},[1081,1083,1091],{"type":42,"value":1082},"The skill assumes a host or BlueField where DOCA is already\ninstalled at the standard location and the user has the\nprivileges their public install profile expects. It does not\ncover installing DOCA — that path goes through\n",{"type":37,"tag":64,"props":1084,"children":1085},{"href":104},[1086],{"type":37,"tag":69,"props":1087,"children":1089},{"className":1088},[],[1090],{"type":42,"value":111},{"type":42,"value":215},{"type":37,"tag":141,"props":1093,"children":1095},{"id":1094},"what-this-skill-deliberately-does-not-ship",[1096],{"type":42,"value":1097},"What this skill deliberately does not ship",{"type":37,"tag":45,"props":1099,"children":1100},{},[1101,1103,1108],{"type":42,"value":1102},"This skill is ",{"type":37,"tag":49,"props":1104,"children":1105},{},[1106],{"type":42,"value":1107},"agent guidance",{"type":42,"value":1109},", not a samples or templates\nbundle. To keep the boundary clean, it deliberately does not\ncontain — and pull requests should not add:",{"type":37,"tag":160,"props":1111,"children":1112},{},[1113,1152,1169,1216],{"type":37,"tag":164,"props":1114,"children":1115},{},[1116,1121,1123,1129,1131,1141,1143,1151],{"type":37,"tag":49,"props":1117,"children":1118},{},[1119],{"type":42,"value":1120},"Pre-written DOCA EC application source code, in any\nlanguage.",{"type":42,"value":1122}," The verified EC source code is the shipped C\nsamples at ",{"type":37,"tag":69,"props":1124,"children":1126},{"className":1125},[],[1127],{"type":42,"value":1128},"\u002Fopt\u002Fmellanox\u002Fdoca\u002Fsamples\u002Fdoca_erasure_coding\u002F",{"type":42,"value":1130},".\nThe agent's job is to route the user to those files and\nprescribe a minimum-diff modification on them via the universal\nmodify-a-sample workflow in\n",{"type":37,"tag":64,"props":1132,"children":1134},{"href":1133},"..\u002F..\u002Fdoca-programming-guide\u002FSKILL.md",[1135],{"type":37,"tag":69,"props":1136,"children":1138},{"className":1137},[],[1139],{"type":42,"value":1140},"doca-programming-guide",{"type":42,"value":1142},",\nlayered with the EC-specific overrides in\n",{"type":37,"tag":64,"props":1144,"children":1145},{"href":385},[1146],{"type":37,"tag":69,"props":1147,"children":1149},{"className":1148},[],[1150],{"type":42,"value":392},{"type":42,"value":215},{"type":37,"tag":164,"props":1153,"children":1154},{},[1155,1160,1162,1167],{"type":37,"tag":49,"props":1156,"children":1157},{},[1158],{"type":42,"value":1159},"Pre-computed parity tables for arbitrary N + K layouts.",{"type":42,"value":1161},"\nThe skill tells the agent to use a ",{"type":37,"tag":77,"props":1163,"children":1164},{},[1165],{"type":42,"value":1166},"known-vector",{"type":42,"value":1168}," smoke\n(encode a tiny N + K layout from a fixed input, simulate\nlosing one block, recover, bit-compare against the original)\nas the smoke before bulk; it does not ship a vector bank of\nits own.",{"type":37,"tag":164,"props":1170,"children":1171},{},[1172,1177,1179,1185,1186,1192,1193,1199,1201,1206,1208,1214],{"type":37,"tag":49,"props":1173,"children":1174},{},[1175],{"type":42,"value":1176},"Standalone build manifests",{"type":42,"value":1178}," (",{"type":37,"tag":69,"props":1180,"children":1182},{"className":1181},[],[1183],{"type":42,"value":1184},"meson.build",{"type":42,"value":248},{"type":37,"tag":69,"props":1187,"children":1189},{"className":1188},[],[1190],{"type":42,"value":1191},"CMakeLists.txt",{"type":42,"value":256},{"type":37,"tag":69,"props":1194,"children":1196},{"className":1195},[],[1197],{"type":42,"value":1198},"Cargo.toml",{"type":42,"value":1200},", …) parked inside the skill.\nThe agent constructs the build manifest ",{"type":37,"tag":77,"props":1202,"children":1203},{},[1204],{"type":42,"value":1205},"in the user's\nproject directory",{"type":42,"value":1207}," against the user's installed DOCA, where\n",{"type":37,"tag":69,"props":1209,"children":1211},{"className":1210},[],[1212],{"type":42,"value":1213},"pkg-config --modversion doca-erasure-coding",{"type":42,"value":1215}," is the source of\ntruth.",{"type":37,"tag":164,"props":1217,"children":1218},{},[1219,1247],{"type":37,"tag":49,"props":1220,"children":1221},{},[1222,1224,1230,1231,1237,1239,1245],{"type":42,"value":1223},"A ",{"type":37,"tag":69,"props":1225,"children":1227},{"className":1226},[],[1228],{"type":42,"value":1229},"samples\u002F",{"type":42,"value":256},{"type":37,"tag":69,"props":1232,"children":1234},{"className":1233},[],[1235],{"type":42,"value":1236},"bindings\u002F",{"type":42,"value":1238},", or ",{"type":37,"tag":69,"props":1240,"children":1242},{"className":1241},[],[1243],{"type":42,"value":1244},"reference\u002F",{"type":42,"value":1246}," subtree",{"type":42,"value":1248}," of any\nkind. A mock or incomplete artifact in this skill's tree, even\none labeled \"reference\", is misleading: users will read it as\nbuildable.",{"type":37,"tag":141,"props":1250,"children":1252},{"id":1251},"loading-order",[1253],{"type":42,"value":1254},"Loading order",{"type":37,"tag":1256,"props":1257,"children":1258},"ol",{},[1259,1272,1285],{"type":37,"tag":164,"props":1260,"children":1261},{},[1262,1264,1270],{"type":42,"value":1263},"Read this ",{"type":37,"tag":69,"props":1265,"children":1267},{"className":1266},[],[1268],{"type":42,"value":1269},"SKILL.md",{"type":42,"value":1271}," first to confirm the user's question is in\nscope (storage-domain resilience — N data + K redundancy\nblocks — and not a network or replication question\nmisclassified as erasure coding).",{"type":37,"tag":164,"props":1273,"children":1274},{},[1275],{"type":37,"tag":49,"props":1276,"children":1277},{},[1278,1280,1284],{"type":42,"value":1279},"For the EC capability matrix, the three task types\n(create \u002F recover \u002F update), the matrix-type + N + K +\nblock-size configuration surface, the capability-query rules,\npermission matrix, error taxonomy, observability, and safety \u002F\npath-selection policy, see ",{"type":37,"tag":64,"props":1281,"children":1282},{"href":86},[1283],{"type":42,"value":86},{"type":42,"value":215},{"type":37,"tag":164,"props":1286,"children":1287},{},[1288],{"type":37,"tag":49,"props":1289,"children":1290},{},[1291,1293,1297],{"type":42,"value":1292},"For step-by-step workflows — configure, build, modify, run,\ntest, debug — see ",{"type":37,"tag":64,"props":1294,"children":1295},{"href":66},[1296],{"type":42,"value":66},{"type":42,"value":215},{"type":37,"tag":45,"props":1299,"children":1300},{},[1301,1303,1311,1313,1321],{"type":42,"value":1302},"Both companion files cross-link to each other,\n",{"type":37,"tag":64,"props":1304,"children":1305},{"href":539},[1306],{"type":37,"tag":69,"props":1307,"children":1309},{"className":1308},[],[1310],{"type":42,"value":546},{"type":42,"value":1312}," for the canonical\nversion-handling rules, and\n",{"type":37,"tag":64,"props":1314,"children":1315},{"href":962},[1316],{"type":37,"tag":69,"props":1317,"children":1319},{"className":1318},[],[1320],{"type":42,"value":969},{"type":42,"value":1322},"\nwhenever the right answer is \"look it up in the public docs or\nthe installed package layout\" rather than \"EC-specific guidance\".",{"type":37,"tag":141,"props":1324,"children":1326},{"id":1325},"related-skills",[1327],{"type":42,"value":1328},"Related skills",{"type":37,"tag":160,"props":1330,"children":1331},{},[1332,1354,1374,1405,1426,1453],{"type":37,"tag":164,"props":1333,"children":1334},{},[1335,1343,1345,1352],{"type":37,"tag":64,"props":1336,"children":1337},{"href":962},[1338],{"type":37,"tag":69,"props":1339,"children":1341},{"className":1340},[],[1342],{"type":42,"value":969},{"type":42,"value":1344}," —\nthe routing table for every public DOCA documentation source\nand the on-disk layout of an installed DOCA package. The DOCA\nErasure Coding page lives at\n",{"type":37,"tag":64,"props":1346,"children":1350},{"href":1347,"rel":1348},"https:\u002F\u002Fdocs.nvidia.com\u002Fdoca\u002Fsdk\u002FDOCA-Erasure-Coding\u002Findex.html",[1349],"nofollow",[1351],{"type":42,"value":1347},{"type":42,"value":1353},";\nthe install-tree layout (samples directory, header location)\nbelongs to the public knowledge map, not to this skill.",{"type":37,"tag":164,"props":1355,"children":1356},{},[1357,1365,1367,1372],{"type":37,"tag":64,"props":1358,"children":1359},{"href":104},[1360],{"type":37,"tag":69,"props":1361,"children":1363},{"className":1362},[],[1364],{"type":42,"value":111},{"type":42,"value":1366}," — env preparation,\ninstall verification, and the ",{"type":37,"tag":77,"props":1368,"children":1369},{},[1370],{"type":42,"value":1371},"I have no install yet",{"type":42,"value":1373}," path\nwith the public NGC DOCA container. This skill assumes its\npreconditions are satisfied.",{"type":37,"tag":164,"props":1375,"children":1376},{},[1377,1385,1387,1396,1398,1403],{"type":37,"tag":64,"props":1378,"children":1379},{"href":539},[1380],{"type":37,"tag":69,"props":1381,"children":1383},{"className":1382},[],[1384],{"type":42,"value":546},{"type":42,"value":1386}," — canonical DOCA\nversion-handling rules. This skill's\n",{"type":37,"tag":64,"props":1388,"children":1389},{"href":527},[1390],{"type":37,"tag":69,"props":1391,"children":1393},{"className":1392},[],[1394],{"type":42,"value":1395},"## Version compatibility",{"type":42,"value":1397},"\ncross-links the four-way match rule and adds only the\nEC-specific ",{"type":37,"tag":77,"props":1399,"children":1400},{},[1401],{"type":42,"value":1402},"\"discover per-task support + supported matrix\ntypes + max block size + max N+K via cap query\"",{"type":42,"value":1404}," overlay.",{"type":37,"tag":164,"props":1406,"children":1407},{},[1408,1418,1420,1424],{"type":37,"tag":64,"props":1409,"children":1411},{"href":1410},"..\u002F..\u002Fdoca-structured-tools-contract\u002FSKILL.md",[1412],{"type":37,"tag":69,"props":1413,"children":1415},{"className":1414},[],[1416],{"type":42,"value":1417},"doca-structured-tools-contract",{"type":42,"value":1419}," —\nthe bundle's structured-tools precedence rule (detect \u002F prefer\n\u002F fall back \u002F report). The Command appendix in\n",{"type":37,"tag":64,"props":1421,"children":1422},{"href":66},[1423],{"type":42,"value":66},{"type":42,"value":1425}," honors this contract.",{"type":37,"tag":164,"props":1427,"children":1428},{},[1429,1437,1439,1444,1446,1451],{"type":37,"tag":64,"props":1430,"children":1431},{"href":1133},[1432],{"type":37,"tag":69,"props":1433,"children":1435},{"className":1434},[],[1436],{"type":42,"value":1140},{"type":42,"value":1438}," —\ngeneral DOCA programming patterns shared by every library: the\ncanonical ",{"type":37,"tag":69,"props":1440,"children":1442},{"className":1441},[],[1443],{"type":42,"value":696},{"type":42,"value":1445}," + meson build pattern, the universal\nmodify-a-shipped-sample first-app workflow, the universal\nlifecycle, the cross-library ",{"type":37,"tag":69,"props":1447,"children":1449},{"className":1448},[],[1450],{"type":42,"value":569},{"type":42,"value":1452}," taxonomy, and the\nprogram-side debug order. This skill layers EC specifics on\ntop.",{"type":37,"tag":164,"props":1454,"children":1455},{},[1456,1464],{"type":37,"tag":64,"props":1457,"children":1458},{"href":627},[1459],{"type":37,"tag":69,"props":1460,"children":1462},{"className":1461},[],[1463],{"type":42,"value":634},{"type":42,"value":1465}," — the cross-cutting\ndebug ladder (install \u002F version \u002F build \u002F link \u002F runtime \u002F\nprogram \u002F driver). EC-specific debug (task-not-supported,\nmatrix-type-unsupported, block-size-over-max, N+K-over-max,\nrecover-with-too-many-missing) overlays on top of that ladder.",{"items":1467,"total":1571},[1468,1485,1499,1513,1525,1542,1557],{"slug":1469,"name":1469,"fn":1470,"description":1471,"org":1472,"tags":1473,"stars":17,"repoUrl":18,"updatedAt":1484},"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},[1474,1477,1480,1481],{"name":1475,"slug":1476,"type":13},"Data Analysis","data-analysis",{"name":1478,"slug":1479,"type":13},"Data Engineering","data-engineering",{"name":9,"slug":8,"type":13},{"name":1482,"slug":1483,"type":13},"Performance","performance","2026-07-14T05:28:43.176466",{"slug":1486,"name":1486,"fn":1487,"description":1488,"org":1489,"tags":1490,"stars":17,"repoUrl":18,"updatedAt":1498},"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},[1491,1494,1497],{"name":1492,"slug":1493,"type":13},"Deployment","deployment",{"name":1495,"slug":1496,"type":13},"Infrastructure","infrastructure",{"name":9,"slug":8,"type":13},"2026-07-14T05:29:06.667109",{"slug":1500,"name":1500,"fn":1501,"description":1502,"org":1503,"tags":1504,"stars":17,"repoUrl":18,"updatedAt":1512},"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},[1505,1508,1509],{"name":1506,"slug":1507,"type":13},"Agents","agents",{"name":9,"slug":8,"type":13},{"name":1510,"slug":1511,"type":13},"Research","research","2026-07-14T05:28:06.816956",{"slug":1514,"name":1514,"fn":1515,"description":1516,"org":1517,"tags":1518,"stars":17,"repoUrl":18,"updatedAt":1524},"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},[1519,1520,1521],{"name":1475,"slug":1476,"type":13},{"name":9,"slug":8,"type":13},{"name":1522,"slug":1523,"type":13},"Testing","testing","2026-07-17T05:29:03.913266",{"slug":1526,"name":1526,"fn":1527,"description":1528,"org":1529,"tags":1530,"stars":17,"repoUrl":18,"updatedAt":1541},"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},[1531,1534,1537,1538],{"name":1532,"slug":1533,"type":13},"Automation","automation",{"name":1535,"slug":1536,"type":13},"Imaging","imaging",{"name":9,"slug":8,"type":13},{"name":1539,"slug":1540,"type":13},"Video","video","2026-07-17T05:28:53.905004",{"slug":1543,"name":1543,"fn":1544,"description":1545,"org":1546,"tags":1547,"stars":17,"repoUrl":18,"updatedAt":1556},"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},[1548,1549,1552,1553],{"name":1492,"slug":1493,"type":13},{"name":1550,"slug":1551,"type":13},"Docker","docker",{"name":9,"slug":8,"type":13},{"name":1554,"slug":1555,"type":13},"Operations","operations","2026-07-17T05:28:56.913999",{"slug":1558,"name":1558,"fn":1559,"description":1560,"org":1561,"tags":1562,"stars":17,"repoUrl":18,"updatedAt":1570},"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},[1563,1564,1567],{"name":9,"slug":8,"type":13},{"name":1565,"slug":1566,"type":13},"Quantum Computing","quantum-computing",{"name":1568,"slug":1569,"type":13},"Simulation","simulation","2026-07-14T05:26:58.898253",305,{"items":1573,"total":1724},[1574,1592,1608,1619,1631,1645,1658,1672,1683,1692,1706,1715],{"slug":1575,"name":1575,"fn":1576,"description":1577,"org":1578,"tags":1579,"stars":1589,"repoUrl":1590,"updatedAt":1591},"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},[1580,1583,1586],{"name":1581,"slug":1582,"type":13},"Documentation","documentation",{"name":1584,"slug":1585,"type":13},"MCP","mcp",{"name":1587,"slug":1588,"type":13},"Search","search",21777,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FNemoClaw","2026-07-20T06:00:01.461044",{"slug":1593,"name":1593,"fn":1594,"description":1595,"org":1596,"tags":1597,"stars":1605,"repoUrl":1606,"updatedAt":1607},"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},[1598,1601,1602],{"name":1599,"slug":1600,"type":13},"Containers","containers",{"name":1492,"slug":1493,"type":13},{"name":1603,"slug":1604,"type":13},"Python","python",17049,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM","2026-07-27T06:06:11.249662",{"slug":1609,"name":1609,"fn":1610,"description":1611,"org":1612,"tags":1613,"stars":1605,"repoUrl":1606,"updatedAt":1618},"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},[1614,1617],{"name":1615,"slug":1616,"type":13},"CI\u002FCD","ci-cd",{"name":1492,"slug":1493,"type":13},"2026-07-14T05:25:59.97109",{"slug":1620,"name":1620,"fn":1621,"description":1622,"org":1623,"tags":1624,"stars":1605,"repoUrl":1606,"updatedAt":1630},"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},[1625,1626,1627],{"name":1615,"slug":1616,"type":13},{"name":1492,"slug":1493,"type":13},{"name":1628,"slug":1629,"type":13},"GitHub","github","2026-07-27T06:06:12.278222",{"slug":1632,"name":1632,"fn":1633,"description":1634,"org":1635,"tags":1636,"stars":1605,"repoUrl":1606,"updatedAt":1644},"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},[1637,1640,1641],{"name":1638,"slug":1639,"type":13},"Debugging","debugging",{"name":1628,"slug":1629,"type":13},{"name":1642,"slug":1643,"type":13},"Triage","triage","2026-07-14T05:25:57.442089",{"slug":1646,"name":1646,"fn":1647,"description":1648,"org":1649,"tags":1650,"stars":1605,"repoUrl":1606,"updatedAt":1657},"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},[1651,1654],{"name":1652,"slug":1653,"type":13},"Best Practices","best-practices",{"name":1655,"slug":1656,"type":13},"Code Analysis","code-analysis","2026-07-14T05:25:56.18433",{"slug":1659,"name":1659,"fn":1660,"description":1661,"org":1662,"tags":1663,"stars":1605,"repoUrl":1606,"updatedAt":1671},"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},[1664,1667,1670],{"name":1665,"slug":1666,"type":13},"Machine Learning","machine-learning",{"name":1668,"slug":1669,"type":13},"Migration","migration",{"name":9,"slug":8,"type":13},"2026-07-17T06:07:11.777011",{"slug":1673,"name":1673,"fn":1674,"description":1675,"org":1676,"tags":1677,"stars":1605,"repoUrl":1606,"updatedAt":1682},"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},[1678,1681],{"name":1679,"slug":1680,"type":13},"QA","qa",{"name":1522,"slug":1523,"type":13},"2026-07-14T05:25:53.673039",{"slug":1684,"name":1684,"fn":1685,"description":1686,"org":1687,"tags":1688,"stars":1605,"repoUrl":1606,"updatedAt":1691},"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},[1689,1690],{"name":1492,"slug":1493,"type":13},{"name":1495,"slug":1496,"type":13},"2026-07-14T05:25:49.362534",{"slug":1693,"name":1693,"fn":1694,"description":1695,"org":1696,"tags":1697,"stars":1605,"repoUrl":1606,"updatedAt":1705},"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},[1698,1701,1702],{"name":1699,"slug":1700,"type":13},"Code Review","code-review",{"name":1628,"slug":1629,"type":13},{"name":1703,"slug":1704,"type":13},"Pull Requests","pull-requests","2026-07-14T05:26:01.226578",{"slug":1707,"name":1707,"fn":1708,"description":1709,"org":1710,"tags":1711,"stars":1605,"repoUrl":1606,"updatedAt":1714},"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},[1712,1713],{"name":1679,"slug":1680,"type":13},{"name":1522,"slug":1523,"type":13},"2026-07-14T05:25:54.928983",{"slug":1716,"name":1716,"fn":1717,"description":1718,"org":1719,"tags":1720,"stars":1605,"repoUrl":1606,"updatedAt":1723},"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},[1721,1722],{"name":1532,"slug":1533,"type":13},{"name":1615,"slug":1616,"type":13},"2026-07-30T05:29:03.275638",496]