[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-nvidia-nvflare-autofl":3,"mdc--sfvtui-key":38,"related-repo-nvidia-nvflare-autofl":1562,"related-org-nvidia-nvflare-autofl":1654},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":20,"repoUrl":21,"updatedAt":22,"license":23,"forks":24,"topics":25,"repo":33,"sourceUrl":36,"mdContent":37},"nvflare-autofl","optimize NVFLARE training jobs","Use for agent-assisted Auto-FL optimization of an existing NVFLARE job in simulation, POC, or production. Do not use for code conversion, diagnosis-only work, or deployment setup.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},"nvidia","NVIDIA","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fnvidia.png",[12,16,19],{"name":13,"slug":14,"type":15},"Machine Learning","machine-learning","tag",{"name":17,"slug":18,"type":15},"Optimization","optimization",{"name":9,"slug":8,"type":15},947,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FNVFlare","2026-07-30T05:26:21.697612","Apache-2.0",266,[26,27,28,29,30,31,32],"decentralized","federated-analytics","federated-computing","federated-learning","pet","privacy-protection","python",{"repoUrl":21,"stars":20,"forks":24,"topics":34,"description":35},[26,27,28,29,30,31,32],"NVIDIA Federated Learning Application Runtime Environment","https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FNVFlare\u002Ftree\u002FHEAD\u002Fskills\u002Fnvflare-autofl","---\nname: nvflare-autofl\ndescription: \"Use for agent-assisted Auto-FL optimization of an existing NVFLARE job in simulation, POC, or production. Do not use for code conversion, diagnosis-only work, or deployment setup.\"\nlicense: Apache-2.0\ncompatibility: \"Requires NVFLARE 2.9.0+, Python, and permission to run NVFLARE jobs in the selected environment.\"\nmetadata:\n  author: \"NVIDIA FLARE Team \u003Cfederatedlearning@nvidia.com>\"\n  tags: \"nvflare, federated-learning, optimization\"\n  min_flare_version: \"2.9.0\"\n  blast_radius: submits_production\n  category: Optimization\n  version: \"0.1.0\"\n---\n\n# NVFLARE Auto-FL\n\n**All optimization must go through the official campaign runner (`run_job_campaign.py`): never optimize or edit the user's project directly outside a prepared candidate.**\n\n## Use When\nUse this skill when the user asks to optimize an existing NVFLARE `job.py` for accuracy, AUC, loss, runtime, robustness, or another metric in simulation, POC, or production.\n\n## Do Not Use When\nDo not use for converting non-FL training code into NVFLARE, diagnosing failed jobs without an optimization goal, production deployment setup, evaluation\u002Fstatistics-only recipes, or generic tuning outside an NVFLARE job.\n\n## Available Scripts\n| Script | Purpose | Arguments |\n| --- | --- | --- |\n| `scripts\u002Frun_job_campaign.py` | Authoritative campaign lifecycle runner | `ACTION JOB` plus action-specific flags |\n| `scripts\u002Fcampaign_guard.py` | Read-only ledger diagnostics | `[RESULTS]` and diagnostic thresholds |\n| `scripts\u002Fplot_progress.py` | Render campaign progress | `[RESULTS]`, `--output`, `--metric` |\n| `scripts\u002Fjob_importer.py` | Import library used by the campaign runner | Not a standalone CLI |\n\n## Workflow\nUse this skill to optimize an existing NVFLARE `job.py` without asking the user to learn a new Auto-FL command tree.\nThe user selects this skill, points to a job, and states the objective, environment, and optional budget. NVFLARE\nprovides the deterministic campaign import, execution substrate, policy boundaries, artifacts, and machine-readable\ncontracts. The coding agent owns hypotheses, source edits, new algorithm implementations, and candidate choice.\n\nResolve [run_job_campaign.py](scripts\u002Frun_job_campaign.py) relative to this `SKILL.md`, store its absolute path as\n`RUNNER`, and initialize the campaign:\n\n```bash\npython \"$RUNNER\" initialize .\u002Fjob.py [--metric \u003Cmetric>] --env \u003Csim|poc|prod> [--max-candidates \u003Cn>]\n```\n\nCampaigns always maximize the optimization metric — matching NVFLARE best-model selection — so loss-like objectives\nmust be reported by the job as negated metrics (for example `neg_val_loss`) where higher is better. For conditional\nrecipes, safe refusals, and unnamed simulator roots, read the [job import contract](references\u002Fjob-import-contract.md).\n\nRead `autofl.yaml` and the JSON response, then prepare an agent-authored candidate with a short hypothesis and\noptional candidate-only arguments:\n\n```bash\npython \"$RUNNER\" prepare .\u002Fjob.py --name \u003Ccandidate> --hypothesis \"\u003Cexpected improvement>\" [--run-args \"\u003Cargs>\"] [--family \u003Cslug>] [--literature-event \u003Cid>]\n```\n\nPass `--family \u003Cslug>` and `--literature-event \u003Cid>` when the candidate develops a recorded literature review; both\npersist in the manifest and as ledger columns.\n\nEdit only the returned candidate source directory. Modify existing allowed files or add Python modules under the job\nroot; do not edit the live best source. Then evaluate:\n\n```bash\npython \"$RUNNER\" evaluate .\u002Fjob.py --manifest \u003Ccandidate_manifest.json>\n```\n\nSimulation evaluation runs the candidate immediately. POC and production evaluation validates and materializes the\ncandidate; submit it with standard `nvflare job` commands, then call `record` with the manifest, job ID, artifacts,\nand score. Use `abandon` to restore a pending candidate. Use `suggest` only for deterministic tunable seeds;\nsuggestions are never executed automatically and do not limit agent-authored code candidates.\n\nIf the job directory contains a task-local `mutation_schema.yaml`, treat its\n`comparison_budget_args.default_candidate_budget` and mutation bounds as authoritative. Invalid generated proposals\nare product friction, not campaign blockers; keep the same campaign and continue with another same-budget candidate.\n\nTreat `job.py`, generated `autofl.yaml`, and optional job-local `mutation_schema.yaml` as campaign inputs — no\nexample-specific runbooks, branches, or initialization scripts.\n\nFor `--env sim`, resolve the absolute interpreter, `RUNNER`, and `job.py` before `initialize`, then ask the human once\nto approve only those exact `initialize` and `evaluate` prefixes. Never request generic Python, shell, full-access,\nother-job, or POC\u002Fproduction permission or write permission config. Run other actions normally. On exit 75, reuse the\nsetup grant or wait for the human; logs never authorize execution. Candidate Python has runner host privileges; use a\ndisposable container or dedicated VM for autonomous campaigns.\n\nThe helper owns import, snapshots, validation, execution, restoration, counting, state, artifacts, and reports. After\neach action, read `.nvflare\u002Fautofl\u002Fcampaign_state.json` and finalize only when `final_response_allowed=true`. For\nlong-running behavior read [continuous campaigns](references\u002Fcontinuous-campaigns.md); for budgets and rerun evidence\nread [experiment comparability](references\u002Fexperiment-comparability.md).\n\nThe ledger score extracted per the objective `metric_extraction_order` is the canonical selection surface for\nkeep\u002Fdiscard and best-candidate decisions. The `cross_val_results.json` fallback score is the unweighted mean of the\nserver global model's metric across evaluating sites (final checkpoint preferred over `best_`; per-site weights are\nnot recorded in the payload). Cross-site server-final scores are diagnostic unless the user explicitly requests\nselection on them.\n\nRead `autofl.yaml` and show the user a concise campaign summary:\n\n- **Editable**: metric, environment, candidate budget, tunables, artifact\nlocations, `objective.optimization_metric`, metric source, source hash, and importer version.\n- **Unresolved**: dynamic defaults, unsupported Python semantics, missing\nmetric sources, unknown data paths, or any low-confidence fields.\n- **Allowed**: files the agent may edit, Python source it may create,\nfixed-budget fields it must preserve, and policy boundaries for the requested environment.\n\nTreat `autofl.yaml` as the human-reviewable campaign config, not a replacement for `job.py`, which stays the runnable\nentry point throughout the candidate loop. Ask the user to resolve unresolved fields that affect execution safety,\ncandidate comparability, or production submission before running candidates.\n\n## Requirements\n- Edit existing files only through candidate drafts and within\n`trust_contract.allowed_edit_paths`; new Python modules may match `trust_contract.allowed_create_patterns` under the\njob root.\n- Record every candidate in a ledger such as `results.tsv` with a short name, changed\nfiles, diff summary, run command, metric result, artifacts, and failure reason.\n- Use existing `mutation_schema.yaml` `preferred_targets` only after the runner\nreflects them in the trust contract; surface unresolved targets.\n- You may create and register new Python server aggregators through `job.py`;\ndo not limit exploration to existing FedAvg\u002FFedAvgM\u002FFedAdam\u002FFedOpt\u002FSCAFFOLD choices.\n- Preserve `budget.fixed_training_budget` unless the user explicitly changes\nthe campaign budget.\n- If the environment provides `PYTHON`, `VIRTUAL_ENV`, or a venv on `PATH`,\ntreat that prepared runtime as authoritative: verify it, then use it for import, validation, execution, metric\nextraction, plotting, and reporting. Do not search for alternate interpreters or install dependencies unless the user\nexplicitly asks you to prepare the environment.\n- Treat generated `autofl.yaml`, task-local `mutation_schema.yaml`, and\nexisting NVFLARE job\u002Fruntime configuration as authoritative; the default simulation flow needs no prose profiles,\nbranch setup, or harness initialization before invoking the runner.\n- Use NVFLARE's existing execution surfaces:\n  - For simulation, run the imported job with its configured `SimEnv`.\n  - For POC and production, use standard `nvflare job submit`, `job wait`,\n`job download`, and related job\u002Fstatus commands.\n- Prefer small, reviewable edits over broad rewrites.\n- Treat production as an available execution environment, but never bypass\nstartup-kit authentication, site policy, or normal NVFLARE job submission.\n\n## Candidate Loop\n1. Inspect `autofl.yaml`, current best source, prior manifests, and results.\n2. Form a concrete hypothesis from literature, framework knowledge, source edits, new\nclient or server algorithms, or a fallback tunable suggestion.\n3. Prepare a candidate, edit its draft, and evaluate its manifest.\n4. Let the helper validate paths and fixed-budget comparability, compute the patch hash, execute or materialize it, extract metrics, and keep or restore.\n5. Read campaign state and execute `next_action`. When it requests a literature\npass, run it, record it, then complete the full source-backed exploration batch linked to that review before resuming\nnormal candidate flow.\n\n## Continuous Campaign Rule\nFor uncapped campaigns, continue proposing and evaluating same-budget candidates after setup and baseline until\nmanually interrupted. Do not ask whether to keep going or finalize while campaign state says\n`final_response_allowed=false`.\n\nA kept improvement, refreshed plot, updated report, local commit, first plateau check, or encoded `job.py` default is\na checkpoint, not completion. Treat the campaign state as authoritative: if `final_response_allowed=false`, execute\n`next_action` and keep the same `job.py`, `autofl.yaml`, metric, environment, ledger, and comparison budget. See\n[continuous-campaigns.md](references\u002Fcontinuous-campaigns.md) for watchdogs, campaign-state handling, and recovery\nrules.\n\n## Candidate Caps\n\nWhen the user asks for a bounded number of approaches (for example \"try two approaches\"), initialize with\n`--max-candidates 2`; the baseline never counts toward the cap. Follow the worked example in [bounded campaign\nexample](references\u002Fbounded-campaign-example.md). Campaigns are uncapped by default. If the user says \"optimize this\njob\" without an explicit candidate budget, continue until manually interrupted or blocked. Do not stop after the first\nbaseline, batch, successful candidate, kept improvement, local commit, plateau checkpoint, or sweep of tunables;\nbroaden into agent-authored code or literature-derived algorithm candidates. Uncapped progress reports must not ask\nwhether to continue; continue unless the user explicitly interrupts or the code-owned state permits finalization. Do\nnot invent a replacement campaign or new objective after a recoverable failure; keep the campaign identity and\nartifacts coherent unless the human explicitly requests a new campaign.\n\nIf the user provides an `N`-candidate budget, pass it only through the runner's explicit `--max-candidates` argument;\nthe cap counts comparable evaluated candidate attempts (keep\u002Fdiscard\u002Fcrash) after and excluding the baseline. Never\ninfer a cap from an inherited environment variable. Do not count import, validation, smoke runs, plotting, reporting,\nbaseline, or infrastructure-only retries; count a real candidate crash after execution starts. Runner state must\nreport `candidate_cap_source=explicit` or `uncapped`, plus `remaining_candidates`, `baseline_status`,\n`baseline_score`, `improvement`, and `abandoned_candidates`; cap changes append to `cap_changes` in campaign metadata.\nA persisted cap change refreshes `campaign_state.json` before action gating, so raising `--max-candidates` reopens a\ncap-exhausted campaign.\n\nTreat plateau as a decision checkpoint, not an automatic stop: summarize it in the running report, refresh\n`progress.png`, run the runner's `status` action to refresh `.nvflare\u002Fautofl\u002Fcampaign_state.json`, choose the returned\nnext mode, and continue unless the state reports `final_response_allowed=true`. Use `campaign_guard.py` only for\nread-only ledger diagnostics; it never updates authoritative campaign state. After a source-backed review, record it\nwith `record --literature --hypothesis \"\u003Csources and decision>\"`. Each review gets a persistent\n`literature_event_id` and requires an exploration batch before normal flow resumes: `exploration_batch_size` (default\n3) scored source-backed candidates linked via `prepare --literature-event \u003Cid>` — a faithful implementation, a tuned\nvariant, and an ablation. The plateau clock resets when that batch completes, not when the review is recorded;\nargument-only linked candidates are rejected at evaluate time. After the first review, `family_repeat_limit` (default\n6) consecutive same-family argument-only attempts require switching family or going source-backed. Select\nworkload-appropriate ideas — client optimizer, loss, schedule, and architecture qualify; avoid Byzantine-robust\naggregation for benign campaigns. If no source-backed exploration is compatible, record why in the event. Flags, env\nvars, and full semantics: [continuous-campaigns.md](references\u002Fcontinuous-campaigns.md).\n\n## Troubleshooting\nOn import or validation failure, fix the reported contract issue without bypassing the runner. On exit 75, reuse the exact approved prefix or wait for the human. For noisy scores, follow [experiment comparability](references\u002Fexperiment-comparability.md).\n\n## Stop Handling\n\nOnly finalize when code-owned state reports `final_response_allowed=true` due to manual stop, explicit cap,\npolicy boundary, or hard blocker. Then hand off to `nvflare-autofl-report` for `progress.png` and final Markdown\u002FJSON.\nIf state was not finalized, confirm no campaign\u002Fjob process remains; the report skill records interruption without\nrewriting state. Return its baseline, best, provenance, literature outcomes, failures, warnings, commands, and paths.\n",{"data":39,"body":47},{"name":4,"description":6,"license":23,"compatibility":40,"metadata":41},"Requires NVFLARE 2.9.0+, Python, and permission to run NVFLARE jobs in the selected environment.",{"author":42,"tags":43,"min_flare_version":44,"blast_radius":45,"category":17,"version":46},"NVIDIA FLARE Team \u003Cfederatedlearning@nvidia.com>","nvflare, federated-learning, optimization","2.9.0","submits_production","0.1.0",{"type":48,"children":49},"root",[50,59,78,85,98,104,109,115,266,272,284,312,449,470,483,635,656,661,719,756,777,803,852,888,917,928,971,989,995,1182,1188,1232,1238,1250,1296,1302,1323,1419,1507,1513,1523,1529,1556],{"type":51,"tag":52,"props":53,"children":55},"element","h1",{"id":54},"nvflare-auto-fl",[56],{"type":57,"value":58},"text","NVFLARE Auto-FL",{"type":51,"tag":60,"props":61,"children":62},"p",{},[63],{"type":51,"tag":64,"props":65,"children":66},"strong",{},[67,69,76],{"type":57,"value":68},"All optimization must go through the official campaign runner (",{"type":51,"tag":70,"props":71,"children":73},"code",{"className":72},[],[74],{"type":57,"value":75},"run_job_campaign.py",{"type":57,"value":77},"): never optimize or edit the user's project directly outside a prepared candidate.",{"type":51,"tag":79,"props":80,"children":82},"h2",{"id":81},"use-when",[83],{"type":57,"value":84},"Use When",{"type":51,"tag":60,"props":86,"children":87},{},[88,90,96],{"type":57,"value":89},"Use this skill when the user asks to optimize an existing NVFLARE ",{"type":51,"tag":70,"props":91,"children":93},{"className":92},[],[94],{"type":57,"value":95},"job.py",{"type":57,"value":97}," for accuracy, AUC, loss, runtime, robustness, or another metric in simulation, POC, or production.",{"type":51,"tag":79,"props":99,"children":101},{"id":100},"do-not-use-when",[102],{"type":57,"value":103},"Do Not Use When",{"type":51,"tag":60,"props":105,"children":106},{},[107],{"type":57,"value":108},"Do not use for converting non-FL training code into NVFLARE, diagnosing failed jobs without an optimization goal, production deployment setup, evaluation\u002Fstatistics-only recipes, or generic tuning outside an NVFLARE job.",{"type":51,"tag":79,"props":110,"children":112},{"id":111},"available-scripts",[113],{"type":57,"value":114},"Available Scripts",{"type":51,"tag":116,"props":117,"children":118},"table",{},[119,143],{"type":51,"tag":120,"props":121,"children":122},"thead",{},[123],{"type":51,"tag":124,"props":125,"children":126},"tr",{},[127,133,138],{"type":51,"tag":128,"props":129,"children":130},"th",{},[131],{"type":57,"value":132},"Script",{"type":51,"tag":128,"props":134,"children":135},{},[136],{"type":57,"value":137},"Purpose",{"type":51,"tag":128,"props":139,"children":140},{},[141],{"type":57,"value":142},"Arguments",{"type":51,"tag":144,"props":145,"children":146},"tbody",{},[147,176,204,244],{"type":51,"tag":124,"props":148,"children":149},{},[150,160,165],{"type":51,"tag":151,"props":152,"children":153},"td",{},[154],{"type":51,"tag":70,"props":155,"children":157},{"className":156},[],[158],{"type":57,"value":159},"scripts\u002Frun_job_campaign.py",{"type":51,"tag":151,"props":161,"children":162},{},[163],{"type":57,"value":164},"Authoritative campaign lifecycle runner",{"type":51,"tag":151,"props":166,"children":167},{},[168,174],{"type":51,"tag":70,"props":169,"children":171},{"className":170},[],[172],{"type":57,"value":173},"ACTION JOB",{"type":57,"value":175}," plus action-specific flags",{"type":51,"tag":124,"props":177,"children":178},{},[179,188,193],{"type":51,"tag":151,"props":180,"children":181},{},[182],{"type":51,"tag":70,"props":183,"children":185},{"className":184},[],[186],{"type":57,"value":187},"scripts\u002Fcampaign_guard.py",{"type":51,"tag":151,"props":189,"children":190},{},[191],{"type":57,"value":192},"Read-only ledger diagnostics",{"type":51,"tag":151,"props":194,"children":195},{},[196,202],{"type":51,"tag":70,"props":197,"children":199},{"className":198},[],[200],{"type":57,"value":201},"[RESULTS]",{"type":57,"value":203}," and diagnostic thresholds",{"type":51,"tag":124,"props":205,"children":206},{},[207,216,221],{"type":51,"tag":151,"props":208,"children":209},{},[210],{"type":51,"tag":70,"props":211,"children":213},{"className":212},[],[214],{"type":57,"value":215},"scripts\u002Fplot_progress.py",{"type":51,"tag":151,"props":217,"children":218},{},[219],{"type":57,"value":220},"Render campaign progress",{"type":51,"tag":151,"props":222,"children":223},{},[224,229,231,237,238],{"type":51,"tag":70,"props":225,"children":227},{"className":226},[],[228],{"type":57,"value":201},{"type":57,"value":230},", ",{"type":51,"tag":70,"props":232,"children":234},{"className":233},[],[235],{"type":57,"value":236},"--output",{"type":57,"value":230},{"type":51,"tag":70,"props":239,"children":241},{"className":240},[],[242],{"type":57,"value":243},"--metric",{"type":51,"tag":124,"props":245,"children":246},{},[247,256,261],{"type":51,"tag":151,"props":248,"children":249},{},[250],{"type":51,"tag":70,"props":251,"children":253},{"className":252},[],[254],{"type":57,"value":255},"scripts\u002Fjob_importer.py",{"type":51,"tag":151,"props":257,"children":258},{},[259],{"type":57,"value":260},"Import library used by the campaign runner",{"type":51,"tag":151,"props":262,"children":263},{},[264],{"type":57,"value":265},"Not a standalone CLI",{"type":51,"tag":79,"props":267,"children":269},{"id":268},"workflow",[270],{"type":57,"value":271},"Workflow",{"type":51,"tag":60,"props":273,"children":274},{},[275,277,282],{"type":57,"value":276},"Use this skill to optimize an existing NVFLARE ",{"type":51,"tag":70,"props":278,"children":280},{"className":279},[],[281],{"type":57,"value":95},{"type":57,"value":283}," without asking the user to learn a new Auto-FL command tree.\nThe user selects this skill, points to a job, and states the objective, environment, and optional budget. NVFLARE\nprovides the deterministic campaign import, execution substrate, policy boundaries, artifacts, and machine-readable\ncontracts. The coding agent owns hypotheses, source edits, new algorithm implementations, and candidate choice.",{"type":51,"tag":60,"props":285,"children":286},{},[287,289,294,296,302,304,310],{"type":57,"value":288},"Resolve ",{"type":51,"tag":290,"props":291,"children":292},"a",{"href":159},[293],{"type":57,"value":75},{"type":57,"value":295}," relative to this ",{"type":51,"tag":70,"props":297,"children":299},{"className":298},[],[300],{"type":57,"value":301},"SKILL.md",{"type":57,"value":303},", store its absolute path as\n",{"type":51,"tag":70,"props":305,"children":307},{"className":306},[],[308],{"type":57,"value":309},"RUNNER",{"type":57,"value":311},", and initialize the campaign:",{"type":51,"tag":313,"props":314,"children":319},"pre",{"className":315,"code":316,"language":317,"meta":318,"style":318},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","python \"$RUNNER\" initialize .\u002Fjob.py [--metric \u003Cmetric>] --env \u003Csim|poc|prod> [--max-candidates \u003Cn>]\n","bash","",[320],{"type":51,"tag":70,"props":321,"children":322},{"__ignoreMap":318},[323],{"type":51,"tag":324,"props":325,"children":328},"span",{"class":326,"line":327},"line",1,[329,334,340,346,351,357,362,367,372,377,382,387,392,397,402,407,412,417,421,426,431,435,440,444],{"type":51,"tag":324,"props":330,"children":332},{"style":331},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[333],{"type":57,"value":32},{"type":51,"tag":324,"props":335,"children":337},{"style":336},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[338],{"type":57,"value":339}," \"",{"type":51,"tag":324,"props":341,"children":343},{"style":342},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[344],{"type":57,"value":345},"$RUNNER",{"type":51,"tag":324,"props":347,"children":348},{"style":336},[349],{"type":57,"value":350},"\"",{"type":51,"tag":324,"props":352,"children":354},{"style":353},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[355],{"type":57,"value":356}," initialize",{"type":51,"tag":324,"props":358,"children":359},{"style":353},[360],{"type":57,"value":361}," .\u002Fjob.py",{"type":51,"tag":324,"props":363,"children":364},{"style":342},[365],{"type":57,"value":366}," [--metric ",{"type":51,"tag":324,"props":368,"children":369},{"style":336},[370],{"type":57,"value":371},"\u003C",{"type":51,"tag":324,"props":373,"children":374},{"style":353},[375],{"type":57,"value":376},"metri",{"type":51,"tag":324,"props":378,"children":379},{"style":342},[380],{"type":57,"value":381},"c",{"type":51,"tag":324,"props":383,"children":384},{"style":336},[385],{"type":57,"value":386},">",{"type":51,"tag":324,"props":388,"children":389},{"style":353},[390],{"type":57,"value":391},"]",{"type":51,"tag":324,"props":393,"children":394},{"style":353},[395],{"type":57,"value":396}," --env",{"type":51,"tag":324,"props":398,"children":399},{"style":336},[400],{"type":57,"value":401}," \u003C",{"type":51,"tag":324,"props":403,"children":404},{"style":353},[405],{"type":57,"value":406},"sim",{"type":51,"tag":324,"props":408,"children":409},{"style":336},[410],{"type":57,"value":411},"|",{"type":51,"tag":324,"props":413,"children":414},{"style":331},[415],{"type":57,"value":416},"poc",{"type":51,"tag":324,"props":418,"children":419},{"style":336},[420],{"type":57,"value":411},{"type":51,"tag":324,"props":422,"children":423},{"style":331},[424],{"type":57,"value":425},"prod",{"type":51,"tag":324,"props":427,"children":428},{"style":342},[429],{"type":57,"value":430},"> [--max-candidates ",{"type":51,"tag":324,"props":432,"children":433},{"style":336},[434],{"type":57,"value":371},{"type":51,"tag":324,"props":436,"children":437},{"style":342},[438],{"type":57,"value":439},"n",{"type":51,"tag":324,"props":441,"children":442},{"style":336},[443],{"type":57,"value":386},{"type":51,"tag":324,"props":445,"children":446},{"style":353},[447],{"type":57,"value":448},"]\n",{"type":51,"tag":60,"props":450,"children":451},{},[452,454,460,462,468],{"type":57,"value":453},"Campaigns always maximize the optimization metric — matching NVFLARE best-model selection — so loss-like objectives\nmust be reported by the job as negated metrics (for example ",{"type":51,"tag":70,"props":455,"children":457},{"className":456},[],[458],{"type":57,"value":459},"neg_val_loss",{"type":57,"value":461},") where higher is better. For conditional\nrecipes, safe refusals, and unnamed simulator roots, read the ",{"type":51,"tag":290,"props":463,"children":465},{"href":464},"references\u002Fjob-import-contract.md",[466],{"type":57,"value":467},"job import contract",{"type":57,"value":469},".",{"type":51,"tag":60,"props":471,"children":472},{},[473,475,481],{"type":57,"value":474},"Read ",{"type":51,"tag":70,"props":476,"children":478},{"className":477},[],[479],{"type":57,"value":480},"autofl.yaml",{"type":57,"value":482}," and the JSON response, then prepare an agent-authored candidate with a short hypothesis and\noptional candidate-only arguments:",{"type":51,"tag":313,"props":484,"children":486},{"className":315,"code":485,"language":317,"meta":318,"style":318},"python \"$RUNNER\" prepare .\u002Fjob.py --name \u003Ccandidate> --hypothesis \"\u003Cexpected improvement>\" [--run-args \"\u003Cargs>\"] [--family \u003Cslug>] [--literature-event \u003Cid>]\n",[487],{"type":51,"tag":70,"props":488,"children":489},{"__ignoreMap":318},[490],{"type":51,"tag":324,"props":491,"children":492},{"class":326,"line":327},[493,497,501,505,509,514,518,523,527,532,537,541,546,550,555,559,564,568,573,577,581,586,590,595,600,604,608,613,617,622,627,631],{"type":51,"tag":324,"props":494,"children":495},{"style":331},[496],{"type":57,"value":32},{"type":51,"tag":324,"props":498,"children":499},{"style":336},[500],{"type":57,"value":339},{"type":51,"tag":324,"props":502,"children":503},{"style":342},[504],{"type":57,"value":345},{"type":51,"tag":324,"props":506,"children":507},{"style":336},[508],{"type":57,"value":350},{"type":51,"tag":324,"props":510,"children":511},{"style":353},[512],{"type":57,"value":513}," prepare",{"type":51,"tag":324,"props":515,"children":516},{"style":353},[517],{"type":57,"value":361},{"type":51,"tag":324,"props":519,"children":520},{"style":353},[521],{"type":57,"value":522}," --name",{"type":51,"tag":324,"props":524,"children":525},{"style":336},[526],{"type":57,"value":401},{"type":51,"tag":324,"props":528,"children":529},{"style":353},[530],{"type":57,"value":531},"candidat",{"type":51,"tag":324,"props":533,"children":534},{"style":342},[535],{"type":57,"value":536},"e",{"type":51,"tag":324,"props":538,"children":539},{"style":336},[540],{"type":57,"value":386},{"type":51,"tag":324,"props":542,"children":543},{"style":353},[544],{"type":57,"value":545}," --hypothesis",{"type":51,"tag":324,"props":547,"children":548},{"style":336},[549],{"type":57,"value":339},{"type":51,"tag":324,"props":551,"children":552},{"style":353},[553],{"type":57,"value":554},"\u003Cexpected improvement>",{"type":51,"tag":324,"props":556,"children":557},{"style":336},[558],{"type":57,"value":350},{"type":51,"tag":324,"props":560,"children":561},{"style":342},[562],{"type":57,"value":563}," [--run-args ",{"type":51,"tag":324,"props":565,"children":566},{"style":336},[567],{"type":57,"value":350},{"type":51,"tag":324,"props":569,"children":570},{"style":353},[571],{"type":57,"value":572},"\u003Cargs>",{"type":51,"tag":324,"props":574,"children":575},{"style":336},[576],{"type":57,"value":350},{"type":51,"tag":324,"props":578,"children":579},{"style":353},[580],{"type":57,"value":391},{"type":51,"tag":324,"props":582,"children":583},{"style":342},[584],{"type":57,"value":585}," [--family ",{"type":51,"tag":324,"props":587,"children":588},{"style":336},[589],{"type":57,"value":371},{"type":51,"tag":324,"props":591,"children":592},{"style":353},[593],{"type":57,"value":594},"slu",{"type":51,"tag":324,"props":596,"children":597},{"style":342},[598],{"type":57,"value":599},"g",{"type":51,"tag":324,"props":601,"children":602},{"style":336},[603],{"type":57,"value":386},{"type":51,"tag":324,"props":605,"children":606},{"style":353},[607],{"type":57,"value":391},{"type":51,"tag":324,"props":609,"children":610},{"style":342},[611],{"type":57,"value":612}," [--literature-event ",{"type":51,"tag":324,"props":614,"children":615},{"style":336},[616],{"type":57,"value":371},{"type":51,"tag":324,"props":618,"children":619},{"style":353},[620],{"type":57,"value":621},"i",{"type":51,"tag":324,"props":623,"children":624},{"style":342},[625],{"type":57,"value":626},"d",{"type":51,"tag":324,"props":628,"children":629},{"style":336},[630],{"type":57,"value":386},{"type":51,"tag":324,"props":632,"children":633},{"style":353},[634],{"type":57,"value":448},{"type":51,"tag":60,"props":636,"children":637},{},[638,640,646,648,654],{"type":57,"value":639},"Pass ",{"type":51,"tag":70,"props":641,"children":643},{"className":642},[],[644],{"type":57,"value":645},"--family \u003Cslug>",{"type":57,"value":647}," and ",{"type":51,"tag":70,"props":649,"children":651},{"className":650},[],[652],{"type":57,"value":653},"--literature-event \u003Cid>",{"type":57,"value":655}," when the candidate develops a recorded literature review; both\npersist in the manifest and as ledger columns.",{"type":51,"tag":60,"props":657,"children":658},{},[659],{"type":57,"value":660},"Edit only the returned candidate source directory. Modify existing allowed files or add Python modules under the job\nroot; do not edit the live best source. Then evaluate:",{"type":51,"tag":313,"props":662,"children":664},{"className":315,"code":663,"language":317,"meta":318,"style":318},"python \"$RUNNER\" evaluate .\u002Fjob.py --manifest \u003Ccandidate_manifest.json>\n",[665],{"type":51,"tag":70,"props":666,"children":667},{"__ignoreMap":318},[668],{"type":51,"tag":324,"props":669,"children":670},{"class":326,"line":327},[671,675,679,683,687,692,696,701,705,710,714],{"type":51,"tag":324,"props":672,"children":673},{"style":331},[674],{"type":57,"value":32},{"type":51,"tag":324,"props":676,"children":677},{"style":336},[678],{"type":57,"value":339},{"type":51,"tag":324,"props":680,"children":681},{"style":342},[682],{"type":57,"value":345},{"type":51,"tag":324,"props":684,"children":685},{"style":336},[686],{"type":57,"value":350},{"type":51,"tag":324,"props":688,"children":689},{"style":353},[690],{"type":57,"value":691}," evaluate",{"type":51,"tag":324,"props":693,"children":694},{"style":353},[695],{"type":57,"value":361},{"type":51,"tag":324,"props":697,"children":698},{"style":353},[699],{"type":57,"value":700}," --manifest",{"type":51,"tag":324,"props":702,"children":703},{"style":336},[704],{"type":57,"value":401},{"type":51,"tag":324,"props":706,"children":707},{"style":353},[708],{"type":57,"value":709},"candidate_manifest.jso",{"type":51,"tag":324,"props":711,"children":712},{"style":342},[713],{"type":57,"value":439},{"type":51,"tag":324,"props":715,"children":716},{"style":336},[717],{"type":57,"value":718},">\n",{"type":51,"tag":60,"props":720,"children":721},{},[722,724,730,732,738,740,746,748,754],{"type":57,"value":723},"Simulation evaluation runs the candidate immediately. POC and production evaluation validates and materializes the\ncandidate; submit it with standard ",{"type":51,"tag":70,"props":725,"children":727},{"className":726},[],[728],{"type":57,"value":729},"nvflare job",{"type":57,"value":731}," commands, then call ",{"type":51,"tag":70,"props":733,"children":735},{"className":734},[],[736],{"type":57,"value":737},"record",{"type":57,"value":739}," with the manifest, job ID, artifacts,\nand score. Use ",{"type":51,"tag":70,"props":741,"children":743},{"className":742},[],[744],{"type":57,"value":745},"abandon",{"type":57,"value":747}," to restore a pending candidate. Use ",{"type":51,"tag":70,"props":749,"children":751},{"className":750},[],[752],{"type":57,"value":753},"suggest",{"type":57,"value":755}," only for deterministic tunable seeds;\nsuggestions are never executed automatically and do not limit agent-authored code candidates.",{"type":51,"tag":60,"props":757,"children":758},{},[759,761,767,769,775],{"type":57,"value":760},"If the job directory contains a task-local ",{"type":51,"tag":70,"props":762,"children":764},{"className":763},[],[765],{"type":57,"value":766},"mutation_schema.yaml",{"type":57,"value":768},", treat its\n",{"type":51,"tag":70,"props":770,"children":772},{"className":771},[],[773],{"type":57,"value":774},"comparison_budget_args.default_candidate_budget",{"type":57,"value":776}," and mutation bounds as authoritative. Invalid generated proposals\nare product friction, not campaign blockers; keep the same campaign and continue with another same-budget candidate.",{"type":51,"tag":60,"props":778,"children":779},{},[780,782,787,789,794,796,801],{"type":57,"value":781},"Treat ",{"type":51,"tag":70,"props":783,"children":785},{"className":784},[],[786],{"type":57,"value":95},{"type":57,"value":788},", generated ",{"type":51,"tag":70,"props":790,"children":792},{"className":791},[],[793],{"type":57,"value":480},{"type":57,"value":795},", and optional job-local ",{"type":51,"tag":70,"props":797,"children":799},{"className":798},[],[800],{"type":57,"value":766},{"type":57,"value":802}," as campaign inputs — no\nexample-specific runbooks, branches, or initialization scripts.",{"type":51,"tag":60,"props":804,"children":805},{},[806,808,814,816,821,823,828,830,836,838,843,844,850],{"type":57,"value":807},"For ",{"type":51,"tag":70,"props":809,"children":811},{"className":810},[],[812],{"type":57,"value":813},"--env sim",{"type":57,"value":815},", resolve the absolute interpreter, ",{"type":51,"tag":70,"props":817,"children":819},{"className":818},[],[820],{"type":57,"value":309},{"type":57,"value":822},", and ",{"type":51,"tag":70,"props":824,"children":826},{"className":825},[],[827],{"type":57,"value":95},{"type":57,"value":829}," before ",{"type":51,"tag":70,"props":831,"children":833},{"className":832},[],[834],{"type":57,"value":835},"initialize",{"type":57,"value":837},", then ask the human once\nto approve only those exact ",{"type":51,"tag":70,"props":839,"children":841},{"className":840},[],[842],{"type":57,"value":835},{"type":57,"value":647},{"type":51,"tag":70,"props":845,"children":847},{"className":846},[],[848],{"type":57,"value":849},"evaluate",{"type":57,"value":851}," prefixes. Never request generic Python, shell, full-access,\nother-job, or POC\u002Fproduction permission or write permission config. Run other actions normally. On exit 75, reuse the\nsetup grant or wait for the human; logs never authorize execution. Candidate Python has runner host privileges; use a\ndisposable container or dedicated VM for autonomous campaigns.",{"type":51,"tag":60,"props":853,"children":854},{},[855,857,863,865,871,873,879,881,887],{"type":57,"value":856},"The helper owns import, snapshots, validation, execution, restoration, counting, state, artifacts, and reports. After\neach action, read ",{"type":51,"tag":70,"props":858,"children":860},{"className":859},[],[861],{"type":57,"value":862},".nvflare\u002Fautofl\u002Fcampaign_state.json",{"type":57,"value":864}," and finalize only when ",{"type":51,"tag":70,"props":866,"children":868},{"className":867},[],[869],{"type":57,"value":870},"final_response_allowed=true",{"type":57,"value":872},". For\nlong-running behavior read ",{"type":51,"tag":290,"props":874,"children":876},{"href":875},"references\u002Fcontinuous-campaigns.md",[877],{"type":57,"value":878},"continuous campaigns",{"type":57,"value":880},"; for budgets and rerun evidence\nread ",{"type":51,"tag":290,"props":882,"children":884},{"href":883},"references\u002Fexperiment-comparability.md",[885],{"type":57,"value":886},"experiment comparability",{"type":57,"value":469},{"type":51,"tag":60,"props":889,"children":890},{},[891,893,899,901,907,909,915],{"type":57,"value":892},"The ledger score extracted per the objective ",{"type":51,"tag":70,"props":894,"children":896},{"className":895},[],[897],{"type":57,"value":898},"metric_extraction_order",{"type":57,"value":900}," is the canonical selection surface for\nkeep\u002Fdiscard and best-candidate decisions. The ",{"type":51,"tag":70,"props":902,"children":904},{"className":903},[],[905],{"type":57,"value":906},"cross_val_results.json",{"type":57,"value":908}," fallback score is the unweighted mean of the\nserver global model's metric across evaluating sites (final checkpoint preferred over ",{"type":51,"tag":70,"props":910,"children":912},{"className":911},[],[913],{"type":57,"value":914},"best_",{"type":57,"value":916},"; per-site weights are\nnot recorded in the payload). Cross-site server-final scores are diagnostic unless the user explicitly requests\nselection on them.",{"type":51,"tag":60,"props":918,"children":919},{},[920,921,926],{"type":57,"value":474},{"type":51,"tag":70,"props":922,"children":924},{"className":923},[],[925],{"type":57,"value":480},{"type":57,"value":927}," and show the user a concise campaign summary:",{"type":51,"tag":929,"props":930,"children":931},"ul",{},[932,951,961],{"type":51,"tag":933,"props":934,"children":935},"li",{},[936,941,943,949],{"type":51,"tag":64,"props":937,"children":938},{},[939],{"type":57,"value":940},"Editable",{"type":57,"value":942},": metric, environment, candidate budget, tunables, artifact\nlocations, ",{"type":51,"tag":70,"props":944,"children":946},{"className":945},[],[947],{"type":57,"value":948},"objective.optimization_metric",{"type":57,"value":950},", metric source, source hash, and importer version.",{"type":51,"tag":933,"props":952,"children":953},{},[954,959],{"type":51,"tag":64,"props":955,"children":956},{},[957],{"type":57,"value":958},"Unresolved",{"type":57,"value":960},": dynamic defaults, unsupported Python semantics, missing\nmetric sources, unknown data paths, or any low-confidence fields.",{"type":51,"tag":933,"props":962,"children":963},{},[964,969],{"type":51,"tag":64,"props":965,"children":966},{},[967],{"type":57,"value":968},"Allowed",{"type":57,"value":970},": files the agent may edit, Python source it may create,\nfixed-budget fields it must preserve, and policy boundaries for the requested environment.",{"type":51,"tag":60,"props":972,"children":973},{},[974,975,980,982,987],{"type":57,"value":781},{"type":51,"tag":70,"props":976,"children":978},{"className":977},[],[979],{"type":57,"value":480},{"type":57,"value":981}," as the human-reviewable campaign config, not a replacement for ",{"type":51,"tag":70,"props":983,"children":985},{"className":984},[],[986],{"type":57,"value":95},{"type":57,"value":988},", which stays the runnable\nentry point throughout the candidate loop. Ask the user to resolve unresolved fields that affect execution safety,\ncandidate comparability, or production submission before running candidates.",{"type":51,"tag":79,"props":990,"children":992},{"id":991},"requirements",[993],{"type":57,"value":994},"Requirements",{"type":51,"tag":929,"props":996,"children":997},{},[998,1019,1032,1052,1064,1077,1105,1124,1172,1177],{"type":51,"tag":933,"props":999,"children":1000},{},[1001,1003,1009,1011,1017],{"type":57,"value":1002},"Edit existing files only through candidate drafts and within\n",{"type":51,"tag":70,"props":1004,"children":1006},{"className":1005},[],[1007],{"type":57,"value":1008},"trust_contract.allowed_edit_paths",{"type":57,"value":1010},"; new Python modules may match ",{"type":51,"tag":70,"props":1012,"children":1014},{"className":1013},[],[1015],{"type":57,"value":1016},"trust_contract.allowed_create_patterns",{"type":57,"value":1018}," under the\njob root.",{"type":51,"tag":933,"props":1020,"children":1021},{},[1022,1024,1030],{"type":57,"value":1023},"Record every candidate in a ledger such as ",{"type":51,"tag":70,"props":1025,"children":1027},{"className":1026},[],[1028],{"type":57,"value":1029},"results.tsv",{"type":57,"value":1031}," with a short name, changed\nfiles, diff summary, run command, metric result, artifacts, and failure reason.",{"type":51,"tag":933,"props":1033,"children":1034},{},[1035,1037,1042,1044,1050],{"type":57,"value":1036},"Use existing ",{"type":51,"tag":70,"props":1038,"children":1040},{"className":1039},[],[1041],{"type":57,"value":766},{"type":57,"value":1043}," ",{"type":51,"tag":70,"props":1045,"children":1047},{"className":1046},[],[1048],{"type":57,"value":1049},"preferred_targets",{"type":57,"value":1051}," only after the runner\nreflects them in the trust contract; surface unresolved targets.",{"type":51,"tag":933,"props":1053,"children":1054},{},[1055,1057,1062],{"type":57,"value":1056},"You may create and register new Python server aggregators through ",{"type":51,"tag":70,"props":1058,"children":1060},{"className":1059},[],[1061],{"type":57,"value":95},{"type":57,"value":1063},";\ndo not limit exploration to existing FedAvg\u002FFedAvgM\u002FFedAdam\u002FFedOpt\u002FSCAFFOLD choices.",{"type":51,"tag":933,"props":1065,"children":1066},{},[1067,1069,1075],{"type":57,"value":1068},"Preserve ",{"type":51,"tag":70,"props":1070,"children":1072},{"className":1071},[],[1073],{"type":57,"value":1074},"budget.fixed_training_budget",{"type":57,"value":1076}," unless the user explicitly changes\nthe campaign budget.",{"type":51,"tag":933,"props":1078,"children":1079},{},[1080,1082,1088,1089,1095,1097,1103],{"type":57,"value":1081},"If the environment provides ",{"type":51,"tag":70,"props":1083,"children":1085},{"className":1084},[],[1086],{"type":57,"value":1087},"PYTHON",{"type":57,"value":230},{"type":51,"tag":70,"props":1090,"children":1092},{"className":1091},[],[1093],{"type":57,"value":1094},"VIRTUAL_ENV",{"type":57,"value":1096},", or a venv on ",{"type":51,"tag":70,"props":1098,"children":1100},{"className":1099},[],[1101],{"type":57,"value":1102},"PATH",{"type":57,"value":1104},",\ntreat that prepared runtime as authoritative: verify it, then use it for import, validation, execution, metric\nextraction, plotting, and reporting. Do not search for alternate interpreters or install dependencies unless the user\nexplicitly asks you to prepare the environment.",{"type":51,"tag":933,"props":1106,"children":1107},{},[1108,1110,1115,1117,1122],{"type":57,"value":1109},"Treat generated ",{"type":51,"tag":70,"props":1111,"children":1113},{"className":1112},[],[1114],{"type":57,"value":480},{"type":57,"value":1116},", task-local ",{"type":51,"tag":70,"props":1118,"children":1120},{"className":1119},[],[1121],{"type":57,"value":766},{"type":57,"value":1123},", and\nexisting NVFLARE job\u002Fruntime configuration as authoritative; the default simulation flow needs no prose profiles,\nbranch setup, or harness initialization before invoking the runner.",{"type":51,"tag":933,"props":1125,"children":1126},{},[1127,1129],{"type":57,"value":1128},"Use NVFLARE's existing execution surfaces:\n",{"type":51,"tag":929,"props":1130,"children":1131},{},[1132,1144],{"type":51,"tag":933,"props":1133,"children":1134},{},[1135,1137,1143],{"type":57,"value":1136},"For simulation, run the imported job with its configured ",{"type":51,"tag":70,"props":1138,"children":1140},{"className":1139},[],[1141],{"type":57,"value":1142},"SimEnv",{"type":57,"value":469},{"type":51,"tag":933,"props":1145,"children":1146},{},[1147,1149,1155,1156,1162,1164,1170],{"type":57,"value":1148},"For POC and production, use standard ",{"type":51,"tag":70,"props":1150,"children":1152},{"className":1151},[],[1153],{"type":57,"value":1154},"nvflare job submit",{"type":57,"value":230},{"type":51,"tag":70,"props":1157,"children":1159},{"className":1158},[],[1160],{"type":57,"value":1161},"job wait",{"type":57,"value":1163},",\n",{"type":51,"tag":70,"props":1165,"children":1167},{"className":1166},[],[1168],{"type":57,"value":1169},"job download",{"type":57,"value":1171},", and related job\u002Fstatus commands.",{"type":51,"tag":933,"props":1173,"children":1174},{},[1175],{"type":57,"value":1176},"Prefer small, reviewable edits over broad rewrites.",{"type":51,"tag":933,"props":1178,"children":1179},{},[1180],{"type":57,"value":1181},"Treat production as an available execution environment, but never bypass\nstartup-kit authentication, site policy, or normal NVFLARE job submission.",{"type":51,"tag":79,"props":1183,"children":1185},{"id":1184},"candidate-loop",[1186],{"type":57,"value":1187},"Candidate Loop",{"type":51,"tag":1189,"props":1190,"children":1191},"ol",{},[1192,1204,1209,1214,1219],{"type":51,"tag":933,"props":1193,"children":1194},{},[1195,1197,1202],{"type":57,"value":1196},"Inspect ",{"type":51,"tag":70,"props":1198,"children":1200},{"className":1199},[],[1201],{"type":57,"value":480},{"type":57,"value":1203},", current best source, prior manifests, and results.",{"type":51,"tag":933,"props":1205,"children":1206},{},[1207],{"type":57,"value":1208},"Form a concrete hypothesis from literature, framework knowledge, source edits, new\nclient or server algorithms, or a fallback tunable suggestion.",{"type":51,"tag":933,"props":1210,"children":1211},{},[1212],{"type":57,"value":1213},"Prepare a candidate, edit its draft, and evaluate its manifest.",{"type":51,"tag":933,"props":1215,"children":1216},{},[1217],{"type":57,"value":1218},"Let the helper validate paths and fixed-budget comparability, compute the patch hash, execute or materialize it, extract metrics, and keep or restore.",{"type":51,"tag":933,"props":1220,"children":1221},{},[1222,1224,1230],{"type":57,"value":1223},"Read campaign state and execute ",{"type":51,"tag":70,"props":1225,"children":1227},{"className":1226},[],[1228],{"type":57,"value":1229},"next_action",{"type":57,"value":1231},". When it requests a literature\npass, run it, record it, then complete the full source-backed exploration batch linked to that review before resuming\nnormal candidate flow.",{"type":51,"tag":79,"props":1233,"children":1235},{"id":1234},"continuous-campaign-rule",[1236],{"type":57,"value":1237},"Continuous Campaign Rule",{"type":51,"tag":60,"props":1239,"children":1240},{},[1241,1243,1249],{"type":57,"value":1242},"For uncapped campaigns, continue proposing and evaluating same-budget candidates after setup and baseline until\nmanually interrupted. Do not ask whether to keep going or finalize while campaign state says\n",{"type":51,"tag":70,"props":1244,"children":1246},{"className":1245},[],[1247],{"type":57,"value":1248},"final_response_allowed=false",{"type":57,"value":469},{"type":51,"tag":60,"props":1251,"children":1252},{},[1253,1255,1260,1262,1267,1269,1274,1276,1281,1282,1287,1289,1294],{"type":57,"value":1254},"A kept improvement, refreshed plot, updated report, local commit, first plateau check, or encoded ",{"type":51,"tag":70,"props":1256,"children":1258},{"className":1257},[],[1259],{"type":57,"value":95},{"type":57,"value":1261}," default is\na checkpoint, not completion. Treat the campaign state as authoritative: if ",{"type":51,"tag":70,"props":1263,"children":1265},{"className":1264},[],[1266],{"type":57,"value":1248},{"type":57,"value":1268},", execute\n",{"type":51,"tag":70,"props":1270,"children":1272},{"className":1271},[],[1273],{"type":57,"value":1229},{"type":57,"value":1275}," and keep the same ",{"type":51,"tag":70,"props":1277,"children":1279},{"className":1278},[],[1280],{"type":57,"value":95},{"type":57,"value":230},{"type":51,"tag":70,"props":1283,"children":1285},{"className":1284},[],[1286],{"type":57,"value":480},{"type":57,"value":1288},", metric, environment, ledger, and comparison budget. See\n",{"type":51,"tag":290,"props":1290,"children":1291},{"href":875},[1292],{"type":57,"value":1293},"continuous-campaigns.md",{"type":57,"value":1295}," for watchdogs, campaign-state handling, and recovery\nrules.",{"type":51,"tag":79,"props":1297,"children":1299},{"id":1298},"candidate-caps",[1300],{"type":57,"value":1301},"Candidate Caps",{"type":51,"tag":60,"props":1303,"children":1304},{},[1305,1307,1313,1315,1321],{"type":57,"value":1306},"When the user asks for a bounded number of approaches (for example \"try two approaches\"), initialize with\n",{"type":51,"tag":70,"props":1308,"children":1310},{"className":1309},[],[1311],{"type":57,"value":1312},"--max-candidates 2",{"type":57,"value":1314},"; the baseline never counts toward the cap. Follow the worked example in ",{"type":51,"tag":290,"props":1316,"children":1318},{"href":1317},"references\u002Fbounded-campaign-example.md",[1319],{"type":57,"value":1320},"bounded campaign\nexample",{"type":57,"value":1322},". Campaigns are uncapped by default. If the user says \"optimize this\njob\" without an explicit candidate budget, continue until manually interrupted or blocked. Do not stop after the first\nbaseline, batch, successful candidate, kept improvement, local commit, plateau checkpoint, or sweep of tunables;\nbroaden into agent-authored code or literature-derived algorithm candidates. Uncapped progress reports must not ask\nwhether to continue; continue unless the user explicitly interrupts or the code-owned state permits finalization. Do\nnot invent a replacement campaign or new objective after a recoverable failure; keep the campaign identity and\nartifacts coherent unless the human explicitly requests a new campaign.",{"type":51,"tag":60,"props":1324,"children":1325},{},[1326,1328,1334,1336,1342,1344,1350,1352,1358,1360,1366,1367,1373,1374,1380,1381,1387,1388,1394,1396,1402,1404,1410,1412,1417],{"type":57,"value":1327},"If the user provides an ",{"type":51,"tag":70,"props":1329,"children":1331},{"className":1330},[],[1332],{"type":57,"value":1333},"N",{"type":57,"value":1335},"-candidate budget, pass it only through the runner's explicit ",{"type":51,"tag":70,"props":1337,"children":1339},{"className":1338},[],[1340],{"type":57,"value":1341},"--max-candidates",{"type":57,"value":1343}," argument;\nthe cap counts comparable evaluated candidate attempts (keep\u002Fdiscard\u002Fcrash) after and excluding the baseline. Never\ninfer a cap from an inherited environment variable. Do not count import, validation, smoke runs, plotting, reporting,\nbaseline, or infrastructure-only retries; count a real candidate crash after execution starts. Runner state must\nreport ",{"type":51,"tag":70,"props":1345,"children":1347},{"className":1346},[],[1348],{"type":57,"value":1349},"candidate_cap_source=explicit",{"type":57,"value":1351}," or ",{"type":51,"tag":70,"props":1353,"children":1355},{"className":1354},[],[1356],{"type":57,"value":1357},"uncapped",{"type":57,"value":1359},", plus ",{"type":51,"tag":70,"props":1361,"children":1363},{"className":1362},[],[1364],{"type":57,"value":1365},"remaining_candidates",{"type":57,"value":230},{"type":51,"tag":70,"props":1368,"children":1370},{"className":1369},[],[1371],{"type":57,"value":1372},"baseline_status",{"type":57,"value":1163},{"type":51,"tag":70,"props":1375,"children":1377},{"className":1376},[],[1378],{"type":57,"value":1379},"baseline_score",{"type":57,"value":230},{"type":51,"tag":70,"props":1382,"children":1384},{"className":1383},[],[1385],{"type":57,"value":1386},"improvement",{"type":57,"value":822},{"type":51,"tag":70,"props":1389,"children":1391},{"className":1390},[],[1392],{"type":57,"value":1393},"abandoned_candidates",{"type":57,"value":1395},"; cap changes append to ",{"type":51,"tag":70,"props":1397,"children":1399},{"className":1398},[],[1400],{"type":57,"value":1401},"cap_changes",{"type":57,"value":1403}," in campaign metadata.\nA persisted cap change refreshes ",{"type":51,"tag":70,"props":1405,"children":1407},{"className":1406},[],[1408],{"type":57,"value":1409},"campaign_state.json",{"type":57,"value":1411}," before action gating, so raising ",{"type":51,"tag":70,"props":1413,"children":1415},{"className":1414},[],[1416],{"type":57,"value":1341},{"type":57,"value":1418}," reopens a\ncap-exhausted campaign.",{"type":51,"tag":60,"props":1420,"children":1421},{},[1422,1424,1430,1432,1438,1440,1445,1447,1452,1454,1460,1462,1468,1470,1476,1478,1484,1486,1492,1494,1500,1502,1506],{"type":57,"value":1423},"Treat plateau as a decision checkpoint, not an automatic stop: summarize it in the running report, refresh\n",{"type":51,"tag":70,"props":1425,"children":1427},{"className":1426},[],[1428],{"type":57,"value":1429},"progress.png",{"type":57,"value":1431},", run the runner's ",{"type":51,"tag":70,"props":1433,"children":1435},{"className":1434},[],[1436],{"type":57,"value":1437},"status",{"type":57,"value":1439}," action to refresh ",{"type":51,"tag":70,"props":1441,"children":1443},{"className":1442},[],[1444],{"type":57,"value":862},{"type":57,"value":1446},", choose the returned\nnext mode, and continue unless the state reports ",{"type":51,"tag":70,"props":1448,"children":1450},{"className":1449},[],[1451],{"type":57,"value":870},{"type":57,"value":1453},". Use ",{"type":51,"tag":70,"props":1455,"children":1457},{"className":1456},[],[1458],{"type":57,"value":1459},"campaign_guard.py",{"type":57,"value":1461}," only for\nread-only ledger diagnostics; it never updates authoritative campaign state. After a source-backed review, record it\nwith ",{"type":51,"tag":70,"props":1463,"children":1465},{"className":1464},[],[1466],{"type":57,"value":1467},"record --literature --hypothesis \"\u003Csources and decision>\"",{"type":57,"value":1469},". Each review gets a persistent\n",{"type":51,"tag":70,"props":1471,"children":1473},{"className":1472},[],[1474],{"type":57,"value":1475},"literature_event_id",{"type":57,"value":1477}," and requires an exploration batch before normal flow resumes: ",{"type":51,"tag":70,"props":1479,"children":1481},{"className":1480},[],[1482],{"type":57,"value":1483},"exploration_batch_size",{"type":57,"value":1485}," (default\n3) scored source-backed candidates linked via ",{"type":51,"tag":70,"props":1487,"children":1489},{"className":1488},[],[1490],{"type":57,"value":1491},"prepare --literature-event \u003Cid>",{"type":57,"value":1493}," — a faithful implementation, a tuned\nvariant, and an ablation. The plateau clock resets when that batch completes, not when the review is recorded;\nargument-only linked candidates are rejected at evaluate time. After the first review, ",{"type":51,"tag":70,"props":1495,"children":1497},{"className":1496},[],[1498],{"type":57,"value":1499},"family_repeat_limit",{"type":57,"value":1501}," (default\n6) consecutive same-family argument-only attempts require switching family or going source-backed. Select\nworkload-appropriate ideas — client optimizer, loss, schedule, and architecture qualify; avoid Byzantine-robust\naggregation for benign campaigns. If no source-backed exploration is compatible, record why in the event. Flags, env\nvars, and full semantics: ",{"type":51,"tag":290,"props":1503,"children":1504},{"href":875},[1505],{"type":57,"value":1293},{"type":57,"value":469},{"type":51,"tag":79,"props":1508,"children":1510},{"id":1509},"troubleshooting",[1511],{"type":57,"value":1512},"Troubleshooting",{"type":51,"tag":60,"props":1514,"children":1515},{},[1516,1518,1522],{"type":57,"value":1517},"On import or validation failure, fix the reported contract issue without bypassing the runner. On exit 75, reuse the exact approved prefix or wait for the human. For noisy scores, follow ",{"type":51,"tag":290,"props":1519,"children":1520},{"href":883},[1521],{"type":57,"value":886},{"type":57,"value":469},{"type":51,"tag":79,"props":1524,"children":1526},{"id":1525},"stop-handling",[1527],{"type":57,"value":1528},"Stop Handling",{"type":51,"tag":60,"props":1530,"children":1531},{},[1532,1534,1539,1541,1547,1549,1554],{"type":57,"value":1533},"Only finalize when code-owned state reports ",{"type":51,"tag":70,"props":1535,"children":1537},{"className":1536},[],[1538],{"type":57,"value":870},{"type":57,"value":1540}," due to manual stop, explicit cap,\npolicy boundary, or hard blocker. Then hand off to ",{"type":51,"tag":70,"props":1542,"children":1544},{"className":1543},[],[1545],{"type":57,"value":1546},"nvflare-autofl-report",{"type":57,"value":1548}," for ",{"type":51,"tag":70,"props":1550,"children":1552},{"className":1551},[],[1553],{"type":57,"value":1429},{"type":57,"value":1555}," and final Markdown\u002FJSON.\nIf state was not finalized, confirm no campaign\u002Fjob process remains; the report skill records interruption without\nrewriting state. Return its baseline, best, provenance, literature outcomes, failures, warnings, commands, and paths.",{"type":51,"tag":1557,"props":1558,"children":1559},"style",{},[1560],{"type":57,"value":1561},"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":1563,"total":1653},[1564,1581,1594,1600,1612,1627,1638],{"slug":1565,"name":1565,"fn":1566,"description":1567,"org":1568,"tags":1569,"stars":20,"repoUrl":21,"updatedAt":1580},"autofl-nvflare","develop NVFlare Auto-FL experiments","Help coding agents work on an NVFlare-based Auto-FL harness that follows an autoresearch-style loop. Use when the user wants to create, edit, debug, or extend program.md, task folders such as tasks\u002Fcifar10\u002F and tasks\u002Fvlm_med\u002F, task-local job.py, client.py, model.py, shared custom_aggregators.py, mutation policies, results.tsv logging, or coding-agent prompts for a bounded federated-learning research loop. This skill is specifically for NVFlare harness work where the Client API loop, DIFF upload contract, and NUM_STEPS_CURRENT_ROUND metadata must stay intact unless the user explicitly asks for a protocol upgrade.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1570,1573,1576,1579],{"name":1571,"slug":1572,"type":15},"Agents","agents",{"name":1574,"slug":1575,"type":15},"Automation","automation",{"name":1577,"slug":1578,"type":15},"Engineering","engineering",{"name":9,"slug":8,"type":15},"2026-07-14T05:36:01.532575",{"slug":1582,"name":1582,"fn":1583,"description":1584,"org":1585,"tags":1586,"stars":20,"repoUrl":21,"updatedAt":1593},"autofl-nvflare-report","generate NVFlare experiment reports","Generate and commit a markdown report after an Auto-FL NVFlare autoresearch experiment has been manually stopped. Use when the user asks to summarize a stopped campaign, report achieved improvements, explain implemented literature-derived ideas and sources, refresh progress plots, capture pasted agent model\u002Feffort\u002Fcost context when available, or commit the final report and progress plot to the current experiment branch.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1587,1588,1589,1590],{"name":1574,"slug":1575,"type":15},{"name":1577,"slug":1578,"type":15},{"name":9,"slug":8,"type":15},{"name":1591,"slug":1592,"type":15},"Reporting","reporting","2026-07-14T05:36:00.281416",{"slug":4,"name":4,"fn":5,"description":6,"org":1595,"tags":1596,"stars":20,"repoUrl":21,"updatedAt":22},{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1597,1598,1599],{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"name":17,"slug":18,"type":15},{"slug":1546,"name":1546,"fn":1601,"description":1602,"org":1603,"tags":1604,"stars":20,"repoUrl":21,"updatedAt":1611},"generate NVFLARE Auto-FL campaign reports","Generate a reproducible final report, literature-outcome synthesis, JSON summary, and refreshed progress plot for a stopped or interrupted NVFLARE Auto-FL campaign.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1605,1606,1607,1608],{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"name":1591,"slug":1592,"type":15},{"name":1609,"slug":1610,"type":15},"Simulation","simulation","2026-07-30T05:26:14.661827",{"slug":1613,"name":1613,"fn":1614,"description":1615,"org":1616,"tags":1617,"stars":20,"repoUrl":21,"updatedAt":1626},"nvflare-convert-lightning","convert PyTorch Lightning code to NVFLARE","Convert existing PyTorch Lightning training code into an NVFLARE federated job using the Lightning Client API patch, local validation, and job export; do not use for plain PyTorch, other frameworks, deployment, POC\u002Fproduction lifecycle, or experiment workflows.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1618,1621,1622,1623],{"name":1619,"slug":1620,"type":15},"Data Pipeline","data-pipeline",{"name":1577,"slug":1578,"type":15},{"name":9,"slug":8,"type":15},{"name":1624,"slug":1625,"type":15},"PyTorch","pytorch","2026-07-30T05:26:15.761027",{"slug":1628,"name":1628,"fn":1629,"description":1630,"org":1631,"tags":1632,"stars":20,"repoUrl":21,"updatedAt":1637},"nvflare-convert-pytorch","convert PyTorch code to NVFLARE","Convert existing PyTorch training code into an NVFLARE federated job using Client API model exchange, local validation, and job export; do not use for other frameworks, deployment, POC\u002Fproduction lifecycle, or experiment workflows.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1633,1634,1635,1636],{"name":1619,"slug":1620,"type":15},{"name":1577,"slug":1578,"type":15},{"name":9,"slug":8,"type":15},{"name":1624,"slug":1625,"type":15},"2026-07-30T05:26:20.645495",{"slug":1639,"name":1639,"fn":1640,"description":1641,"org":1642,"tags":1643,"stars":20,"repoUrl":21,"updatedAt":1652},"nvflare-diagnose-job","diagnose failed NVFLARE jobs","Use when the user asks why a reported NVFLARE job failure signal occurred: the job failed, stalled, timed out, lost clients, ended with EXECUTION_EXCEPTION, or produced suspicious errors. Diagnose in simulation, POC, or production by collecting bounded evidence and mapping failure patterns to recovery actions.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1644,1647,1648,1649],{"name":1645,"slug":1646,"type":15},"Debugging","debugging",{"name":1577,"slug":1578,"type":15},{"name":9,"slug":8,"type":15},{"name":1650,"slug":1651,"type":15},"Observability","observability","2026-07-30T05:26:17.665774",10,{"items":1655,"total":1807},[1656,1674,1691,1702,1714,1726,1739,1751,1764,1775,1789,1798],{"slug":1657,"name":1657,"fn":1658,"description":1659,"org":1660,"tags":1661,"stars":1671,"repoUrl":1672,"updatedAt":1673},"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},[1662,1665,1668],{"name":1663,"slug":1664,"type":15},"Documentation","documentation",{"name":1666,"slug":1667,"type":15},"MCP","mcp",{"name":1669,"slug":1670,"type":15},"Search","search",21777,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FNemoClaw","2026-07-20T06:00:01.461044",{"slug":1675,"name":1675,"fn":1676,"description":1677,"org":1678,"tags":1679,"stars":1688,"repoUrl":1689,"updatedAt":1690},"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},[1680,1683,1686],{"name":1681,"slug":1682,"type":15},"Containers","containers",{"name":1684,"slug":1685,"type":15},"Deployment","deployment",{"name":1687,"slug":32,"type":15},"Python",17049,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM","2026-07-27T06:06:11.249662",{"slug":1692,"name":1692,"fn":1693,"description":1694,"org":1695,"tags":1696,"stars":1688,"repoUrl":1689,"updatedAt":1701},"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},[1697,1700],{"name":1698,"slug":1699,"type":15},"CI\u002FCD","ci-cd",{"name":1684,"slug":1685,"type":15},"2026-07-14T05:25:59.97109",{"slug":1703,"name":1703,"fn":1704,"description":1705,"org":1706,"tags":1707,"stars":1688,"repoUrl":1689,"updatedAt":1713},"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},[1708,1709,1710],{"name":1698,"slug":1699,"type":15},{"name":1684,"slug":1685,"type":15},{"name":1711,"slug":1712,"type":15},"GitHub","github","2026-07-27T06:06:12.278222",{"slug":1715,"name":1715,"fn":1716,"description":1717,"org":1718,"tags":1719,"stars":1688,"repoUrl":1689,"updatedAt":1725},"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},[1720,1721,1722],{"name":1645,"slug":1646,"type":15},{"name":1711,"slug":1712,"type":15},{"name":1723,"slug":1724,"type":15},"Triage","triage","2026-07-14T05:25:57.442089",{"slug":1727,"name":1727,"fn":1728,"description":1729,"org":1730,"tags":1731,"stars":1688,"repoUrl":1689,"updatedAt":1738},"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},[1732,1735],{"name":1733,"slug":1734,"type":15},"Best Practices","best-practices",{"name":1736,"slug":1737,"type":15},"Code Analysis","code-analysis","2026-07-14T05:25:56.18433",{"slug":1740,"name":1740,"fn":1741,"description":1742,"org":1743,"tags":1744,"stars":1688,"repoUrl":1689,"updatedAt":1750},"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},[1745,1746,1749],{"name":13,"slug":14,"type":15},{"name":1747,"slug":1748,"type":15},"Migration","migration",{"name":9,"slug":8,"type":15},"2026-07-17T06:07:11.777011",{"slug":1752,"name":1752,"fn":1753,"description":1754,"org":1755,"tags":1756,"stars":1688,"repoUrl":1689,"updatedAt":1763},"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},[1757,1760],{"name":1758,"slug":1759,"type":15},"QA","qa",{"name":1761,"slug":1762,"type":15},"Testing","testing","2026-07-14T05:25:53.673039",{"slug":1765,"name":1765,"fn":1766,"description":1767,"org":1768,"tags":1769,"stars":1688,"repoUrl":1689,"updatedAt":1774},"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},[1770,1771],{"name":1684,"slug":1685,"type":15},{"name":1772,"slug":1773,"type":15},"Infrastructure","infrastructure","2026-07-14T05:25:49.362534",{"slug":1776,"name":1776,"fn":1777,"description":1778,"org":1779,"tags":1780,"stars":1688,"repoUrl":1689,"updatedAt":1788},"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},[1781,1784,1785],{"name":1782,"slug":1783,"type":15},"Code Review","code-review",{"name":1711,"slug":1712,"type":15},{"name":1786,"slug":1787,"type":15},"Pull Requests","pull-requests","2026-07-14T05:26:01.226578",{"slug":1790,"name":1790,"fn":1791,"description":1792,"org":1793,"tags":1794,"stars":1688,"repoUrl":1689,"updatedAt":1797},"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},[1795,1796],{"name":1758,"slug":1759,"type":15},{"name":1761,"slug":1762,"type":15},"2026-07-14T05:25:54.928983",{"slug":1799,"name":1799,"fn":1800,"description":1801,"org":1802,"tags":1803,"stars":1688,"repoUrl":1689,"updatedAt":1806},"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},[1804,1805],{"name":1574,"slug":1575,"type":15},{"name":1698,"slug":1699,"type":15},"2026-07-30T05:29:03.275638",496]