[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-nvidia-nvflare-autofl-report":3,"mdc-y6xtrr-key":41,"related-org-nvidia-nvflare-autofl-report":961,"related-repo-nvidia-nvflare-autofl-report":1119},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":36,"sourceUrl":39,"mdContent":40},"nvflare-autofl-report","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},"nvidia","NVIDIA","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fnvidia.png",[12,16,19,20],{"name":13,"slug":14,"type":15},"Reporting","reporting","tag",{"name":17,"slug":18,"type":15},"Machine Learning","machine-learning",{"name":9,"slug":8,"type":15},{"name":21,"slug":22,"type":15},"Simulation","simulation",947,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FNVFlare","2026-07-30T05:26:14.661827","Apache-2.0",266,[29,30,31,32,33,34,35],"decentralized","federated-analytics","federated-computing","federated-learning","pet","privacy-protection","python",{"repoUrl":24,"stars":23,"forks":27,"topics":37,"description":38},[29,30,31,32,33,34,35],"NVIDIA Federated Learning Application Runtime Environment","https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FNVFlare\u002Ftree\u002FHEAD\u002Fskills\u002Fnvflare-autofl-report","---\nname: nvflare-autofl-report\ndescription: \"Generate a reproducible final report, literature-outcome synthesis, JSON summary, and refreshed progress plot for a stopped or interrupted NVFLARE Auto-FL campaign.\"\nlicense: Apache-2.0\ncompatibility: \"Requires NVFLARE 2.9.0+, Python, and artifacts from an NVFLARE Auto-FL campaign.\"\nmetadata:\n  author: \"NVIDIA FLARE Team \u003Cfederatedlearning@nvidia.com>\"\n  min_flare_version: \"2.9.0\"\n  blast_radius: edits_files\n  category: Reporting\n  version: \"0.1.0\"\n  tags: \"nvflare, federated-learning, optimization, reporting\"\n  languages: \"python\"\n---\n\n# NVFLARE Auto-FL Report\n\n## Purpose\n\nTurn the recorded evidence from a stopped NVFLARE Auto-FL campaign into a\nreproducible Markdown report, machine-readable JSON summary, and refreshed\nprogress plot without changing the campaign or its results.\n\n## Use When\n\nUse this skill after an NVFLARE Auto-FL campaign has stopped, reached an\nexplicit cap, hit a hard blocker, or was manually interrupted. Use it when the\nuser asks for the final report, achieved improvement, literature findings,\nfailed ideas, reproduction details, or a refreshed progress plot.\n\n## Do Not Use When\n\nDo not use this skill to start or continue optimization, invent missing\nresults, or finalize a campaign that is still running. Use `nvflare-autofl` for\nthe active candidate loop. Do not stop an active campaign merely because the\nuser asks for a status snapshot.\n\n## Available Scripts\n\n| Script | Purpose | Arguments |\n| --- | --- | --- |\n| `scripts\u002Fgenerate_report.py` | Validate stopped campaign evidence and generate the report, JSON summary, and optional progress plot. | Campaign job directory; optional evidence\u002Foutput paths, interruption confirmation, plot settings, and agent context. Run `python scripts\u002Fgenerate_report.py --help` for the complete CLI. |\n\nRun this bundled CLI directly with Python. This skill has no NVFLARE or agent\n`run_script()` helper; do not invent or call one. Resolve the script from the\ndirectory containing this `SKILL.md`, as shown in the workflow.\n\n## Workflow\n\n1. Locate the job directory containing `results.tsv`, `autofl.yaml`,\n   `.nvflare\u002Fautofl\u002Fcampaign_state.json`, and candidate manifests.\n2. Confirm execution has stopped. Prefer campaign state with\n   `final_response_allowed=true`. When a process was abruptly interrupted and\n   state is stale, independently confirm no campaign or job process remains,\n   then use `--confirm-interrupted`. Before finalizing, confirm that campaign\n   state, `results.tsv`, and available candidate manifests contain no pending\n   candidate. Finalize or abandon pending work through `nvflare-autofl` first.\n3. Generate the deterministic report artifacts:\n\n   ```bash\n   python \"$REPORTER\" \u003Cjob-dir>\n   ```\n\n   Resolve `REPORTER` once to the absolute path of\n   `scripts\u002Fgenerate_report.py` relative to this `SKILL.md`. Do not assume a\n   provider-specific skill installation directory or `$CODEX_HOME`.\n\n4. Read both **autofl_final_report.md** and `autofl_report_summary.json`. Check\n   warnings about metric use, executed budget changes, campaign-state\u002Fledger\n   disagreement, missing provenance, and incomplete interruption state.\n5. Give the user the baseline, best score, delta, strongest candidate lineage,\n   concise \"what helped\" and \"what did not help\" findings, literature ideas\n   that helped or failed, selection rationale, reliability caveats, and\n   absolute artifact paths.\n\nThe helper attempts to refresh `progress.png` by reusing the product Auto-FL\nplotter. Plotting is optional evidence: if plotting dependencies are missing or\nthe artifact is not a valid PNG, the helper preserves the artifact, records a\nwarning and `artifacts.progress_plot_available=false`, and still writes the\nMarkdown and JSON reports without embedding the broken image. It does not\nmodify source, candidate manifests, `results.tsv`, or campaign state.\nAll relative helper path options, including `--plotter`, resolve from the\ncampaign job directory rather than the shell's current working directory.\nThe helper holds the campaign lifecycle lock from evidence loading through\nartifact writes. It refuses a busy campaign and rejects writable output paths\nthat alias campaign evidence, `job.py`, trust-contract source paths, or another\noutput, including filesystem aliases. Outputs must not match the trust\ncontract's allowed source-creation patterns.\nA read-only campaign archive is reportable only when its persisted\n`campaign.lock` already exists and writable output paths are supplied; the\npersisted lock target alone does not imply live contention.\n\n## Interrupted Campaigns\n\nThe report helper must refuse state with `final_response_allowed=false` unless\nthe human has said the campaign was stopped\u002Finterrupted and the agent confirms\nthat execution is no longer active. Only then run:\n\n```bash\npython \"$REPORTER\" \u003Cjob-dir> --confirm-interrupted\n```\n\nThis records a reporting-time interruption assertion; it does not rewrite the\ncampaign state or pretend the runner finalized cleanly. It bypasses only stale\nstop state. A `candidate` ledger row or pending-candidate state always blocks\nfinalization. Any available candidate manifest whose status is not a recognized\nterminal value (`keep`, `discard`, `crash`, or `abandoned`) also blocks. Missing,\nunknown, or unreadable status is unfinished evidence because completion cannot\nbe established. The agent must finalize or abandon that candidate first.\n\n## Troubleshooting\n\n| Error or symptom | Cause | Solution |\n| --- | --- | --- |\n| Reporting is refused because `final_response_allowed=false`. | The campaign may still be active, or persisted state may be stale after an interruption. | Confirm no campaign or job process remains. If a human confirmed the interruption, rerun with `--confirm-interrupted`; otherwise continue or stop the campaign through `nvflare-autofl`. |\n| Reporting is refused for a pending candidate or unknown manifest status. | The recorded evidence cannot establish that candidate execution finished. | Finalize or abandon the candidate through `nvflare-autofl`, then regenerate the report. |\n| The campaign lock is busy. | Another campaign or reporting process holds the lifecycle lock. | Identify and wait for the active process. Never bypass or delete a live lock. |\n| The JSON says `progress_plot_available=false`. | Plotting dependencies are unavailable or the generated artifact is not a valid PNG. | Use the completed Markdown and JSON reports, review their warning, and install the campaign's plotting dependencies before retrying if a plot is required. |\n| An output path is rejected. | The path aliases protected campaign evidence, source, or another output. | Choose distinct writable output paths outside protected campaign inputs and rerun. |\n\n## Report Contract\n\nThe final report must include:\n\n- campaign termination reason, objective, metric source, direction,\n  environment, cap, abandoned-candidate count, and declared fixed budget;\n- baseline, best retained result, score delta, runtime, failures, and status\n  counts;\n- selected-candidate rationale, strict retained improvements, representative\n  non-improvements, grouped failures, and outcomes by recorded algorithm\n  family;\n- running-best trajectory selected by first, final, and largest objective improvements,\n  plus a refreshed `progress.png` when plotting is available, with explicit\n  plot availability in the JSON summary otherwise;\n- best-candidate manifest, patch hash, base-candidate lineage, inherited code\n  changes, artifacts, and exact baseline\u002Fbest commands;\n- every recorded literature checkpoint, its event ID and source markers,\n  explicitly linked candidates, and whether measured evidence helped, matched,\n  failed, or did not confirm the idea;\n- discarded\u002Fcrashed ideas and deterministic comparability warnings;\n- optional agent model, reasoning effort, cost, or tooling notes when supplied;\n- absolute paths to `autofl.yaml`, `results.tsv`, campaign state,\n  `progress.png`, `autofl_report_summary.json`, and\n  **autofl_final_report.md**.\n\nThe report must distinguish imported\u002Fdeclared budget from executed command\narguments. It must warn when the best candidate changed training compute or\ncomparison population, when authoritative state disagrees with ledger-derived\naccounting, or when repeated selection used a test-like metric. Product Auto-FL\ncampaigns maximize their metric; the report rejects obsolete minimization\ncontracts. It must not add PR-specific sections such as \"Product Findings\"\nunless the user explicitly requests them.\n`best` means a scored retained baseline or `keep` row; an unretained scored\n`discard` may appear only as `best_observed`. Candidate and crash rows never\nbecome retained best results, milestones, or literature improvements.\nBaseline identity is determined strictly by `status=baseline`, matching the\ncampaign guard. The report preserves per-run metric name, extraction source,\nartifact, candidate kind, algorithm family, and literature event linkage.\nIt does not infer algorithm families or mechanisms from candidate names.\n\nRead [report-contract.md](references\u002Freport-contract.md) when interpreting\nlineage, literature outcomes, budget warnings, or interrupted state.\n\n## Limitations\n\n- The report is only as complete as the persisted ledger, campaign state, and\n  candidate manifests; it does not validate or reconstruct unrecorded claims.\n- Results from a single campaign do not establish robustness or\n  generalization.\n- The helper does not start, stop, resume, or resubmit campaign jobs.\n- Progress plotting remains optional, so Markdown and JSON may be produced\n  without an embeddable PNG.\n- Copied campaign archives may retain only partial provenance when recorded\n  absolute manifest paths are no longer available.\n\n## Requirements\n\n- Treat `results.tsv` as recorded evidence; never repair scores by guessing.\n- Work without Git. Do not commit or push unless the user separately asks.\n- Preserve the campaign and job sources exactly as found.\n- Never bypass campaign-lock contention or output-path collision checks.\n- Use candidate manifests when available, but still report partial provenance\n  when copied artifacts make old absolute manifest paths unavailable.\n- Keep conclusions proportional to the evidence. A single run is a candidate,\n  not a robustness claim.\n- For POC\u002Fproduction, report standard NVFLARE job IDs and downloaded artifacts\n  already present in the ledger; do not resubmit jobs during reporting.\n",{"data":42,"body":50},{"name":4,"description":6,"license":26,"compatibility":43,"metadata":44},"Requires NVFLARE 2.9.0+, Python, and artifacts from an NVFLARE Auto-FL campaign.",{"author":45,"min_flare_version":46,"blast_radius":47,"category":13,"version":48,"tags":49,"languages":35},"NVIDIA FLARE Team \u003Cfederatedlearning@nvidia.com>","2.9.0","edits_files","0.1.0","nvflare, federated-learning, optimization, reporting",{"type":51,"children":52},"root",[53,62,69,75,81,86,92,106,112,174,195,201,397,449,455,468,516,559,565,715,721,726,813,856,870,876,904,910,955],{"type":54,"tag":55,"props":56,"children":58},"element","h1",{"id":57},"nvflare-auto-fl-report",[59],{"type":60,"value":61},"text","NVFLARE Auto-FL Report",{"type":54,"tag":63,"props":64,"children":66},"h2",{"id":65},"purpose",[67],{"type":60,"value":68},"Purpose",{"type":54,"tag":70,"props":71,"children":72},"p",{},[73],{"type":60,"value":74},"Turn the recorded evidence from a stopped NVFLARE Auto-FL campaign into a\nreproducible Markdown report, machine-readable JSON summary, and refreshed\nprogress plot without changing the campaign or its results.",{"type":54,"tag":63,"props":76,"children":78},{"id":77},"use-when",[79],{"type":60,"value":80},"Use When",{"type":54,"tag":70,"props":82,"children":83},{},[84],{"type":60,"value":85},"Use this skill after an NVFLARE Auto-FL campaign has stopped, reached an\nexplicit cap, hit a hard blocker, or was manually interrupted. Use it when the\nuser asks for the final report, achieved improvement, literature findings,\nfailed ideas, reproduction details, or a refreshed progress plot.",{"type":54,"tag":63,"props":87,"children":89},{"id":88},"do-not-use-when",[90],{"type":60,"value":91},"Do Not Use When",{"type":54,"tag":70,"props":93,"children":94},{},[95,97,104],{"type":60,"value":96},"Do not use this skill to start or continue optimization, invent missing\nresults, or finalize a campaign that is still running. Use ",{"type":54,"tag":98,"props":99,"children":101},"code",{"className":100},[],[102],{"type":60,"value":103},"nvflare-autofl",{"type":60,"value":105}," for\nthe active candidate loop. Do not stop an active campaign merely because the\nuser asks for a status snapshot.",{"type":54,"tag":63,"props":107,"children":109},{"id":108},"available-scripts",[110],{"type":60,"value":111},"Available Scripts",{"type":54,"tag":113,"props":114,"children":115},"table",{},[116,139],{"type":54,"tag":117,"props":118,"children":119},"thead",{},[120],{"type":54,"tag":121,"props":122,"children":123},"tr",{},[124,130,134],{"type":54,"tag":125,"props":126,"children":127},"th",{},[128],{"type":60,"value":129},"Script",{"type":54,"tag":125,"props":131,"children":132},{},[133],{"type":60,"value":68},{"type":54,"tag":125,"props":135,"children":136},{},[137],{"type":60,"value":138},"Arguments",{"type":54,"tag":140,"props":141,"children":142},"tbody",{},[143],{"type":54,"tag":121,"props":144,"children":145},{},[146,156,161],{"type":54,"tag":147,"props":148,"children":149},"td",{},[150],{"type":54,"tag":98,"props":151,"children":153},{"className":152},[],[154],{"type":60,"value":155},"scripts\u002Fgenerate_report.py",{"type":54,"tag":147,"props":157,"children":158},{},[159],{"type":60,"value":160},"Validate stopped campaign evidence and generate the report, JSON summary, and optional progress plot.",{"type":54,"tag":147,"props":162,"children":163},{},[164,166,172],{"type":60,"value":165},"Campaign job directory; optional evidence\u002Foutput paths, interruption confirmation, plot settings, and agent context. Run ",{"type":54,"tag":98,"props":167,"children":169},{"className":168},[],[170],{"type":60,"value":171},"python scripts\u002Fgenerate_report.py --help",{"type":60,"value":173}," for the complete CLI.",{"type":54,"tag":70,"props":175,"children":176},{},[177,179,185,187,193],{"type":60,"value":178},"Run this bundled CLI directly with Python. This skill has no NVFLARE or agent\n",{"type":54,"tag":98,"props":180,"children":182},{"className":181},[],[183],{"type":60,"value":184},"run_script()",{"type":60,"value":186}," helper; do not invent or call one. Resolve the script from the\ndirectory containing this ",{"type":54,"tag":98,"props":188,"children":190},{"className":189},[],[191],{"type":60,"value":192},"SKILL.md",{"type":60,"value":194},", as shown in the workflow.",{"type":54,"tag":63,"props":196,"children":198},{"id":197},"workflow",[199],{"type":60,"value":200},"Workflow",{"type":54,"tag":202,"props":203,"children":204},"ol",{},[205,235,270,371,392],{"type":54,"tag":206,"props":207,"children":208},"li",{},[209,211,217,219,225,227,233],{"type":60,"value":210},"Locate the job directory containing ",{"type":54,"tag":98,"props":212,"children":214},{"className":213},[],[215],{"type":60,"value":216},"results.tsv",{"type":60,"value":218},", ",{"type":54,"tag":98,"props":220,"children":222},{"className":221},[],[223],{"type":60,"value":224},"autofl.yaml",{"type":60,"value":226},",\n",{"type":54,"tag":98,"props":228,"children":230},{"className":229},[],[231],{"type":60,"value":232},".nvflare\u002Fautofl\u002Fcampaign_state.json",{"type":60,"value":234},", and candidate manifests.",{"type":54,"tag":206,"props":236,"children":237},{},[238,240,246,248,254,256,261,263,268],{"type":60,"value":239},"Confirm execution has stopped. Prefer campaign state with\n",{"type":54,"tag":98,"props":241,"children":243},{"className":242},[],[244],{"type":60,"value":245},"final_response_allowed=true",{"type":60,"value":247},". When a process was abruptly interrupted and\nstate is stale, independently confirm no campaign or job process remains,\nthen use ",{"type":54,"tag":98,"props":249,"children":251},{"className":250},[],[252],{"type":60,"value":253},"--confirm-interrupted",{"type":60,"value":255},". Before finalizing, confirm that campaign\nstate, ",{"type":54,"tag":98,"props":257,"children":259},{"className":258},[],[260],{"type":60,"value":216},{"type":60,"value":262},", and available candidate manifests contain no pending\ncandidate. Finalize or abandon pending work through ",{"type":54,"tag":98,"props":264,"children":266},{"className":265},[],[267],{"type":60,"value":103},{"type":60,"value":269}," first.",{"type":54,"tag":206,"props":271,"children":272},{},[273,275,335,339,341,347,349,354,356,361,363,369],{"type":60,"value":274},"Generate the deterministic report artifacts:",{"type":54,"tag":276,"props":277,"children":282},"pre",{"className":278,"code":279,"language":280,"meta":281,"style":281},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","python \"$REPORTER\" \u003Cjob-dir>\n","bash","",[283],{"type":54,"tag":98,"props":284,"children":285},{"__ignoreMap":281},[286],{"type":54,"tag":287,"props":288,"children":291},"span",{"class":289,"line":290},"line",1,[292,297,303,309,314,319,325,330],{"type":54,"tag":287,"props":293,"children":295},{"style":294},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[296],{"type":60,"value":35},{"type":54,"tag":287,"props":298,"children":300},{"style":299},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[301],{"type":60,"value":302}," \"",{"type":54,"tag":287,"props":304,"children":306},{"style":305},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[307],{"type":60,"value":308},"$REPORTER",{"type":54,"tag":287,"props":310,"children":311},{"style":299},[312],{"type":60,"value":313},"\"",{"type":54,"tag":287,"props":315,"children":316},{"style":299},[317],{"type":60,"value":318}," \u003C",{"type":54,"tag":287,"props":320,"children":322},{"style":321},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[323],{"type":60,"value":324},"job-di",{"type":54,"tag":287,"props":326,"children":327},{"style":305},[328],{"type":60,"value":329},"r",{"type":54,"tag":287,"props":331,"children":332},{"style":299},[333],{"type":60,"value":334},">\n",{"type":54,"tag":336,"props":337,"children":338},"br",{},[],{"type":60,"value":340},"Resolve ",{"type":54,"tag":98,"props":342,"children":344},{"className":343},[],[345],{"type":60,"value":346},"REPORTER",{"type":60,"value":348}," once to the absolute path of\n",{"type":54,"tag":98,"props":350,"children":352},{"className":351},[],[353],{"type":60,"value":155},{"type":60,"value":355}," relative to this ",{"type":54,"tag":98,"props":357,"children":359},{"className":358},[],[360],{"type":60,"value":192},{"type":60,"value":362},". Do not assume a\nprovider-specific skill installation directory or ",{"type":54,"tag":98,"props":364,"children":366},{"className":365},[],[367],{"type":60,"value":368},"$CODEX_HOME",{"type":60,"value":370},".",{"type":54,"tag":206,"props":372,"children":373},{},[374,376,382,384,390],{"type":60,"value":375},"Read both ",{"type":54,"tag":377,"props":378,"children":379},"strong",{},[380],{"type":60,"value":381},"autofl_final_report.md",{"type":60,"value":383}," and ",{"type":54,"tag":98,"props":385,"children":387},{"className":386},[],[388],{"type":60,"value":389},"autofl_report_summary.json",{"type":60,"value":391},". Check\nwarnings about metric use, executed budget changes, campaign-state\u002Fledger\ndisagreement, missing provenance, and incomplete interruption state.",{"type":54,"tag":206,"props":393,"children":394},{},[395],{"type":60,"value":396},"Give the user the baseline, best score, delta, strongest candidate lineage,\nconcise \"what helped\" and \"what did not help\" findings, literature ideas\nthat helped or failed, selection rationale, reliability caveats, and\nabsolute artifact paths.",{"type":54,"tag":70,"props":398,"children":399},{},[400,402,408,410,416,418,423,425,431,433,439,441,447],{"type":60,"value":401},"The helper attempts to refresh ",{"type":54,"tag":98,"props":403,"children":405},{"className":404},[],[406],{"type":60,"value":407},"progress.png",{"type":60,"value":409}," by reusing the product Auto-FL\nplotter. Plotting is optional evidence: if plotting dependencies are missing or\nthe artifact is not a valid PNG, the helper preserves the artifact, records a\nwarning and ",{"type":54,"tag":98,"props":411,"children":413},{"className":412},[],[414],{"type":60,"value":415},"artifacts.progress_plot_available=false",{"type":60,"value":417},", and still writes the\nMarkdown and JSON reports without embedding the broken image. It does not\nmodify source, candidate manifests, ",{"type":54,"tag":98,"props":419,"children":421},{"className":420},[],[422],{"type":60,"value":216},{"type":60,"value":424},", or campaign state.\nAll relative helper path options, including ",{"type":54,"tag":98,"props":426,"children":428},{"className":427},[],[429],{"type":60,"value":430},"--plotter",{"type":60,"value":432},", resolve from the\ncampaign job directory rather than the shell's current working directory.\nThe helper holds the campaign lifecycle lock from evidence loading through\nartifact writes. It refuses a busy campaign and rejects writable output paths\nthat alias campaign evidence, ",{"type":54,"tag":98,"props":434,"children":436},{"className":435},[],[437],{"type":60,"value":438},"job.py",{"type":60,"value":440},", trust-contract source paths, or another\noutput, including filesystem aliases. Outputs must not match the trust\ncontract's allowed source-creation patterns.\nA read-only campaign archive is reportable only when its persisted\n",{"type":54,"tag":98,"props":442,"children":444},{"className":443},[],[445],{"type":60,"value":446},"campaign.lock",{"type":60,"value":448}," already exists and writable output paths are supplied; the\npersisted lock target alone does not imply live contention.",{"type":54,"tag":63,"props":450,"children":452},{"id":451},"interrupted-campaigns",[453],{"type":60,"value":454},"Interrupted Campaigns",{"type":54,"tag":70,"props":456,"children":457},{},[458,460,466],{"type":60,"value":459},"The report helper must refuse state with ",{"type":54,"tag":98,"props":461,"children":463},{"className":462},[],[464],{"type":60,"value":465},"final_response_allowed=false",{"type":60,"value":467}," unless\nthe human has said the campaign was stopped\u002Finterrupted and the agent confirms\nthat execution is no longer active. Only then run:",{"type":54,"tag":276,"props":469,"children":471},{"className":278,"code":470,"language":280,"meta":281,"style":281},"python \"$REPORTER\" \u003Cjob-dir> --confirm-interrupted\n",[472],{"type":54,"tag":98,"props":473,"children":474},{"__ignoreMap":281},[475],{"type":54,"tag":287,"props":476,"children":477},{"class":289,"line":290},[478,482,486,490,494,498,502,506,511],{"type":54,"tag":287,"props":479,"children":480},{"style":294},[481],{"type":60,"value":35},{"type":54,"tag":287,"props":483,"children":484},{"style":299},[485],{"type":60,"value":302},{"type":54,"tag":287,"props":487,"children":488},{"style":305},[489],{"type":60,"value":308},{"type":54,"tag":287,"props":491,"children":492},{"style":299},[493],{"type":60,"value":313},{"type":54,"tag":287,"props":495,"children":496},{"style":299},[497],{"type":60,"value":318},{"type":54,"tag":287,"props":499,"children":500},{"style":321},[501],{"type":60,"value":324},{"type":54,"tag":287,"props":503,"children":504},{"style":305},[505],{"type":60,"value":329},{"type":54,"tag":287,"props":507,"children":508},{"style":299},[509],{"type":60,"value":510},">",{"type":54,"tag":287,"props":512,"children":513},{"style":321},[514],{"type":60,"value":515}," --confirm-interrupted\n",{"type":54,"tag":70,"props":517,"children":518},{},[519,521,527,529,535,536,542,543,549,551,557],{"type":60,"value":520},"This records a reporting-time interruption assertion; it does not rewrite the\ncampaign state or pretend the runner finalized cleanly. It bypasses only stale\nstop state. A ",{"type":54,"tag":98,"props":522,"children":524},{"className":523},[],[525],{"type":60,"value":526},"candidate",{"type":60,"value":528}," ledger row or pending-candidate state always blocks\nfinalization. Any available candidate manifest whose status is not a recognized\nterminal value (",{"type":54,"tag":98,"props":530,"children":532},{"className":531},[],[533],{"type":60,"value":534},"keep",{"type":60,"value":218},{"type":54,"tag":98,"props":537,"children":539},{"className":538},[],[540],{"type":60,"value":541},"discard",{"type":60,"value":218},{"type":54,"tag":98,"props":544,"children":546},{"className":545},[],[547],{"type":60,"value":548},"crash",{"type":60,"value":550},", or ",{"type":54,"tag":98,"props":552,"children":554},{"className":553},[],[555],{"type":60,"value":556},"abandoned",{"type":60,"value":558},") also blocks. Missing,\nunknown, or unreadable status is unfinished evidence because completion cannot\nbe established. The agent must finalize or abandon that candidate first.",{"type":54,"tag":63,"props":560,"children":562},{"id":561},"troubleshooting",[563],{"type":60,"value":564},"Troubleshooting",{"type":54,"tag":113,"props":566,"children":567},{},[568,589],{"type":54,"tag":117,"props":569,"children":570},{},[571],{"type":54,"tag":121,"props":572,"children":573},{},[574,579,584],{"type":54,"tag":125,"props":575,"children":576},{},[577],{"type":60,"value":578},"Error or symptom",{"type":54,"tag":125,"props":580,"children":581},{},[582],{"type":60,"value":583},"Cause",{"type":54,"tag":125,"props":585,"children":586},{},[587],{"type":60,"value":588},"Solution",{"type":54,"tag":140,"props":590,"children":591},{},[592,629,654,672,697],{"type":54,"tag":121,"props":593,"children":594},{},[595,606,611],{"type":54,"tag":147,"props":596,"children":597},{},[598,600,605],{"type":60,"value":599},"Reporting is refused because ",{"type":54,"tag":98,"props":601,"children":603},{"className":602},[],[604],{"type":60,"value":465},{"type":60,"value":370},{"type":54,"tag":147,"props":607,"children":608},{},[609],{"type":60,"value":610},"The campaign may still be active, or persisted state may be stale after an interruption.",{"type":54,"tag":147,"props":612,"children":613},{},[614,616,621,623,628],{"type":60,"value":615},"Confirm no campaign or job process remains. If a human confirmed the interruption, rerun with ",{"type":54,"tag":98,"props":617,"children":619},{"className":618},[],[620],{"type":60,"value":253},{"type":60,"value":622},"; otherwise continue or stop the campaign through ",{"type":54,"tag":98,"props":624,"children":626},{"className":625},[],[627],{"type":60,"value":103},{"type":60,"value":370},{"type":54,"tag":121,"props":630,"children":631},{},[632,637,642],{"type":54,"tag":147,"props":633,"children":634},{},[635],{"type":60,"value":636},"Reporting is refused for a pending candidate or unknown manifest status.",{"type":54,"tag":147,"props":638,"children":639},{},[640],{"type":60,"value":641},"The recorded evidence cannot establish that candidate execution finished.",{"type":54,"tag":147,"props":643,"children":644},{},[645,647,652],{"type":60,"value":646},"Finalize or abandon the candidate through ",{"type":54,"tag":98,"props":648,"children":650},{"className":649},[],[651],{"type":60,"value":103},{"type":60,"value":653},", then regenerate the report.",{"type":54,"tag":121,"props":655,"children":656},{},[657,662,667],{"type":54,"tag":147,"props":658,"children":659},{},[660],{"type":60,"value":661},"The campaign lock is busy.",{"type":54,"tag":147,"props":663,"children":664},{},[665],{"type":60,"value":666},"Another campaign or reporting process holds the lifecycle lock.",{"type":54,"tag":147,"props":668,"children":669},{},[670],{"type":60,"value":671},"Identify and wait for the active process. Never bypass or delete a live lock.",{"type":54,"tag":121,"props":673,"children":674},{},[675,687,692],{"type":54,"tag":147,"props":676,"children":677},{},[678,680,686],{"type":60,"value":679},"The JSON says ",{"type":54,"tag":98,"props":681,"children":683},{"className":682},[],[684],{"type":60,"value":685},"progress_plot_available=false",{"type":60,"value":370},{"type":54,"tag":147,"props":688,"children":689},{},[690],{"type":60,"value":691},"Plotting dependencies are unavailable or the generated artifact is not a valid PNG.",{"type":54,"tag":147,"props":693,"children":694},{},[695],{"type":60,"value":696},"Use the completed Markdown and JSON reports, review their warning, and install the campaign's plotting dependencies before retrying if a plot is required.",{"type":54,"tag":121,"props":698,"children":699},{},[700,705,710],{"type":54,"tag":147,"props":701,"children":702},{},[703],{"type":60,"value":704},"An output path is rejected.",{"type":54,"tag":147,"props":706,"children":707},{},[708],{"type":60,"value":709},"The path aliases protected campaign evidence, source, or another output.",{"type":54,"tag":147,"props":711,"children":712},{},[713],{"type":60,"value":714},"Choose distinct writable output paths outside protected campaign inputs and rerun.",{"type":54,"tag":63,"props":716,"children":718},{"id":717},"report-contract",[719],{"type":60,"value":720},"Report Contract",{"type":54,"tag":70,"props":722,"children":723},{},[724],{"type":60,"value":725},"The final report must include:",{"type":54,"tag":727,"props":728,"children":729},"ul",{},[730,735,740,745,757,762,767,772,777],{"type":54,"tag":206,"props":731,"children":732},{},[733],{"type":60,"value":734},"campaign termination reason, objective, metric source, direction,\nenvironment, cap, abandoned-candidate count, and declared fixed budget;",{"type":54,"tag":206,"props":736,"children":737},{},[738],{"type":60,"value":739},"baseline, best retained result, score delta, runtime, failures, and status\ncounts;",{"type":54,"tag":206,"props":741,"children":742},{},[743],{"type":60,"value":744},"selected-candidate rationale, strict retained improvements, representative\nnon-improvements, grouped failures, and outcomes by recorded algorithm\nfamily;",{"type":54,"tag":206,"props":746,"children":747},{},[748,750,755],{"type":60,"value":749},"running-best trajectory selected by first, final, and largest objective improvements,\nplus a refreshed ",{"type":54,"tag":98,"props":751,"children":753},{"className":752},[],[754],{"type":60,"value":407},{"type":60,"value":756}," when plotting is available, with explicit\nplot availability in the JSON summary otherwise;",{"type":54,"tag":206,"props":758,"children":759},{},[760],{"type":60,"value":761},"best-candidate manifest, patch hash, base-candidate lineage, inherited code\nchanges, artifacts, and exact baseline\u002Fbest commands;",{"type":54,"tag":206,"props":763,"children":764},{},[765],{"type":60,"value":766},"every recorded literature checkpoint, its event ID and source markers,\nexplicitly linked candidates, and whether measured evidence helped, matched,\nfailed, or did not confirm the idea;",{"type":54,"tag":206,"props":768,"children":769},{},[770],{"type":60,"value":771},"discarded\u002Fcrashed ideas and deterministic comparability warnings;",{"type":54,"tag":206,"props":773,"children":774},{},[775],{"type":60,"value":776},"optional agent model, reasoning effort, cost, or tooling notes when supplied;",{"type":54,"tag":206,"props":778,"children":779},{},[780,782,787,788,793,795,800,801,806,808,812],{"type":60,"value":781},"absolute paths to ",{"type":54,"tag":98,"props":783,"children":785},{"className":784},[],[786],{"type":60,"value":224},{"type":60,"value":218},{"type":54,"tag":98,"props":789,"children":791},{"className":790},[],[792],{"type":60,"value":216},{"type":60,"value":794},", campaign state,\n",{"type":54,"tag":98,"props":796,"children":798},{"className":797},[],[799],{"type":60,"value":407},{"type":60,"value":218},{"type":54,"tag":98,"props":802,"children":804},{"className":803},[],[805],{"type":60,"value":389},{"type":60,"value":807},", and\n",{"type":54,"tag":377,"props":809,"children":810},{},[811],{"type":60,"value":381},{"type":60,"value":370},{"type":54,"tag":70,"props":814,"children":815},{},[816,818,824,826,831,833,838,840,846,848,854],{"type":60,"value":817},"The report must distinguish imported\u002Fdeclared budget from executed command\narguments. It must warn when the best candidate changed training compute or\ncomparison population, when authoritative state disagrees with ledger-derived\naccounting, or when repeated selection used a test-like metric. Product Auto-FL\ncampaigns maximize their metric; the report rejects obsolete minimization\ncontracts. It must not add PR-specific sections such as \"Product Findings\"\nunless the user explicitly requests them.\n",{"type":54,"tag":98,"props":819,"children":821},{"className":820},[],[822],{"type":60,"value":823},"best",{"type":60,"value":825}," means a scored retained baseline or ",{"type":54,"tag":98,"props":827,"children":829},{"className":828},[],[830],{"type":60,"value":534},{"type":60,"value":832}," row; an unretained scored\n",{"type":54,"tag":98,"props":834,"children":836},{"className":835},[],[837],{"type":60,"value":541},{"type":60,"value":839}," may appear only as ",{"type":54,"tag":98,"props":841,"children":843},{"className":842},[],[844],{"type":60,"value":845},"best_observed",{"type":60,"value":847},". Candidate and crash rows never\nbecome retained best results, milestones, or literature improvements.\nBaseline identity is determined strictly by ",{"type":54,"tag":98,"props":849,"children":851},{"className":850},[],[852],{"type":60,"value":853},"status=baseline",{"type":60,"value":855},", matching the\ncampaign guard. The report preserves per-run metric name, extraction source,\nartifact, candidate kind, algorithm family, and literature event linkage.\nIt does not infer algorithm families or mechanisms from candidate names.",{"type":54,"tag":70,"props":857,"children":858},{},[859,861,868],{"type":60,"value":860},"Read ",{"type":54,"tag":862,"props":863,"children":865},"a",{"href":864},"references\u002Freport-contract.md",[866],{"type":60,"value":867},"report-contract.md",{"type":60,"value":869}," when interpreting\nlineage, literature outcomes, budget warnings, or interrupted state.",{"type":54,"tag":63,"props":871,"children":873},{"id":872},"limitations",[874],{"type":60,"value":875},"Limitations",{"type":54,"tag":727,"props":877,"children":878},{},[879,884,889,894,899],{"type":54,"tag":206,"props":880,"children":881},{},[882],{"type":60,"value":883},"The report is only as complete as the persisted ledger, campaign state, and\ncandidate manifests; it does not validate or reconstruct unrecorded claims.",{"type":54,"tag":206,"props":885,"children":886},{},[887],{"type":60,"value":888},"Results from a single campaign do not establish robustness or\ngeneralization.",{"type":54,"tag":206,"props":890,"children":891},{},[892],{"type":60,"value":893},"The helper does not start, stop, resume, or resubmit campaign jobs.",{"type":54,"tag":206,"props":895,"children":896},{},[897],{"type":60,"value":898},"Progress plotting remains optional, so Markdown and JSON may be produced\nwithout an embeddable PNG.",{"type":54,"tag":206,"props":900,"children":901},{},[902],{"type":60,"value":903},"Copied campaign archives may retain only partial provenance when recorded\nabsolute manifest paths are no longer available.",{"type":54,"tag":63,"props":905,"children":907},{"id":906},"requirements",[908],{"type":60,"value":909},"Requirements",{"type":54,"tag":727,"props":911,"children":912},{},[913,925,930,935,940,945,950],{"type":54,"tag":206,"props":914,"children":915},{},[916,918,923],{"type":60,"value":917},"Treat ",{"type":54,"tag":98,"props":919,"children":921},{"className":920},[],[922],{"type":60,"value":216},{"type":60,"value":924}," as recorded evidence; never repair scores by guessing.",{"type":54,"tag":206,"props":926,"children":927},{},[928],{"type":60,"value":929},"Work without Git. Do not commit or push unless the user separately asks.",{"type":54,"tag":206,"props":931,"children":932},{},[933],{"type":60,"value":934},"Preserve the campaign and job sources exactly as found.",{"type":54,"tag":206,"props":936,"children":937},{},[938],{"type":60,"value":939},"Never bypass campaign-lock contention or output-path collision checks.",{"type":54,"tag":206,"props":941,"children":942},{},[943],{"type":60,"value":944},"Use candidate manifests when available, but still report partial provenance\nwhen copied artifacts make old absolute manifest paths unavailable.",{"type":54,"tag":206,"props":946,"children":947},{},[948],{"type":60,"value":949},"Keep conclusions proportional to the evidence. A single run is a candidate,\nnot a robustness claim.",{"type":54,"tag":206,"props":951,"children":952},{},[953],{"type":60,"value":954},"For POC\u002Fproduction, report standard NVFLARE job IDs and downloaded artifacts\nalready present in the ledger; do not resubmit jobs during reporting.",{"type":54,"tag":956,"props":957,"children":958},"style",{},[959],{"type":60,"value":960},"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":962,"total":1118},[963,981,998,1009,1021,1035,1048,1060,1073,1084,1098,1107],{"slug":964,"name":964,"fn":965,"description":966,"org":967,"tags":968,"stars":978,"repoUrl":979,"updatedAt":980},"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},[969,972,975],{"name":970,"slug":971,"type":15},"Documentation","documentation",{"name":973,"slug":974,"type":15},"MCP","mcp",{"name":976,"slug":977,"type":15},"Search","search",21777,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FNemoClaw","2026-07-20T06:00:01.461044",{"slug":982,"name":982,"fn":983,"description":984,"org":985,"tags":986,"stars":995,"repoUrl":996,"updatedAt":997},"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},[987,990,993],{"name":988,"slug":989,"type":15},"Containers","containers",{"name":991,"slug":992,"type":15},"Deployment","deployment",{"name":994,"slug":35,"type":15},"Python",17049,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM","2026-07-27T06:06:11.249662",{"slug":999,"name":999,"fn":1000,"description":1001,"org":1002,"tags":1003,"stars":995,"repoUrl":996,"updatedAt":1008},"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},[1004,1007],{"name":1005,"slug":1006,"type":15},"CI\u002FCD","ci-cd",{"name":991,"slug":992,"type":15},"2026-07-14T05:25:59.97109",{"slug":1010,"name":1010,"fn":1011,"description":1012,"org":1013,"tags":1014,"stars":995,"repoUrl":996,"updatedAt":1020},"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},[1015,1016,1017],{"name":1005,"slug":1006,"type":15},{"name":991,"slug":992,"type":15},{"name":1018,"slug":1019,"type":15},"GitHub","github","2026-07-27T06:06:12.278222",{"slug":1022,"name":1022,"fn":1023,"description":1024,"org":1025,"tags":1026,"stars":995,"repoUrl":996,"updatedAt":1034},"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},[1027,1030,1031],{"name":1028,"slug":1029,"type":15},"Debugging","debugging",{"name":1018,"slug":1019,"type":15},{"name":1032,"slug":1033,"type":15},"Triage","triage","2026-07-14T05:25:57.442089",{"slug":1036,"name":1036,"fn":1037,"description":1038,"org":1039,"tags":1040,"stars":995,"repoUrl":996,"updatedAt":1047},"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},[1041,1044],{"name":1042,"slug":1043,"type":15},"Best Practices","best-practices",{"name":1045,"slug":1046,"type":15},"Code Analysis","code-analysis","2026-07-14T05:25:56.18433",{"slug":1049,"name":1049,"fn":1050,"description":1051,"org":1052,"tags":1053,"stars":995,"repoUrl":996,"updatedAt":1059},"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},[1054,1055,1058],{"name":17,"slug":18,"type":15},{"name":1056,"slug":1057,"type":15},"Migration","migration",{"name":9,"slug":8,"type":15},"2026-07-17T06:07:11.777011",{"slug":1061,"name":1061,"fn":1062,"description":1063,"org":1064,"tags":1065,"stars":995,"repoUrl":996,"updatedAt":1072},"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},[1066,1069],{"name":1067,"slug":1068,"type":15},"QA","qa",{"name":1070,"slug":1071,"type":15},"Testing","testing","2026-07-14T05:25:53.673039",{"slug":1074,"name":1074,"fn":1075,"description":1076,"org":1077,"tags":1078,"stars":995,"repoUrl":996,"updatedAt":1083},"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},[1079,1080],{"name":991,"slug":992,"type":15},{"name":1081,"slug":1082,"type":15},"Infrastructure","infrastructure","2026-07-14T05:25:49.362534",{"slug":1085,"name":1085,"fn":1086,"description":1087,"org":1088,"tags":1089,"stars":995,"repoUrl":996,"updatedAt":1097},"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},[1090,1093,1094],{"name":1091,"slug":1092,"type":15},"Code Review","code-review",{"name":1018,"slug":1019,"type":15},{"name":1095,"slug":1096,"type":15},"Pull Requests","pull-requests","2026-07-14T05:26:01.226578",{"slug":1099,"name":1099,"fn":1100,"description":1101,"org":1102,"tags":1103,"stars":995,"repoUrl":996,"updatedAt":1106},"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},[1104,1105],{"name":1067,"slug":1068,"type":15},{"name":1070,"slug":1071,"type":15},"2026-07-14T05:25:54.928983",{"slug":1108,"name":1108,"fn":1109,"description":1110,"org":1111,"tags":1112,"stars":995,"repoUrl":996,"updatedAt":1117},"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},[1113,1116],{"name":1114,"slug":1115,"type":15},"Automation","automation",{"name":1005,"slug":1006,"type":15},"2026-07-30T05:29:03.275638",496,{"items":1120,"total":1204},[1121,1136,1147,1158,1165,1180,1191],{"slug":1122,"name":1122,"fn":1123,"description":1124,"org":1125,"tags":1126,"stars":23,"repoUrl":24,"updatedAt":1135},"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},[1127,1130,1131,1134],{"name":1128,"slug":1129,"type":15},"Agents","agents",{"name":1114,"slug":1115,"type":15},{"name":1132,"slug":1133,"type":15},"Engineering","engineering",{"name":9,"slug":8,"type":15},"2026-07-14T05:36:01.532575",{"slug":1137,"name":1137,"fn":1138,"description":1139,"org":1140,"tags":1141,"stars":23,"repoUrl":24,"updatedAt":1146},"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},[1142,1143,1144,1145],{"name":1114,"slug":1115,"type":15},{"name":1132,"slug":1133,"type":15},{"name":9,"slug":8,"type":15},{"name":13,"slug":14,"type":15},"2026-07-14T05:36:00.281416",{"slug":103,"name":103,"fn":1148,"description":1149,"org":1150,"tags":1151,"stars":23,"repoUrl":24,"updatedAt":1157},"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},[1152,1153,1154],{"name":17,"slug":18,"type":15},{"name":9,"slug":8,"type":15},{"name":1155,"slug":1156,"type":15},"Optimization","optimization","2026-07-30T05:26:21.697612",{"slug":4,"name":4,"fn":5,"description":6,"org":1159,"tags":1160,"stars":23,"repoUrl":24,"updatedAt":25},{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1161,1162,1163,1164],{"name":17,"slug":18,"type":15},{"name":9,"slug":8,"type":15},{"name":13,"slug":14,"type":15},{"name":21,"slug":22,"type":15},{"slug":1166,"name":1166,"fn":1167,"description":1168,"org":1169,"tags":1170,"stars":23,"repoUrl":24,"updatedAt":1179},"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},[1171,1174,1175,1176],{"name":1172,"slug":1173,"type":15},"Data Pipeline","data-pipeline",{"name":1132,"slug":1133,"type":15},{"name":9,"slug":8,"type":15},{"name":1177,"slug":1178,"type":15},"PyTorch","pytorch","2026-07-30T05:26:15.761027",{"slug":1181,"name":1181,"fn":1182,"description":1183,"org":1184,"tags":1185,"stars":23,"repoUrl":24,"updatedAt":1190},"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},[1186,1187,1188,1189],{"name":1172,"slug":1173,"type":15},{"name":1132,"slug":1133,"type":15},{"name":9,"slug":8,"type":15},{"name":1177,"slug":1178,"type":15},"2026-07-30T05:26:20.645495",{"slug":1192,"name":1192,"fn":1193,"description":1194,"org":1195,"tags":1196,"stars":23,"repoUrl":24,"updatedAt":1203},"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},[1197,1198,1199,1200],{"name":1028,"slug":1029,"type":15},{"name":1132,"slug":1133,"type":15},{"name":9,"slug":8,"type":15},{"name":1201,"slug":1202,"type":15},"Observability","observability","2026-07-30T05:26:17.665774",10]