[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-nvidia-tao-run-deft-aoi":3,"mdc-x3i2xo-key":34,"related-repo-nvidia-tao-run-deft-aoi":1655,"related-org-nvidia-tao-run-deft-aoi":1761},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":29,"sourceUrl":32,"mdContent":33},"tao-run-deft-aoi","run DEFT AOI model improvement loops","Run the full DEFT AOI improvement loop for NVIDIA TAO VisualChangeNet \u002F ChangeNet PCB inspection models: baseline evaluate, RCA, Cosmos AnomalyGen \u002F AMP synthetic defects, k-NN mining, retraining, and deployment gating until FAR \u002F recall KPI targets are met. Use for prompts like \"run the DEFT loop\", \"fine-tune until FAR below 0.1% at recall=100%\", or \"improve my AOI ChangeNet model with RCA and synthetic defects\"; do not use for standalone TAO training, one-off inference, generic anomaly generation, or RCA-only analysis.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},"nvidia","NVIDIA","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fnvidia.png",[12,16,19,20],{"name":13,"slug":14,"type":15},"Deep Learning","deep-learning","tag",{"name":17,"slug":18,"type":15},"QA","qa",{"name":9,"slug":8,"type":15},{"name":21,"slug":22,"type":15},"Computer Vision","computer-vision",2473,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fskills","2026-07-14T05:28:23.395245","Apache-2.0 AND CC-BY-4.0",281,[],{"repoUrl":24,"stars":23,"forks":27,"topics":30,"description":31},[],"AI agent skills published by NVIDIA","https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fskills\u002Ftree\u002FHEAD\u002Fskills\u002Ftao-run-deft-aoi","---\nname: tao-run-deft-aoi\ndescription: >\n  Run the full DEFT AOI improvement loop for NVIDIA TAO VisualChangeNet \u002F ChangeNet PCB inspection models:\n  baseline evaluate, RCA, Cosmos AnomalyGen \u002F AMP synthetic defects, k-NN mining, retraining, and deployment\n  gating until FAR \u002F recall KPI targets are met. Use for prompts like \"run the DEFT loop\", \"fine-tune until\n  FAR below 0.1% at recall=100%\", or \"improve my AOI ChangeNet model with RCA and synthetic defects\"; do not use\n  for standalone TAO training, one-off inference, generic anomaly generation, or RCA-only analysis.\nlicense: Apache-2.0 AND CC-BY-4.0\ncompatibility: Requires docker + nvidia-container-toolkit. Workflows declare additional requirements.\nmetadata:\n  author: NVIDIA Corporation\n  version: \"0.1.0\"\nallowed-tools: Read Task Bash Write\ntags:\n- application\n- workflow\n- deft\n- aoi\n- loop\n---\n\n# Skill: tao-run-deft-aoi\n\n## When to Use This Skill\n\nUse this skill when the user wants an agent to run the full DEFT AOI improvement loop for an NVIDIA TAO VisualChangeNet \u002F ChangeNet PCB inspection model: baseline evaluation, RCA, synthetic defect generation, data mining, retraining, and deployment gating until a KPI target is met.\n\n- \"Run the DEFT loop\"\n- \"Fine-tune until FAR below 0.1% at recall=100%\"\n- \"Improve my AOI ChangeNet model using RCA and synthetic defects\"\n- \"Iterate training until false accept rate meets the target\"\n\nDo not use this skill for a single standalone TAO training run, one-off inference, generic anomaly generation, or RCA-only analysis. Use the relevant agent directly when the user asks for only that step.\n\n## Base Model\n\nThe loop operates on **NVIDIA TAO Visual ChangeNet** classify with the **NVIDIA C-RADIOv2-B** backbone, fine-tuned end-to-end. The architecture is defined in `specs\u002Fbaseline_spec.yaml` — that file is the source of truth. All pretrained weights come from HuggingFace (`HF_TOKEN` required); `NGC_KEY` only gates container pulls. ChangeNet backbone resolution + the staged-file\u002FHF-URL fallback for `model.backbone.pretrained_backbone_path` are owned by `references\u002Fvisual-changenet.md`. SigLIP for k-NN mining is owned by `references\u002Ftao-mine-aoi-images.md`. AnomalyGen-side checkpoints (Cosmos-Predict2, T5, NVDINOV2, C-RADIO-V3, DINOv2-large, SAM2, Qwen3-VL — ~22 GB for 2B-only, ~140 GB with 14B + T5-11b) live under `\u003Cworkspace>\u002Faugmentation\u002Fanomalygen\u002Fbase_checkpoints\u002F`; the paidf-anomalygen container auto-downloads them on first use. The PCB reference dataset under `\u003Cworkspace>\u002Faugmentation\u002Fanomalygen\u002Fdatasets\u002F\u003Cproject>\u002F` is also auto-fetchable. See `references\u002Fpaidf-anomalygen.md`.\n\n## Train AutoML Policy\n\nDEFT AOI owns the iterative data-improvement loop, retraining cadence, and KPI\ncheckpoint selection. For this workflow only, bypass model-level AutoML even\nwhen the underlying Visual ChangeNet model metadata has `automl_enabled: true`.\n\n`automl_policy: off` is a **workflow argument** to the Visual ChangeNet skill\ninvocation (the value the parent passes when calling `tao-skill-bank:tao-train-visual-changenet`\nvia the Skill tool), **not** a TAO spec field. Two cases:\n\n- **Direct `docker run visual_changenet train -e \u003Cspec>`** (the path this workflow\n  actually uses inline): no action needed. The TAO entrypoint is plain training\n  by default; AutoML lives behind a different code path that the SDK orchestrates.\n  Effectively, every direct `docker run` is already `automl_policy: off`.\n- **SDK-orchestrated dispatch** (Brev\u002FSLURM\u002Fk8s with the SDK building the\n  command): pass `automl_policy: off` to `VisualChangeNetSDK.train(...)` or the\n  equivalent runner argument. The SDK uses it to pick the plain-train command\n  instead of the AutoML wrapper.\n\n**Never add `automl_policy` or a `workflow` key to the spec YAML.** TAO's Hydra\n`ExperimentConfig` schema does not recognize these keys and the train job\nfails at config-merge time with\n`Error merging '\u003Cspec>.yaml' with schema: Key 'workflow' not in 'ExperimentConfig'`.\nThis is a workflow-level override only; do not change model metadata, and do\nnot apply this policy to other workflows.\n\n## Launch Intake\n\nAfter the user confirms they want to run this workflow, ask which supported\nplatform they intend to run on. Generate the platform choices with:\n\n```bash\n${TAO_SKILL_BANK_PATH:-~\u002Ftao-skills-external}\u002Fscripts\u002Flist_tao_platforms.py \\\n  --skill-bank ${TAO_SKILL_BANK_PATH:-~\u002Ftao-skills-external} --format text\n```\n\nAfter platform selection, run:\n\n```bash\n${TAO_SKILL_BANK_PATH:-~\u002Ftao-skills-external}\u002Fscripts\u002Flist_tao_platforms.py \\\n  --skill-bank ${TAO_SKILL_BANK_PATH:-~\u002Ftao-skills-external} \\\n  --platform \u003Cplatform> --format text\n```\n\nAsk only for credentials relevant to that platform, plus model-specific\ncredentials required by the selected workflow.\n\n## Agent Behavior\n\n> **There is exactly one user gate: pre-flight confirmation.** Print the Pre-Flight Summary\n> (see `references\u002Fpreflight.md` → Pre-Flight Summary), then STOP and wait for the user to type \"go\", \"yes\",\n> \"looks good\", or similar explicit approval. Do not launch any side-effecting step\n> (`docker run`, training, SDG, mutations under `${RESULTS_DIR}\u002F`) before that approval —\n> reading specs, listing files, `docker image inspect`, and populating the summary table\n> are fine. **\"Autonomous\" describes behavior *after* this gate, not before it.** Do not\n> skip the gate even if the user's original prompt sounded urgent (\"just run it\", \"go\n> ahead\") — the summary itself is the artifact they need to see before approving.\n>\n> **After the gate, the skill is fully autonomous.** Run the entire loop without asking\n> for confirmation. Do not pause between steps. Do not ask \"want me to continue?\" — just\n> continue. Only stop if a step fails with an unrecoverable error or a hard-stop gate\n> fires. Print a one-line status update at each step milestone so the user can follow\n> progress.\n>\n> **Auto-mode required.** The post-gate loop fires constant side-effecting calls\n> (`docker run`, `${RESULTS_DIR}\u002F` writes); without auto-accept \u002F bypass-permissions mode it\n> stalls on the first prompt. Remind the user at the Pre-Flight Summary to enable auto-mode\n> (shift+tab) before approving.\n>\n> **Blocker recovery.** Fix recoverable blockers yourself — missing image (pull), unstaged\n> C-RADIO backbone (stage `.pth` per `references\u002Fvisual-changenet.md`), missing pydeps (venv),\n> absent AnomalyGen assets (paidf auto-fetches) — then resume the Pre-Flight step you were on\n> (`\u003Cblocker> cleared → resuming step N`) and continue to the Summary. Halt only for what you\n> can't fix (missing workspace\u002Fspecs\u002FCSVs\u002Fcredentials, empty pool, leakage). A fix is not the\n> user gate.\n>\n> **Revised plan.** If any run parameter changes after the original summary was shown (user imposes a time limit, overrides epochs, changes max_iterations, etc.), always re-run Pre-Flight and show an updated summary before proceeding.\n\n## Workflow\n\nExecute the loop in this order (full detail in `references\u002Fpipeline-and-state.md` → Pipeline + Stage Execution):\n\n1. **Pre-Flight.** Run every check in `references\u002Fpreflight.md`. Resolve workspace, specs, CSVs, checkpoints, container images. Hard stop only on missing input you can't resolve yourself (see `## Agent Behavior` → Blocker recovery).\n2. **Baseline.** If `deft_state.json` already has `iterations.baseline.stage_completed == \"train\"` and a `best_ckpt_path` pointing at an existing file (the upstream `automl-deft-pipeline` pre-seeds these from its Phase 1 AutoML winner — see its Phase 1 → Phase 2 handoff), **skip the train sub-step** and resume at `inference -> evaluate` against the pre-seeded checkpoint. Otherwise run `train -> inference -> evaluate` by invoking the `tao-skill-bank:tao-train-visual-changenet` skill. Either way, then `rca` by invoking `tao-skill-bank:tao-analyze-gaps-visual-changenet`. Read `references\u002Fvisual-changenet.md` and `references\u002Ftao-analyze-gaps-visual-changenet.md` first for DEFT-loop-specific args (mounts, output dirs, `deft_state.json` updates).\n3. **Iterate.** For each iteration up to `max_iterations`, execute Pipeline steps 1-7. Between every step, re-read `results\u002Floop_log.jsonl` tail + `results\u002Fdeft_state.json` from disk — disk is canonical.\n4. **Stop** when the KPI target is met, `max_iterations` is reached, or a hard-stop gate fires (silent-drop, AMP allocation mismatch, train\u002Fval leakage). Never auto-retry hard stops.\n5. **Render** `results\u002FDEFT_Loop_Report.html` after each completed iteration (and once more at loop end) by spawning the `reporter` subagent (`agents\u002Freporter.md`). Per-stage renders are not done — every stage already appends one line to `loop_log.jsonl`, which is enough for a tail-watching user; the HTML render carries an iteration's worth of state and one render per iteration keeps the per-loop token cost roughly linear in iteration count, not in stage count. Do not render inline.\n\nAll pipeline stages run inline in the parent context — the parent invokes the underlying `tao-skill-bank:*` skills directly via the Skill tool, layering DEFT-loop conventions on top via the matching `references\u002F*.md` file. The **only** delegated work is HTML report rendering, handled by the `reporter` subagent in a fresh context so an end-of-loop render is never silently dropped when the parent's context is saturated. See `references\u002Fscripts-and-agents.md` → Agents for the `reporter` spawn contract.\n\n### Using Bundled Scripts\n\nRun bundled scripts from `scripts\u002F` via `run_script()` when the harness provides it (a Claude Code plugin runtime helper, not a function defined in this repo); otherwise fall back to direct `python`. Resolve every path argument to an absolute host path first. Never write `loop_log.jsonl` via `echo` or inline `jq` — the `seq` invariant requires reading the live tail through `next_seq()`. See `references\u002Fscripts-and-agents.md` for the full **Available Scripts** table, the `agents\u002Freporter.md` spawn contract, the **Stage Reference Modules** stage→skill mapping, the path-rule invariant, and the workflow-level AutoML-policy pitfall. For per-script invocation examples, see `references\u002FSCRIPT_USAGE.md`.\n\n## Stage Reference Modules\n\nEach pipeline stage maps to one underlying skill in the bank; the matching `references\u002F*.md` file layers DEFT-loop conventions (mounts, output dirs, `deft_state.json` updates, `log_stage.py` summary string) on top of the skill's generic instructions. **Read the reference file first, then invoke the skill via the Skill tool.** If a reference file is missing, stop and ask the user to reinstall the plugin. The full stage→reference→skill→ownership table lives in `references\u002Fscripts-and-agents.md` → **Stage Reference Modules**. The stages: `train`\u002F`evaluate` (`references\u002Fvisual-changenet.md`), `anomalygen` (`references\u002Fpaidf-anomalygen.md`), `rca` (`references\u002Ftao-analyze-gaps-visual-changenet.md`), `routing` (`references\u002Ftao-route-visual-changenet-samples.md`), and `data_mining` (`references\u002Ftao-mine-aoi-images.md`).\n\n**Path rule (invariant).** Use absolute host paths under `${RESULTS_DIR}\u002Fiter${ITER}\u002F` for every stage's output, mount `\u003Cworkspace>` into the container at the same path, pre-create dirs world-writable, and reject any config containing `output: \u002Fresults\u002F...` or any path outside `\u003Cworkspace>`.\n\n## Data, Pre-Flight, Pipeline, and State references\n\n| Topic | Reference | Contents |\n|---|---|---|\n| Bring-your-own-data, data contract, output layout, augmentation pool | `references\u002Fdata-layout.md` | No public AOI dataset; full `\u003Cworkspace>` input tree, ChangeNet 14-column CSV schema pointer, `${RESULTS_DIR}\u002F` output tree, and the two-source mining-pool table |\n| Pre-Flight checks, defaults, Pre-Flight Summary template, runtime estimate | `references\u002Fpreflight.md` | The 10 ordered Pre-Flight checks, required input `max_iterations`, all defaults, the full Pre-Flight Summary table + populate commands, and the per-iteration runtime estimate |\n| Pipeline steps, state\u002Flogging, stage execution, reports, runtime behavior | `references\u002Fpipeline-and-state.md` | Baseline pre-seed\u002Fskip-train logic, the 7 iteration Pipeline steps, `deft_state.json` + `loop_log.jsonl` schema and `seq` cadence, post-stage check, per-iteration HTML render, and the loop-end sequence |\n| Bundled scripts, reporter agent, stage modules, AutoML pitfall | `references\u002Fscripts-and-agents.md` | Available Scripts table, `agents\u002Freporter.md` spawn contract, Stage Reference Modules table, path-rule invariant, AutoML-policy spec trap |\n\n**Required input — `max_iterations`.** No default; ask the user if not supplied and do not proceed past Pre-Flight without it. If the user gives a time limit instead, convert it to an estimated `max_iterations` using the per-iteration runtime figure in `references\u002Fpreflight.md` and surface the estimate for confirmation. All other run parameters have defaults — never ask about a parameter with a default. The full defaults list and the Pre-Flight Summary the user approves at the single gate are in `references\u002Fpreflight.md`.\n\n## Gating\n\nRun the full Pre-Flight (`references\u002Fpreflight.md`), print the Pre-Flight Summary, then STOP at the one user gate. After approval, run the baseline (with the pre-seed\u002Fskip-train logic) and the 7-step iteration Pipeline, all detailed in `references\u002Fpipeline-and-state.md`.\n\nHard-stop and never auto-retry on: any stage `status=error`; train\u002Fvalidation leakage (the mid-iteration check on `mining_filter\u002Fmining_pool.csv` right after mining, and the post-assembly check on the combined CSV); a missing or zero-row mining pool; a failed CSV existence check; silent-drop; and AMP allocation mismatch. The loop stops when the KPI target is met, `max_iterations` is reached, or an unrecoverable gate fires. Each terminal path runs the loop-end sequence: append the final `loop_stop` entry via `scripts\u002Flog_stage.py`, backfill token usage with `scripts\u002Falign_token_usage.py`, spawn the `reporter` agent one final time (`trigger=\"loop-end\"`), then run `scripts\u002Fprepare_inference_spec.py` — skipped only when no valid checkpoint exists. Per-stage state cadence (one `loop_log.jsonl` entry per stage, `seq=last+1` from disk, disk is canonical, HTML render once per iteration and at loop end) is specified in `references\u002Fpipeline-and-state.md`.\n",{"data":35,"body":47},{"name":4,"description":6,"license":26,"compatibility":36,"metadata":37,"allowed-tools":40,"tags":41},"Requires docker + nvidia-container-toolkit. Workflows declare additional requirements.",{"author":38,"version":39},"NVIDIA Corporation","0.1.0","Read Task Bash Write",[42,43,44,45,46],"application","workflow","deft","aoi","loop",{"type":48,"children":49},"root",[50,59,66,72,97,102,108,201,207,219,252,310,351,357,362,471,476,595,600,606,743,748,761,993,1043,1050,1152,1157,1280,1320,1326,1493,1529,1535,1553,1649],{"type":51,"tag":52,"props":53,"children":55},"element","h1",{"id":54},"skill-tao-run-deft-aoi",[56],{"type":57,"value":58},"text","Skill: tao-run-deft-aoi",{"type":51,"tag":60,"props":61,"children":63},"h2",{"id":62},"when-to-use-this-skill",[64],{"type":57,"value":65},"When to Use This Skill",{"type":51,"tag":67,"props":68,"children":69},"p",{},[70],{"type":57,"value":71},"Use this skill when the user wants an agent to run the full DEFT AOI improvement loop for an NVIDIA TAO VisualChangeNet \u002F ChangeNet PCB inspection model: baseline evaluation, RCA, synthetic defect generation, data mining, retraining, and deployment gating until a KPI target is met.",{"type":51,"tag":73,"props":74,"children":75},"ul",{},[76,82,87,92],{"type":51,"tag":77,"props":78,"children":79},"li",{},[80],{"type":57,"value":81},"\"Run the DEFT loop\"",{"type":51,"tag":77,"props":83,"children":84},{},[85],{"type":57,"value":86},"\"Fine-tune until FAR below 0.1% at recall=100%\"",{"type":51,"tag":77,"props":88,"children":89},{},[90],{"type":57,"value":91},"\"Improve my AOI ChangeNet model using RCA and synthetic defects\"",{"type":51,"tag":77,"props":93,"children":94},{},[95],{"type":57,"value":96},"\"Iterate training until false accept rate meets the target\"",{"type":51,"tag":67,"props":98,"children":99},{},[100],{"type":57,"value":101},"Do not use this skill for a single standalone TAO training run, one-off inference, generic anomaly generation, or RCA-only analysis. Use the relevant agent directly when the user asks for only that step.",{"type":51,"tag":60,"props":103,"children":105},{"id":104},"base-model",[106],{"type":57,"value":107},"Base Model",{"type":51,"tag":67,"props":109,"children":110},{},[111,113,119,121,126,128,135,137,143,145,151,153,159,161,167,169,175,177,183,185,191,193,199],{"type":57,"value":112},"The loop operates on ",{"type":51,"tag":114,"props":115,"children":116},"strong",{},[117],{"type":57,"value":118},"NVIDIA TAO Visual ChangeNet",{"type":57,"value":120}," classify with the ",{"type":51,"tag":114,"props":122,"children":123},{},[124],{"type":57,"value":125},"NVIDIA C-RADIOv2-B",{"type":57,"value":127}," backbone, fine-tuned end-to-end. The architecture is defined in ",{"type":51,"tag":129,"props":130,"children":132},"code",{"className":131},[],[133],{"type":57,"value":134},"specs\u002Fbaseline_spec.yaml",{"type":57,"value":136}," — that file is the source of truth. All pretrained weights come from HuggingFace (",{"type":51,"tag":129,"props":138,"children":140},{"className":139},[],[141],{"type":57,"value":142},"HF_TOKEN",{"type":57,"value":144}," required); ",{"type":51,"tag":129,"props":146,"children":148},{"className":147},[],[149],{"type":57,"value":150},"NGC_KEY",{"type":57,"value":152}," only gates container pulls. ChangeNet backbone resolution + the staged-file\u002FHF-URL fallback for ",{"type":51,"tag":129,"props":154,"children":156},{"className":155},[],[157],{"type":57,"value":158},"model.backbone.pretrained_backbone_path",{"type":57,"value":160}," are owned by ",{"type":51,"tag":129,"props":162,"children":164},{"className":163},[],[165],{"type":57,"value":166},"references\u002Fvisual-changenet.md",{"type":57,"value":168},". SigLIP for k-NN mining is owned by ",{"type":51,"tag":129,"props":170,"children":172},{"className":171},[],[173],{"type":57,"value":174},"references\u002Ftao-mine-aoi-images.md",{"type":57,"value":176},". AnomalyGen-side checkpoints (Cosmos-Predict2, T5, NVDINOV2, C-RADIO-V3, DINOv2-large, SAM2, Qwen3-VL — ~22 GB for 2B-only, ~140 GB with 14B + T5-11b) live under ",{"type":51,"tag":129,"props":178,"children":180},{"className":179},[],[181],{"type":57,"value":182},"\u003Cworkspace>\u002Faugmentation\u002Fanomalygen\u002Fbase_checkpoints\u002F",{"type":57,"value":184},"; the paidf-anomalygen container auto-downloads them on first use. The PCB reference dataset under ",{"type":51,"tag":129,"props":186,"children":188},{"className":187},[],[189],{"type":57,"value":190},"\u003Cworkspace>\u002Faugmentation\u002Fanomalygen\u002Fdatasets\u002F\u003Cproject>\u002F",{"type":57,"value":192}," is also auto-fetchable. See ",{"type":51,"tag":129,"props":194,"children":196},{"className":195},[],[197],{"type":57,"value":198},"references\u002Fpaidf-anomalygen.md",{"type":57,"value":200},".",{"type":51,"tag":60,"props":202,"children":204},{"id":203},"train-automl-policy",[205],{"type":57,"value":206},"Train AutoML Policy",{"type":51,"tag":67,"props":208,"children":209},{},[210,212,218],{"type":57,"value":211},"DEFT AOI owns the iterative data-improvement loop, retraining cadence, and KPI\ncheckpoint selection. For this workflow only, bypass model-level AutoML even\nwhen the underlying Visual ChangeNet model metadata has ",{"type":51,"tag":129,"props":213,"children":215},{"className":214},[],[216],{"type":57,"value":217},"automl_enabled: true",{"type":57,"value":200},{"type":51,"tag":67,"props":220,"children":221},{},[222,228,230,235,237,243,245,250],{"type":51,"tag":129,"props":223,"children":225},{"className":224},[],[226],{"type":57,"value":227},"automl_policy: off",{"type":57,"value":229}," is a ",{"type":51,"tag":114,"props":231,"children":232},{},[233],{"type":57,"value":234},"workflow argument",{"type":57,"value":236}," to the Visual ChangeNet skill\ninvocation (the value the parent passes when calling ",{"type":51,"tag":129,"props":238,"children":240},{"className":239},[],[241],{"type":57,"value":242},"tao-skill-bank:tao-train-visual-changenet",{"type":57,"value":244},"\nvia the Skill tool), ",{"type":51,"tag":114,"props":246,"children":247},{},[248],{"type":57,"value":249},"not",{"type":57,"value":251}," a TAO spec field. Two cases:",{"type":51,"tag":73,"props":253,"children":254},{},[255,285],{"type":51,"tag":77,"props":256,"children":257},{},[258,269,271,277,279,284],{"type":51,"tag":114,"props":259,"children":260},{},[261,263],{"type":57,"value":262},"Direct ",{"type":51,"tag":129,"props":264,"children":266},{"className":265},[],[267],{"type":57,"value":268},"docker run visual_changenet train -e \u003Cspec>",{"type":57,"value":270}," (the path this workflow\nactually uses inline): no action needed. The TAO entrypoint is plain training\nby default; AutoML lives behind a different code path that the SDK orchestrates.\nEffectively, every direct ",{"type":51,"tag":129,"props":272,"children":274},{"className":273},[],[275],{"type":57,"value":276},"docker run",{"type":57,"value":278}," is already ",{"type":51,"tag":129,"props":280,"children":282},{"className":281},[],[283],{"type":57,"value":227},{"type":57,"value":200},{"type":51,"tag":77,"props":286,"children":287},{},[288,293,295,300,302,308],{"type":51,"tag":114,"props":289,"children":290},{},[291],{"type":57,"value":292},"SDK-orchestrated dispatch",{"type":57,"value":294}," (Brev\u002FSLURM\u002Fk8s with the SDK building the\ncommand): pass ",{"type":51,"tag":129,"props":296,"children":298},{"className":297},[],[299],{"type":57,"value":227},{"type":57,"value":301}," to ",{"type":51,"tag":129,"props":303,"children":305},{"className":304},[],[306],{"type":57,"value":307},"VisualChangeNetSDK.train(...)",{"type":57,"value":309}," or the\nequivalent runner argument. The SDK uses it to pick the plain-train command\ninstead of the AutoML wrapper.",{"type":51,"tag":67,"props":311,"children":312},{},[313,333,335,341,343,349],{"type":51,"tag":114,"props":314,"children":315},{},[316,318,324,326,331],{"type":57,"value":317},"Never add ",{"type":51,"tag":129,"props":319,"children":321},{"className":320},[],[322],{"type":57,"value":323},"automl_policy",{"type":57,"value":325}," or a ",{"type":51,"tag":129,"props":327,"children":329},{"className":328},[],[330],{"type":57,"value":43},{"type":57,"value":332}," key to the spec YAML.",{"type":57,"value":334}," TAO's Hydra\n",{"type":51,"tag":129,"props":336,"children":338},{"className":337},[],[339],{"type":57,"value":340},"ExperimentConfig",{"type":57,"value":342}," schema does not recognize these keys and the train job\nfails at config-merge time with\n",{"type":51,"tag":129,"props":344,"children":346},{"className":345},[],[347],{"type":57,"value":348},"Error merging '\u003Cspec>.yaml' with schema: Key 'workflow' not in 'ExperimentConfig'",{"type":57,"value":350},".\nThis is a workflow-level override only; do not change model metadata, and do\nnot apply this policy to other workflows.",{"type":51,"tag":60,"props":352,"children":354},{"id":353},"launch-intake",[355],{"type":57,"value":356},"Launch Intake",{"type":51,"tag":67,"props":358,"children":359},{},[360],{"type":57,"value":361},"After the user confirms they want to run this workflow, ask which supported\nplatform they intend to run on. Generate the platform choices with:",{"type":51,"tag":363,"props":364,"children":369},"pre",{"className":365,"code":366,"language":367,"meta":368,"style":368},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","${TAO_SKILL_BANK_PATH:-~\u002Ftao-skills-external}\u002Fscripts\u002Flist_tao_platforms.py \\\n  --skill-bank ${TAO_SKILL_BANK_PATH:-~\u002Ftao-skills-external} --format text\n","bash","",[370],{"type":51,"tag":129,"props":371,"children":372},{"__ignoreMap":368},[373,421],{"type":51,"tag":374,"props":375,"children":378},"span",{"class":376,"line":377},"line",1,[379,385,391,396,401,406,411,416],{"type":51,"tag":374,"props":380,"children":382},{"style":381},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[383],{"type":57,"value":384},"${",{"type":51,"tag":374,"props":386,"children":388},{"style":387},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[389],{"type":57,"value":390},"TAO_SKILL_BANK_PATH",{"type":51,"tag":374,"props":392,"children":393},{"style":381},[394],{"type":57,"value":395},":-",{"type":51,"tag":374,"props":397,"children":398},{"style":387},[399],{"type":57,"value":400},"~",{"type":51,"tag":374,"props":402,"children":403},{"style":381},[404],{"type":57,"value":405},"\u002F",{"type":51,"tag":374,"props":407,"children":408},{"style":387},[409],{"type":57,"value":410},"tao-skills-external",{"type":51,"tag":374,"props":412,"children":413},{"style":381},[414],{"type":57,"value":415},"}",{"type":51,"tag":374,"props":417,"children":418},{"style":387},[419],{"type":57,"value":420},"\u002Fscripts\u002Flist_tao_platforms.py \\\n",{"type":51,"tag":374,"props":422,"children":424},{"class":376,"line":423},2,[425,431,436,440,444,448,452,456,460,466],{"type":51,"tag":374,"props":426,"children":428},{"style":427},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[429],{"type":57,"value":430},"  --skill-bank",{"type":51,"tag":374,"props":432,"children":433},{"style":381},[434],{"type":57,"value":435}," ${",{"type":51,"tag":374,"props":437,"children":438},{"style":387},[439],{"type":57,"value":390},{"type":51,"tag":374,"props":441,"children":442},{"style":381},[443],{"type":57,"value":395},{"type":51,"tag":374,"props":445,"children":446},{"style":387},[447],{"type":57,"value":400},{"type":51,"tag":374,"props":449,"children":450},{"style":381},[451],{"type":57,"value":405},{"type":51,"tag":374,"props":453,"children":454},{"style":387},[455],{"type":57,"value":410},{"type":51,"tag":374,"props":457,"children":458},{"style":381},[459],{"type":57,"value":415},{"type":51,"tag":374,"props":461,"children":463},{"style":462},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[464],{"type":57,"value":465}," --format",{"type":51,"tag":374,"props":467,"children":468},{"style":462},[469],{"type":57,"value":470}," text\n",{"type":51,"tag":67,"props":472,"children":473},{},[474],{"type":57,"value":475},"After platform selection, run:",{"type":51,"tag":363,"props":477,"children":479},{"className":365,"code":478,"language":367,"meta":368,"style":368},"${TAO_SKILL_BANK_PATH:-~\u002Ftao-skills-external}\u002Fscripts\u002Flist_tao_platforms.py \\\n  --skill-bank ${TAO_SKILL_BANK_PATH:-~\u002Ftao-skills-external} \\\n  --platform \u003Cplatform> --format text\n",[480],{"type":51,"tag":129,"props":481,"children":482},{"__ignoreMap":368},[483,518,558],{"type":51,"tag":374,"props":484,"children":485},{"class":376,"line":377},[486,490,494,498,502,506,510,514],{"type":51,"tag":374,"props":487,"children":488},{"style":381},[489],{"type":57,"value":384},{"type":51,"tag":374,"props":491,"children":492},{"style":387},[493],{"type":57,"value":390},{"type":51,"tag":374,"props":495,"children":496},{"style":381},[497],{"type":57,"value":395},{"type":51,"tag":374,"props":499,"children":500},{"style":387},[501],{"type":57,"value":400},{"type":51,"tag":374,"props":503,"children":504},{"style":381},[505],{"type":57,"value":405},{"type":51,"tag":374,"props":507,"children":508},{"style":387},[509],{"type":57,"value":410},{"type":51,"tag":374,"props":511,"children":512},{"style":381},[513],{"type":57,"value":415},{"type":51,"tag":374,"props":515,"children":516},{"style":387},[517],{"type":57,"value":420},{"type":51,"tag":374,"props":519,"children":520},{"class":376,"line":423},[521,525,529,533,537,541,545,549,553],{"type":51,"tag":374,"props":522,"children":523},{"style":427},[524],{"type":57,"value":430},{"type":51,"tag":374,"props":526,"children":527},{"style":381},[528],{"type":57,"value":435},{"type":51,"tag":374,"props":530,"children":531},{"style":387},[532],{"type":57,"value":390},{"type":51,"tag":374,"props":534,"children":535},{"style":381},[536],{"type":57,"value":395},{"type":51,"tag":374,"props":538,"children":539},{"style":387},[540],{"type":57,"value":400},{"type":51,"tag":374,"props":542,"children":543},{"style":381},[544],{"type":57,"value":405},{"type":51,"tag":374,"props":546,"children":547},{"style":387},[548],{"type":57,"value":410},{"type":51,"tag":374,"props":550,"children":551},{"style":381},[552],{"type":57,"value":415},{"type":51,"tag":374,"props":554,"children":555},{"style":387},[556],{"type":57,"value":557}," \\\n",{"type":51,"tag":374,"props":559,"children":561},{"class":376,"line":560},3,[562,567,572,577,582,587,591],{"type":51,"tag":374,"props":563,"children":564},{"style":462},[565],{"type":57,"value":566},"  --platform",{"type":51,"tag":374,"props":568,"children":569},{"style":381},[570],{"type":57,"value":571}," \u003C",{"type":51,"tag":374,"props":573,"children":574},{"style":462},[575],{"type":57,"value":576},"platfor",{"type":51,"tag":374,"props":578,"children":579},{"style":387},[580],{"type":57,"value":581},"m",{"type":51,"tag":374,"props":583,"children":584},{"style":381},[585],{"type":57,"value":586},">",{"type":51,"tag":374,"props":588,"children":589},{"style":462},[590],{"type":57,"value":465},{"type":51,"tag":374,"props":592,"children":593},{"style":462},[594],{"type":57,"value":470},{"type":51,"tag":67,"props":596,"children":597},{},[598],{"type":57,"value":599},"Ask only for credentials relevant to that platform, plus model-specific\ncredentials required by the selected workflow.",{"type":51,"tag":60,"props":601,"children":603},{"id":602},"agent-behavior",[604],{"type":57,"value":605},"Agent Behavior",{"type":51,"tag":607,"props":608,"children":609},"blockquote",{},[610,666,676,700,733],{"type":51,"tag":67,"props":611,"children":612},{},[613,618,620,626,628,633,635,641,643,649,651,664],{"type":51,"tag":114,"props":614,"children":615},{},[616],{"type":57,"value":617},"There is exactly one user gate: pre-flight confirmation.",{"type":57,"value":619}," Print the Pre-Flight Summary\n(see ",{"type":51,"tag":129,"props":621,"children":623},{"className":622},[],[624],{"type":57,"value":625},"references\u002Fpreflight.md",{"type":57,"value":627}," → Pre-Flight Summary), then STOP and wait for the user to type \"go\", \"yes\",\n\"looks good\", or similar explicit approval. Do not launch any side-effecting step\n(",{"type":51,"tag":129,"props":629,"children":631},{"className":630},[],[632],{"type":57,"value":276},{"type":57,"value":634},", training, SDG, mutations under ",{"type":51,"tag":129,"props":636,"children":638},{"className":637},[],[639],{"type":57,"value":640},"${RESULTS_DIR}\u002F",{"type":57,"value":642},") before that approval —\nreading specs, listing files, ",{"type":51,"tag":129,"props":644,"children":646},{"className":645},[],[647],{"type":57,"value":648},"docker image inspect",{"type":57,"value":650},", and populating the summary table\nare fine. ",{"type":51,"tag":114,"props":652,"children":653},{},[654,656,662],{"type":57,"value":655},"\"Autonomous\" describes behavior ",{"type":51,"tag":657,"props":658,"children":659},"em",{},[660],{"type":57,"value":661},"after",{"type":57,"value":663}," this gate, not before it.",{"type":57,"value":665}," Do not\nskip the gate even if the user's original prompt sounded urgent (\"just run it\", \"go\nahead\") — the summary itself is the artifact they need to see before approving.",{"type":51,"tag":67,"props":667,"children":668},{},[669,674],{"type":51,"tag":114,"props":670,"children":671},{},[672],{"type":57,"value":673},"After the gate, the skill is fully autonomous.",{"type":57,"value":675}," Run the entire loop without asking\nfor confirmation. Do not pause between steps. Do not ask \"want me to continue?\" — just\ncontinue. Only stop if a step fails with an unrecoverable error or a hard-stop gate\nfires. Print a one-line status update at each step milestone so the user can follow\nprogress.",{"type":51,"tag":67,"props":677,"children":678},{},[679,684,686,691,693,698],{"type":51,"tag":114,"props":680,"children":681},{},[682],{"type":57,"value":683},"Auto-mode required.",{"type":57,"value":685}," The post-gate loop fires constant side-effecting calls\n(",{"type":51,"tag":129,"props":687,"children":689},{"className":688},[],[690],{"type":57,"value":276},{"type":57,"value":692},", ",{"type":51,"tag":129,"props":694,"children":696},{"className":695},[],[697],{"type":57,"value":640},{"type":57,"value":699}," writes); without auto-accept \u002F bypass-permissions mode it\nstalls on the first prompt. Remind the user at the Pre-Flight Summary to enable auto-mode\n(shift+tab) before approving.",{"type":51,"tag":67,"props":701,"children":702},{},[703,708,710,716,718,723,725,731],{"type":51,"tag":114,"props":704,"children":705},{},[706],{"type":57,"value":707},"Blocker recovery.",{"type":57,"value":709}," Fix recoverable blockers yourself — missing image (pull), unstaged\nC-RADIO backbone (stage ",{"type":51,"tag":129,"props":711,"children":713},{"className":712},[],[714],{"type":57,"value":715},".pth",{"type":57,"value":717}," per ",{"type":51,"tag":129,"props":719,"children":721},{"className":720},[],[722],{"type":57,"value":166},{"type":57,"value":724},"), missing pydeps (venv),\nabsent AnomalyGen assets (paidf auto-fetches) — then resume the Pre-Flight step you were on\n(",{"type":51,"tag":129,"props":726,"children":728},{"className":727},[],[729],{"type":57,"value":730},"\u003Cblocker> cleared → resuming step N",{"type":57,"value":732},") and continue to the Summary. Halt only for what you\ncan't fix (missing workspace\u002Fspecs\u002FCSVs\u002Fcredentials, empty pool, leakage). A fix is not the\nuser gate.",{"type":51,"tag":67,"props":734,"children":735},{},[736,741],{"type":51,"tag":114,"props":737,"children":738},{},[739],{"type":57,"value":740},"Revised plan.",{"type":57,"value":742}," If any run parameter changes after the original summary was shown (user imposes a time limit, overrides epochs, changes max_iterations, etc.), always re-run Pre-Flight and show an updated summary before proceeding.",{"type":51,"tag":60,"props":744,"children":745},{"id":43},[746],{"type":57,"value":747},"Workflow",{"type":51,"tag":67,"props":749,"children":750},{},[751,753,759],{"type":57,"value":752},"Execute the loop in this order (full detail in ",{"type":51,"tag":129,"props":754,"children":756},{"className":755},[],[757],{"type":57,"value":758},"references\u002Fpipeline-and-state.md",{"type":57,"value":760}," → Pipeline + Stage Execution):",{"type":51,"tag":762,"props":763,"children":764},"ol",{},[765,790,900,934,951],{"type":51,"tag":77,"props":766,"children":767},{},[768,773,775,780,782,788],{"type":51,"tag":114,"props":769,"children":770},{},[771],{"type":57,"value":772},"Pre-Flight.",{"type":57,"value":774}," Run every check in ",{"type":51,"tag":129,"props":776,"children":778},{"className":777},[],[779],{"type":57,"value":625},{"type":57,"value":781},". Resolve workspace, specs, CSVs, checkpoints, container images. Hard stop only on missing input you can't resolve yourself (see ",{"type":51,"tag":129,"props":783,"children":785},{"className":784},[],[786],{"type":57,"value":787},"## Agent Behavior",{"type":57,"value":789}," → Blocker recovery).",{"type":51,"tag":77,"props":791,"children":792},{},[793,798,800,806,808,814,816,822,824,830,832,837,839,845,847,853,855,860,862,868,870,876,878,883,885,891,893,898],{"type":51,"tag":114,"props":794,"children":795},{},[796],{"type":57,"value":797},"Baseline.",{"type":57,"value":799}," If ",{"type":51,"tag":129,"props":801,"children":803},{"className":802},[],[804],{"type":57,"value":805},"deft_state.json",{"type":57,"value":807}," already has ",{"type":51,"tag":129,"props":809,"children":811},{"className":810},[],[812],{"type":57,"value":813},"iterations.baseline.stage_completed == \"train\"",{"type":57,"value":815}," and a ",{"type":51,"tag":129,"props":817,"children":819},{"className":818},[],[820],{"type":57,"value":821},"best_ckpt_path",{"type":57,"value":823}," pointing at an existing file (the upstream ",{"type":51,"tag":129,"props":825,"children":827},{"className":826},[],[828],{"type":57,"value":829},"automl-deft-pipeline",{"type":57,"value":831}," pre-seeds these from its Phase 1 AutoML winner — see its Phase 1 → Phase 2 handoff), ",{"type":51,"tag":114,"props":833,"children":834},{},[835],{"type":57,"value":836},"skip the train sub-step",{"type":57,"value":838}," and resume at ",{"type":51,"tag":129,"props":840,"children":842},{"className":841},[],[843],{"type":57,"value":844},"inference -> evaluate",{"type":57,"value":846}," against the pre-seeded checkpoint. Otherwise run ",{"type":51,"tag":129,"props":848,"children":850},{"className":849},[],[851],{"type":57,"value":852},"train -> inference -> evaluate",{"type":57,"value":854}," by invoking the ",{"type":51,"tag":129,"props":856,"children":858},{"className":857},[],[859],{"type":57,"value":242},{"type":57,"value":861}," skill. Either way, then ",{"type":51,"tag":129,"props":863,"children":865},{"className":864},[],[866],{"type":57,"value":867},"rca",{"type":57,"value":869}," by invoking ",{"type":51,"tag":129,"props":871,"children":873},{"className":872},[],[874],{"type":57,"value":875},"tao-skill-bank:tao-analyze-gaps-visual-changenet",{"type":57,"value":877},". Read ",{"type":51,"tag":129,"props":879,"children":881},{"className":880},[],[882],{"type":57,"value":166},{"type":57,"value":884}," and ",{"type":51,"tag":129,"props":886,"children":888},{"className":887},[],[889],{"type":57,"value":890},"references\u002Ftao-analyze-gaps-visual-changenet.md",{"type":57,"value":892}," first for DEFT-loop-specific args (mounts, output dirs, ",{"type":51,"tag":129,"props":894,"children":896},{"className":895},[],[897],{"type":57,"value":805},{"type":57,"value":899}," updates).",{"type":51,"tag":77,"props":901,"children":902},{},[903,908,910,916,918,924,926,932],{"type":51,"tag":114,"props":904,"children":905},{},[906],{"type":57,"value":907},"Iterate.",{"type":57,"value":909}," For each iteration up to ",{"type":51,"tag":129,"props":911,"children":913},{"className":912},[],[914],{"type":57,"value":915},"max_iterations",{"type":57,"value":917},", execute Pipeline steps 1-7. Between every step, re-read ",{"type":51,"tag":129,"props":919,"children":921},{"className":920},[],[922],{"type":57,"value":923},"results\u002Floop_log.jsonl",{"type":57,"value":925}," tail + ",{"type":51,"tag":129,"props":927,"children":929},{"className":928},[],[930],{"type":57,"value":931},"results\u002Fdeft_state.json",{"type":57,"value":933}," from disk — disk is canonical.",{"type":51,"tag":77,"props":935,"children":936},{},[937,942,944,949],{"type":51,"tag":114,"props":938,"children":939},{},[940],{"type":57,"value":941},"Stop",{"type":57,"value":943}," when the KPI target is met, ",{"type":51,"tag":129,"props":945,"children":947},{"className":946},[],[948],{"type":57,"value":915},{"type":57,"value":950}," is reached, or a hard-stop gate fires (silent-drop, AMP allocation mismatch, train\u002Fval leakage). Never auto-retry hard stops.",{"type":51,"tag":77,"props":952,"children":953},{},[954,959,961,967,969,975,977,983,985,991],{"type":51,"tag":114,"props":955,"children":956},{},[957],{"type":57,"value":958},"Render",{"type":57,"value":960}," ",{"type":51,"tag":129,"props":962,"children":964},{"className":963},[],[965],{"type":57,"value":966},"results\u002FDEFT_Loop_Report.html",{"type":57,"value":968}," after each completed iteration (and once more at loop end) by spawning the ",{"type":51,"tag":129,"props":970,"children":972},{"className":971},[],[973],{"type":57,"value":974},"reporter",{"type":57,"value":976}," subagent (",{"type":51,"tag":129,"props":978,"children":980},{"className":979},[],[981],{"type":57,"value":982},"agents\u002Freporter.md",{"type":57,"value":984},"). Per-stage renders are not done — every stage already appends one line to ",{"type":51,"tag":129,"props":986,"children":988},{"className":987},[],[989],{"type":57,"value":990},"loop_log.jsonl",{"type":57,"value":992},", which is enough for a tail-watching user; the HTML render carries an iteration's worth of state and one render per iteration keeps the per-loop token cost roughly linear in iteration count, not in stage count. Do not render inline.",{"type":51,"tag":67,"props":994,"children":995},{},[996,998,1004,1006,1012,1014,1019,1021,1026,1028,1034,1036,1041],{"type":57,"value":997},"All pipeline stages run inline in the parent context — the parent invokes the underlying ",{"type":51,"tag":129,"props":999,"children":1001},{"className":1000},[],[1002],{"type":57,"value":1003},"tao-skill-bank:*",{"type":57,"value":1005}," skills directly via the Skill tool, layering DEFT-loop conventions on top via the matching ",{"type":51,"tag":129,"props":1007,"children":1009},{"className":1008},[],[1010],{"type":57,"value":1011},"references\u002F*.md",{"type":57,"value":1013}," file. The ",{"type":51,"tag":114,"props":1015,"children":1016},{},[1017],{"type":57,"value":1018},"only",{"type":57,"value":1020}," delegated work is HTML report rendering, handled by the ",{"type":51,"tag":129,"props":1022,"children":1024},{"className":1023},[],[1025],{"type":57,"value":974},{"type":57,"value":1027}," subagent in a fresh context so an end-of-loop render is never silently dropped when the parent's context is saturated. See ",{"type":51,"tag":129,"props":1029,"children":1031},{"className":1030},[],[1032],{"type":57,"value":1033},"references\u002Fscripts-and-agents.md",{"type":57,"value":1035}," → Agents for the ",{"type":51,"tag":129,"props":1037,"children":1039},{"className":1038},[],[1040],{"type":57,"value":974},{"type":57,"value":1042}," spawn contract.",{"type":51,"tag":1044,"props":1045,"children":1047},"h3",{"id":1046},"using-bundled-scripts",[1048],{"type":57,"value":1049},"Using Bundled Scripts",{"type":51,"tag":67,"props":1051,"children":1052},{},[1053,1055,1061,1063,1069,1071,1077,1079,1084,1085,1091,1093,1099,1101,1107,1109,1115,1117,1122,1124,1129,1131,1136,1138,1143,1145,1151],{"type":57,"value":1054},"Run bundled scripts from ",{"type":51,"tag":129,"props":1056,"children":1058},{"className":1057},[],[1059],{"type":57,"value":1060},"scripts\u002F",{"type":57,"value":1062}," via ",{"type":51,"tag":129,"props":1064,"children":1066},{"className":1065},[],[1067],{"type":57,"value":1068},"run_script()",{"type":57,"value":1070}," when the harness provides it (a Claude Code plugin runtime helper, not a function defined in this repo); otherwise fall back to direct ",{"type":51,"tag":129,"props":1072,"children":1074},{"className":1073},[],[1075],{"type":57,"value":1076},"python",{"type":57,"value":1078},". Resolve every path argument to an absolute host path first. Never write ",{"type":51,"tag":129,"props":1080,"children":1082},{"className":1081},[],[1083],{"type":57,"value":990},{"type":57,"value":1062},{"type":51,"tag":129,"props":1086,"children":1088},{"className":1087},[],[1089],{"type":57,"value":1090},"echo",{"type":57,"value":1092}," or inline ",{"type":51,"tag":129,"props":1094,"children":1096},{"className":1095},[],[1097],{"type":57,"value":1098},"jq",{"type":57,"value":1100}," — the ",{"type":51,"tag":129,"props":1102,"children":1104},{"className":1103},[],[1105],{"type":57,"value":1106},"seq",{"type":57,"value":1108}," invariant requires reading the live tail through ",{"type":51,"tag":129,"props":1110,"children":1112},{"className":1111},[],[1113],{"type":57,"value":1114},"next_seq()",{"type":57,"value":1116},". See ",{"type":51,"tag":129,"props":1118,"children":1120},{"className":1119},[],[1121],{"type":57,"value":1033},{"type":57,"value":1123}," for the full ",{"type":51,"tag":114,"props":1125,"children":1126},{},[1127],{"type":57,"value":1128},"Available Scripts",{"type":57,"value":1130}," table, the ",{"type":51,"tag":129,"props":1132,"children":1134},{"className":1133},[],[1135],{"type":57,"value":982},{"type":57,"value":1137}," spawn contract, the ",{"type":51,"tag":114,"props":1139,"children":1140},{},[1141],{"type":57,"value":1142},"Stage Reference Modules",{"type":57,"value":1144}," stage→skill mapping, the path-rule invariant, and the workflow-level AutoML-policy pitfall. For per-script invocation examples, see ",{"type":51,"tag":129,"props":1146,"children":1148},{"className":1147},[],[1149],{"type":57,"value":1150},"references\u002FSCRIPT_USAGE.md",{"type":57,"value":200},{"type":51,"tag":60,"props":1153,"children":1155},{"id":1154},"stage-reference-modules",[1156],{"type":57,"value":1142},{"type":51,"tag":67,"props":1158,"children":1159},{},[1160,1162,1167,1169,1174,1176,1182,1184,1189,1191,1196,1198,1202,1204,1210,1211,1217,1219,1224,1226,1232,1233,1238,1239,1244,1245,1250,1251,1257,1258,1264,1266,1272,1273,1278],{"type":57,"value":1161},"Each pipeline stage maps to one underlying skill in the bank; the matching ",{"type":51,"tag":129,"props":1163,"children":1165},{"className":1164},[],[1166],{"type":57,"value":1011},{"type":57,"value":1168}," file layers DEFT-loop conventions (mounts, output dirs, ",{"type":51,"tag":129,"props":1170,"children":1172},{"className":1171},[],[1173],{"type":57,"value":805},{"type":57,"value":1175}," updates, ",{"type":51,"tag":129,"props":1177,"children":1179},{"className":1178},[],[1180],{"type":57,"value":1181},"log_stage.py",{"type":57,"value":1183}," summary string) on top of the skill's generic instructions. ",{"type":51,"tag":114,"props":1185,"children":1186},{},[1187],{"type":57,"value":1188},"Read the reference file first, then invoke the skill via the Skill tool.",{"type":57,"value":1190}," If a reference file is missing, stop and ask the user to reinstall the plugin. The full stage→reference→skill→ownership table lives in ",{"type":51,"tag":129,"props":1192,"children":1194},{"className":1193},[],[1195],{"type":57,"value":1033},{"type":57,"value":1197}," → ",{"type":51,"tag":114,"props":1199,"children":1200},{},[1201],{"type":57,"value":1142},{"type":57,"value":1203},". The stages: ",{"type":51,"tag":129,"props":1205,"children":1207},{"className":1206},[],[1208],{"type":57,"value":1209},"train",{"type":57,"value":405},{"type":51,"tag":129,"props":1212,"children":1214},{"className":1213},[],[1215],{"type":57,"value":1216},"evaluate",{"type":57,"value":1218}," (",{"type":51,"tag":129,"props":1220,"children":1222},{"className":1221},[],[1223],{"type":57,"value":166},{"type":57,"value":1225},"), ",{"type":51,"tag":129,"props":1227,"children":1229},{"className":1228},[],[1230],{"type":57,"value":1231},"anomalygen",{"type":57,"value":1218},{"type":51,"tag":129,"props":1234,"children":1236},{"className":1235},[],[1237],{"type":57,"value":198},{"type":57,"value":1225},{"type":51,"tag":129,"props":1240,"children":1242},{"className":1241},[],[1243],{"type":57,"value":867},{"type":57,"value":1218},{"type":51,"tag":129,"props":1246,"children":1248},{"className":1247},[],[1249],{"type":57,"value":890},{"type":57,"value":1225},{"type":51,"tag":129,"props":1252,"children":1254},{"className":1253},[],[1255],{"type":57,"value":1256},"routing",{"type":57,"value":1218},{"type":51,"tag":129,"props":1259,"children":1261},{"className":1260},[],[1262],{"type":57,"value":1263},"references\u002Ftao-route-visual-changenet-samples.md",{"type":57,"value":1265},"), and ",{"type":51,"tag":129,"props":1267,"children":1269},{"className":1268},[],[1270],{"type":57,"value":1271},"data_mining",{"type":57,"value":1218},{"type":51,"tag":129,"props":1274,"children":1276},{"className":1275},[],[1277],{"type":57,"value":174},{"type":57,"value":1279},").",{"type":51,"tag":67,"props":1281,"children":1282},{},[1283,1288,1290,1296,1298,1304,1306,1312,1314,1319],{"type":51,"tag":114,"props":1284,"children":1285},{},[1286],{"type":57,"value":1287},"Path rule (invariant).",{"type":57,"value":1289}," Use absolute host paths under ",{"type":51,"tag":129,"props":1291,"children":1293},{"className":1292},[],[1294],{"type":57,"value":1295},"${RESULTS_DIR}\u002Fiter${ITER}\u002F",{"type":57,"value":1297}," for every stage's output, mount ",{"type":51,"tag":129,"props":1299,"children":1301},{"className":1300},[],[1302],{"type":57,"value":1303},"\u003Cworkspace>",{"type":57,"value":1305}," into the container at the same path, pre-create dirs world-writable, and reject any config containing ",{"type":51,"tag":129,"props":1307,"children":1309},{"className":1308},[],[1310],{"type":57,"value":1311},"output: \u002Fresults\u002F...",{"type":57,"value":1313}," or any path outside ",{"type":51,"tag":129,"props":1315,"children":1317},{"className":1316},[],[1318],{"type":57,"value":1303},{"type":57,"value":200},{"type":51,"tag":60,"props":1321,"children":1323},{"id":1322},"data-pre-flight-pipeline-and-state-references",[1324],{"type":57,"value":1325},"Data, Pre-Flight, Pipeline, and State references",{"type":51,"tag":1327,"props":1328,"children":1329},"table",{},[1330,1354],{"type":51,"tag":1331,"props":1332,"children":1333},"thead",{},[1334],{"type":51,"tag":1335,"props":1336,"children":1337},"tr",{},[1338,1344,1349],{"type":51,"tag":1339,"props":1340,"children":1341},"th",{},[1342],{"type":57,"value":1343},"Topic",{"type":51,"tag":1339,"props":1345,"children":1346},{},[1347],{"type":57,"value":1348},"Reference",{"type":51,"tag":1339,"props":1350,"children":1351},{},[1352],{"type":57,"value":1353},"Contents",{"type":51,"tag":1355,"props":1356,"children":1357},"tbody",{},[1358,1395,1423,1465],{"type":51,"tag":1335,"props":1359,"children":1360},{},[1361,1367,1376],{"type":51,"tag":1362,"props":1363,"children":1364},"td",{},[1365],{"type":57,"value":1366},"Bring-your-own-data, data contract, output layout, augmentation pool",{"type":51,"tag":1362,"props":1368,"children":1369},{},[1370],{"type":51,"tag":129,"props":1371,"children":1373},{"className":1372},[],[1374],{"type":57,"value":1375},"references\u002Fdata-layout.md",{"type":51,"tag":1362,"props":1377,"children":1378},{},[1379,1381,1386,1388,1393],{"type":57,"value":1380},"No public AOI dataset; full ",{"type":51,"tag":129,"props":1382,"children":1384},{"className":1383},[],[1385],{"type":57,"value":1303},{"type":57,"value":1387}," input tree, ChangeNet 14-column CSV schema pointer, ",{"type":51,"tag":129,"props":1389,"children":1391},{"className":1390},[],[1392],{"type":57,"value":640},{"type":57,"value":1394}," output tree, and the two-source mining-pool table",{"type":51,"tag":1335,"props":1396,"children":1397},{},[1398,1403,1411],{"type":51,"tag":1362,"props":1399,"children":1400},{},[1401],{"type":57,"value":1402},"Pre-Flight checks, defaults, Pre-Flight Summary template, runtime estimate",{"type":51,"tag":1362,"props":1404,"children":1405},{},[1406],{"type":51,"tag":129,"props":1407,"children":1409},{"className":1408},[],[1410],{"type":57,"value":625},{"type":51,"tag":1362,"props":1412,"children":1413},{},[1414,1416,1421],{"type":57,"value":1415},"The 10 ordered Pre-Flight checks, required input ",{"type":51,"tag":129,"props":1417,"children":1419},{"className":1418},[],[1420],{"type":57,"value":915},{"type":57,"value":1422},", all defaults, the full Pre-Flight Summary table + populate commands, and the per-iteration runtime estimate",{"type":51,"tag":1335,"props":1424,"children":1425},{},[1426,1431,1439],{"type":51,"tag":1362,"props":1427,"children":1428},{},[1429],{"type":57,"value":1430},"Pipeline steps, state\u002Flogging, stage execution, reports, runtime behavior",{"type":51,"tag":1362,"props":1432,"children":1433},{},[1434],{"type":51,"tag":129,"props":1435,"children":1437},{"className":1436},[],[1438],{"type":57,"value":758},{"type":51,"tag":1362,"props":1440,"children":1441},{},[1442,1444,1449,1451,1456,1458,1463],{"type":57,"value":1443},"Baseline pre-seed\u002Fskip-train logic, the 7 iteration Pipeline steps, ",{"type":51,"tag":129,"props":1445,"children":1447},{"className":1446},[],[1448],{"type":57,"value":805},{"type":57,"value":1450}," + ",{"type":51,"tag":129,"props":1452,"children":1454},{"className":1453},[],[1455],{"type":57,"value":990},{"type":57,"value":1457}," schema and ",{"type":51,"tag":129,"props":1459,"children":1461},{"className":1460},[],[1462],{"type":57,"value":1106},{"type":57,"value":1464}," cadence, post-stage check, per-iteration HTML render, and the loop-end sequence",{"type":51,"tag":1335,"props":1466,"children":1467},{},[1468,1473,1481],{"type":51,"tag":1362,"props":1469,"children":1470},{},[1471],{"type":57,"value":1472},"Bundled scripts, reporter agent, stage modules, AutoML pitfall",{"type":51,"tag":1362,"props":1474,"children":1475},{},[1476],{"type":51,"tag":129,"props":1477,"children":1479},{"className":1478},[],[1480],{"type":57,"value":1033},{"type":51,"tag":1362,"props":1482,"children":1483},{},[1484,1486,1491],{"type":57,"value":1485},"Available Scripts table, ",{"type":51,"tag":129,"props":1487,"children":1489},{"className":1488},[],[1490],{"type":57,"value":982},{"type":57,"value":1492}," spawn contract, Stage Reference Modules table, path-rule invariant, AutoML-policy spec trap",{"type":51,"tag":67,"props":1494,"children":1495},{},[1496,1507,1509,1514,1516,1521,1523,1528],{"type":51,"tag":114,"props":1497,"children":1498},{},[1499,1501,1506],{"type":57,"value":1500},"Required input — ",{"type":51,"tag":129,"props":1502,"children":1504},{"className":1503},[],[1505],{"type":57,"value":915},{"type":57,"value":200},{"type":57,"value":1508}," No default; ask the user if not supplied and do not proceed past Pre-Flight without it. If the user gives a time limit instead, convert it to an estimated ",{"type":51,"tag":129,"props":1510,"children":1512},{"className":1511},[],[1513],{"type":57,"value":915},{"type":57,"value":1515}," using the per-iteration runtime figure in ",{"type":51,"tag":129,"props":1517,"children":1519},{"className":1518},[],[1520],{"type":57,"value":625},{"type":57,"value":1522}," and surface the estimate for confirmation. All other run parameters have defaults — never ask about a parameter with a default. The full defaults list and the Pre-Flight Summary the user approves at the single gate are in ",{"type":51,"tag":129,"props":1524,"children":1526},{"className":1525},[],[1527],{"type":57,"value":625},{"type":57,"value":200},{"type":51,"tag":60,"props":1530,"children":1532},{"id":1531},"gating",[1533],{"type":57,"value":1534},"Gating",{"type":51,"tag":67,"props":1536,"children":1537},{},[1538,1540,1545,1547,1552],{"type":57,"value":1539},"Run the full Pre-Flight (",{"type":51,"tag":129,"props":1541,"children":1543},{"className":1542},[],[1544],{"type":57,"value":625},{"type":57,"value":1546},"), print the Pre-Flight Summary, then STOP at the one user gate. After approval, run the baseline (with the pre-seed\u002Fskip-train logic) and the 7-step iteration Pipeline, all detailed in ",{"type":51,"tag":129,"props":1548,"children":1550},{"className":1549},[],[1551],{"type":57,"value":758},{"type":57,"value":200},{"type":51,"tag":67,"props":1554,"children":1555},{},[1556,1558,1564,1566,1572,1574,1579,1581,1587,1589,1595,1597,1603,1605,1610,1612,1618,1620,1626,1628,1633,1635,1641,1643,1648],{"type":57,"value":1557},"Hard-stop and never auto-retry on: any stage ",{"type":51,"tag":129,"props":1559,"children":1561},{"className":1560},[],[1562],{"type":57,"value":1563},"status=error",{"type":57,"value":1565},"; train\u002Fvalidation leakage (the mid-iteration check on ",{"type":51,"tag":129,"props":1567,"children":1569},{"className":1568},[],[1570],{"type":57,"value":1571},"mining_filter\u002Fmining_pool.csv",{"type":57,"value":1573}," right after mining, and the post-assembly check on the combined CSV); a missing or zero-row mining pool; a failed CSV existence check; silent-drop; and AMP allocation mismatch. The loop stops when the KPI target is met, ",{"type":51,"tag":129,"props":1575,"children":1577},{"className":1576},[],[1578],{"type":57,"value":915},{"type":57,"value":1580}," is reached, or an unrecoverable gate fires. Each terminal path runs the loop-end sequence: append the final ",{"type":51,"tag":129,"props":1582,"children":1584},{"className":1583},[],[1585],{"type":57,"value":1586},"loop_stop",{"type":57,"value":1588}," entry via ",{"type":51,"tag":129,"props":1590,"children":1592},{"className":1591},[],[1593],{"type":57,"value":1594},"scripts\u002Flog_stage.py",{"type":57,"value":1596},", backfill token usage with ",{"type":51,"tag":129,"props":1598,"children":1600},{"className":1599},[],[1601],{"type":57,"value":1602},"scripts\u002Falign_token_usage.py",{"type":57,"value":1604},", spawn the ",{"type":51,"tag":129,"props":1606,"children":1608},{"className":1607},[],[1609],{"type":57,"value":974},{"type":57,"value":1611}," agent one final time (",{"type":51,"tag":129,"props":1613,"children":1615},{"className":1614},[],[1616],{"type":57,"value":1617},"trigger=\"loop-end\"",{"type":57,"value":1619},"), then run ",{"type":51,"tag":129,"props":1621,"children":1623},{"className":1622},[],[1624],{"type":57,"value":1625},"scripts\u002Fprepare_inference_spec.py",{"type":57,"value":1627}," — skipped only when no valid checkpoint exists. Per-stage state cadence (one ",{"type":51,"tag":129,"props":1629,"children":1631},{"className":1630},[],[1632],{"type":57,"value":990},{"type":57,"value":1634}," entry per stage, ",{"type":51,"tag":129,"props":1636,"children":1638},{"className":1637},[],[1639],{"type":57,"value":1640},"seq=last+1",{"type":57,"value":1642}," from disk, disk is canonical, HTML render once per iteration and at loop end) is specified in ",{"type":51,"tag":129,"props":1644,"children":1646},{"className":1645},[],[1647],{"type":57,"value":758},{"type":57,"value":200},{"type":51,"tag":1650,"props":1651,"children":1652},"style",{},[1653],{"type":57,"value":1654},"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":1656,"total":1760},[1657,1674,1688,1702,1714,1731,1746],{"slug":1658,"name":1658,"fn":1659,"description":1660,"org":1661,"tags":1662,"stars":23,"repoUrl":24,"updatedAt":1673},"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},[1663,1666,1669,1670],{"name":1664,"slug":1665,"type":15},"Data Analysis","data-analysis",{"name":1667,"slug":1668,"type":15},"Data Engineering","data-engineering",{"name":9,"slug":8,"type":15},{"name":1671,"slug":1672,"type":15},"Performance","performance","2026-07-14T05:28:43.176466",{"slug":1675,"name":1675,"fn":1676,"description":1677,"org":1678,"tags":1679,"stars":23,"repoUrl":24,"updatedAt":1687},"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},[1680,1683,1686],{"name":1681,"slug":1682,"type":15},"Deployment","deployment",{"name":1684,"slug":1685,"type":15},"Infrastructure","infrastructure",{"name":9,"slug":8,"type":15},"2026-07-14T05:29:06.667109",{"slug":1689,"name":1689,"fn":1690,"description":1691,"org":1692,"tags":1693,"stars":23,"repoUrl":24,"updatedAt":1701},"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},[1694,1697,1698],{"name":1695,"slug":1696,"type":15},"Agents","agents",{"name":9,"slug":8,"type":15},{"name":1699,"slug":1700,"type":15},"Research","research","2026-07-14T05:28:06.816956",{"slug":1703,"name":1703,"fn":1704,"description":1705,"org":1706,"tags":1707,"stars":23,"repoUrl":24,"updatedAt":1713},"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},[1708,1709,1710],{"name":1664,"slug":1665,"type":15},{"name":9,"slug":8,"type":15},{"name":1711,"slug":1712,"type":15},"Testing","testing","2026-07-17T05:29:03.913266",{"slug":1715,"name":1715,"fn":1716,"description":1717,"org":1718,"tags":1719,"stars":23,"repoUrl":24,"updatedAt":1730},"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},[1720,1723,1726,1727],{"name":1721,"slug":1722,"type":15},"Automation","automation",{"name":1724,"slug":1725,"type":15},"Imaging","imaging",{"name":9,"slug":8,"type":15},{"name":1728,"slug":1729,"type":15},"Video","video","2026-07-17T05:28:53.905004",{"slug":1732,"name":1732,"fn":1733,"description":1734,"org":1735,"tags":1736,"stars":23,"repoUrl":24,"updatedAt":1745},"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},[1737,1738,1741,1742],{"name":1681,"slug":1682,"type":15},{"name":1739,"slug":1740,"type":15},"Docker","docker",{"name":9,"slug":8,"type":15},{"name":1743,"slug":1744,"type":15},"Operations","operations","2026-07-17T05:28:56.913999",{"slug":1747,"name":1747,"fn":1748,"description":1749,"org":1750,"tags":1751,"stars":23,"repoUrl":24,"updatedAt":1759},"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},[1752,1753,1756],{"name":9,"slug":8,"type":15},{"name":1754,"slug":1755,"type":15},"Quantum Computing","quantum-computing",{"name":1757,"slug":1758,"type":15},"Simulation","simulation","2026-07-14T05:26:58.898253",305,{"items":1762,"total":1910},[1763,1781,1796,1807,1819,1833,1846,1860,1869,1878,1892,1901],{"slug":1764,"name":1764,"fn":1765,"description":1766,"org":1767,"tags":1768,"stars":1778,"repoUrl":1779,"updatedAt":1780},"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},[1769,1772,1775],{"name":1770,"slug":1771,"type":15},"Documentation","documentation",{"name":1773,"slug":1774,"type":15},"MCP","mcp",{"name":1776,"slug":1777,"type":15},"Search","search",21777,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FNemoClaw","2026-07-20T06:00:01.461044",{"slug":1782,"name":1782,"fn":1783,"description":1784,"org":1785,"tags":1786,"stars":1793,"repoUrl":1794,"updatedAt":1795},"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},[1787,1790,1791],{"name":1788,"slug":1789,"type":15},"Containers","containers",{"name":1681,"slug":1682,"type":15},{"name":1792,"slug":1076,"type":15},"Python",17049,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM","2026-07-27T06:06:11.249662",{"slug":1797,"name":1797,"fn":1798,"description":1799,"org":1800,"tags":1801,"stars":1793,"repoUrl":1794,"updatedAt":1806},"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},[1802,1805],{"name":1803,"slug":1804,"type":15},"CI\u002FCD","ci-cd",{"name":1681,"slug":1682,"type":15},"2026-07-14T05:25:59.97109",{"slug":1808,"name":1808,"fn":1809,"description":1810,"org":1811,"tags":1812,"stars":1793,"repoUrl":1794,"updatedAt":1818},"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},[1813,1814,1815],{"name":1803,"slug":1804,"type":15},{"name":1681,"slug":1682,"type":15},{"name":1816,"slug":1817,"type":15},"GitHub","github","2026-07-27T06:06:12.278222",{"slug":1820,"name":1820,"fn":1821,"description":1822,"org":1823,"tags":1824,"stars":1793,"repoUrl":1794,"updatedAt":1832},"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},[1825,1828,1829],{"name":1826,"slug":1827,"type":15},"Debugging","debugging",{"name":1816,"slug":1817,"type":15},{"name":1830,"slug":1831,"type":15},"Triage","triage","2026-07-14T05:25:57.442089",{"slug":1834,"name":1834,"fn":1835,"description":1836,"org":1837,"tags":1838,"stars":1793,"repoUrl":1794,"updatedAt":1845},"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},[1839,1842],{"name":1840,"slug":1841,"type":15},"Best Practices","best-practices",{"name":1843,"slug":1844,"type":15},"Code Analysis","code-analysis","2026-07-14T05:25:56.18433",{"slug":1847,"name":1847,"fn":1848,"description":1849,"org":1850,"tags":1851,"stars":1793,"repoUrl":1794,"updatedAt":1859},"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},[1852,1855,1858],{"name":1853,"slug":1854,"type":15},"Machine Learning","machine-learning",{"name":1856,"slug":1857,"type":15},"Migration","migration",{"name":9,"slug":8,"type":15},"2026-07-17T06:07:11.777011",{"slug":1861,"name":1861,"fn":1862,"description":1863,"org":1864,"tags":1865,"stars":1793,"repoUrl":1794,"updatedAt":1868},"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},[1866,1867],{"name":17,"slug":18,"type":15},{"name":1711,"slug":1712,"type":15},"2026-07-14T05:25:53.673039",{"slug":1870,"name":1870,"fn":1871,"description":1872,"org":1873,"tags":1874,"stars":1793,"repoUrl":1794,"updatedAt":1877},"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},[1875,1876],{"name":1681,"slug":1682,"type":15},{"name":1684,"slug":1685,"type":15},"2026-07-14T05:25:49.362534",{"slug":1879,"name":1879,"fn":1880,"description":1881,"org":1882,"tags":1883,"stars":1793,"repoUrl":1794,"updatedAt":1891},"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},[1884,1887,1888],{"name":1885,"slug":1886,"type":15},"Code Review","code-review",{"name":1816,"slug":1817,"type":15},{"name":1889,"slug":1890,"type":15},"Pull Requests","pull-requests","2026-07-14T05:26:01.226578",{"slug":1893,"name":1893,"fn":1894,"description":1895,"org":1896,"tags":1897,"stars":1793,"repoUrl":1794,"updatedAt":1900},"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},[1898,1899],{"name":17,"slug":18,"type":15},{"name":1711,"slug":1712,"type":15},"2026-07-14T05:25:54.928983",{"slug":1902,"name":1902,"fn":1903,"description":1904,"org":1905,"tags":1906,"stars":1793,"repoUrl":1794,"updatedAt":1909},"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},[1907,1908],{"name":1721,"slug":1722,"type":15},{"name":1803,"slug":1804,"type":15},"2026-07-30T05:29:03.275638",496]