[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-nvidia-simulation":3,"mdc-r20401-key":33,"related-repo-nvidia-simulation":1779,"related-org-nvidia-simulation":1788},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":22,"repoUrl":23,"updatedAt":24,"license":25,"forks":26,"topics":27,"repo":28,"sourceUrl":31,"mdContent":32},"simulation","generate synthetic data for PCBA simulation","Build Docker-backed PAIDF Simulation commands for PCBA synthetic-data renders (good\u002Fdefect\u002Fmissing\u002Flighting\u002FChangeNet pairs) and ROI crops with optional MI registration. Do NOT use for unrelated Docker tasks.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},"nvidia","NVIDIA","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fnvidia.png",[12,16,17,19],{"name":13,"slug":14,"type":15},"Data Engineering","data-engineering","tag",{"name":9,"slug":8,"type":15},{"name":18,"slug":4,"type":15},"Simulation",{"name":20,"slug":21,"type":15},"Docker","docker",5,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fpaidf-simulation","2026-07-14T05:36:25.595046","Apache-2.0",1,[],{"repoUrl":23,"stars":22,"forks":26,"topics":29,"description":30},[],"Synthetic data generation engine using NVIDIA Isaac Sim and Omniverse Replicator to render photorealistic, fully labeled PCB inspection imagery, including golden and defect boards","https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fpaidf-simulation\u002Ftree\u002FHEAD\u002Fskills\u002Fsimulation","---\nname: simulation\ndescription: Build Docker-backed PAIDF Simulation commands for PCBA synthetic-data renders (good\u002Fdefect\u002Fmissing\u002Flighting\u002FChangeNet pairs) and ROI crops with optional MI registration. Do NOT use for unrelated Docker tasks.\nlicense: Apache-2.0\nowner: NVIDIA\nservice: paidf-simulation\nversion: 1.0.0\nreviewed: '2026-05-30'\nmetadata:\n  author: NVIDIA\n  tags:\n  - physical-ai\n  - synthetic-data-generation\n  - simulation\n  - pcba\n  - aoi\n---\n\n# simulation\n\nPAIDF (Physical-AI Data Factory) Simulation. One skill, two tracks\nselected by a Stage-0 router. All per-track stage detail is in\n`references\u002F\u003Ctrack>\u002F`.\n\n```\nuser prompt\n    |\n    v\nStage 0 — Router\n    |\n    +── single-flow ──► references\u002Fsingle-flow\u002Fstages.md\n    |     flows: good \u002F good_fixed \u002F defect \u002F missing \u002F lighting \u002F paired\n    |\n    +── roi ─────────► references\u002Froi\u002Fstages.md\n          variants: Day-0 (synth only) \u002F Day-1 (synth + real + MI)\n```\n\n## Instructions\n\nApply the Stage-0 router to the user prompt first, then hand off to the matching reference doc under `references\u002F\u003Ctrack>\u002F`. The router emits a small JSON intent record; downstream stages parse the user yaml(s), surface a summary, gate on approval, and emit docker run commands. The skill never executes docker on its own — it only emits the commands and waits for the user.\n\n### Stage 0 — Router\n\nApply these rules to the user's prompt **in order, first match wins**.\nRule 1 is the safety-critical gate that prevents silent over-delegation\nto the ROI track (the failure mode that reverted commit 18cd8d5).\n\n1. **ROI track gate — explicit keywords only.** Trigger if the prompt\n   contains any of:\n   - `cad2roi`, `usd2roi`, `usd-to-real`, `usd to real`\n   - `ROI` (case-insensitive; standalone token), `per-ROI`, `per-component crop`\n   - `MI registration`, `mutual information`, `align to real photo`, `register to \u003Cphoto>`\n   - `bridge crops`, `bridge between pads \u002F solders`\n   - `anchor on \u003Ccomponent class>`, `crop \u003Cclass> ROIs`\n   - `scan_grid plus per-cell crop`, `pure-synthetic ROI`\n   - `mesh-level semantic rules`\n   → **track = roi.** Then sub-route by photo:\n     - prompt names a real photo (`--photo-path`, `real.png`, \"AOI screenshot\", \"PHOTO_DIR=...\") → **Day-1**\n     - otherwise → **Day-0**\n     - ambiguous → ASK \"Do you have a captured real PCB photo to align against, or only the CAD-derived USD?\"\n   → Hand off to `references\u002Froi\u002Fstages.md`.\n\n   **NOT triggers for the ROI track** (these stay single-flow):\n   - A bare photo path mentioned without any crop \u002F register \u002F align verb\n     (e.g. `\"generate 9 good images for \u002Ftmp\u002Fphoto.png\"`).\n   - A component class mentioned without a crop verb\n     (e.g. `\"render images of capacitors\"`).\n   The user must say what to DO with the photo or class. This is the\n   `74eef40` rule, preserved verbatim.\n\n2. **Paired \u002F ChangeNet** — prompt contains `paired`, `golden+defect`,\n   `golden \u002F defect`, `ChangeNet`, `siamese`, `pair dataset` →\n   **track = single-flow**, sub-mode = paired. Run the `good` flow + the\n   `defect` flow with the same `random_seed`; post-process via\n   `build_pair_dataset.py`. Hand off to `references\u002Fsingle-flow\u002Fstages.md`\n   (Stage 1 Rule 1).\n\n3. **Defect intent** — prompt contains `defect`, `pose defect`, `shift`,\n   `tombstone`, `sideflip`, `polarity`, `reverse polarity`, `missing`,\n   `hidden component`, `two-pass` → **track = single-flow**, flow =\n   `defect` (or `missing` for the missing\u002Fhidden keywords).\n\n4. **Zoom \u002F close-up \u002F fixed-camera** — prompt contains `zoom`,\n   `close-up`, `single \u003Ccomponent>`, `fixed camera`,\n   `solder fillet randomization`, `tin pad`, `vantablack` →\n   **track = single-flow**, flow = `good_fixed`.\n\n5. **Lighting demo \u002F variant** (explicit demo intent) — prompt contains\n   `lighting demo`, `lighting variant` plus a named variant (`ring light`,\n   `dome light`, `scene lights`, `preserve color`) → **track = single-flow**,\n   flow = `lighting`.\n\n6. **Default catch-all** — `good`, `clean`, `defect-free`, `no defects`,\n   or anything else (including bare `generate` \u002F `render` \u002F\n   `make images`) → **track = single-flow**, flow = `good`.\n\n7. **Ambiguous** — if no rule matches confidently OR Rule 1 \u002F 5 needs\n   disambiguation (variant unclear, lighting variant unclear), ASK ONE\n   question before any further work. Do NOT emit docker commands or\n   write YAML in the disambiguation turn.\n\nLighting parameter is **orthogonal to the flow** in the single-flow\ntrack — if the user names a lighting mode anywhere in the prompt, apply\nit as an override on top of the chosen flow's base config. Default when\nnothing is named: scene-authored lights. Full table in\n`references\u002Fsingle-flow\u002Fstages.md` §Stage 1.\n\n### Normalized router output\n\nThe router emits this record before handing off:\n\n```json\n{\n  \"track\":   \"single-flow | roi\",\n  \"flow\":    \"good | good_fixed | defect | missing | lighting | paired\",   \u002F\u002F single-flow only\n  \"variant\": \"day0 | day1\",                                                \u002F\u002F roi only\n  \"raw_intent\": { \"...\": \"rest of the canonical intent schema for the chosen track\" }\n}\n```\n\nThen load `references\u002F\u003Ctrack>\u002Fstages.md` and execute the rest of the\npipeline from Stage 1 onward.\n\n### Track summary\n\n| Track | Pipeline | Scripts | Output |\n|---|---|---|---|\n| single-flow | parse → overrides → derive YAML → docker run `sdg_pipeline.py` → (when `crop.enabled` in the YAML) docker run `crop_components.py` | `scripts\u002Fsdg\u002Fstandalone\u002Fsdg_pipeline.py` + `scripts\u002Fpostprocess\u002Fcrop_components.py` | `sdg_test_output\u002F\u003Cslug>\u002Ftrigger_NNNN\u002Frgb_NNNN.png` (+ seg \u002F bbox), plus `sdg_test_output\u002F\u003Cslug>\u002Fcropped\u002F\u003Clabel>\u002Frgb\u002F...` when crop ran |\n| roi | validate → prepare → render → (register) → crop | Day-0: `sdg_pipeline.py` + `usd2roi_crop.py`; Day-1: `usd2roi_render.py` + `usd2roi_register.py` + `usd2roi_crop.py` | `\u003Cout>\u002Fcrop\u002Fcomponent\u002F...\u002Fnormal_img\u002F*.png` (+ seg \u002F aligned \u002F bridge for Day-1) |\n\nSingle-flow `crop.enabled` defaults: `true` for good \u002F defect \u002F missing\n(crops are usually the training target); `false` for good_fixed (camera is\nalready on one component) and lighting (full-board visual QA). Override\nvia prompt: \"no crop\" \u002F \"with crop\". Full knob list in\n`references\u002Fsingle-flow\u002Foverrides.md` §`crop` block.\n\nBoth tracks share the same Docker image (`paidf-simulation:\u003Ctag>`), the same `pcba_target.yaml` shape, the same\n`\u003Cusd-assets>\u002F` mount convention, and the same approval-gate discipline.\n\n## Examples\n\n| User prompt | Router output |\n|---|---|\n| \"generate 5 defect images, only tombstone\" | track=single-flow, flow=defect |\n| \"render missing-component frames\" | track=single-flow, flow=missing |\n| \"zoom in to a capacitor with dome light\" | track=single-flow, flow=good_fixed, lighting=dome |\n| \"generate 50 paired golden\u002Fdefect images for ChangeNet\" | track=single-flow, flow=paired |\n| \"lighting demo with ring light\" | track=single-flow, flow=lighting, variant=ring_light |\n| \"crop ROIs from the spark board USD\" | track=roi, variant=day0 (no photo) |\n| \"register the synth render to \u002Ftmp\u002Freal.png and emit per-ROI crops\" | track=roi, variant=day1 |\n| \"cad2roi Day-1 with bridge crops\" | track=roi, variant=day1 |\n| **\"generate 9 good images for \u002Ftmp\u002Fphoto.png\"** | **track=single-flow, flow=good** (photo path alone is NOT an ROI trigger — Rule 1's \"NOT triggers\" clause) |\n| \"render images of capacitors on the spark board\" | track=single-flow, flow=good (component mention without crop verb is NOT an ROI trigger) |\n| \"Crop ROIs from a board.\" | ambiguous within roi track → ASK photo-or-not |\n\n## References\n\n| File | Purpose |\n|---|---|\n| `references\u002Fsingle-flow\u002Fstages.md` | Stage 1-6 detail for single-flow renders (parse intent, extract overrides, validate prereqs, derive YAML, approve+execute, report) |\n| `references\u002Fsingle-flow\u002Frouting.md` | Full natural-language → flow mapping |\n| `references\u002Fsingle-flow\u002Foverrides.md` | Per-flow knob cheatsheet |\n| `references\u002Fsingle-flow\u002Flocal-mode.md` | When\u002Fhow to use the Isaac-Sim host install instead of Docker |\n| `references\u002Fsingle-flow\u002Ftroubleshooting.md` | Single-flow error → fix table |\n| `references\u002Froi\u002Fstages.md` | 5-stage scaffold (Validate → Prepare → Execute → Verify → Report) shared by Day-0 and Day-1 |\n| `references\u002Froi\u002Fday0.md` | Day-0 variant detail (scan_grid + per-cell crop, synth only) |\n| `references\u002Froi\u002Fday1.md` | Day-1 variant detail (single config, MI registration, OSMO submission) |\n| `references\u002Froi\u002Fsemantic-rules.md` | Glob syntax + multi-class-on-same-prim + dry-run helper |\n| `references\u002Froi\u002Ftroubleshooting.md` | Per-stage failure modes for both variants |\n| `\u003Crepo>\u002Fconfigs\u002Fcad2roi\u002Fday0\u002F` | Day-0 yaml templates (in-tree under the repo root) |\n| `\u003Crepo>\u002Fconfigs\u002Fcad2roi\u002Fday1\u002F` | Day-1 yaml templates + OSMO workflow (in-tree under the repo root) |\n| `\u003Crepo>\u002Fconfigs\u002Fcad2roi\u002Fspark\u002F` | Spark worked example (in-tree under the repo root) |\n| `evals\u002Fevals.json` | Merged eval set; each case carries an explicit `track:` tag |\n",{"data":34,"body":44},{"name":4,"description":6,"license":25,"owner":9,"service":35,"version":36,"reviewed":37,"metadata":38},"paidf-simulation","1.0.0","2026-05-30",{"author":9,"tags":39},[40,41,4,42,43],"physical-ai","synthetic-data-generation","pcba","aoi",{"type":45,"children":46},"root",[47,54,69,81,88,100,107,120,808,827,833,838,1062,1075,1081,1252,1296,1325,1331,1502,1508,1773],{"type":48,"tag":49,"props":50,"children":51},"element","h1",{"id":4},[52],{"type":53,"value":4},"text",{"type":48,"tag":55,"props":56,"children":57},"p",{},[58,60,67],{"type":53,"value":59},"PAIDF (Physical-AI Data Factory) Simulation. One skill, two tracks\nselected by a Stage-0 router. All per-track stage detail is in\n",{"type":48,"tag":61,"props":62,"children":64},"code",{"className":63},[],[65],{"type":53,"value":66},"references\u002F\u003Ctrack>\u002F",{"type":53,"value":68},".",{"type":48,"tag":70,"props":71,"children":75},"pre",{"className":72,"code":74,"language":53},[73],"language-text","user prompt\n    |\n    v\nStage 0 — Router\n    |\n    +── single-flow ──► references\u002Fsingle-flow\u002Fstages.md\n    |     flows: good \u002F good_fixed \u002F defect \u002F missing \u002F lighting \u002F paired\n    |\n    +── roi ─────────► references\u002Froi\u002Fstages.md\n          variants: Day-0 (synth only) \u002F Day-1 (synth + real + MI)\n",[76],{"type":48,"tag":61,"props":77,"children":79},{"__ignoreMap":78},"",[80],{"type":53,"value":74},{"type":48,"tag":82,"props":83,"children":85},"h2",{"id":84},"instructions",[86],{"type":53,"value":87},"Instructions",{"type":48,"tag":55,"props":89,"children":90},{},[91,93,98],{"type":53,"value":92},"Apply the Stage-0 router to the user prompt first, then hand off to the matching reference doc under ",{"type":48,"tag":61,"props":94,"children":96},{"className":95},[],[97],{"type":53,"value":66},{"type":53,"value":99},". The router emits a small JSON intent record; downstream stages parse the user yaml(s), surface a summary, gate on approval, and emit docker run commands. The skill never executes docker on its own — it only emits the commands and waits for the user.",{"type":48,"tag":101,"props":102,"children":104},"h3",{"id":103},"stage-0-router",[105],{"type":53,"value":106},"Stage 0 — Router",{"type":48,"tag":55,"props":108,"children":109},{},[110,112,118],{"type":53,"value":111},"Apply these rules to the user's prompt ",{"type":48,"tag":113,"props":114,"children":115},"strong",{},[116],{"type":53,"value":117},"in order, first match wins",{"type":53,"value":119},".\nRule 1 is the safety-critical gate that prevents silent over-delegation\nto the ROI track (the failure mode that reverted commit 18cd8d5).",{"type":48,"tag":121,"props":122,"children":123},"ol",{},[124,388,489,588,659,726,798],{"type":48,"tag":125,"props":126,"children":127},"li",{},[128,133,135,340,344,349,351],{"type":48,"tag":113,"props":129,"children":130},{},[131],{"type":53,"value":132},"ROI track gate — explicit keywords only.",{"type":53,"value":134}," Trigger if the prompt\ncontains any of:",{"type":48,"tag":136,"props":137,"children":138},"ul",{},[139,170,194,224,240,256,272],{"type":48,"tag":125,"props":140,"children":141},{},[142,148,150,156,157,163,164],{"type":48,"tag":61,"props":143,"children":145},{"className":144},[],[146],{"type":53,"value":147},"cad2roi",{"type":53,"value":149},", ",{"type":48,"tag":61,"props":151,"children":153},{"className":152},[],[154],{"type":53,"value":155},"usd2roi",{"type":53,"value":149},{"type":48,"tag":61,"props":158,"children":160},{"className":159},[],[161],{"type":53,"value":162},"usd-to-real",{"type":53,"value":149},{"type":48,"tag":61,"props":165,"children":167},{"className":166},[],[168],{"type":53,"value":169},"usd to real",{"type":48,"tag":125,"props":171,"children":172},{},[173,179,181,187,188],{"type":48,"tag":61,"props":174,"children":176},{"className":175},[],[177],{"type":53,"value":178},"ROI",{"type":53,"value":180}," (case-insensitive; standalone token), ",{"type":48,"tag":61,"props":182,"children":184},{"className":183},[],[185],{"type":53,"value":186},"per-ROI",{"type":53,"value":149},{"type":48,"tag":61,"props":189,"children":191},{"className":190},[],[192],{"type":53,"value":193},"per-component crop",{"type":48,"tag":125,"props":195,"children":196},{},[197,203,204,210,211,217,218],{"type":48,"tag":61,"props":198,"children":200},{"className":199},[],[201],{"type":53,"value":202},"MI registration",{"type":53,"value":149},{"type":48,"tag":61,"props":205,"children":207},{"className":206},[],[208],{"type":53,"value":209},"mutual information",{"type":53,"value":149},{"type":48,"tag":61,"props":212,"children":214},{"className":213},[],[215],{"type":53,"value":216},"align to real photo",{"type":53,"value":149},{"type":48,"tag":61,"props":219,"children":221},{"className":220},[],[222],{"type":53,"value":223},"register to \u003Cphoto>",{"type":48,"tag":125,"props":225,"children":226},{},[227,233,234],{"type":48,"tag":61,"props":228,"children":230},{"className":229},[],[231],{"type":53,"value":232},"bridge crops",{"type":53,"value":149},{"type":48,"tag":61,"props":235,"children":237},{"className":236},[],[238],{"type":53,"value":239},"bridge between pads \u002F solders",{"type":48,"tag":125,"props":241,"children":242},{},[243,249,250],{"type":48,"tag":61,"props":244,"children":246},{"className":245},[],[247],{"type":53,"value":248},"anchor on \u003Ccomponent class>",{"type":53,"value":149},{"type":48,"tag":61,"props":251,"children":253},{"className":252},[],[254],{"type":53,"value":255},"crop \u003Cclass> ROIs",{"type":48,"tag":125,"props":257,"children":258},{},[259,265,266],{"type":48,"tag":61,"props":260,"children":262},{"className":261},[],[263],{"type":53,"value":264},"scan_grid plus per-cell crop",{"type":53,"value":149},{"type":48,"tag":61,"props":267,"children":269},{"className":268},[],[270],{"type":53,"value":271},"pure-synthetic ROI",{"type":48,"tag":125,"props":273,"children":274},{},[275,281,283,288,290],{"type":48,"tag":61,"props":276,"children":278},{"className":277},[],[279],{"type":53,"value":280},"mesh-level semantic rules",{"type":53,"value":282},"\n→ ",{"type":48,"tag":113,"props":284,"children":285},{},[286],{"type":53,"value":287},"track = roi.",{"type":53,"value":289}," Then sub-route by photo:\n",{"type":48,"tag":136,"props":291,"children":292},{},[293,318,328],{"type":48,"tag":125,"props":294,"children":295},{},[296,298,304,305,311,313],{"type":53,"value":297},"prompt names a real photo (",{"type":48,"tag":61,"props":299,"children":301},{"className":300},[],[302],{"type":53,"value":303},"--photo-path",{"type":53,"value":149},{"type":48,"tag":61,"props":306,"children":308},{"className":307},[],[309],{"type":53,"value":310},"real.png",{"type":53,"value":312},", \"AOI screenshot\", \"PHOTO_DIR=...\") → ",{"type":48,"tag":113,"props":314,"children":315},{},[316],{"type":53,"value":317},"Day-1",{"type":48,"tag":125,"props":319,"children":320},{},[321,323],{"type":53,"value":322},"otherwise → ",{"type":48,"tag":113,"props":324,"children":325},{},[326],{"type":53,"value":327},"Day-0",{"type":48,"tag":125,"props":329,"children":330},{},[331,333,339],{"type":53,"value":332},"ambiguous → ASK \"Do you have a captured real PCB photo to align against, or only the CAD-derived USD?\"\n→ Hand off to ",{"type":48,"tag":61,"props":334,"children":336},{"className":335},[],[337],{"type":53,"value":338},"references\u002Froi\u002Fstages.md",{"type":53,"value":68},{"type":48,"tag":341,"props":342,"children":343},"br",{},[],{"type":48,"tag":113,"props":345,"children":346},{},[347],{"type":53,"value":348},"NOT triggers for the ROI track",{"type":53,"value":350}," (these stay single-flow):",{"type":48,"tag":136,"props":352,"children":353},{},[354,367],{"type":48,"tag":125,"props":355,"children":356},{},[357,359,365],{"type":53,"value":358},"A bare photo path mentioned without any crop \u002F register \u002F align verb\n(e.g. ",{"type":48,"tag":61,"props":360,"children":362},{"className":361},[],[363],{"type":53,"value":364},"\"generate 9 good images for \u002Ftmp\u002Fphoto.png\"",{"type":53,"value":366},").",{"type":48,"tag":125,"props":368,"children":369},{},[370,372,378,380,386],{"type":53,"value":371},"A component class mentioned without a crop verb\n(e.g. ",{"type":48,"tag":61,"props":373,"children":375},{"className":374},[],[376],{"type":53,"value":377},"\"render images of capacitors\"",{"type":53,"value":379},").\nThe user must say what to DO with the photo or class. This is the\n",{"type":48,"tag":61,"props":381,"children":383},{"className":382},[],[384],{"type":53,"value":385},"74eef40",{"type":53,"value":387}," rule, preserved verbatim.",{"type":48,"tag":125,"props":389,"children":390},{},[391,396,398,404,405,411,413,419,420,426,427,433,434,440,442,447,449,455,457,463,465,471,473,479,481,487],{"type":48,"tag":113,"props":392,"children":393},{},[394],{"type":53,"value":395},"Paired \u002F ChangeNet",{"type":53,"value":397}," — prompt contains ",{"type":48,"tag":61,"props":399,"children":401},{"className":400},[],[402],{"type":53,"value":403},"paired",{"type":53,"value":149},{"type":48,"tag":61,"props":406,"children":408},{"className":407},[],[409],{"type":53,"value":410},"golden+defect",{"type":53,"value":412},",\n",{"type":48,"tag":61,"props":414,"children":416},{"className":415},[],[417],{"type":53,"value":418},"golden \u002F defect",{"type":53,"value":149},{"type":48,"tag":61,"props":421,"children":423},{"className":422},[],[424],{"type":53,"value":425},"ChangeNet",{"type":53,"value":149},{"type":48,"tag":61,"props":428,"children":430},{"className":429},[],[431],{"type":53,"value":432},"siamese",{"type":53,"value":149},{"type":48,"tag":61,"props":435,"children":437},{"className":436},[],[438],{"type":53,"value":439},"pair dataset",{"type":53,"value":441}," →\n",{"type":48,"tag":113,"props":443,"children":444},{},[445],{"type":53,"value":446},"track = single-flow",{"type":53,"value":448},", sub-mode = paired. Run the ",{"type":48,"tag":61,"props":450,"children":452},{"className":451},[],[453],{"type":53,"value":454},"good",{"type":53,"value":456}," flow + the\n",{"type":48,"tag":61,"props":458,"children":460},{"className":459},[],[461],{"type":53,"value":462},"defect",{"type":53,"value":464}," flow with the same ",{"type":48,"tag":61,"props":466,"children":468},{"className":467},[],[469],{"type":53,"value":470},"random_seed",{"type":53,"value":472},"; post-process via\n",{"type":48,"tag":61,"props":474,"children":476},{"className":475},[],[477],{"type":53,"value":478},"build_pair_dataset.py",{"type":53,"value":480},". Hand off to ",{"type":48,"tag":61,"props":482,"children":484},{"className":483},[],[485],{"type":53,"value":486},"references\u002Fsingle-flow\u002Fstages.md",{"type":53,"value":488},"\n(Stage 1 Rule 1).",{"type":48,"tag":125,"props":490,"children":491},{},[492,497,498,503,504,510,511,517,518,524,525,531,532,538,539,545,546,552,553,559,560,566,568,572,574,579,581,586],{"type":48,"tag":113,"props":493,"children":494},{},[495],{"type":53,"value":496},"Defect intent",{"type":53,"value":397},{"type":48,"tag":61,"props":499,"children":501},{"className":500},[],[502],{"type":53,"value":462},{"type":53,"value":149},{"type":48,"tag":61,"props":505,"children":507},{"className":506},[],[508],{"type":53,"value":509},"pose defect",{"type":53,"value":149},{"type":48,"tag":61,"props":512,"children":514},{"className":513},[],[515],{"type":53,"value":516},"shift",{"type":53,"value":412},{"type":48,"tag":61,"props":519,"children":521},{"className":520},[],[522],{"type":53,"value":523},"tombstone",{"type":53,"value":149},{"type":48,"tag":61,"props":526,"children":528},{"className":527},[],[529],{"type":53,"value":530},"sideflip",{"type":53,"value":149},{"type":48,"tag":61,"props":533,"children":535},{"className":534},[],[536],{"type":53,"value":537},"polarity",{"type":53,"value":149},{"type":48,"tag":61,"props":540,"children":542},{"className":541},[],[543],{"type":53,"value":544},"reverse polarity",{"type":53,"value":149},{"type":48,"tag":61,"props":547,"children":549},{"className":548},[],[550],{"type":53,"value":551},"missing",{"type":53,"value":412},{"type":48,"tag":61,"props":554,"children":556},{"className":555},[],[557],{"type":53,"value":558},"hidden component",{"type":53,"value":149},{"type":48,"tag":61,"props":561,"children":563},{"className":562},[],[564],{"type":53,"value":565},"two-pass",{"type":53,"value":567}," → ",{"type":48,"tag":113,"props":569,"children":570},{},[571],{"type":53,"value":446},{"type":53,"value":573},", flow =\n",{"type":48,"tag":61,"props":575,"children":577},{"className":576},[],[578],{"type":53,"value":462},{"type":53,"value":580}," (or ",{"type":48,"tag":61,"props":582,"children":584},{"className":583},[],[585],{"type":53,"value":551},{"type":53,"value":587}," for the missing\u002Fhidden keywords).",{"type":48,"tag":125,"props":589,"children":590},{},[591,596,597,603,604,610,611,617,618,624,625,631,632,638,639,645,646,650,652,658],{"type":48,"tag":113,"props":592,"children":593},{},[594],{"type":53,"value":595},"Zoom \u002F close-up \u002F fixed-camera",{"type":53,"value":397},{"type":48,"tag":61,"props":598,"children":600},{"className":599},[],[601],{"type":53,"value":602},"zoom",{"type":53,"value":412},{"type":48,"tag":61,"props":605,"children":607},{"className":606},[],[608],{"type":53,"value":609},"close-up",{"type":53,"value":149},{"type":48,"tag":61,"props":612,"children":614},{"className":613},[],[615],{"type":53,"value":616},"single \u003Ccomponent>",{"type":53,"value":149},{"type":48,"tag":61,"props":619,"children":621},{"className":620},[],[622],{"type":53,"value":623},"fixed camera",{"type":53,"value":412},{"type":48,"tag":61,"props":626,"children":628},{"className":627},[],[629],{"type":53,"value":630},"solder fillet randomization",{"type":53,"value":149},{"type":48,"tag":61,"props":633,"children":635},{"className":634},[],[636],{"type":53,"value":637},"tin pad",{"type":53,"value":149},{"type":48,"tag":61,"props":640,"children":642},{"className":641},[],[643],{"type":53,"value":644},"vantablack",{"type":53,"value":441},{"type":48,"tag":113,"props":647,"children":648},{},[649],{"type":53,"value":446},{"type":53,"value":651},", flow = ",{"type":48,"tag":61,"props":653,"children":655},{"className":654},[],[656],{"type":53,"value":657},"good_fixed",{"type":53,"value":68},{"type":48,"tag":125,"props":660,"children":661},{},[662,667,669,675,676,682,684,690,691,697,698,704,705,711,713,717,719,725],{"type":48,"tag":113,"props":663,"children":664},{},[665],{"type":53,"value":666},"Lighting demo \u002F variant",{"type":53,"value":668}," (explicit demo intent) — prompt contains\n",{"type":48,"tag":61,"props":670,"children":672},{"className":671},[],[673],{"type":53,"value":674},"lighting demo",{"type":53,"value":149},{"type":48,"tag":61,"props":677,"children":679},{"className":678},[],[680],{"type":53,"value":681},"lighting variant",{"type":53,"value":683}," plus a named variant (",{"type":48,"tag":61,"props":685,"children":687},{"className":686},[],[688],{"type":53,"value":689},"ring light",{"type":53,"value":412},{"type":48,"tag":61,"props":692,"children":694},{"className":693},[],[695],{"type":53,"value":696},"dome light",{"type":53,"value":149},{"type":48,"tag":61,"props":699,"children":701},{"className":700},[],[702],{"type":53,"value":703},"scene lights",{"type":53,"value":149},{"type":48,"tag":61,"props":706,"children":708},{"className":707},[],[709],{"type":53,"value":710},"preserve color",{"type":53,"value":712},") → ",{"type":48,"tag":113,"props":714,"children":715},{},[716],{"type":53,"value":446},{"type":53,"value":718},",\nflow = ",{"type":48,"tag":61,"props":720,"children":722},{"className":721},[],[723],{"type":53,"value":724},"lighting",{"type":53,"value":68},{"type":48,"tag":125,"props":727,"children":728},{},[729,734,736,741,742,748,749,755,756,762,764,770,772,778,780,786,787,791,792,797],{"type":48,"tag":113,"props":730,"children":731},{},[732],{"type":53,"value":733},"Default catch-all",{"type":53,"value":735}," — ",{"type":48,"tag":61,"props":737,"children":739},{"className":738},[],[740],{"type":53,"value":454},{"type":53,"value":149},{"type":48,"tag":61,"props":743,"children":745},{"className":744},[],[746],{"type":53,"value":747},"clean",{"type":53,"value":149},{"type":48,"tag":61,"props":750,"children":752},{"className":751},[],[753],{"type":53,"value":754},"defect-free",{"type":53,"value":149},{"type":48,"tag":61,"props":757,"children":759},{"className":758},[],[760],{"type":53,"value":761},"no defects",{"type":53,"value":763},",\nor anything else (including bare ",{"type":48,"tag":61,"props":765,"children":767},{"className":766},[],[768],{"type":53,"value":769},"generate",{"type":53,"value":771}," \u002F ",{"type":48,"tag":61,"props":773,"children":775},{"className":774},[],[776],{"type":53,"value":777},"render",{"type":53,"value":779}," \u002F\n",{"type":48,"tag":61,"props":781,"children":783},{"className":782},[],[784],{"type":53,"value":785},"make images",{"type":53,"value":712},{"type":48,"tag":113,"props":788,"children":789},{},[790],{"type":53,"value":446},{"type":53,"value":651},{"type":48,"tag":61,"props":793,"children":795},{"className":794},[],[796],{"type":53,"value":454},{"type":53,"value":68},{"type":48,"tag":125,"props":799,"children":800},{},[801,806],{"type":48,"tag":113,"props":802,"children":803},{},[804],{"type":53,"value":805},"Ambiguous",{"type":53,"value":807}," — if no rule matches confidently OR Rule 1 \u002F 5 needs\ndisambiguation (variant unclear, lighting variant unclear), ASK ONE\nquestion before any further work. Do NOT emit docker commands or\nwrite YAML in the disambiguation turn.",{"type":48,"tag":55,"props":809,"children":810},{},[811,813,818,820,825],{"type":53,"value":812},"Lighting parameter is ",{"type":48,"tag":113,"props":814,"children":815},{},[816],{"type":53,"value":817},"orthogonal to the flow",{"type":53,"value":819}," in the single-flow\ntrack — if the user names a lighting mode anywhere in the prompt, apply\nit as an override on top of the chosen flow's base config. Default when\nnothing is named: scene-authored lights. Full table in\n",{"type":48,"tag":61,"props":821,"children":823},{"className":822},[],[824],{"type":53,"value":486},{"type":53,"value":826}," §Stage 1.",{"type":48,"tag":101,"props":828,"children":830},{"id":829},"normalized-router-output",[831],{"type":53,"value":832},"Normalized router output",{"type":48,"tag":55,"props":834,"children":835},{},[836],{"type":53,"value":837},"The router emits this record before handing off:",{"type":48,"tag":70,"props":839,"children":843},{"className":840,"code":841,"language":842,"meta":78,"style":78},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"track\":   \"single-flow | roi\",\n  \"flow\":    \"good | good_fixed | defect | missing | lighting | paired\",   \u002F\u002F single-flow only\n  \"variant\": \"day0 | day1\",                                                \u002F\u002F roi only\n  \"raw_intent\": { \"...\": \"rest of the canonical intent schema for the chosen track\" }\n}\n","json",[844],{"type":48,"tag":61,"props":845,"children":846},{"__ignoreMap":78},[847,858,902,948,992,1053],{"type":48,"tag":848,"props":849,"children":851},"span",{"class":850,"line":26},"line",[852],{"type":48,"tag":848,"props":853,"children":855},{"style":854},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[856],{"type":53,"value":857},"{\n",{"type":48,"tag":848,"props":859,"children":861},{"class":850,"line":860},2,[862,867,873,878,883,888,894,898],{"type":48,"tag":848,"props":863,"children":864},{"style":854},[865],{"type":53,"value":866},"  \"",{"type":48,"tag":848,"props":868,"children":870},{"style":869},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[871],{"type":53,"value":872},"track",{"type":48,"tag":848,"props":874,"children":875},{"style":854},[876],{"type":53,"value":877},"\"",{"type":48,"tag":848,"props":879,"children":880},{"style":854},[881],{"type":53,"value":882},":",{"type":48,"tag":848,"props":884,"children":885},{"style":854},[886],{"type":53,"value":887},"   \"",{"type":48,"tag":848,"props":889,"children":891},{"style":890},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[892],{"type":53,"value":893},"single-flow | roi",{"type":48,"tag":848,"props":895,"children":896},{"style":854},[897],{"type":53,"value":877},{"type":48,"tag":848,"props":899,"children":900},{"style":854},[901],{"type":53,"value":412},{"type":48,"tag":848,"props":903,"children":905},{"class":850,"line":904},3,[906,910,915,919,923,928,933,937,942],{"type":48,"tag":848,"props":907,"children":908},{"style":854},[909],{"type":53,"value":866},{"type":48,"tag":848,"props":911,"children":912},{"style":869},[913],{"type":53,"value":914},"flow",{"type":48,"tag":848,"props":916,"children":917},{"style":854},[918],{"type":53,"value":877},{"type":48,"tag":848,"props":920,"children":921},{"style":854},[922],{"type":53,"value":882},{"type":48,"tag":848,"props":924,"children":925},{"style":854},[926],{"type":53,"value":927},"    \"",{"type":48,"tag":848,"props":929,"children":930},{"style":890},[931],{"type":53,"value":932},"good | good_fixed | defect | missing | lighting | paired",{"type":48,"tag":848,"props":934,"children":935},{"style":854},[936],{"type":53,"value":877},{"type":48,"tag":848,"props":938,"children":939},{"style":854},[940],{"type":53,"value":941},",",{"type":48,"tag":848,"props":943,"children":945},{"style":944},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[946],{"type":53,"value":947},"   \u002F\u002F single-flow only\n",{"type":48,"tag":848,"props":949,"children":951},{"class":850,"line":950},4,[952,956,961,965,969,974,979,983,987],{"type":48,"tag":848,"props":953,"children":954},{"style":854},[955],{"type":53,"value":866},{"type":48,"tag":848,"props":957,"children":958},{"style":869},[959],{"type":53,"value":960},"variant",{"type":48,"tag":848,"props":962,"children":963},{"style":854},[964],{"type":53,"value":877},{"type":48,"tag":848,"props":966,"children":967},{"style":854},[968],{"type":53,"value":882},{"type":48,"tag":848,"props":970,"children":971},{"style":854},[972],{"type":53,"value":973}," \"",{"type":48,"tag":848,"props":975,"children":976},{"style":890},[977],{"type":53,"value":978},"day0 | day1",{"type":48,"tag":848,"props":980,"children":981},{"style":854},[982],{"type":53,"value":877},{"type":48,"tag":848,"props":984,"children":985},{"style":854},[986],{"type":53,"value":941},{"type":48,"tag":848,"props":988,"children":989},{"style":944},[990],{"type":53,"value":991},"                                                \u002F\u002F roi only\n",{"type":48,"tag":848,"props":993,"children":994},{"class":850,"line":22},[995,999,1004,1008,1012,1017,1021,1027,1031,1035,1039,1044,1048],{"type":48,"tag":848,"props":996,"children":997},{"style":854},[998],{"type":53,"value":866},{"type":48,"tag":848,"props":1000,"children":1001},{"style":869},[1002],{"type":53,"value":1003},"raw_intent",{"type":48,"tag":848,"props":1005,"children":1006},{"style":854},[1007],{"type":53,"value":877},{"type":48,"tag":848,"props":1009,"children":1010},{"style":854},[1011],{"type":53,"value":882},{"type":48,"tag":848,"props":1013,"children":1014},{"style":854},[1015],{"type":53,"value":1016}," {",{"type":48,"tag":848,"props":1018,"children":1019},{"style":854},[1020],{"type":53,"value":973},{"type":48,"tag":848,"props":1022,"children":1024},{"style":1023},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[1025],{"type":53,"value":1026},"...",{"type":48,"tag":848,"props":1028,"children":1029},{"style":854},[1030],{"type":53,"value":877},{"type":48,"tag":848,"props":1032,"children":1033},{"style":854},[1034],{"type":53,"value":882},{"type":48,"tag":848,"props":1036,"children":1037},{"style":854},[1038],{"type":53,"value":973},{"type":48,"tag":848,"props":1040,"children":1041},{"style":890},[1042],{"type":53,"value":1043},"rest of the canonical intent schema for the chosen track",{"type":48,"tag":848,"props":1045,"children":1046},{"style":854},[1047],{"type":53,"value":877},{"type":48,"tag":848,"props":1049,"children":1050},{"style":854},[1051],{"type":53,"value":1052}," }\n",{"type":48,"tag":848,"props":1054,"children":1056},{"class":850,"line":1055},6,[1057],{"type":48,"tag":848,"props":1058,"children":1059},{"style":854},[1060],{"type":53,"value":1061},"}\n",{"type":48,"tag":55,"props":1063,"children":1064},{},[1065,1067,1073],{"type":53,"value":1066},"Then load ",{"type":48,"tag":61,"props":1068,"children":1070},{"className":1069},[],[1071],{"type":53,"value":1072},"references\u002F\u003Ctrack>\u002Fstages.md",{"type":53,"value":1074}," and execute the rest of the\npipeline from Stage 1 onward.",{"type":48,"tag":101,"props":1076,"children":1078},{"id":1077},"track-summary",[1079],{"type":53,"value":1080},"Track summary",{"type":48,"tag":1082,"props":1083,"children":1084},"table",{},[1085,1114],{"type":48,"tag":1086,"props":1087,"children":1088},"thead",{},[1089],{"type":48,"tag":1090,"props":1091,"children":1092},"tr",{},[1093,1099,1104,1109],{"type":48,"tag":1094,"props":1095,"children":1096},"th",{},[1097],{"type":53,"value":1098},"Track",{"type":48,"tag":1094,"props":1100,"children":1101},{},[1102],{"type":53,"value":1103},"Pipeline",{"type":48,"tag":1094,"props":1105,"children":1106},{},[1107],{"type":53,"value":1108},"Scripts",{"type":48,"tag":1094,"props":1110,"children":1111},{},[1112],{"type":53,"value":1113},"Output",{"type":48,"tag":1115,"props":1116,"children":1117},"tbody",{},[1118,1190],{"type":48,"tag":1090,"props":1119,"children":1120},{},[1121,1127,1154,1171],{"type":48,"tag":1122,"props":1123,"children":1124},"td",{},[1125],{"type":53,"value":1126},"single-flow",{"type":48,"tag":1122,"props":1128,"children":1129},{},[1130,1132,1138,1140,1146,1148],{"type":53,"value":1131},"parse → overrides → derive YAML → docker run ",{"type":48,"tag":61,"props":1133,"children":1135},{"className":1134},[],[1136],{"type":53,"value":1137},"sdg_pipeline.py",{"type":53,"value":1139}," → (when ",{"type":48,"tag":61,"props":1141,"children":1143},{"className":1142},[],[1144],{"type":53,"value":1145},"crop.enabled",{"type":53,"value":1147}," in the YAML) docker run ",{"type":48,"tag":61,"props":1149,"children":1151},{"className":1150},[],[1152],{"type":53,"value":1153},"crop_components.py",{"type":48,"tag":1122,"props":1155,"children":1156},{},[1157,1163,1165],{"type":48,"tag":61,"props":1158,"children":1160},{"className":1159},[],[1161],{"type":53,"value":1162},"scripts\u002Fsdg\u002Fstandalone\u002Fsdg_pipeline.py",{"type":53,"value":1164}," + ",{"type":48,"tag":61,"props":1166,"children":1168},{"className":1167},[],[1169],{"type":53,"value":1170},"scripts\u002Fpostprocess\u002Fcrop_components.py",{"type":48,"tag":1122,"props":1172,"children":1173},{},[1174,1180,1182,1188],{"type":48,"tag":61,"props":1175,"children":1177},{"className":1176},[],[1178],{"type":53,"value":1179},"sdg_test_output\u002F\u003Cslug>\u002Ftrigger_NNNN\u002Frgb_NNNN.png",{"type":53,"value":1181}," (+ seg \u002F bbox), plus ",{"type":48,"tag":61,"props":1183,"children":1185},{"className":1184},[],[1186],{"type":53,"value":1187},"sdg_test_output\u002F\u003Cslug>\u002Fcropped\u002F\u003Clabel>\u002Frgb\u002F...",{"type":53,"value":1189}," when crop ran",{"type":48,"tag":1090,"props":1191,"children":1192},{},[1193,1198,1203,1241],{"type":48,"tag":1122,"props":1194,"children":1195},{},[1196],{"type":53,"value":1197},"roi",{"type":48,"tag":1122,"props":1199,"children":1200},{},[1201],{"type":53,"value":1202},"validate → prepare → render → (register) → crop",{"type":48,"tag":1122,"props":1204,"children":1205},{},[1206,1208,1213,1214,1220,1222,1228,1229,1235,1236],{"type":53,"value":1207},"Day-0: ",{"type":48,"tag":61,"props":1209,"children":1211},{"className":1210},[],[1212],{"type":53,"value":1137},{"type":53,"value":1164},{"type":48,"tag":61,"props":1215,"children":1217},{"className":1216},[],[1218],{"type":53,"value":1219},"usd2roi_crop.py",{"type":53,"value":1221},"; Day-1: ",{"type":48,"tag":61,"props":1223,"children":1225},{"className":1224},[],[1226],{"type":53,"value":1227},"usd2roi_render.py",{"type":53,"value":1164},{"type":48,"tag":61,"props":1230,"children":1232},{"className":1231},[],[1233],{"type":53,"value":1234},"usd2roi_register.py",{"type":53,"value":1164},{"type":48,"tag":61,"props":1237,"children":1239},{"className":1238},[],[1240],{"type":53,"value":1219},{"type":48,"tag":1122,"props":1242,"children":1243},{},[1244,1250],{"type":48,"tag":61,"props":1245,"children":1247},{"className":1246},[],[1248],{"type":53,"value":1249},"\u003Cout>\u002Fcrop\u002Fcomponent\u002F...\u002Fnormal_img\u002F*.png",{"type":53,"value":1251}," (+ seg \u002F aligned \u002F bridge for Day-1)",{"type":48,"tag":55,"props":1253,"children":1254},{},[1255,1257,1262,1264,1270,1272,1278,1280,1286,1288,1294],{"type":53,"value":1256},"Single-flow ",{"type":48,"tag":61,"props":1258,"children":1260},{"className":1259},[],[1261],{"type":53,"value":1145},{"type":53,"value":1263}," defaults: ",{"type":48,"tag":61,"props":1265,"children":1267},{"className":1266},[],[1268],{"type":53,"value":1269},"true",{"type":53,"value":1271}," for good \u002F defect \u002F missing\n(crops are usually the training target); ",{"type":48,"tag":61,"props":1273,"children":1275},{"className":1274},[],[1276],{"type":53,"value":1277},"false",{"type":53,"value":1279}," for good_fixed (camera is\nalready on one component) and lighting (full-board visual QA). Override\nvia prompt: \"no crop\" \u002F \"with crop\". Full knob list in\n",{"type":48,"tag":61,"props":1281,"children":1283},{"className":1282},[],[1284],{"type":53,"value":1285},"references\u002Fsingle-flow\u002Foverrides.md",{"type":53,"value":1287}," §",{"type":48,"tag":61,"props":1289,"children":1291},{"className":1290},[],[1292],{"type":53,"value":1293},"crop",{"type":53,"value":1295}," block.",{"type":48,"tag":55,"props":1297,"children":1298},{},[1299,1301,1307,1309,1315,1317,1323],{"type":53,"value":1300},"Both tracks share the same Docker image (",{"type":48,"tag":61,"props":1302,"children":1304},{"className":1303},[],[1305],{"type":53,"value":1306},"paidf-simulation:\u003Ctag>",{"type":53,"value":1308},"), the same ",{"type":48,"tag":61,"props":1310,"children":1312},{"className":1311},[],[1313],{"type":53,"value":1314},"pcba_target.yaml",{"type":53,"value":1316}," shape, the same\n",{"type":48,"tag":61,"props":1318,"children":1320},{"className":1319},[],[1321],{"type":53,"value":1322},"\u003Cusd-assets>\u002F",{"type":53,"value":1324}," mount convention, and the same approval-gate discipline.",{"type":48,"tag":82,"props":1326,"children":1328},{"id":1327},"examples",[1329],{"type":53,"value":1330},"Examples",{"type":48,"tag":1082,"props":1332,"children":1333},{},[1334,1350],{"type":48,"tag":1086,"props":1335,"children":1336},{},[1337],{"type":48,"tag":1090,"props":1338,"children":1339},{},[1340,1345],{"type":48,"tag":1094,"props":1341,"children":1342},{},[1343],{"type":53,"value":1344},"User prompt",{"type":48,"tag":1094,"props":1346,"children":1347},{},[1348],{"type":53,"value":1349},"Router output",{"type":48,"tag":1115,"props":1351,"children":1352},{},[1353,1366,1379,1392,1405,1418,1431,1444,1456,1476,1489],{"type":48,"tag":1090,"props":1354,"children":1355},{},[1356,1361],{"type":48,"tag":1122,"props":1357,"children":1358},{},[1359],{"type":53,"value":1360},"\"generate 5 defect images, only tombstone\"",{"type":48,"tag":1122,"props":1362,"children":1363},{},[1364],{"type":53,"value":1365},"track=single-flow, flow=defect",{"type":48,"tag":1090,"props":1367,"children":1368},{},[1369,1374],{"type":48,"tag":1122,"props":1370,"children":1371},{},[1372],{"type":53,"value":1373},"\"render missing-component frames\"",{"type":48,"tag":1122,"props":1375,"children":1376},{},[1377],{"type":53,"value":1378},"track=single-flow, flow=missing",{"type":48,"tag":1090,"props":1380,"children":1381},{},[1382,1387],{"type":48,"tag":1122,"props":1383,"children":1384},{},[1385],{"type":53,"value":1386},"\"zoom in to a capacitor with dome light\"",{"type":48,"tag":1122,"props":1388,"children":1389},{},[1390],{"type":53,"value":1391},"track=single-flow, flow=good_fixed, lighting=dome",{"type":48,"tag":1090,"props":1393,"children":1394},{},[1395,1400],{"type":48,"tag":1122,"props":1396,"children":1397},{},[1398],{"type":53,"value":1399},"\"generate 50 paired golden\u002Fdefect images for ChangeNet\"",{"type":48,"tag":1122,"props":1401,"children":1402},{},[1403],{"type":53,"value":1404},"track=single-flow, flow=paired",{"type":48,"tag":1090,"props":1406,"children":1407},{},[1408,1413],{"type":48,"tag":1122,"props":1409,"children":1410},{},[1411],{"type":53,"value":1412},"\"lighting demo with ring light\"",{"type":48,"tag":1122,"props":1414,"children":1415},{},[1416],{"type":53,"value":1417},"track=single-flow, flow=lighting, variant=ring_light",{"type":48,"tag":1090,"props":1419,"children":1420},{},[1421,1426],{"type":48,"tag":1122,"props":1422,"children":1423},{},[1424],{"type":53,"value":1425},"\"crop ROIs from the spark board USD\"",{"type":48,"tag":1122,"props":1427,"children":1428},{},[1429],{"type":53,"value":1430},"track=roi, variant=day0 (no photo)",{"type":48,"tag":1090,"props":1432,"children":1433},{},[1434,1439],{"type":48,"tag":1122,"props":1435,"children":1436},{},[1437],{"type":53,"value":1438},"\"register the synth render to \u002Ftmp\u002Freal.png and emit per-ROI crops\"",{"type":48,"tag":1122,"props":1440,"children":1441},{},[1442],{"type":53,"value":1443},"track=roi, variant=day1",{"type":48,"tag":1090,"props":1445,"children":1446},{},[1447,1452],{"type":48,"tag":1122,"props":1448,"children":1449},{},[1450],{"type":53,"value":1451},"\"cad2roi Day-1 with bridge crops\"",{"type":48,"tag":1122,"props":1453,"children":1454},{},[1455],{"type":53,"value":1443},{"type":48,"tag":1090,"props":1457,"children":1458},{},[1459,1466],{"type":48,"tag":1122,"props":1460,"children":1461},{},[1462],{"type":48,"tag":113,"props":1463,"children":1464},{},[1465],{"type":53,"value":364},{"type":48,"tag":1122,"props":1467,"children":1468},{},[1469,1474],{"type":48,"tag":113,"props":1470,"children":1471},{},[1472],{"type":53,"value":1473},"track=single-flow, flow=good",{"type":53,"value":1475}," (photo path alone is NOT an ROI trigger — Rule 1's \"NOT triggers\" clause)",{"type":48,"tag":1090,"props":1477,"children":1478},{},[1479,1484],{"type":48,"tag":1122,"props":1480,"children":1481},{},[1482],{"type":53,"value":1483},"\"render images of capacitors on the spark board\"",{"type":48,"tag":1122,"props":1485,"children":1486},{},[1487],{"type":53,"value":1488},"track=single-flow, flow=good (component mention without crop verb is NOT an ROI trigger)",{"type":48,"tag":1090,"props":1490,"children":1491},{},[1492,1497],{"type":48,"tag":1122,"props":1493,"children":1494},{},[1495],{"type":53,"value":1496},"\"Crop ROIs from a board.\"",{"type":48,"tag":1122,"props":1498,"children":1499},{},[1500],{"type":53,"value":1501},"ambiguous within roi track → ASK photo-or-not",{"type":48,"tag":82,"props":1503,"children":1505},{"id":1504},"references",[1506],{"type":53,"value":1507},"References",{"type":48,"tag":1082,"props":1509,"children":1510},{},[1511,1527],{"type":48,"tag":1086,"props":1512,"children":1513},{},[1514],{"type":48,"tag":1090,"props":1515,"children":1516},{},[1517,1522],{"type":48,"tag":1094,"props":1518,"children":1519},{},[1520],{"type":53,"value":1521},"File",{"type":48,"tag":1094,"props":1523,"children":1524},{},[1525],{"type":53,"value":1526},"Purpose",{"type":48,"tag":1115,"props":1528,"children":1529},{},[1530,1546,1563,1579,1596,1613,1629,1646,1663,1680,1697,1714,1731,1748],{"type":48,"tag":1090,"props":1531,"children":1532},{},[1533,1541],{"type":48,"tag":1122,"props":1534,"children":1535},{},[1536],{"type":48,"tag":61,"props":1537,"children":1539},{"className":1538},[],[1540],{"type":53,"value":486},{"type":48,"tag":1122,"props":1542,"children":1543},{},[1544],{"type":53,"value":1545},"Stage 1-6 detail for single-flow renders (parse intent, extract overrides, validate prereqs, derive YAML, approve+execute, report)",{"type":48,"tag":1090,"props":1547,"children":1548},{},[1549,1558],{"type":48,"tag":1122,"props":1550,"children":1551},{},[1552],{"type":48,"tag":61,"props":1553,"children":1555},{"className":1554},[],[1556],{"type":53,"value":1557},"references\u002Fsingle-flow\u002Frouting.md",{"type":48,"tag":1122,"props":1559,"children":1560},{},[1561],{"type":53,"value":1562},"Full natural-language → flow mapping",{"type":48,"tag":1090,"props":1564,"children":1565},{},[1566,1574],{"type":48,"tag":1122,"props":1567,"children":1568},{},[1569],{"type":48,"tag":61,"props":1570,"children":1572},{"className":1571},[],[1573],{"type":53,"value":1285},{"type":48,"tag":1122,"props":1575,"children":1576},{},[1577],{"type":53,"value":1578},"Per-flow knob cheatsheet",{"type":48,"tag":1090,"props":1580,"children":1581},{},[1582,1591],{"type":48,"tag":1122,"props":1583,"children":1584},{},[1585],{"type":48,"tag":61,"props":1586,"children":1588},{"className":1587},[],[1589],{"type":53,"value":1590},"references\u002Fsingle-flow\u002Flocal-mode.md",{"type":48,"tag":1122,"props":1592,"children":1593},{},[1594],{"type":53,"value":1595},"When\u002Fhow to use the Isaac-Sim host install instead of Docker",{"type":48,"tag":1090,"props":1597,"children":1598},{},[1599,1608],{"type":48,"tag":1122,"props":1600,"children":1601},{},[1602],{"type":48,"tag":61,"props":1603,"children":1605},{"className":1604},[],[1606],{"type":53,"value":1607},"references\u002Fsingle-flow\u002Ftroubleshooting.md",{"type":48,"tag":1122,"props":1609,"children":1610},{},[1611],{"type":53,"value":1612},"Single-flow error → fix table",{"type":48,"tag":1090,"props":1614,"children":1615},{},[1616,1624],{"type":48,"tag":1122,"props":1617,"children":1618},{},[1619],{"type":48,"tag":61,"props":1620,"children":1622},{"className":1621},[],[1623],{"type":53,"value":338},{"type":48,"tag":1122,"props":1625,"children":1626},{},[1627],{"type":53,"value":1628},"5-stage scaffold (Validate → Prepare → Execute → Verify → Report) shared by Day-0 and Day-1",{"type":48,"tag":1090,"props":1630,"children":1631},{},[1632,1641],{"type":48,"tag":1122,"props":1633,"children":1634},{},[1635],{"type":48,"tag":61,"props":1636,"children":1638},{"className":1637},[],[1639],{"type":53,"value":1640},"references\u002Froi\u002Fday0.md",{"type":48,"tag":1122,"props":1642,"children":1643},{},[1644],{"type":53,"value":1645},"Day-0 variant detail (scan_grid + per-cell crop, synth only)",{"type":48,"tag":1090,"props":1647,"children":1648},{},[1649,1658],{"type":48,"tag":1122,"props":1650,"children":1651},{},[1652],{"type":48,"tag":61,"props":1653,"children":1655},{"className":1654},[],[1656],{"type":53,"value":1657},"references\u002Froi\u002Fday1.md",{"type":48,"tag":1122,"props":1659,"children":1660},{},[1661],{"type":53,"value":1662},"Day-1 variant detail (single config, MI registration, OSMO submission)",{"type":48,"tag":1090,"props":1664,"children":1665},{},[1666,1675],{"type":48,"tag":1122,"props":1667,"children":1668},{},[1669],{"type":48,"tag":61,"props":1670,"children":1672},{"className":1671},[],[1673],{"type":53,"value":1674},"references\u002Froi\u002Fsemantic-rules.md",{"type":48,"tag":1122,"props":1676,"children":1677},{},[1678],{"type":53,"value":1679},"Glob syntax + multi-class-on-same-prim + dry-run helper",{"type":48,"tag":1090,"props":1681,"children":1682},{},[1683,1692],{"type":48,"tag":1122,"props":1684,"children":1685},{},[1686],{"type":48,"tag":61,"props":1687,"children":1689},{"className":1688},[],[1690],{"type":53,"value":1691},"references\u002Froi\u002Ftroubleshooting.md",{"type":48,"tag":1122,"props":1693,"children":1694},{},[1695],{"type":53,"value":1696},"Per-stage failure modes for both variants",{"type":48,"tag":1090,"props":1698,"children":1699},{},[1700,1709],{"type":48,"tag":1122,"props":1701,"children":1702},{},[1703],{"type":48,"tag":61,"props":1704,"children":1706},{"className":1705},[],[1707],{"type":53,"value":1708},"\u003Crepo>\u002Fconfigs\u002Fcad2roi\u002Fday0\u002F",{"type":48,"tag":1122,"props":1710,"children":1711},{},[1712],{"type":53,"value":1713},"Day-0 yaml templates (in-tree under the repo root)",{"type":48,"tag":1090,"props":1715,"children":1716},{},[1717,1726],{"type":48,"tag":1122,"props":1718,"children":1719},{},[1720],{"type":48,"tag":61,"props":1721,"children":1723},{"className":1722},[],[1724],{"type":53,"value":1725},"\u003Crepo>\u002Fconfigs\u002Fcad2roi\u002Fday1\u002F",{"type":48,"tag":1122,"props":1727,"children":1728},{},[1729],{"type":53,"value":1730},"Day-1 yaml templates + OSMO workflow (in-tree under the repo root)",{"type":48,"tag":1090,"props":1732,"children":1733},{},[1734,1743],{"type":48,"tag":1122,"props":1735,"children":1736},{},[1737],{"type":48,"tag":61,"props":1738,"children":1740},{"className":1739},[],[1741],{"type":53,"value":1742},"\u003Crepo>\u002Fconfigs\u002Fcad2roi\u002Fspark\u002F",{"type":48,"tag":1122,"props":1744,"children":1745},{},[1746],{"type":53,"value":1747},"Spark worked example (in-tree under the repo root)",{"type":48,"tag":1090,"props":1749,"children":1750},{},[1751,1760],{"type":48,"tag":1122,"props":1752,"children":1753},{},[1754],{"type":48,"tag":61,"props":1755,"children":1757},{"className":1756},[],[1758],{"type":53,"value":1759},"evals\u002Fevals.json",{"type":48,"tag":1122,"props":1761,"children":1762},{},[1763,1765,1771],{"type":53,"value":1764},"Merged eval set; each case carries an explicit ",{"type":48,"tag":61,"props":1766,"children":1768},{"className":1767},[],[1769],{"type":53,"value":1770},"track:",{"type":53,"value":1772}," tag",{"type":48,"tag":1774,"props":1775,"children":1776},"style",{},[1777],{"type":53,"value":1778},"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":1780,"total":26},[1781],{"slug":4,"name":4,"fn":5,"description":6,"org":1782,"tags":1783,"stars":22,"repoUrl":23,"updatedAt":24},{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1784,1785,1786,1787],{"name":13,"slug":14,"type":15},{"name":20,"slug":21,"type":15},{"name":9,"slug":8,"type":15},{"name":18,"slug":4,"type":15},{"items":1789,"total":1948},[1790,1808,1826,1837,1849,1863,1876,1890,1903,1914,1928,1937],{"slug":1791,"name":1791,"fn":1792,"description":1793,"org":1794,"tags":1795,"stars":1805,"repoUrl":1806,"updatedAt":1807},"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},[1796,1799,1802],{"name":1797,"slug":1798,"type":15},"Documentation","documentation",{"name":1800,"slug":1801,"type":15},"MCP","mcp",{"name":1803,"slug":1804,"type":15},"Search","search",21777,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FNemoClaw","2026-07-20T06:00:01.461044",{"slug":1809,"name":1809,"fn":1810,"description":1811,"org":1812,"tags":1813,"stars":1823,"repoUrl":1824,"updatedAt":1825},"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},[1814,1817,1820],{"name":1815,"slug":1816,"type":15},"Containers","containers",{"name":1818,"slug":1819,"type":15},"Deployment","deployment",{"name":1821,"slug":1822,"type":15},"Python","python",17049,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM","2026-07-27T06:06:11.249662",{"slug":1827,"name":1827,"fn":1828,"description":1829,"org":1830,"tags":1831,"stars":1823,"repoUrl":1824,"updatedAt":1836},"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},[1832,1835],{"name":1833,"slug":1834,"type":15},"CI\u002FCD","ci-cd",{"name":1818,"slug":1819,"type":15},"2026-07-14T05:25:59.97109",{"slug":1838,"name":1838,"fn":1839,"description":1840,"org":1841,"tags":1842,"stars":1823,"repoUrl":1824,"updatedAt":1848},"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},[1843,1844,1845],{"name":1833,"slug":1834,"type":15},{"name":1818,"slug":1819,"type":15},{"name":1846,"slug":1847,"type":15},"GitHub","github","2026-07-27T06:06:12.278222",{"slug":1850,"name":1850,"fn":1851,"description":1852,"org":1853,"tags":1854,"stars":1823,"repoUrl":1824,"updatedAt":1862},"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},[1855,1858,1859],{"name":1856,"slug":1857,"type":15},"Debugging","debugging",{"name":1846,"slug":1847,"type":15},{"name":1860,"slug":1861,"type":15},"Triage","triage","2026-07-14T05:25:57.442089",{"slug":1864,"name":1864,"fn":1865,"description":1866,"org":1867,"tags":1868,"stars":1823,"repoUrl":1824,"updatedAt":1875},"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},[1869,1872],{"name":1870,"slug":1871,"type":15},"Best Practices","best-practices",{"name":1873,"slug":1874,"type":15},"Code Analysis","code-analysis","2026-07-14T05:25:56.18433",{"slug":1877,"name":1877,"fn":1878,"description":1879,"org":1880,"tags":1881,"stars":1823,"repoUrl":1824,"updatedAt":1889},"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},[1882,1885,1888],{"name":1883,"slug":1884,"type":15},"Machine Learning","machine-learning",{"name":1886,"slug":1887,"type":15},"Migration","migration",{"name":9,"slug":8,"type":15},"2026-07-17T06:07:11.777011",{"slug":1891,"name":1891,"fn":1892,"description":1893,"org":1894,"tags":1895,"stars":1823,"repoUrl":1824,"updatedAt":1902},"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},[1896,1899],{"name":1897,"slug":1898,"type":15},"QA","qa",{"name":1900,"slug":1901,"type":15},"Testing","testing","2026-07-14T05:25:53.673039",{"slug":1904,"name":1904,"fn":1905,"description":1906,"org":1907,"tags":1908,"stars":1823,"repoUrl":1824,"updatedAt":1913},"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},[1909,1910],{"name":1818,"slug":1819,"type":15},{"name":1911,"slug":1912,"type":15},"Infrastructure","infrastructure","2026-07-14T05:25:49.362534",{"slug":1915,"name":1915,"fn":1916,"description":1917,"org":1918,"tags":1919,"stars":1823,"repoUrl":1824,"updatedAt":1927},"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},[1920,1923,1924],{"name":1921,"slug":1922,"type":15},"Code Review","code-review",{"name":1846,"slug":1847,"type":15},{"name":1925,"slug":1926,"type":15},"Pull Requests","pull-requests","2026-07-14T05:26:01.226578",{"slug":1929,"name":1929,"fn":1930,"description":1931,"org":1932,"tags":1933,"stars":1823,"repoUrl":1824,"updatedAt":1936},"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},[1934,1935],{"name":1897,"slug":1898,"type":15},{"name":1900,"slug":1901,"type":15},"2026-07-14T05:25:54.928983",{"slug":1938,"name":1938,"fn":1939,"description":1940,"org":1941,"tags":1942,"stars":1823,"repoUrl":1824,"updatedAt":1947},"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},[1943,1946],{"name":1944,"slug":1945,"type":15},"Automation","automation",{"name":1833,"slug":1834,"type":15},"2026-07-30T05:29:03.275638",496]