公开记录
软件健康报告模式 0.27.0 · 指标 1.13.0 · 2026-07-25 06:52 UTC

NVIDIA-NeMo / Automodel

🚀 Pytorch Distributed native training library for LLMs/VLMs with OOTB Hugging Face support

PythonApache-2.0★ 766 星标⑂ 231 复刻始于 2025年5月在 GitHub 上查看 ↗

NVIDIA-NeMo/Automodel 的健康指数为 100 分中的 84 分,处于「良好」区间。 其得分最高的类别是Vitality(97/100),最低的是Security(64/100)。 最近一次更新在今天。 近期的大部分工作由 4 位贡献者完成。

84
总分 / 100
良好

软件健康指数

指标归入加权类别,统一采用 1–100 量表。总体分先取类别加权平均;当公开证据触发高风险司法辖区政策时,评级会按政策调整,并设置 49(有风险)的上限。AI 就绪度不计入总体分。

84
优秀85-100堪称典范;基本满足所有检验标准
良好70-84健康;仅有轻微不足
中等50-69可接受,但存在明显不足;建议进行审查
存在风险30-49存在重大薄弱环节;采用时应保持审慎
危急1-29问题严重(项目被弃置、仅有单一维护者、缺乏基本工程规范)
活力社区与采用可持续性与治理工程质量安全AI 就绪度

评分画像

每条轴代表一个类别。形状比平均值更重要——健康的对象会填满整个图形,而“一峰一谷”式画像意味着某一维度的优势正掩盖另一维度的风险。

所有权

1,399 关注者27 个公开仓库始于 2025年5月

该仓库由组织支持——共同承担、可问责的托管责任,可延续于任何单一维护者之后。

软件包生态系统

注册表软件包版本月下载量版本数最近发布
PyPInemo-automodel0.5.019,319722 天前

按类别列示的指标

活力

项目是否仍有生命——是否仍在编写代码,是否仍在发布版本?

97优秀 · 占总体的 22%
评分方式
36/36推送新近度 — 最近一次推送于 0 天前
36/36提交节奏 — 52 周中有 52 周有提交
18/18提交量 — 最近一年 1,505 次提交
10/10OpenSSF Scorecard:Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
所用输入
commits_last_year1,505
human_commit_share1
days_since_last_push0
active_weeks_last_year52

发布纪律

92优秀
评分方式
27/27有发布版本 — 已发布 7 个发布版本
36/36发布时效 — 最近一次发布版本于 22 天前
19.8/27发布节奏 — 约每 48 天发布一次
0/10OpenSSF Scorecard:Signed-Releases — 无数据
所用输入
releases_count7
latest_release_tagv0.5.0
releases_from_tags
days_since_latest_release22
mean_days_between_releases48
已排除计分(无数据或不适用):OpenSSF Scorecard:Signed-Releases。 其余权重已重新归一化。

社区与采用

项目是否拥有用户、下载量与关注度,并具备欢迎贡献者参与的配置?

74良好 · 占总体的 18%
评分方式
46.8/60星标 — 766 个星标
19.7/25复刻 — 231 个复刻
5/15关注者 — 9 位关注者
所用输入
forks231
stars766
watchers9
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history

社区健康

77良好
评分方式
22.5/22.5README
22.5/22.5许可证 — 可识别的许可证(Apache-2.0)
18/18CONTRIBUTING 指南
0/13.5行为准则
0/7.2议题模板
6.3/6.3PR 模板
所用输入
has_readme
has_license
has_contributing
has_issue_template
has_code_of_conduct
has_pull_request_template
评分方式
57.1/80月度下载量 — pypi 合计每月 19,319 次下载
0/20注册表被依赖数 — 该生态系统不报告此项
所用输入
packagesnemo-automodel
dependents
ecosystemspypi
total_downloads
monthly_downloads19,319
已排除计分(无数据或不适用):注册表被依赖数。 其余权重已重新归一化。

可持续性与治理

项目能否在其成员之外延续——巴士系数、响应能力、由谁支持,以及软件包的维护状况?

81良好 · 占总体的 24%
评分方式
43.2/54巴士系数 — 4 位贡献者贡献了半数提交
17.2/22.5提交分布 — 头号贡献者编写了 24% 的提交
13.5/13.5贡献者广度 — 99 位贡献者
10/10OpenSSF Scorecard:Contributors — project has 24 contributing companies or organizations
所用输入
bus_factor4
contributors_sampled99
top_contributor_share0.235
评分方式
33/46.8议题解决 — 70% 的议题已关闭
32.1/38.3PR 接受 — 已裁定的 PR 中 2,071/2,470 已合并
13.5/15OpenSSF Scorecard:Code-Review — Found 27/30 approved changesets -- score normalized to 9
所用输入
merged_prs2,071
open_issues151
closed_issues361
issue_closed_ratio0.705
closed_unmerged_prs399
评分方式
30/30所有权背书 — 组织持有
0/20已验证域名
22.6/25所有者影响力 — NVIDIA-NeMo 有 1,399 位关注者
12.9/25既往记录 — 27 个公开仓库,账户约 1 年
所用输入
followers1,399
owner_typeOrganization
is_verified
owner_loginNVIDIA-NeMo
public_repos27
account_age_days423
评分方式
25/25已发布且可解析 — pypi 上有 1 个软件包
35/35发布时效 — 最近一次发布于 22 天前
20/20版本历史 — 7 个已发布版本
20/20未被弃用 — 活跃,未被弃用或撤回
所用输入
packagesnemo-automodel
ecosystemspypi
any_deprecated
min_days_since_publish22

工程质量

基础的工程与文档实践是否到位?

96优秀 · 占总体的 20%

工程实践

94优秀
评分方式
24/24CI 工作流 — 22 个工作流
24/24存在测试
16/16Linter 配置 — .flake8, .pylintrc
9.6/9.6Pre-commit 钩子
0/6.4.editorconfig
20/20OpenSSF Scorecard:CI-Tests — 30 out of 30 merged PRs checked by a CI test -- score normalized to 10
所用输入
has_ci
has_tests
has_editorconfig
has_linter_config
has_precommit_config

文档

100优秀
评分方式
30/30README
25/25文档目录
15/15文档 / 主页站点 — https://docs.nvidia.com/nemo/automodel/nightly/index.html
10/10仓库描述
10/10主题标签 — 19 个主题标签
10/10Wiki
所用输入
topicsllm, vlm, finetuning, gemma3, llama, llama3, mistral, openai, qwen3, gpt-oss, qwen3-next, glm, kimi-k2, deepseek-v3-2, minimax-m2, gemma4, qwen3-6, deepseek-v4, agent
has_wiki
homepagehttps://docs.nvidia.com/nemo/automodel/nightly/index.html
has_readme
has_docs_dir
has_description

安全

可见的安全与供应链实践是否稳固,且不存在未解决的高风险司法辖区暴露?

64中等 · 占总体的 16%

安全态势

55中等
评分方式
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — 无数据
2.5/2.5CI-Tests — 30 out of 30 merged PRs checked by a CI test -- score normalized to 10
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
6.8/7.5Code-Review — Found 27/30 approved changesets -- score normalized to 9
2.5/2.5Contributors — project has 24 contributing companies or organizations
10/10Dangerous-Workflow — no dangerous workflow patterns detected
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5许可证 — license file detected
7.5/7.5Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
5/5Packaging — packaging workflow detected
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
5/5Security-Policy — security policy file detected
0/7.5Signed-Releases — 无数据
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 78 existing vulnerabilities detected
所用输入
sourceopenssf_scorecard
checks_evaluated16
scorecard_versionv5.5.0
checks_inconclusive2
scorecard_aggregate5.5
已排除计分(无数据或不适用):branch_protection, signed_releases。 其余权重已重新归一化。
评分方式
35/35直接依赖不含已知公告 — 没有直接依赖携带已知公告
25/25间接依赖不含已知公告 — 没有间接依赖携带已知公告
0/40没有长期未处理的公告 — 没有公告带有发布日期
所用输入
sourceosv
advisories0
affected_packages0
assessed_packages131
unassessed_packages0
affected_by_severitynone
direct_affected_packages0
已排除计分(无数据或不适用):没有长期未处理的公告。 其余权重已重新归一化。 比对的是 pypi:nemo-automodel@0.5.0 的运行时依赖闭包——安装已发布的软件包时真正被拉取进来的内容——共 131 个软件包。 未对可达性进行分析。

AI 就绪度

该仓库在多大程度上具备与 AI 编码代理协同开发与维护的条件?这是一枚独立的实验性徽章——权重为 0.0,因此单独呈现,不影响总体健康评分。

68中等 · 占总体的 0%
评分方式
45/45代理指令 — AGENTS.md, CLAUDE.md
0/15机器可读文档(llms.txt)
40/40可读的提交历史 — 100 次人类提交中有 100 次说明了意图(结构化标题或解释性正文)
所用输入
has_llms_txt
legible_history_share1
agent_instruction_filesAGENTS.md, CLAUDE.md
agent_instruction_max_bytes13,233
评分方式
18/18一条命令的引导启动 — docs/Makefile, docs/fern/Makefile, nemo_automodel/components/datasets/llm/megatron/Makefile
22/22自动化测试
11/11Lint / 格式化配置 — .flake8, .pylintrc
0/11静态类型检查
10/10可复现环境 — Dockerfile, lockfile
10/10已体现的代理实践 — 最近 100 次提交中有 24 次由代理编写或署名代理
0/8自动化维护 — 未观察到自动依赖更新
0/10OpenSSF Scorecard:Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
所用输入
has_nix
has_tests
lockfilesuv.lock
has_dockerfile
typed_language
bootstrap_filesdocs/Makefile, docs/fern/Makefile, nemo_automodel/components/datasets/llm/megatron/Makefile
has_devcontainer
has_linter_config
typecheck_configs
agent_commit_share0.24
toolchain_manifests
dependency_bot_commit_share0
评分方式
0/45可类型检查的代码 — Python,未配置类型检查
53.8/55可控的文件大小 — 采样的 1,405 个源文件中有 30 个超过 60KB
所用输入
primary_languagePython
largest_source_bytes153,900
source_files_sampled1,405
oversized_source_files30

机器可读接口

40存在风险
评分方式
0/40API 模式(OpenAPI/GraphQL/proto)
0/20MCP 服务器
40/40可运行示例 — examples, notebooks, recipes
所用输入
example_dirsexamples, notebooks, recipes
has_mcp_signal
api_schema_files

关键数据

766GitHub 星标
99贡献者
1,505最近 12 个月提交数
0距最近推送天数
7发布版本数
4巴士系数(bus factor)
151开放议题
PyPI软件包生态系统数

数据采集警告

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

更多细节

Star 与 Fork 历史 0 ★ / 231 ⇿
0Star
231Fork
7发布

每颗 star 和每个 fork 的添加时间,来自 GitHub 并按天汇总。累计增长位于其构成来源——每日新增——的正上方,二者可相互对照:稳定的自然增长与短暂的突增形态截然不同。当这一差别可被衡量时,它会作为增长真实性予以报告。

0408012016020024022552025-072026-012026-07
主版本 0次版本 5修订 1
OpenSSF Scorecard 5.5 / 10
5.5综合

来自开源项目 OpenSSF Scorecard 的独立、工具无关的安全评估。每项检查奖励的是安全实践本身,而非特定供应商的工具。Scorecard 无法判定的检查项标记为 不适用,并从安全评分中剔除(绝不按零分计)。Scorecard v5.5.0 · 2026-07-25 06:51 UTC

10Binary-Artifactsno binaries found in the repo
不适用Branch-Protectioninternal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
10CI-Tests30 out of 30 merged PRs checked by a CI test -- score normalized to 10
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
9Code-ReviewFound 27/30 approved changesets -- score normalized to 9
10Contributorsproject has 24 contributing companies or organizations
10Dangerous-Workflowno dangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
10Packagingpackaging workflow detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTSAST tool is not run on all commits -- score normalized to 0
10Security-Policysecurity policy file detected
不适用Signed-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities78 existing vulnerabilities detected
直接依赖 14
注册表软件包版本约束清单文件
PyPIdatasets>=4.0.0pyproject.toml
PyPImegatron-fsdp==0.5.0pyproject.toml
PyPImistral-commonpyproject.toml
PyPIpybind11pyproject.toml
PyPIpyyamlpyproject.toml
PyPItiktokenpyproject.toml
PyPItorch>=2.6.0pyproject.toml
PyPItorchdatapyproject.toml
PyPItransformers==5.12.1pyproject.toml
PyPIwandb>=0.28.0pyproject.toml
PyPItorchaopyproject.toml
PyPImlflowpyproject.toml
PyPIflashoptim>=0.1.3pyproject.toml
PyPIquack-kernels==0.6.1pyproject.toml
全部依赖 未采集

本报告未能采集到解析后的依赖集合:GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

依赖安全公告 0

安装 pypi:nemo-automodel@0.5.0 会引入 131 个包(直接与传递):其中 0 个存在已知公告,0 个为直接依赖。

没有已知公告影响已评估的依赖。

公告表示依赖图中记录的版本落入某条公告的受影响范围。可达性未经分析,且依赖图包含开发与测试的版本固定——某项发现可能只涉及工具链而非交付的软件。

原始 JSON 报告 机器可读
{
  "data": {
    "repo": {
      "topics": [
        "llm",
        "vlm",
        "finetuning",
        "gemma3",
        "llama",
        "llama3",
        "mistral",
        "openai",
        "qwen3",
        "gpt-oss",
        "qwen3-next",
        "glm",
        "kimi-k2",
        "deepseek-v3-2",
        "minimax-m2",
        "gemma4",
        "qwen3-6",
        "deepseek-v4",
        "agent"
      ],
      "is_fork": false,
      "size_kb": 70538,
      "has_wiki": true,
      "homepage": "https://docs.nvidia.com/nemo/automodel/nightly/index.html",
      "languages": {
        "C++": 29610,
        "Shell": 194689,
        "Python": 18786139,
        "Makefile": 377,
        "Dockerfile": 13189,
        "JavaScript": 2542,
        "Standard ML": 19356,
        "Jupyter Notebook": 38342
      },
      "pushed_at": "2026-07-25T06:36:04Z",
      "created_at": "2025-05-21T21:45:47Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-25T06:36:08Z",
      "description": "🚀 Pytorch Distributed native training library for LLMs/VLMs with OOTB Hugging Face support",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "Apache-2.0",
      "default_branch": "main",
      "license_spdx_raw": "Apache-2.0",
      "primary_language": "Python",
      "significant_languages": [
        "Python"
      ]
    },
    "owner": {
      "blog": "https://nvidia.com/",
      "name": null,
      "type": "Organization",
      "login": "NVIDIA-NeMo",
      "company": null,
      "location": null,
      "followers": 1399,
      "avatar_url": "https://avatars.githubusercontent.com/u/213689629?v=4",
      "created_at": "2025-05-27T19:36:58Z",
      "is_verified": null,
      "public_repos": 27,
      "account_age_days": 423
    },
    "license": {
      "state": "standard",
      "spdx_id": "Apache-2.0",
      "raw_spdx": "Apache-2.0",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v0.5.0",
          "kind": "minor",
          "published_at": "2026-07-02T19:58:31Z"
        },
        {
          "tag": "v0.4.0",
          "kind": "minor",
          "published_at": "2026-04-28T20:04:37Z"
        },
        {
          "tag": "v0.3.0",
          "kind": "minor",
          "published_at": "2026-03-02T18:57:42Z"
        },
        {
          "tag": "v0.2.0",
          "kind": "minor",
          "published_at": "2025-12-04T21:22:08Z"
        },
        {
          "tag": "v0.1.2",
          "kind": "patch",
          "published_at": "2025-10-23T19:24:10Z"
        },
        {
          "tag": "v0.1.0",
          "kind": "minor",
          "published_at": "2025-10-08T14:18:57Z"
        },
        {
          "tag": "v0.1.0rc0",
          "kind": "other",
          "published_at": "2025-09-17T13:59:00Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "3ebd99a5e65c11ddfa73f964260bbb774827b104",
          "body": "* fix(distributed): support packed CP for Llama and Qwen2\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n* fix(ci): declare node count for packed CP recipes\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n* feat(models): add packed CP support for dense Qwen3\n\nS\n[…]\n\n* test(distributed): gate packed TP CP test by GPU count\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n---------\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>",
          "is_bot": false,
          "headline": "fix(distributed): support packed CP for Llama, Qwen2, and Qwen3 (#2999)",
          "author_name": "Alexandros Koumparoulis",
          "author_login": "akoumpa",
          "committed_at": "2026-07-25T06:36:02Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d8c354b0662e0cc489d715e586e6e3c69fe2ab33",
          "body": "… (#3192)\n\napply_submodule_checkpointing() wraps the attention submodule by searching\nattr names (\"self_attn\", \"attention\", \"attn\"), but hybrid linear-attention\nmodels (Qwen3-Next, Qwen3.5, Qwen3.5-MoE) name their Gated DeltaNet mixer\n\"linear_attn\". Those layers were therefore never checkpoint-wrapp\n[…]\nred-by: Amol Khanna <amol.khanna@crowdstrike.com>\nCo-authored-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\nCo-authored-by: Alexandros Koumparoulis <153118171+akoumpa@users.noreply.github.com>",
          "is_bot": false,
          "headline": "fix(distributed): activation-checkpoint Qwen3-Next linear_attn layers…",
          "author_name": "amolkhanna",
          "author_login": "amolkhanna",
          "committed_at": "2026-07-25T05:01:02Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "bd592f8829d9fafddd95abc5fea9af9934e087e8",
          "body": "Signed-off-by: HuiyingLi <willwin.lee@gmail.com>",
          "is_bot": false,
          "headline": "fix(glm): size GLM5.2 release CI jobs (#3210)",
          "author_name": "Huiying",
          "author_login": "HuiyingLi",
          "committed_at": "2026-07-25T00:20:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "35b1fcab72515236525bbeb57225cc825d1615ae",
          "body": "* fix(ci): shard Nemotron Super vLLM deploy across 8 GPUs\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\n\n* test(vllm): enable expert parallel for large MoE deploys\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\n\n* ci: bump deploy dockerfile to 26.04\n\nSigned-off-by: Dong Hyuk Chang <9426164+thomasdhc@\n[…]\nyuk Chang <9426164+thomasdhc@users.noreply.github.com>\nCo-authored-by: Dong Hyuk Chang <9426164+thomasdhc@users.noreply.github.com>\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(ci): shard Nemotron Super vLLM deploy across 8 GPUs (#3061)",
          "author_name": "Yuhe Zhang",
          "author_login": "yuhezhang-ai",
          "committed_at": "2026-07-24T23:00:34Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "622cc24ba9206eee9cde6067ca0a50d95dcc8b25",
          "body": "…(#3207)\n\nGLM-5.2 uses noaux_tc MoE load balancing: the FP32 e_score_correction_bias\nmust be updated from per-expert token counts after each optimizer step, but\nneither GlmMoeDsaModel nor GlmMoeDsaForCausalLM exposed update_moe_gate_bias,\nso the recipe-side hasattr hook never fired and the bias was \n[…]\nlayers, FakeBalancedGate, and\ngate_bias_update_factor=0 overrides); the outer CausalLM delegates.\n\nSigned-off-by: larkzhang-nv <larkz@nvidia.com>\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(glm_moe_dsa): expose update_moe_gate_bias on GLM MoE DSA models …",
          "author_name": "jQizhang",
          "author_login": "jQizhang",
          "committed_at": "2026-07-24T18:34:32Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "37298f4a62e3c97274d6e6b0c6af18082937f02a",
          "body": "Signed-off-by: HuiyingLi <willwin.lee@gmail.com>",
          "is_bot": false,
          "headline": "fix(vlm): size qwen3.6 medpix CI configs (#3209)",
          "author_name": "Huiying",
          "author_login": "HuiyingLi",
          "committed_at": "2026-07-24T18:33:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dfd1401a65f1e73887dcbaa4328f0a6312b1ecb1",
          "body": "…ting (#3133)\n\n* fix(dist): keep profiler record-function ops out of SAC replay accounting\n\ntorch 2.13's FSDP2 runs its pre/post-forward hooks under\ntorch.autograd.profiler.record_function, which emits dispatchable\ntorch.ops.profiler ops. When an FSDP module boundary sits inside a\nselective-activati\n[…]\ngned-off-by: HuiyingLi <willwin.lee@gmail.com>\nCo-authored-by: Alexandros Koumparoulis <153118171+akoumpa@users.noreply.github.com>\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(dist): keep profiler record-function ops out of SAC replay accoun…",
          "author_name": "Huiying",
          "author_login": "HuiyingLi",
          "committed_at": "2026-07-24T17:45:39Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "fc57de71faefcef21c558853e4618328c197f5f6",
          "body": "…ath (#3122)\n\n* refactor(diffusion): migrate recipe onto typed RecipeConfig build() path\n\nAligns the diffusion training recipe with the LLM/VLM recipes: every YAML\nsection is coerced once at the recipe boundary into a typed config that owns\nconstruction via build(...), and the recipe body becomes th\n[…]\nSigned-off-by: Pranav Prashant Thombre <pthombre@nvidia.com>\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>\nCo-authored-by: Alexandros Koumparoulis <153118171+akoumpa@users.noreply.github.com>",
          "is_bot": false,
          "headline": "refactor(diffusion): migrate recipe onto typed RecipeConfig build() p…",
          "author_name": "Pranav Thombre",
          "author_login": "pthombre",
          "committed_at": "2026-07-24T17:40:26Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "380423c63c55f9b97cf7246504d900bb3325e287",
          "body": "… (#3161)\n\n* feat(dllm): add DiffusionGemma generation via the built-in HF sampler\n\nDiffusionGemma ships its own diffusion sampler in transformers >= 5.11\n(entropy-bounded denoising with adaptive stopping; the pinned 5.12.1\nincludes generation_diffusion_gemma.py), so generation follows the model\nrat\n[…]\nards on top.\n\nSigned-off-by: Zeyu Zhou <zezhou@nvidia.com>\n\n---------\n\nSigned-off-by: Zeyu Zhou <zezhou@nvidia.com>\nCo-authored-by: Alexandros Koumparoulis <153118171+akoumpa@users.noreply.github.com>",
          "is_bot": false,
          "headline": "feat(dllm): add DiffusionGemma generation via the built-in HF sampler…",
          "author_name": "Zeyu Zhou",
          "author_login": "zyzhou5",
          "committed_at": "2026-07-24T16:10:19Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4027eb1a4972e002254bf0b00d14cf13d9b90db5",
          "body": "* perf(kernels): add QuACK backend\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n* fix(packaging): sync PyTorch image lock for QuACK\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n* test(perf): allow QuACK kernel warmup\n\nSigned-off-by: Alexandros Koumparoulis\n[…]\n: NeMo Bot <nemo-bot@nvidia.com>\nSigned-off-by: svcnemo-autobot <svcnemo-autobot@nvidia.com>\nCo-authored-by: NeMo Bot <nemo-bot@nvidia.com>\nCo-authored-by: svcnemo-autobot <svcnemo-autobot@nvidia.com>",
          "is_bot": false,
          "headline": "feat(kernels): add QuACK backend (#3115)",
          "author_name": "Alexandros Koumparoulis",
          "author_login": "akoumpa",
          "committed_at": "2026-07-24T14:38:05Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d41256417b61d56f1c6dd39983de2cb36e2f4df1",
          "body": "…n (#3193)\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>",
          "is_bot": false,
          "headline": "feat(checkpoint): preserve intrinsic fp32 during offline consolidatio…",
          "author_name": "Yuhe Zhang",
          "author_login": "yuhezhang-ai",
          "committed_at": "2026-07-24T14:27:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "104878f558471d21f6a7ea8e5c5abbcf59966576",
          "body": "* build(deps): pin megatron-fsdp to 0.5.0\n\nMove the megatron-fsdp requirement from the permissive >=0.2.3 range to\nan exact 0.5.0 pin and refresh both uv lock files accordingly. Later\nreleases changed the fully_shard precision API and DTensor handling, so\nthe supported version must be explicit for t\n[…]\nBy: Claude Opus 4.8 <noreply@anthropic.com>\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\n\n---------\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(distributed): Megatron-FSDP 0.5.0 compatibility (#2986)",
          "author_name": "Yuhe Zhang",
          "author_login": "yuhezhang-ai",
          "committed_at": "2026-07-24T14:17:03Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "bb9a62c892863c7250460e1ce564cfc9f66136fc",
          "body": "…on (#2987)\n\n* feat(distributed): shape TPLinear/LinearLoRA graphs for async-TP fusion\n\nInductor's async tensor-parallel pass (_micro_pipeline_tp, enabled via\nenable_async_tensor_parallel) fuses collectives with matmuls by\npattern-matching the reshape-mm-reshape graph that F.linear emits for\n3-D inp\n[…]\nributed): move TP linear helpers to shared\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\n\n---------\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(distributed): shape TPLinear/LinearLoRA graphs for async-TP fusi…",
          "author_name": "Yuhe Zhang",
          "author_login": "yuhezhang-ai",
          "committed_at": "2026-07-24T14:09:17Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "190a2b7145b2d64ba4461bf13dc2aec3b754b549",
          "body": "* fix: prefer Automodel config registry lookup\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n* docs: require config registry review checks\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n* fix: annotate custom config resolver\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n---------\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>",
          "is_bot": false,
          "headline": "fix: prefer Automodel config registry lookup (#3202)",
          "author_name": "Alexandros Koumparoulis",
          "author_login": "akoumpa",
          "committed_at": "2026-07-24T13:09:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "983bac3c44bddc8847986220a4c687de74eb10a8",
          "body": "* fix(glm): apply LoRA to TileLang MLA KV projection\n\nSigned-off-by: Shahaf Wagner <shahafwg@gmail.com>\n\n* feat(glm): add GLM-5.2 LoRA finetune recipe (TileLang MLA)\n\nAdds examples/llm_finetune/glm/glm_5.2_lora.yaml, a 16-node (128-GPU, cp=1/ep=128) LoRA fine-tuning config for GLM-5.2 on the TileLan\n[…]\nludes the required ci: section (recipe_owner/nodes/time) for release CI auto-discovery.\n\nSigned-off-by: Shahaf Wagner <shahafwg@gmail.com>\n\n---------\n\nSigned-off-by: Shahaf Wagner <shahafwg@gmail.com>",
          "is_bot": false,
          "headline": "fix(glm): apply LoRA to TileLang MLA KV projection (#3176)",
          "author_name": "Shahaf Wagner",
          "author_login": "shahafwa",
          "committed_at": "2026-07-24T11:57:12Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4cc72911e5f82f3e2014fe0f352725e6369b8c90",
          "body": "* docs(retrieval): complete fine-tuning guide integration\n\nSigned-off-by: Oliver Holworthy <1216955+oliverholworthy@users.noreply.github.com>\n\n* fix(retrieval): align the public dataset config\n\nSigned-off-by: Oliver Holworthy <1216955+oliverholworthy@users.noreply.github.com>\n\n* docs(retrieval): ali\n[…]\n <oholworthy@users.noreply.github.com>\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\nCo-authored-by: Oliver Holworthy <oholworthy@users.noreply.github.com>\nCo-authored-by: Yuhe Zhang <yuhez@nvidia.com>",
          "is_bot": false,
          "headline": "docs(retrieval): complete fine-tuning guide integration (#2306)",
          "author_name": "Oliver Holworthy",
          "author_login": "oliverholworthy",
          "committed_at": "2026-07-24T01:13:42Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b0b53b0f6251ed968b6a970c69a3439728b3c1b3",
          "body": "Fused bf16 SDPA is gradient-unstable for Gemma4 on Hopper (grad_norm NaN ~step 22,\nthen loss NaN, with attn_implementation=sdpa and local_batch_size>=2). Run SDPA\nwith fp32 q/k/v and install it as the sdpa attention when Gemma4 uses sdpa.\n\nSigned-off-by: Amineh Dadsetan <amineh.dadsetan@gmail.com>",
          "is_bot": false,
          "headline": "fix(gemma4): run SDPA in fp32 to avoid #2208 NaN on Hopper (#3141)",
          "author_name": "Amineh Dadsetan",
          "author_login": "aminehd",
          "committed_at": "2026-07-23T18:46:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fd18270430fc82d1a84b0fb5ccea7b457c55f7ee",
          "body": "* feat(dllm): LoRA recipes for llada/llada2/nemotron and adapter generation\n\n- New LoRA example recipes mirroring their SFT configs plus a peft block:\n  llada_lora.yaml (covers both LLaDA attention/MLP layouts; unmatched\n  patterns are no-ops), llada2_lora.yaml (16B MoE: attention + dense-layer\n  ML\n[…]\n state_dict.\n\nSigned-off-by: Zeyu Zhou <zezhou@nvidia.com>\n\n---------\n\nSigned-off-by: Zeyu Zhou <zezhou@nvidia.com>\nCo-authored-by: Alexandros Koumparoulis <153118171+akoumpa@users.noreply.github.com>",
          "is_bot": false,
          "headline": "feat(dllm): add lora to dllm  (#3163)",
          "author_name": "Zeyu Zhou",
          "author_login": "zyzhou5",
          "committed_at": "2026-07-23T18:08:03Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "bee559ddb2f54e8a9dc40e064e4d86e1c687ef15",
          "body": "* fix(ci): preserve HF meta init for device-mapped loads\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\n\n* ci: increase Qwen3 MoE parity timeout\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\n\n---------\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>",
          "is_bot": false,
          "headline": "fix(ci): preserve HF meta init for device-mapped loads (#3188)",
          "author_name": "Yuhe Zhang",
          "author_login": "yuhezhang-ai",
          "committed_at": "2026-07-23T18:05:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "601dbafaed8aa925210df39a6d67169df5ae3fea",
          "body": "fix(ci): run coverage after successful CI summary\n\nSigned-off-by: svcnemo-autobot <svcnemo-autobot@nvidia.com>",
          "is_bot": false,
          "headline": "fix(ci): AUT-964 restore Codecov after skipped GB200 jobs (#3205)",
          "author_name": "svcnemo-autobot",
          "author_login": "svcnemo-autobot",
          "committed_at": "2026-07-23T18:01:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "66c5a8bbd98ef6500dbd477b410bf5c14387c329",
          "body": "* feat: Support preemption checkpointing\n\nSigned-off-by: edjson <edisonggacc@gmail.com>\n\n* fixed typos\n\nSigned-off-by: edjson <edisonggacc@gmail.com>\n\n* fix: background srun, and added docs\n\nSigned-off-by: edjson <edisonggacc@gmail.com>\n\n* Apply docs corrections from code review\n\nCo-authored-by: jge\n[…]\nroulis <153118171+akoumpa@users.noreply.github.com>\nCo-authored-by: Abhishree Thittenamane <47577437+athitten@users.noreply.github.com>\nCo-authored-by: jgerh <163925524+jgerh@users.noreply.github.com>",
          "is_bot": false,
          "headline": "feat: Support preemption checkpointing (#3007)",
          "author_name": "Edison",
          "author_login": "edjson",
          "committed_at": "2026-07-23T17:20:48Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d761ae2cce1c3af97ad14894e9df27c142d53657",
          "body": "…3189)\n\n* enable image+text training for vision retrieval\n\n* simplify injecting text with image logic",
          "is_bot": false,
          "headline": "feat: enable text inclusion alongside images in retrieval training (#…",
          "author_name": "rnyak",
          "author_login": "rnyak",
          "committed_at": "2026-07-23T16:50:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c179031a74171981a0b57bcfb8af276c87259b06",
          "body": "* fix: honor memory-efficient LoRA toggle for fused MLPs\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n* fix: disable memory-efficient LoRA in throughput recipes\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n* fix: keep memory-efficient LoRA for Qwen3.5 benchmark\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n---------\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>",
          "is_bot": false,
          "headline": "fix(peft): honor memory-efficient LoRA opt-out (#3126)",
          "author_name": "Alexandros Koumparoulis",
          "author_login": "akoumpa",
          "committed_at": "2026-07-23T15:40:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f78e01e754ce8cbb2dc171ec37fd1a72f11452fc",
          "body": "…er (#3144)",
          "is_bot": false,
          "headline": "fix(datasets): keep system turns in the sharegpt conversation convert…",
          "author_name": "khazzz1c",
          "author_login": "khazic",
          "committed_at": "2026-07-23T14:03:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "025bb132e032a089c5ff580049bc2dcdc521b9f4",
          "body": null,
          "is_bot": false,
          "headline": "feat: add checkpoint staging wait option (#3131)",
          "author_name": "khazzz1c",
          "author_login": "khazic",
          "committed_at": "2026-07-23T14:01:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "995e8d64cdc6b5134266e7a6cb3b81f107c519c3",
          "body": "* ci: restore single L0 GPU unit-test job\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n* test(ci): trim slow CPU L0 coverage\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n* ci: reduce L0 GPU tests to two shards\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n---------\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>",
          "is_bot": false,
          "headline": "ci: reduce L0 GPU tests to two shards (#3201)",
          "author_name": "Alexandros Koumparoulis",
          "author_login": "akoumpa",
          "committed_at": "2026-07-23T12:32:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5983424df87ba99271b074727f468f0eeb964554",
          "body": "Signed-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>",
          "is_bot": false,
          "headline": "docs(fern): add legacy URL redirects (#3203)",
          "author_name": "Alexandros Koumparoulis",
          "author_login": "akoumpa",
          "committed_at": "2026-07-23T10:34:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "70cb0869206c2c4b68547b0cb814687237de016e",
          "body": "… (#2937)\n\n* refactor(distributed): introduce CPSharder, retire private CP batch keys\n\nModels that own their CP batch sharding now return a CPSharder dataclass\n(under the 'cp_sharder' batch key) from prepare_model_inputs_for_cp,\nreplacing the private batch-key side channel (_cp_make_batch_fn,\n_cp_me\n[…]\n\n\nDeferred: the cp_sharder.py contiguous-shard function docstrings are long but get\nmerged/rewritten by the follow-up shard_batch_contiguous collapse, so they are\ncompressed there rather than churned…",
          "is_bot": false,
          "headline": "refactor(distributed): unify CP input prep and dispatch across models…",
          "author_name": "Huiying",
          "author_login": "HuiyingLi",
          "committed_at": "2026-07-23T09:28:40Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8918b8cd1dc0ecbbb1309878d3f9b8bb9e238dee",
          "body": "* test(deepseek-v4): add random-init pretraining CI\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n* fix(ci): select H100 for DeepSeek V4 pretrain\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n* fix(ci): use synthetic data for DeepSeek V4 pretrain\n\nSigned-off\n[…]\nvidia.com>\n\n* test(ci): add DeepSeek V4 pretrain pipeline\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n---------\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>",
          "is_bot": false,
          "headline": "test(ci): add DeepSeek V4 Flash pretrain coverage (#3128)",
          "author_name": "Alexandros Koumparoulis",
          "author_login": "akoumpa",
          "committed_at": "2026-07-23T07:52:24Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "81e7f01f431c31a60d607b9245f1337d8dcf9e1b",
          "body": "…rt (#3199)\n\nPR #2929 added flash_attention_3 and flash_attention_4 to the set of\nflash-attention variants configure_packing patches, so flash_attention_3 is\nno longer an unsupported (no-op) backend. test_noop_for_unsupported_backends\nstill parametrized it as unsupported and asserted the FA2 shim wa\n[…]\ne\nno-op test, and parametrize test_patches_flash_attention_utils over all three\nflash-attention variants so the newly supported fa3/fa4 paths have coverage.\n\nSigned-off-by: khazic <khazzz1c@gmail.com>",
          "is_bot": false,
          "headline": "test(packing): fix stale unsupported-backend test after fa3/fa4 suppo…",
          "author_name": "khazzz1c",
          "author_login": "khazic",
          "committed_at": "2026-07-23T06:27:43Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "40392130e350902e3aaf4b31eb7bfdec92ada596",
          "body": "Signed-off-by: khazic <khazzz1c@gmail.com>",
          "is_bot": false,
          "headline": "feat(checkpoint): add DCP CPU offload option (#3130)",
          "author_name": "khazzz1c",
          "author_login": "khazic",
          "committed_at": "2026-07-23T02:04:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "59d82e3a9421493a490c873569960b1a8de2ae31",
          "body": "* feat(attention): support flash_attention_3 and flash_attention_4\n\ntransformers >= 5.x dispatches attn_implementation=flash_attention_3 (dist\nflash-attn-3, module flash_attn_interface) and flash_attention_4 (dist\nflash-attn-4, module flash_attn.cute) natively. This change makes those\nselectable end\n[…]\n\n---------\n\nSigned-off-by: HuiyingLi <willwin.lee@gmail.com>\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>\nCo-authored-by: Alexandros Koumparoulis <153118171+akoumpa@users.noreply.github.com>",
          "is_bot": false,
          "headline": "feat(attention): support flash_attention_3 and flash_attention_4 (#2929)",
          "author_name": "Huiying",
          "author_login": "HuiyingLi",
          "committed_at": "2026-07-22T22:39:56Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "92eb9fc8f489b361e9d3bffad556f64a8d8530ad",
          "body": "…(#3151)\n\n* feat(examples): add CoderForge SFT data pipeline for CP validation\n\nPhase 1 of AM-492 (AM-555). Adds examples/convergence/coderforge/:\n\n- prefilter_dataset.py: load togethercomputer/CoderForge-Preview, parse and\n  clean the OpenHands trajectories (JSON-string messages/tools + union-schem\n[…]\n@gmail.com>\nSigned-off-by: athitten <abhishreetm@gmail.com>\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>\nCo-authored-by: Alexandros Koumparoulis <153118171+akoumpa@users.noreply.github.com>",
          "is_bot": false,
          "headline": "feat(examples): Gemma4-31B CoderForge data pipeline + CP SFT recipes …",
          "author_name": "Abhishree Thittenamane",
          "author_login": "athitten",
          "committed_at": "2026-07-22T21:45:09Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5e292306f0b4c4e34daf26fe8d86b432d2aacabd",
          "body": "* fix(distributed): preserve canonical activation checkpoint keys\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\n\n* ci: extend Nemotron single-GPU timeout\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\n\n* ci: right-size Nemotron single-GPU timeout\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\n\n---------\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>",
          "is_bot": false,
          "headline": "fix(distributed): preserve canonical activation checkpoint keys (#3152)",
          "author_name": "Yuhe Zhang",
          "author_login": "yuhezhang-ai",
          "committed_at": "2026-07-22T20:56:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "53ef40b1f608d6fa1aebb4cbd67b997666b3129a",
          "body": "* feat(distributed): add block-diagonal varlen context parallelism for packed sequences\n\nAdd a self-contained CP implementation for packed (multi-document)\nsequences where masking must stay block-causal per document, which the\nload-balanced DTensor context_parallel path cannot express:\n\n- batch: con\n[…]\ntributed): harden packed block-diagonal CP\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\n\n---------\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(distributed): block-diagonal varlen CP for packed sequences (#2989)",
          "author_name": "Yuhe Zhang",
          "author_login": "yuhezhang-ai",
          "committed_at": "2026-07-22T18:04:44Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "79378e6261f28df02a17533e8430c230e1002e55",
          "body": "Signed-off-by: Yuhe Zhang <yuhez@nvidia.com>",
          "is_bot": false,
          "headline": "fix(checkpoint): restore adapters through DDP wrappers (#3150)",
          "author_name": "Yuhe Zhang",
          "author_login": "yuhezhang-ai",
          "committed_at": "2026-07-22T15:08:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "df7dcc6a372e98e99e21554f9e25e9160cb75e48",
          "body": "* fix(kd): use torch adam fp32 masters\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n* fix(kd): resolve storage dtype from raw config\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n* fix(kd): scope fp32 storage fallback to KD recipes\n\nSigned-off-by: Alexandro\n[…]\nfix(kd): use recipe config accessors for dtype resolution\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n---------\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>",
          "is_bot": false,
          "headline": "fix(kd): use fp32 master weight copy (#3019)",
          "author_name": "Alexandros Koumparoulis",
          "author_login": "akoumpa",
          "committed_at": "2026-07-22T13:31:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "829d6621849852713c7116d256a329d211765634",
          "body": "* fix(checkpoint): add bounded retention window\n\nSigned-off-by: Oliver Holworthy <1216955+oliverholworthy@users.noreply.github.com>\n\n* fix(checkpoint): log retention policy at startup\n\nSigned-off-by: Oliver Holworthy <1216955+oliverholworthy@users.noreply.github.com>\n\n* fix(checkpoint): harden reten\n[…]\n final review cleanup\n\nSigned-off-by: Oliver Holworthy <1216955+oliverholworthy@users.noreply.github.com>\n\n---------\n\nSigned-off-by: Oliver Holworthy <1216955+oliverholworthy@users.noreply.github.com>",
          "is_bot": false,
          "headline": "fix(checkpoint): add bounded retention window (#2416)",
          "author_name": "Oliver Holworthy",
          "author_login": "oliverholworthy",
          "committed_at": "2026-07-22T09:22:19Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7cbae6878cf2cc55c69c416955dc66089429a912",
          "body": "…#3136)\n\n* fix: make grad norm robust to finite overflow\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n* fix: repair near-zero input embedding rows\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n* test: cover distributed embedding row repair\n\nSigned-off-by: A\n[…]\nli@nvidia.com>\n\n* fix: handle empty local gradient shards\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n---------\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>",
          "is_bot": false,
          "headline": "fix: prevent damaged token embeddings from dominating grad clipping (…",
          "author_name": "Alexandros Koumparoulis",
          "author_login": "akoumpa",
          "committed_at": "2026-07-22T08:39:27Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c59eba6c514074f55b3718fd566403572284782e",
          "body": "* feat(models): add Laguna model implementation\n\nSigned-off-by: HuiyingLi <willwin.lee@gmail.com>\n\n* test(models): keep Laguna smoke test on dense path\n\nKeep the causal-LM smoke test focused on Laguna wiring while the separate\nunit test continues to validate the sparse MoE layer construction and\nrou\n[…]\noreply@anthropic.com>\nSigned-off-by: HuiyingLi <willwin.lee@gmail.com>\n\n---------\n\nSigned-off-by: HuiyingLi <willwin.lee@gmail.com>\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(models): add Laguna model implementation (#3148)",
          "author_name": "Huiying",
          "author_login": "HuiyingLi",
          "committed_at": "2026-07-22T01:34:01Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c37f04cde41dd91e2018622cc31e07d0c1462710",
          "body": "* feat(dllm): add LLaDA2 generation support\n\nSigned-off-by: Zeyu Zhou <zezhou@nvidia.com>\n\n* refactor(dllm): keep LLaDA2 options sampler-local\n\nSigned-off-by: Zeyu Zhou <zezhou@nvidia.com>\n\n* docs(dllm): address LLaDA2 inference review\n\nSigned-off-by: Zeyu Zhou <zezhou@nvidia.com>\n\n* docs(dllm): apply technical publications review\n\nSigned-off-by: Zeyu Zhou <zezhou@nvidia.com>\n\n---------\n\nSigned-off-by: Zeyu Zhou <zezhou@nvidia.com>",
          "is_bot": false,
          "headline": "feat(dllm): add LLaDA2 generation support (#3092)",
          "author_name": "Zeyu Zhou",
          "author_login": "zyzhou5",
          "committed_at": "2026-07-21T18:17:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b1b083e789a324c9697b8217093aeb92ca49cb08",
          "body": "ci: gate GB200 tests and container build on DISABLE_GB200_TESTS\n\nEnable GB200 CI by default, but skip the cicd-e2e-tests-gb200 jobs and the\nGCP (GB200) container build in the build matrix when the repo variable\nDISABLE_GB200_TESTS is 'true'. The Nemo_CICD_Test summary excludes gb200_\njobs from the failure count in that case, so a disabled run stays green.\n\nSigned-off-by: svcnemo-autobot <svcnemo-autobot@nvidia.com>",
          "is_bot": false,
          "headline": "ci: AUT-895 gate GB200 tests on DISABLE_GB200_TESTS variable (#3118)",
          "author_name": "svcnemo-autobot",
          "author_login": "svcnemo-autobot",
          "committed_at": "2026-07-21T17:36:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "52e061ccebc80829bf3712c131f8ba5f5198796a",
          "body": "* Add Laguna SFT recipe and docs\n\nSigned-off-by: HuiyingLi <willwin.lee@gmail.com>\n\n* docs: add Laguna README entry\n\nSigned-off-by: HuiyingLi <willwin.lee@gmail.com>\n\n* docs: use Laguna S 2.1 model id\n\nSigned-off-by: HuiyingLi <willwin.lee@gmail.com>\n\n* docs: link Laguna README entry to HF\n\nSigned-o\n[…]\nipe\n\nSigned-off-by: HuiyingLi <willwin.lee@gmail.com>\n\n* docs: add Laguna recipe CI owner\n\nSigned-off-by: HuiyingLi <willwin.lee@gmail.com>\n\n---------\n\nSigned-off-by: HuiyingLi <willwin.lee@gmail.com>",
          "is_bot": false,
          "headline": "docs: add Laguna SFT docs and recipe (#3146)",
          "author_name": "Huiying",
          "author_login": "HuiyingLi",
          "committed_at": "2026-07-21T17:27:37Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "01d9ab0460bc299cdc5f87dd3ba9dfec03d38b3e",
          "body": null,
          "is_bot": false,
          "headline": "fix(moe): preserve HSDP replica gradient synchronization (#3135)",
          "author_name": "wangzhxg",
          "author_login": "wangzhxg",
          "committed_at": "2026-07-21T09:03:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2e40c6222a35efe72ed1446b655a516e0cf9b882",
          "body": "* feat(bagel): make TE and fused projections configurable\n\nSigned-off-by: Zeyu Zhou <zezhou@nvidia.com>\n\n* fix(bagel): harden TE and fused projections\n\nSigned-off-by: Zeyu Zhou <zezhou@nvidia.com>\n\n* fix(bagel): support fused distributed checkpoint init\n\nSigned-off-by: Zeyu Zhou <zezhou@nvidia.com>\n\n[…]\nned-off-by: Zeyu Zhou <zezhou@nvidia.com>\n\n* perf(bagel): enable TE in example recipes by default\n\nSigned-off-by: Zeyu Zhou <zezhou@nvidia.com>\n\n---------\n\nSigned-off-by: Zeyu Zhou <zezhou@nvidia.com>",
          "is_bot": false,
          "headline": "feat(bagel): add TE support (#2895)",
          "author_name": "Zeyu Zhou",
          "author_login": "zyzhou5",
          "committed_at": "2026-07-21T03:28:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "66c72a99c6a21bda5ea50dc56d7d1410528b19ef",
          "body": "* fix(ci): preserve retrieval evaluation schedule\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\n\n* fix(ci): preserve retrieval release schedule\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\n\n---------\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>",
          "is_bot": false,
          "headline": "fix(ci): preserve retrieval evaluation schedule (#3139)",
          "author_name": "Yuhe Zhang",
          "author_login": "yuhezhang-ai",
          "committed_at": "2026-07-20T21:59:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ce862ce43613ade8881bd071fe71a369a8a8436e",
          "body": "* build(deps): bump base container to 26.06-cuda13.3\n\nSigned-off-by: Dong Hyuk Chang <9426164+thomasdhc@users.noreply.github.com>\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>\n\n* ci(install-test): keep cuda-dl-base on 26.04-cuda13.2\n\nSigned-off-by: Dong Hyuk Chang <9426164+tho\n[…]\n-by: Dong Hyuk Chang <9426164+thomasdhc@users.noreply.github.com>\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>\nCo-authored-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>",
          "is_bot": false,
          "headline": "test(vlm): add checkpoint robustness coverage (#3112)",
          "author_name": "Yuhe Zhang",
          "author_login": "yuhezhang-ai",
          "committed_at": "2026-07-20T21:28:05Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c659a21e74988b84634d31afbf6325be10bd55ee",
          "body": "Signed-off-by: Yuhe Zhang <yuhez@nvidia.com>",
          "is_bot": false,
          "headline": "fix(checkpoint): isolate consolidation timeout from NCCL (#3108)",
          "author_name": "Yuhe Zhang",
          "author_login": "yuhezhang-ai",
          "committed_at": "2026-07-20T20:17:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9005cc155e4ef26d50746346b48b318f4b03c502",
          "body": "* ci: shard GPU unit tests into 5 pytest-shard chunks\n\nSplit the single L0_Unit_Tests_GPU job into five parallel matrix shards\nusing pytest-shard, plumbing --shard-id/--num-shards through the\ntest-template action and tests/run_test.sh.\n\nSigned-off-by: svcnemo-autobot <svcnemo-autobot@nvidia.com>\n\n* \n[…]\nia.com>\n\n* chore(deps): regenerate uv-pytorch.lock for pytest-shard\n\nSigned-off-by: svcnemo-autobot <svcnemo-autobot@nvidia.com>\n\n---------\n\nSigned-off-by: svcnemo-autobot <svcnemo-autobot@nvidia.com>",
          "is_bot": false,
          "headline": "ci: AUT-911 shard GPU unit tests into 5 pytest-shard chunks (#3138)",
          "author_name": "svcnemo-autobot",
          "author_login": "svcnemo-autobot",
          "committed_at": "2026-07-20T18:03:11Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "106bc6aacc0e65c9cfe40317b55eb9b27ba8a8d3",
          "body": "…own (#3134)\n\nfix(transformers): keep custom MiniMaxM3VL config when transformers ships its own\n\ntransformers 5.12 (bumped in 14d17731) added a native minimax_m3_vl model\ntype with the same model_type string and class names as our custom\nimplementation. _register_custom_configs skips registration wh\n[…]\nitten against the native config and runs green, so\nits behavior is left unchanged.\n\nRegression test pins CONFIG_MAPPING['minimax_m3_vl'] to our class.\n\nSigned-off-by: HuiyingLi <willwin.lee@gmail.com>",
          "is_bot": false,
          "headline": "fix(transformers): keep custom M3 config when transformers ships its …",
          "author_name": "Huiying",
          "author_login": "HuiyingLi",
          "committed_at": "2026-07-20T15:47:12Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3cd3ed2a119fbf0ea23b347d7a881be16c159af0",
          "body": "* build(deps): bump base container to 26.06-cuda13.3\n\nSigned-off-by: Dong Hyuk Chang <9426164+thomasdhc@users.noreply.github.com>\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>\n\n* ci(install-test): keep cuda-dl-base on 26.04-cuda13.2\n\nSigned-off-by: Dong Hyuk Chang <9426164+tho\n[…]\n <yuhez@nvidia.com>\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>\nCo-authored-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\nCo-authored-by: Yuhe Zhang <yuhez@nvidia.com>",
          "is_bot": false,
          "headline": "build(deps): bump base container to 26.06-cuda13.3 (#2983)",
          "author_name": "Dong Hyuk Chang",
          "author_login": "thomasdhc",
          "committed_at": "2026-07-20T14:01:18Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0c41f71363d940a4830ad0b142c8c6b204e67648",
          "body": "* fix(checkpoint): gather PEFT adapter across PP stages so full LoRA is saved\n\nSigned-off-by: hyfine <835083304@qq.com>\n\n* fix(checkpoint): only warn on PP gather collapse when >1 rank has adapters\n\nAddresses review feedback: the degenerate-gather guard warned whenever\nmerged_n <= max(per_rank), whi\n[…]\n one non-empty rank.\n\nSigned-off-by: hyfine <835083304@qq.com>\n\n---------\n\nSigned-off-by: hyfine <835083304@qq.com>\nCo-authored-by: Alexandros Koumparoulis <153118171+akoumpa@users.noreply.github.com>",
          "is_bot": false,
          "headline": "fix(checkpoint): gather PEFT adapter across PP stages (#3096)",
          "author_name": "Muqing",
          "author_login": "hyfine",
          "committed_at": "2026-07-20T11:51:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "cdaaff9139d4b3a2aaa5b1ef03226c932f6110b2",
          "body": "Add Inkling README news\n\nSigned-off-by: HuiyingLi <willwin.lee@gmail.com>",
          "is_bot": false,
          "headline": "docs: Add Inkling README news (#3129)",
          "author_name": "Huiying",
          "author_login": "HuiyingLi",
          "committed_at": "2026-07-19T08:51:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ba4ec358fecfec3bc3524a3e8a56677a2815878b",
          "body": "* feat(vlm): THD packed-sequence support for Qwen3-VL-MoE (collater, recipe, capability, tests)\n\nSigned-off-by: khazic <khazzz1c@gmail.com>\n\n* fix(vlm): guard THD packing to cp_size=1; document mRoPE/CP scope\n\nSigned-off-by: khazic <khazzz1c@gmail.com>\n\n* fix(vlm): use self.mesh_context.cp_size in T\n[…]\nen3-VL-30B-A3B with TE\nattention and packing_format=thd on MedPix: 20 healthy steps, loss 1.98->1.63.\n\nSigned-off-by: khazic <khazzz1c@gmail.com>\n\n---------\n\nSigned-off-by: khazic <khazzz1c@gmail.com>",
          "is_bot": false,
          "headline": "feat(vlm): add THD packed-sequence support for Qwen3-VL-MoE (#3052)",
          "author_name": "khazzz1c",
          "author_login": "khazic",
          "committed_at": "2026-07-18T14:22:48Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e54ea84b4dc68793be900ede9c29cf98a995dcf5",
          "body": "… (#2783)\n\n* ci(dllm): add dLLM SFT nightly train-to-generate launcher and recipes\n\nAdd a dLLM SFT nightly CI test folder:\n- tests/ci_tests/scripts/dllm_sft_launcher.sh: train->generate smoke. torchrun\n  finetune via examples/dllm_sft/finetune.py (selects recipe class from the\n  config 'recipe:' fie\n[…]\niffusionGemma to nightly SFT\n\nSigned-off-by: Zeyu Zhou <zezhou@nvidia.com>\n\n---------\n\nSigned-off-by: Zeyu Zhou <zezhou@nvidia.com>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "ci(dllm): add dLLM SFT nightly train-to-generate launcher and recipes…",
          "author_name": "Zeyu Zhou",
          "author_login": "zyzhou5",
          "committed_at": "2026-07-18T08:25:51Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a5b9283045094a1ab5cbcd19c60cdd536ea1e20a",
          "body": "* feat(models): add Inkling VLM MoE support\n\nSigned-off-by: hemildesai <hemild@nvidia.com>\n\n* Update uv lock\n\nSigned-off-by: NeMo Bot <nemo-bot@nvidia.com>\n\n* refactor(pp): reuse centralized process group warmup\n\nSigned-off-by: hemildesai <hemild@nvidia.com>\n\n* refactor(pp): use default NCCL communi\n[…]\nmild@nvidia.com>\nSigned-off-by: NeMo Bot <nemo-bot@nvidia.com>\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\nCo-authored-by: NeMo Bot <nemo-bot@nvidia.com>\nCo-authored-by: Yuhe Zhang <yuhez@nvidia.com>",
          "is_bot": false,
          "headline": "feat(models): add Inkling VLM MoE support (#3095)",
          "author_name": "Hemil Desai",
          "author_login": "hemildesai",
          "committed_at": "2026-07-18T03:45:43Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5008ea66c33583bb3fe2f782fbffd56da4135933",
          "body": "… (#3113)\n\n* fix(vlm): resolve get_rope_index from the base model for packed mRoPE\n\nTransformers defines get_rope_index on the base model, not on the\n*ForConditionalGeneration that model_parts holds, and DDP or MegatronFSDP add\nanother wrapper on top without proxying attribute reads. The recipe's pl\n[…]\nt of setup(). Fall back to the\nattribute lookups alone when the object does not carry named_children.\n\nSigned-off-by: khazic <khazzz1c@gmail.com>\n\n---------\n\nSigned-off-by: khazic <khazzz1c@gmail.com>",
          "is_bot": false,
          "headline": "fix(vlm): resolve get_rope_index from the base model for packed mRoPE…",
          "author_name": "khazzz1c",
          "author_login": "khazic",
          "committed_at": "2026-07-18T03:04:58Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "eb0470922bc01557fa424aea09a06b64d3578573",
          "body": "* ci: add HF hub cache preflight check\n\nSigned-off-by: Dong Hyuk Chang <9426164+thomasdhc@users.noreply.github.com>\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>\n\n* refactor(ci): use exit code for hf_cache_check decision\n\nSigned-off-by: Dong Hyuk Chang <9426164+thomasdhc@users\n[…]\nus 4.6 (1M context) <noreply@anthropic.com>\n\n---------\n\nSigned-off-by: Dong Hyuk Chang <9426164+thomasdhc@users.noreply.github.com>\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "ci: add HF hub cache preflight check (#3119)",
          "author_name": "Dong Hyuk Chang",
          "author_login": "thomasdhc",
          "committed_at": "2026-07-17T20:43:47Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a0d025e4ad50152960f4516dabb190a8cfcc3720",
          "body": "* fix(ci): restore Ministral3 checkpoint robustness\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\n\n* fix(ci): make Ministral3 recipes blocking\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\n\n---------\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>",
          "is_bot": false,
          "headline": "fix(ci): restore Ministral3 checkpoint robustness (#3111)",
          "author_name": "Yuhe Zhang",
          "author_login": "yuhezhang-ai",
          "committed_at": "2026-07-17T18:48:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4827dbbaadef007fce81584e1c544d36994de641",
          "body": "* feat(loss): add chunked fp32 path to MaskedCrossEntropy via chunk_size\n\nComputing masked cross-entropy on the last pipeline stage upcasts the full\n[N, V] logits to fp32 and additionally saves cross_entropy's fp32 log-softmax\nfor backward, which dominates the loss-side memory peak for large-vocabul\n[…]\nls): harden FA2 packing compatibility shim\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\n\n---------\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: bound chunked CE memory and preserve packing masks (#2996)",
          "author_name": "Yuhe Zhang",
          "author_login": "yuhezhang-ai",
          "committed_at": "2026-07-17T18:37:22Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f02d3607ae35ef570f89ac7f7c3b54dc54918ab2",
          "body": "* feat(training): add opt-in setup-time prewarms for cuBLAS, fla autotune, and NCCL groups\n\ncuBLAS/cuBLASLt workspaces, Triton autotune caches (flash-linear-attention\ngated-delta-net backward kernels), and NCCL communicators all initialize\nlazily on first use. When that first use lands in step 1 at \n[…]\nmaining technical publications suggestions\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\n\n---------\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(training): add opt-in setup-time prewarms (#2992)",
          "author_name": "Yuhe Zhang",
          "author_login": "yuhezhang-ai",
          "committed_at": "2026-07-17T18:36:53Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5adfd2206a5e4cc2432b692a6bf2f2a40cd13d80",
          "body": "…(#2884)\n\n* test(ci): remove deprecated 26.10 models from nightly and release CI\n\nDrop deprecated families from nightly recipe lists, exempt them from\nrelease auto-discovery, update benchmark overrides, and remove stale\ngolden convergence values.\n\n* fix(ci): keep Llama 3.2-1B and retrieval tests whi\n[…]\ncontinue to run in CI while the remaining deprecated\nfamilies (Baichuan, Qwen2.5/Seed, Mistral/Mixtral, GLM 4.5/4-9B, Kimi-VL,\nGemma 2/3, Phi, Granite, OLMo, Falcon 3, StarCoder, Cohere) stay removed.",
          "is_bot": false,
          "headline": "test(ci): remove deprecated 26.10 models from nightly and release CI …",
          "author_name": "Abhishree Thittenamane",
          "author_login": "athitten",
          "committed_at": "2026-07-17T16:41:58Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8a83fdcee3c5025df0f64399cf771236dfb0242d",
          "body": "…s (#2995)\n\n* feat(moe): safe fail-closed tensor parallelism for custom MoE models\n\nEnable tensor parallelism on the non-expert token path of custom MoE\nmodels instead of asserting tp_size == 1, with fail-closed validation:\n\n- Resolve TP plans only from an explicit tp_shard_plan or a registered\n  ar\n[…]\nfactor: move tied-weight helpers to shared\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\n\n---------\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(moe): safe TP and EP/TP gradient correctness for custom MoE model…",
          "author_name": "Yuhe Zhang",
          "author_login": "yuhezhang-ai",
          "committed_at": "2026-07-17T14:20:26Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4364e4bd22ebbe3b64614840933a248581b2d708",
          "body": "* feat(kd): support separate student and teacher meshes\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n* docs(kd): add separate-mesh example configs\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n* docs(kd): add VLM separate-mesh examples\n\nSigned-off-by: Alexa\n[…]\nidia.com>\n\n* test(kd): cover separate mesh recipe helpers\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n---------\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>",
          "is_bot": false,
          "headline": "feat(kd): support separate student and teacher meshes (#2954)",
          "author_name": "Alexandros Koumparoulis",
          "author_login": "akoumpa",
          "committed_at": "2026-07-17T07:56:55Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "af88b008065ef77547a58377498d637271ea69b9",
          "body": "Signed-off-by: Yuhe Zhang <yuhez@nvidia.com>",
          "is_bot": false,
          "headline": "fix(test): use eager attention for Nemotron-H HF loads (#3100)",
          "author_name": "Yuhe Zhang",
          "author_login": "yuhezhang-ai",
          "committed_at": "2026-07-16T19:44:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9fd184099087884b0908dfd150c7f453bc436d23",
          "body": "Codecov upload for pull requests from forks landed in a pending state\nbecause the PR number could not be inferred: the fork CI runs on a\nrefs/heads/pull-request/<n> branch, so codecov/codecov-action has no PR\ncontext. Pass override_pr and override_commit from the get-pr-info step\n(mirroring the existing base_sha wiring) so the coverage report is\nassociated with the correct PR and head commit.\n\nSigned-off-by: svcnemo-autobot <svcnemo-autobot@nvidia.com>",
          "is_bot": false,
          "headline": "fix(ci): pass PR number and commit to Codecov for fork PRs (#3101)",
          "author_name": "svcnemo-autobot",
          "author_login": "svcnemo-autobot",
          "committed_at": "2026-07-16T18:31:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e522eda71804bef99680e8e43baf898d66425116",
          "body": "Signed-off-by: Zeyu Zhou <zezhou@nvidia.com>",
          "is_bot": false,
          "headline": "fix(bagel): enable periodic garbage collection (#3105)",
          "author_name": "Zeyu Zhou",
          "author_login": "zyzhou5",
          "committed_at": "2026-07-16T17:08:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c40259786db0f36548b6efb7c4bdef60008dc0f6",
          "body": "…ataloader (#2390)\n\n* wip\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n* fix(datasets): satisfy import-linter independence contract\n\nDataloaderConfig.build (the config-driven replacement for the recipe's\nbuild_dataloader) crossed the \"Components must not import each other\"\ncont\n[…]\n-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n---------\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "refactor(datasets): typed Config + build per dataset, config-driven d…",
          "author_name": "Alexandros Koumparoulis",
          "author_login": "akoumpa",
          "committed_at": "2026-07-16T16:21:55Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2dca34ea99e2ccb48e4c33225050cd74a4922b1d",
          "body": "* feat(speculative): add DFlash validation metrics\n\nSigned-off-by: khazic <khazzz1c@gmail.com>\n\n* fix(speculative): skip disabled W&B metrics\n\nSigned-off-by: khazic <khazzz1c@gmail.com>\n\n---------\n\nSigned-off-by: khazic <khazzz1c@gmail.com>",
          "is_bot": false,
          "headline": "feat(speculative): add DFlash validation metrics (#3072)",
          "author_name": "khazzz1c",
          "author_login": "khazic",
          "committed_at": "2026-07-16T15:11:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "59eca013119f9e485bf13f15bc007b8157edc13a",
          "body": "…998)\n\n* refactor(models): add TieSupport enum and single tie_word_embeddings guard\n\nReplace reject_unsupported_tied/untied_word_embeddings with a single\nreject_unsupported_tie_word_embeddings(model_cls, config) driven by a per-class\nTieSupport declaration. Migrate the 30 existing guard call sites 1\n[…]\nuhe Zhang <yuhez@nvidia.com>\n\n---------\n\nSigned-off-by: Achyuthan Sivasankar <achyuthan.sivasankar@gmail.com>\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\nCo-authored-by: Yuhe Zhang <yuhez@nvidia.com>",
          "is_bot": false,
          "headline": "refactor(models): single tie_word_embeddings guard via TieSupport (#2…",
          "author_name": "achyuthan.s",
          "author_login": "Achyuthan-S",
          "committed_at": "2026-07-16T14:52:43Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "90ae61715923dfacd22f0ea9fc679c8c764ceb2f",
          "body": "Signed-off-by: Yuhe Zhang <yuhez@nvidia.com>",
          "is_bot": false,
          "headline": "test: clean up KD test process group (#3090)",
          "author_name": "Yuhe Zhang",
          "author_login": "yuhezhang-ai",
          "committed_at": "2026-07-16T14:44:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "10ee7c19f2855d6fe35f2a04daf218762d76c206",
          "body": "Revert \"chore(skills): add Regent Open Plugin manifest (#3097)\"\n\nThis reverts commit af4da2e0620d1e718fc7538374bf8551404b70fe.\n\nSigned-off-by: oliver könig <okoenig@nvidia.com>",
          "is_bot": false,
          "headline": "chore(skills): remove Open Plugin manifest (superseded) (#3099)",
          "author_name": "oliver könig",
          "author_login": "ko3n1g",
          "committed_at": "2026-07-16T09:43:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "af4da2e0620d1e718fc7538374bf8551404b70fe",
          "body": "Expose this repo's skills/ as a skills-only Regent Open Plugin so in-cluster\nCI agents (implement-author + base analyst) can activate them as $automodel:<skill>.\nAdds only .plugin/plugin.json; Regent scans ./skills/ by default. No behavior\nchange for humans or Claude Code (which reads .claude/skills).\n\nSigned-off-by: oliver könig <okoenig@nvidia.com>\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(skills): add Regent Open Plugin manifest (#3097)",
          "author_name": "oliver könig",
          "author_login": "ko3n1g",
          "committed_at": "2026-07-16T08:24:38Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "29322e1e15ae705a8221a36cacbdf0b3ccff9571",
          "body": "… (#3083)\n\nfix(speculative): keep DSpark target_layer_ids within [0, N-2] for SGLang servability\n\nThe standard SGLang runtime captures aux/context features via\nset_eagle3_layers_to_capture (effectively capturing the input of layer id+1), so\nit cannot produce a feature for -1 (the embedding, no captu\n[…]\nm is unchanged.\n\nvalidate_target_layer_ids now warns (not errors) when -1 or N-1 is present, since\nthose ids remain valid for AutoModel's own spec_generate.\n\nSigned-off-by: khazic <khazzz1c@gmail.com>",
          "is_bot": false,
          "headline": "fix(speculative): keep DSpark target_layer_ids in [0, N-2] for SGLang…",
          "author_name": "khazzz1c",
          "author_login": "khazic",
          "committed_at": "2026-07-16T02:59:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "49676eed612296f27c1d723495914c7fc4c3d805",
          "body": "…(#3081)\n\n* test(speculative): add EAGLE-3 fp8 draft convergence smoke for SM89+\n\nAdds a turnkey harness to validate fp8 draft-training convergence on\nfp8-capable hardware (H100/Ada, sm_89+), the last open fp8 item in the\nspeculative-decoding tracking issue (#2958). The fp8 feature (#2963)\nshipped w\n[…]\n: khazic <khazzz1c@gmail.com>\n\n* chore: re-trigger CI (gb200 coverage step flaked on missing uuidgen)\n\nSigned-off-by: khazic <khazzz1c@gmail.com>\n\n---------\n\nSigned-off-by: khazic <khazzz1c@gmail.com>",
          "is_bot": false,
          "headline": "test(speculative): add EAGLE-3 fp8 draft convergence smoke for SM89+ …",
          "author_name": "khazzz1c",
          "author_login": "khazic",
          "committed_at": "2026-07-16T02:57:27Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6e5d52b5bd6136ab8e3f126dc815c17577051e14",
          "body": "Signed-off-by: yaoyu-33 <yaoyu.094@gmail.com>",
          "is_bot": false,
          "headline": "fix(perf): use GPT-OSS head dimension in FLOPs accounting (#3091)",
          "author_name": "Yu Yao",
          "author_login": "yaoyu-33",
          "committed_at": "2026-07-15T23:48:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bc9ce776f3eda61f79e4c2ec80c8b8fd12a42ebb",
          "body": "* feat(retrieval): add Ministral3 embedding distillation recipe\n\nAdd EmbeddingDistillRecipe with RetrieverStudentWithProjection /\nRetrieverTeacherEmbeddingEncoder, distillation losses (cosine / MSE /\nInfoNCE-distill), intermediate-layer distillation, cross-tokenizer\ncached-teacher support, bi-encode\n[…]\nll.yaml\n\n* Update test_infonce.py\n\n* Update test_retrieval_distill_recipe.py\n\n---------\n\nSigned-off-by: Vinay Raman <viraman@nvidia.com>\nCo-authored-by: rnyak <16246900+rnyak@users.noreply.github.com>",
          "is_bot": false,
          "headline": "feat: add Ministral3 embedding distillation recipe (#3058)",
          "author_name": "vinay-raman",
          "author_login": "vinay-raman",
          "committed_at": "2026-07-15T21:40:55Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0a0433ded1cc35d3471948b6daca99b20f4ab44c",
          "body": "chore(ci): bump claude review template to v1.8.4\n\nUpdate the FW-CI-templates _claude_review.yml pin from the v1.8.3 commit\n(7d857ec) to the equivalent v1.8.4 commit (209ac79), keeping the inline\nversion comment in sync.\n\nSigned-off-by: svcnemo-autobot <svcnemo-autobot@nvidia.com>",
          "is_bot": false,
          "headline": "chore(ci): AUT-852 bump claude review template to v1.8.4 (#3087)",
          "author_name": "svcnemo-autobot",
          "author_login": "svcnemo-autobot",
          "committed_at": "2026-07-15T15:37:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2b768ada9ca1c3a0ecf23271d326765320afe09f",
          "body": "* feat(speculative): add Gemma4 EAGLE-3 target support\n\nRegister Gemma4 (`Gemma4ForConditionalGeneration`) as an EAGLE-3 target so\n`train_eagle3.py` can train a draft against Gemma4 checkpoints (E2B/E4B/31B\ndense and 26B-A4B MoE).\n\nThe draft is Llama-style dense (it consumes only post-block hidden s\n[…]\nexpert MoE backbone is hooked and supervised\nidentically to a dense target; no code change is needed.\n\nSigned-off-by: khazic <khazzz1c@gmail.com>\n\n---------\n\nSigned-off-by: khazic <khazzz1c@gmail.com>",
          "is_bot": false,
          "headline": "feat(speculative): add Gemma4-26B-A4B MoE EAGLE-3 example config (#3079)",
          "author_name": "khazzz1c",
          "author_login": "khazic",
          "committed_at": "2026-07-15T14:38:50Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ce24f7afc4b44a22426d92d8239aa0b8f20e2610",
          "body": "* feat(speculative): add Gemma4 EAGLE-3 target support\n\nRegister Gemma4 (`Gemma4ForConditionalGeneration`) as an EAGLE-3 target so\n`train_eagle3.py` can train a draft against Gemma4 checkpoints (E2B/E4B/31B\ndense and 26B-A4B MoE).\n\nThe draft is Llama-style dense (it consumes only post-block hidden s\n[…]\n8 GiB bf16) plus the draft fits on a single 80 GB\nGPU with freeze_embeddings and expandable_segments.\n\nSigned-off-by: khazic <khazzz1c@gmail.com>\n\n---------\n\nSigned-off-by: khazic <khazzz1c@gmail.com>",
          "is_bot": false,
          "headline": "feat(speculative): add Gemma4-31B EAGLE-3 example config (#3077)",
          "author_name": "khazzz1c",
          "author_login": "khazic",
          "committed_at": "2026-07-15T14:05:36Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "79bfece527396d1c77397f72890dc9b42905ff78",
          "body": "* fix(test): use SDPA for Nemotron-H HF reload\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\n\n* fix(test): avoid timeout during rank-zero HF reload\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\n\n---------\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>",
          "is_bot": false,
          "headline": "fix(test): use SDPA for Nemotron-H HF reload (#3060)",
          "author_name": "Yuhe Zhang",
          "author_login": "yuhezhang-ai",
          "committed_at": "2026-07-15T14:03:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9a6fee931ada2ab2f501d5af458f1342a51ba84b",
          "body": "* feat(speculative): add Gemma4 EAGLE-3 target support\n\nRegister Gemma4 (`Gemma4ForConditionalGeneration`) as an EAGLE-3 target so\n`train_eagle3.py` can train a draft against Gemma4 checkpoints (E2B/E4B/31B\ndense and 26B-A4B MoE).\n\nThe draft is Llama-style dense (it consumes only post-block hidden s\n[…]\n recipe as the E2B config; only the\ntarget path and output dirs change (E4B: 2560 hidden, 42 layers).\n\nSigned-off-by: khazic <khazzz1c@gmail.com>\n\n---------\n\nSigned-off-by: khazic <khazzz1c@gmail.com>",
          "is_bot": false,
          "headline": "feat(speculative): add Gemma4-E4B EAGLE-3 example config (#3073)",
          "author_name": "khazzz1c",
          "author_login": "khazic",
          "committed_at": "2026-07-15T13:58:45Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e8e45a1d76e947c6e6534dcb93879bef6b3d1388",
          "body": "* fix(dllm): remove obsolete DiffusionGemma HF compatibility\n\nSigned-off-by: Zeyu Zhou <zezhou@nvidia.com>\n\n* docs(dllm): address DiffusionGemma review feedback\n\nSigned-off-by: Zeyu Zhou <zezhou@nvidia.com>\n\n---------\n\nSigned-off-by: Zeyu Zhou <zezhou@nvidia.com>",
          "is_bot": false,
          "headline": "fix(dllm): remove obsolete DiffusionGemma HF compatibility (#3067)",
          "author_name": "Zeyu Zhou",
          "author_login": "zyzhou5",
          "committed_at": "2026-07-15T13:45:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c144e4b7a9e2772c82e24e1592462295dc6d6667",
          "body": "Register Gemma4 (`Gemma4ForConditionalGeneration`) as an EAGLE-3 target so\n`train_eagle3.py` can train a draft against Gemma4 checkpoints (E2B/E4B/31B\ndense and 26B-A4B MoE).\n\nThe draft is Llama-style dense (it consumes only post-block hidden states from\nthe frozen target's text backbone) with two G\n[…]\ner locates the decoder under\n`model.language_model.layers`, and `num_hidden_layers` is read from `text_config`.\n\nAdds a unit test and an E2B example config.\n\nSigned-off-by: khazic <khazzz1c@gmail.com>",
          "is_bot": false,
          "headline": "feat(speculative): add Gemma4 EAGLE-3 target support (#3071)",
          "author_name": "khazzz1c",
          "author_login": "khazic",
          "committed_at": "2026-07-15T09:57:21Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "395e3de6c93bafcd7cefac808c99edfbb0caf2a2",
          "body": "* Fix Kimi K2 config loading without remote code\n\nSigned-off-by: HuiyingLi <willwin.lee@gmail.com>\n\n* fix: move Kimi K2 config under Kimi package\n\nSigned-off-by: HuiyingLi <willwin.lee@gmail.com>\n\n---------\n\nSigned-off-by: HuiyingLi <willwin.lee@gmail.com>",
          "is_bot": false,
          "headline": "fix: Kimi K2 config loading without remote code (#3065)",
          "author_name": "Huiying",
          "author_login": "HuiyingLi",
          "committed_at": "2026-07-15T02:31:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "55a3bfbe7a2b5ecb566e5a5b2d944ff2b496c259",
          "body": "Signed-off-by: HuiyingLi <willwin.lee@gmail.com>",
          "is_bot": false,
          "headline": "fix(ci): use HybridEP for Step 3.5 benchmark (#3069)",
          "author_name": "Huiying",
          "author_login": "HuiyingLi",
          "committed_at": "2026-07-15T00:16:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4e809d0de1a9f2036e0e51822109936ffcc9f6e0",
          "body": "…t (#2357)\n\n* refactor(vlm-recipe): replace _target_ whitelist with marker-attribute opt-in\n\nbuild_model in recipes/vlm/finetune.py used to enumerate every accepted\nmodel _target_ inline -- the NeMoAutoModelFor* classmethods plus a\ngemma4-specific helper (_is_gemma4_joint_target) that did a lazy imp\n[…]\n\n(present via a fake module, absent via a forced ImportError) plus the\n_is_recipe_target None short-circuit, independent of installed deps.\n\n---------\n\nSigned-off-by: Abhishree <abhishreetm@gmail.com>",
          "is_bot": false,
          "headline": "refactor(vlm): gate build_model via recipe-side model-target allowlis…",
          "author_name": "Abhishree Thittenamane",
          "author_login": "athitten",
          "committed_at": "2026-07-14T16:06:51Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "80ba6a018a0c84517855c6125560fabe02c04c82",
          "body": "* fix(cp): preserve gradients when sharding VLM inputs\n\nSigned-off-by: HuiyingLi <willwin.lee@gmail.com>\n\n* test(cp): cover padded gradients and HSDP ranks\n\nSigned-off-by: HuiyingLi <willwin.lee@gmail.com>\n\n* test(cp): stress scaling with 200 padding rows\n\nSigned-off-by: HuiyingLi <willwin.lee@gmail.com>\n\n---------\n\nSigned-off-by: HuiyingLi <willwin.lee@gmail.com>",
          "is_bot": false,
          "headline": "fix(cp): preserve gradients when sharding VLM inputs (#2931)",
          "author_name": "Huiying",
          "author_login": "HuiyingLi",
          "committed_at": "2026-07-14T13:41:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7c7237e5f12adb2c9363b68bfcc0526c068047ec",
          "body": "* feat(optim): support per-parameter-group learning rate\n\nAdd `param_group_overrides` to the optimizer config so a subset of\nparameters, matched by name, can be given its own optimizer parameter\ngroup with a learning-rate / weight-decay multiplier. This mirrors\nMegatron-LM's per-group `lr_mult` scal\n[…]\nusedAdam path needs a GPU, so it stays covered by the FSDP2 validation run\nrather than the CPU suite.\n\nSigned-off-by: khazic <khazzz1c@gmail.com>\n\n---------\n\nSigned-off-by: khazic <khazzz1c@gmail.com>",
          "is_bot": false,
          "headline": "feat(optim): support per-parameter-group learning rate (#3046)",
          "author_name": "khazzz1c",
          "author_login": "khazic",
          "committed_at": "2026-07-14T13:04:48Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6c704d55ff9dd6204d1c7eab143a852c384e6987",
          "body": "* fix(distributed): checkpoint canonical child modules\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n* proper fix\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n* revert\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n* rm\n\nSigned-off-by: A\n[…]\nnvidia.com>\n\n* fix(models): preserve wrapped fp32 buffers\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n---------\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>",
          "is_bot": false,
          "headline": "fix(models): handle checkpoint-wrapped fp32 buffers (#3059)",
          "author_name": "Alexandros Koumparoulis",
          "author_login": "akoumpa",
          "committed_at": "2026-07-14T10:12:47Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "55ed9becc4b65aa8a3f0e287473b3148f449ab55",
          "body": "… (#3045)\n\n* feat(datasets): add optional parallel pre-tokenization before packing\n\nSequence packing first runs one full pass over the dataset, which for a\nlazily-tokenizing map-style dataset (e.g. ChatDataset) tokenizes every\nsample serially in a single process. On realistic multi-turn SFT data thi\n[…]\npply all review suggestions from jgerh on the text-dataset guide (wording, casing, table formatting).\n\nSigned-off-by: khazic <khazzz1c@gmail.com>\n\n---------\n\nSigned-off-by: khazic <khazzz1c@gmail.com>",
          "is_bot": false,
          "headline": "feat(datasets): add optional parallel pre-tokenization before packing…",
          "author_name": "khazzz1c",
          "author_login": "khazic",
          "committed_at": "2026-07-14T06:46:25Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6c47ea6681d1e9dd1361a2eb91a53302b7304bfd",
          "body": "…ath (#2993)\n\n* fix(moe): checkpoint trainable vision towers on the expert-parallel path\n\nThe MoE parallelizer's apply_ac only iterates the text/MTP decoder stack,\nand the generic FSDP2/DDP activation-checkpointing scope handling does not\nrun for expert-parallel configs (ep_size > 1), so MoE VLMs wi\n[…]\n-By: Claude Fable 5 <noreply@anthropic.com>\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\n\n---------\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(moe): checkpoint trainable vision towers on the expert-parallel p…",
          "author_name": "Yuhe Zhang",
          "author_login": "yuhezhang-ai",
          "committed_at": "2026-07-14T01:09:35Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9af3b45a8fefd817e9ff562e8e8780d54e8cf68e",
          "body": "…(#2997)\n\n* fix(optim): drop zero-numel local DTensor shards before TE FusedAdam\n\nFSDP2 shards every parameter along dim-0 across the shard group; any\nparameter with dim-0 smaller than the group (e.g. the biases, norm\nweights, and class/position embeddings of a small dense vision tower\nsharded over \n[…]\n-By: Claude Fable 5 <noreply@anthropic.com>\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\n\n---------\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(optim): drop zero-numel local DTensor shards before TE FusedAdam …",
          "author_name": "Yuhe Zhang",
          "author_login": "yuhezhang-ai",
          "committed_at": "2026-07-13T20:34:16Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "37ac2dcd565cc126fa6ed5035274d56527c2e3d0",
          "body": "… (#3001)\n\nThe Tulu-3 VLM SFT recipes pointed make_meta_dataset at a local\ntulu3_train_meta.json that requires a one-time data-prep dump. That file\nis absent in Nemo-CI, so the runs failed with FileNotFoundError.\n\nAdd make_tulu3_dataset, which pulls allenai/tulu-3-sft-mixture straight\nfrom the Hub a\n[…]\nJSON path uses (_convert_sharegpt_to_conversation), keeping the data\ncomposition identical (no turn cap, system turns dropped, rows in split\norder). Point the three tulu3 recipes at it.\n\nFixes AM-628.",
          "is_bot": false,
          "headline": "fix(vlm): load Tulu-3 directly from HF Hub instead of local meta JSON…",
          "author_name": "Abhishree Thittenamane",
          "author_login": "athitten",
          "committed_at": "2026-07-13T18:26:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "446b43338896f1dd31768978078cc108f59544a7",
          "body": "…by version (#3025)\n\n* fix(distributed): resolve transformers-v5 module paths in VLM AC layer-group specs\n\nTransformers v5 nests the Qwen2-VL/Qwen2.5-VL towers under the shared\n`model.` backbone and flattened the Llava/Gemma3 CLIP/SigLIP vision\ntowers, so the layer-group FQNs in _get_model_layer_gro\n[…]\n-By: Claude Fable 5 <noreply@anthropic.com>\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\n\n---------\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(distributed): resolve VLM AC layer-group paths structurally, not …",
          "author_name": "Yuhe Zhang",
          "author_login": "yuhezhang-ai",
          "committed_at": "2026-07-13T17:09:09Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d9e2557241f931407a14c95b660d811402aac8d8",
          "body": "* fix(transformers): gate _tie_weights_nemo on tie_word_embeddings flag\n\n_tie_weights_nemo re-tied lm_head.weight to the input embedding for any\nmodel exposing _nemo_tied_weights_keys, without consulting\nconfig.tie_word_embeddings. For untied models this aliased away the\ntrained lm_head loaded by fr\n[…]\nmers): align nano4 source parity threshold\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\n\n---------\n\nSigned-off-by: Yuhe Zhang <yuhez@nvidia.com>\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "test(transformers): add source-load parity coverage (#2960)",
          "author_name": "Yuhe Zhang",
          "author_login": "yuhezhang-ai",
          "committed_at": "2026-07-13T16:44:41Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "aaa158dc8e8f6f67a77a4f94da6a42bb0a66824e",
          "body": "Signed-off-by: khazic <khazzz1c@gmail.com>",
          "is_bot": false,
          "headline": "fix(dspark): omit unmeasured positional acceptance rates (#3050)",
          "author_name": "khazzz1c",
          "author_login": "khazic",
          "committed_at": "2026-07-13T15:04:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b968af6ecbee35dd22439c8a641b14d5c63b3073",
          "body": "* icnldue cutlass\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\n\n* Update uv lock\n\nSigned-off-by: NeMo Bot <nemo-bot@nvidia.com>\n\n---------\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>\nSigned-off-by: NeMo Bot <nemo-bot@nvidia.com>\nCo-authored-by: NeMo Bot <nemo-bot@nvidia.com>",
          "is_bot": false,
          "headline": "ci: include cutlass deps (#3056)",
          "author_name": "Alexandros Koumparoulis",
          "author_login": "akoumpa",
          "committed_at": "2026-07-13T14:50:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5bf95de57386a8c58c13f82ba7ef42931ed506b9",
          "body": "* fix(recipe): add Qwen3 MoE THD chat template\n\nSigned-off-by: khazic <khazzz1c@gmail.com>\n\n* fix(recipe): add OLMo generation chat template\n\nSigned-off-by: khazic <khazzz1c@gmail.com>\n\n---------\n\nSigned-off-by: khazic <khazzz1c@gmail.com>",
          "is_bot": false,
          "headline": "fix(recipe): add generation-marked chat templates (#3051)",
          "author_name": "khazzz1c",
          "author_login": "khazic",
          "committed_at": "2026-07-13T14:32:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d6e5787d718d2ab53d6e39f85206bef5f982a51c",
          "body": "add uv\n\nSigned-off-by: Alexandros Koumparoulis <akoumparouli@nvidia.com>",
          "is_bot": false,
          "headline": "docs: add uv run prefix (#3057)",
          "author_name": "Alexandros Koumparoulis",
          "author_login": "akoumpa",
          "committed_at": "2026-07-13T13:41:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 7,
      "commits_last_year": 1505,
      "latest_release_at": "2026-07-02T19:58:31Z",
      "latest_release_tag": "v0.5.0",
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 52,
      "days_since_latest_release": 22,
      "mean_days_between_releases": 48
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": true,
      "health_percentage": 75,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": true
    },
    "ecosystem": {
      "packages": [
        {
          "name": "nemo-automodel",
          "exists": true,
          "license": null,
          "keywords": [
            "Development Status :: 5 - Production/Stable",
            "Environment :: Console",
            "Intended Audience :: Developers",
            "Intended Audience :: Information Technology",
            "Intended Audience :: Science/Research",
            "License :: OSI Approved :: Apache Software License",
            "Natural Language :: English",
            "Operating System :: OS Independent",
            "Programming Language :: Python :: 3",
            "Programming Language :: Python :: 3.10",
            "Programming Language :: Python :: 3.11",
            "Programming Language :: Python :: 3.12",
            "Topic :: Scientific/Engineering",
            "Topic :: Scientific/Engineering :: Artificial Intelligence",
            "Topic :: Scientific/Engineering :: Image Recognition",
            "Topic :: Scientific/Engineering :: Mathematics",
            "Topic :: Software Development :: Libraries",
            "Topic :: Software Development :: Libraries :: Python Modules",
            "Topic :: Utilities"
          ],
          "ecosystem": "pypi",
          "matches_repo": true,
          "registry_url": "https://pypi.org/project/nemo-automodel/",
          "is_deprecated": false,
          "latest_version": "0.5.0",
          "repository_url": "https://github.com/NVIDIA-NeMo/Automodel",
          "versions_count": 7,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 19319,
          "first_published_at": "2025-09-17T13:58:50.684922Z",
          "latest_published_at": "2026-07-02T19:58:07.447163Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 22
        }
      ]
    },
    "popularity": {
      "forks": 231,
      "stars": 766,
      "watchers": 9,
      "fork_history": {
        "days": [
          {
            "date": "2025-07-08",
            "count": 1
          },
          {
            "date": "2025-07-19",
            "count": 1
          },
          {
            "date": "2025-07-28",
            "count": 1
          },
          {
            "date": "2025-08-25",
            "count": 1
          },
          {
            "date": "2025-08-26",
            "count": 1
          },
          {
            "date": "2025-08-27",
            "count": 1
          },
          {
            "date": "2025-08-28",
            "count": 2
          },
          {
            "date": "2025-09-05",
            "count": 1
          },
          {
            "date": "2025-09-24",
            "count": 1
          },
          {
            "date": "2025-10-11",
            "count": 1
          },
          {
            "date": "2025-10-16",
            "count": 1
          },
          {
            "date": "2025-10-22",
            "count": 2
          },
          {
            "date": "2025-10-28",
            "count": 2
          },
          {
            "date": "2025-11-05",
            "count": 1
          },
          {
            "date": "2025-11-12",
            "count": 1
          },
          {
            "date": "2025-11-14",
            "count": 2
          },
          {
            "date": "2025-11-16",
            "count": 1
          },
          {
            "date": "2025-11-20",
            "count": 1
          },
          {
            "date": "2025-11-23",
            "count": 1
          },
          {
            "date": "2025-12-05",
            "count": 1
          },
          {
            "date": "2025-12-08",
            "count": 2
          },
          {
            "date": "2025-12-11",
            "count": 1
          },
          {
            "date": "2025-12-12",
            "count": 1
          },
          {
            "date": "2025-12-18",
            "count": 1
          },
          {
            "date": "2025-12-19",
            "count": 2
          },
          {
            "date": "2025-12-23",
            "count": 1
          },
          {
            "date": "2025-12-24",
            "count": 1
          },
          {
            "date": "2025-12-28",
            "count": 1
          },
          {
            "date": "2025-12-31",
            "count": 1
          },
          {
            "date": "2026-01-01",
            "count": 2
          },
          {
            "date": "2026-01-03",
            "count": 1
          },
          {
            "date": "2026-01-09",
            "count": 1
          },
          {
            "date": "2026-01-12",
            "count": 2
          },
          {
            "date": "2026-01-16",
            "count": 2
          },
          {
            "date": "2026-01-17",
            "count": 1
          },
          {
            "date": "2026-01-21",
            "count": 1
          },
          {
            "date": "2026-01-25",
            "count": 1
          },
          {
            "date": "2026-01-27",
            "count": 1
          },
          {
            "date": "2026-02-04",
            "count": 2
          },
          {
            "date": "2026-02-05",
            "count": 1
          },
          {
            "date": "2026-02-06",
            "count": 1
          },
          {
            "date": "2026-02-09",
            "count": 1
          },
          {
            "date": "2026-02-10",
            "count": 3
          },
          {
            "date": "2026-02-11",
            "count": 1
          },
          {
            "date": "2026-02-12",
            "count": 3
          },
          {
            "date": "2026-02-15",
            "count": 1
          },
          {
            "date": "2026-02-16",
            "count": 2
          },
          {
            "date": "2026-02-17",
            "count": 4
          },
          {
            "date": "2026-02-18",
            "count": 2
          },
          {
            "date": "2026-02-19",
            "count": 2
          },
          {
            "date": "2026-02-20",
            "count": 1
          },
          {
            "date": "2026-02-21",
            "count": 2
          },
          {
            "date": "2026-02-24",
            "count": 2
          },
          {
            "date": "2026-02-25",
            "count": 2
          },
          {
            "date": "2026-02-26",
            "count": 1
          },
          {
            "date": "2026-02-27",
            "count": 1
          },
          {
            "date": "2026-02-28",
            "count": 2
          },
          {
            "date": "2026-03-02",
            "count": 1
          },
          {
            "date": "2026-03-04",
            "count": 1
          },
          {
            "date": "2026-03-06",
            "count": 2
          },
          {
            "date": "2026-03-10",
            "count": 1
          },
          {
            "date": "2026-03-11",
            "count": 1
          },
          {
            "date": "2026-03-13",
            "count": 1
          },
          {
            "date": "2026-03-14",
            "count": 1
          },
          {
            "date": "2026-03-15",
            "count": 1
          },
          {
            "date": "2026-03-18",
            "count": 1
          },
          {
            "date": "2026-03-20",
            "count": 1
          },
          {
            "date": "2026-03-21",
            "count": 2
          },
          {
            "date": "2026-03-26",
            "count": 2
          },
          {
            "date": "2026-03-29",
            "count": 1
          },
          {
            "date": "2026-03-30",
            "count": 2
          },
          {
            "date": "2026-03-31",
            "count": 1
          },
          {
            "date": "2026-04-01",
            "count": 1
          },
          {
            "date": "2026-04-02",
            "count": 2
          },
          {
            "date": "2026-04-03",
            "count": 2
          },
          {
            "date": "2026-04-05",
            "count": 1
          },
          {
            "date": "2026-04-06",
            "count": 3
          },
          {
            "date": "2026-04-07",
            "count": 5
          },
          {
            "date": "2026-04-09",
            "count": 2
          },
          {
            "date": "2026-04-10",
            "count": 1
          },
          {
            "date": "2026-04-11",
            "count": 1
          },
          {
            "date": "2026-04-14",
            "count": 2
          },
          {
            "date": "2026-04-15",
            "count": 1
          },
          {
            "date": "2026-04-16",
            "count": 1
          },
          {
            "date": "2026-04-17",
            "count": 1
          },
          {
            "date": "2026-04-19",
            "count": 1
          },
          {
            "date": "2026-04-21",
            "count": 2
          },
          {
            "date": "2026-04-22",
            "count": 1
          },
          {
            "date": "2026-04-24",
            "count": 1
          },
          {
            "date": "2026-04-25",
            "count": 1
          },
          {
            "date": "2026-04-28",
            "count": 1
          },
          {
            "date": "2026-04-29",
            "count": 3
          },
          {
            "date": "2026-04-30",
            "count": 1
          },
          {
            "date": "2026-05-02",
            "count": 2
          },
          {
            "date": "2026-05-03",
            "count": 1
          },
          {
            "date": "2026-05-04",
            "count": 1
          },
          {
            "date": "2026-05-08",
            "count": 1
          },
          {
            "date": "2026-05-10",
            "count": 2
          },
          {
            "date": "2026-05-12",
            "count": 1
          },
          {
            "date": "2026-05-13",
            "count": 2
          },
          {
            "date": "2026-05-14",
            "count": 2
          },
          {
            "date": "2026-05-15",
            "count": 1
          },
          {
            "date": "2026-05-16",
            "count": 1
          },
          {
            "date": "2026-05-17",
            "count": 1
          },
          {
            "date": "2026-05-18",
            "count": 3
          },
          {
            "date": "2026-05-20",
            "count": 2
          },
          {
            "date": "2026-05-21",
            "count": 2
          },
          {
            "date": "2026-05-22",
            "count": 1
          },
          {
            "date": "2026-05-25",
            "count": 1
          },
          {
            "date": "2026-05-26",
            "count": 1
          },
          {
            "date": "2026-05-27",
            "count": 3
          },
          {
            "date": "2026-05-29",
            "count": 1
          },
          {
            "date": "2026-05-31",
            "count": 2
          },
          {
            "date": "2026-06-01",
            "count": 1
          },
          {
            "date": "2026-06-03",
            "count": 1
          },
          {
            "date": "2026-06-05",
            "count": 3
          },
          {
            "date": "2026-06-06",
            "count": 1
          },
          {
            "date": "2026-06-09",
            "count": 1
          },
          {
            "date": "2026-06-10",
            "count": 3
          },
          {
            "date": "2026-06-11",
            "count": 1
          },
          {
            "date": "2026-06-15",
            "count": 1
          },
          {
            "date": "2026-06-16",
            "count": 1
          },
          {
            "date": "2026-06-18",
            "count": 1
          },
          {
            "date": "2026-06-22",
            "count": 1
          },
          {
            "date": "2026-06-23",
            "count": 3
          },
          {
            "date": "2026-06-26",
            "count": 1
          },
          {
            "date": "2026-06-27",
            "count": 1
          },
          {
            "date": "2026-06-28",
            "count": 1
          },
          {
            "date": "2026-06-29",
            "count": 2
          },
          {
            "date": "2026-07-01",
            "count": 2
          },
          {
            "date": "2026-07-02",
            "count": 3
          },
          {
            "date": "2026-07-03",
            "count": 1
          },
          {
            "date": "2026-07-05",
            "count": 2
          },
          {
            "date": "2026-07-06",
            "count": 2
          },
          {
            "date": "2026-07-08",
            "count": 2
          },
          {
            "date": "2026-07-09",
            "count": 2
          },
          {
            "date": "2026-07-10",
            "count": 2
          },
          {
            "date": "2026-07-11",
            "count": 2
          },
          {
            "date": "2026-07-12",
            "count": 1
          },
          {
            "date": "2026-07-13",
            "count": 3
          },
          {
            "date": "2026-07-14",
            "count": 3
          },
          {
            "date": "2026-07-16",
            "count": 2
          },
          {
            "date": "2026-07-17",
            "count": 1
          },
          {
            "date": "2026-07-20",
            "count": 1
          },
          {
            "date": "2026-07-21",
            "count": 2
          },
          {
            "date": "2026-07-22",
            "count": 3
          },
          {
            "date": "2026-07-24",
            "count": 3
          }
        ],
        "complete": true,
        "collected": 225,
        "total_forks": 231
      },
      "star_history": null,
      "open_issues_and_prs": 344
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "examples",
        "notebooks",
        "recipes"
      ],
      "has_llms_txt": false,
      "has_dockerfile": true,
      "has_mcp_signal": false,
      "bootstrap_files": [
        "docs/Makefile",
        "docs/fern/Makefile",
        "nemo_automodel/components/datasets/llm/megatron/Makefile"
      ],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [],
      "largest_source_bytes": 153900,
      "source_files_sampled": 1405,
      "oversized_source_files": 30,
      "agent_instruction_files": [
        "AGENTS.md",
        "CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 13233
    },
    "dependencies": {
      "manifests": [
        "pyproject.toml"
      ],
      "advisories": {
        "error": null,
        "scope": "published_package",
        "source": "osv",
        "findings": [],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 131,
        "malicious_count": 0,
        "assessed_package": "pypi:nemo-automodel@0.5.0",
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "pypi"
      ],
      "dependencies": [
        {
          "name": "datasets",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=4.0.0"
        },
        {
          "name": "megatron-fsdp",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "==0.5.0"
        },
        {
          "name": "mistral-common",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "pybind11",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "pyyaml",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "tiktoken",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "torch",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=2.6.0"
        },
        {
          "name": "torchdata",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "transformers",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "==5.12.1"
        },
        {
          "name": "wandb",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.28.0"
        },
        {
          "name": "torchao",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "mlflow",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "flashoptim",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.1.3"
        },
        {
          "name": "quack-kernels",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "==0.6.1"
        }
      ],
      "all_dependencies": {
        "error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
        "source": null,
        "packages": [],
        "collected": false,
        "truncated": false,
        "total_count": null,
        "direct_count": null,
        "indirect_count": null
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 193,
        "merged_prs": 2071,
        "open_issues": 151,
        "closed_ratio": 0.705,
        "closed_issues": 361,
        "closed_unmerged_prs": 399
      },
      "bus_factor": 4,
      "bot_contributors": 1,
      "top_contributors": [
        {
          "type": "User",
          "login": "akoumpa",
          "commits": 398,
          "avatar_url": "https://avatars.githubusercontent.com/u/153118171?v=4"
        },
        {
          "type": "User",
          "login": "thomasdhc",
          "commits": 207,
          "avatar_url": "https://avatars.githubusercontent.com/u/9426164?v=4"
        },
        {
          "type": "User",
          "login": "HuiyingLi",
          "commits": 203,
          "avatar_url": "https://avatars.githubusercontent.com/u/1331543?v=4"
        },
        {
          "type": "User",
          "login": "khazic",
          "commits": 188,
          "avatar_url": "https://avatars.githubusercontent.com/u/83893956?v=4"
        },
        {
          "type": "User",
          "login": "adil-a",
          "commits": 123,
          "avatar_url": "https://avatars.githubusercontent.com/u/47084919?v=4"
        },
        {
          "type": "User",
          "login": "hemildesai",
          "commits": 105,
          "avatar_url": "https://avatars.githubusercontent.com/u/8195444?v=4"
        },
        {
          "type": "User",
          "login": "ko3n1g",
          "commits": 46,
          "avatar_url": "https://avatars.githubusercontent.com/u/16716991?v=4"
        },
        {
          "type": "User",
          "login": "chtruong814",
          "commits": 39,
          "avatar_url": "https://avatars.githubusercontent.com/u/195193376?v=4"
        },
        {
          "type": "User",
          "login": "yuhezhang-ai",
          "commits": 39,
          "avatar_url": "https://avatars.githubusercontent.com/u/8109249?v=4"
        },
        {
          "type": "User",
          "login": "ZhiyuLi-Nvidia",
          "commits": 31,
          "avatar_url": "https://avatars.githubusercontent.com/u/195393437?v=4"
        }
      ],
      "contributors_sampled": 99,
      "top_contributor_share": 0.235
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "_update_dependencies.yml",
        "changelog-build.yml",
        "cherry-pick-release-commit.yml",
        "cicd-approve-test-queue.yml",
        "cicd-main.yml",
        "claude-review.yml",
        "close-inactive-issue-pr.yml",
        "community-bot.yml",
        "copyright-check.yml",
        "dependabot.yml",
        "detect-secrets.yml",
        "fern-docs-ci.yml",
        "fern-docs-preview-build.yml",
        "fern-docs-preview-comment.yml",
        "install-test.yml",
        "publish-fern-docs.yml",
        "release-freeze.yml",
        "release.yml",
        "request-nvskills-ci.yml",
        "semantic_pull_request.yml",
        "uv-lock-generation.yml",
        "validate-recipe-configs.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [
        ".flake8",
        ".pylintrc"
      ],
      "has_editorconfig": false,
      "has_linter_config": true,
      "has_precommit_config": true
    },
    "security_signals": {
      "lockfiles": [
        "uv.lock"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": null,
            "reason": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 10,
            "reason": "30 out of 30 merged PRs checked by a CI test -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 9,
            "reason": "Found 27/30 approved changesets -- score normalized to 9",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 24 contributing companies or organizations",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 0,
            "reason": "no update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": 10,
            "reason": "packaging workflow detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 0,
            "reason": "dependency not pinned by hash detected -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "SAST tool is not run on all commits -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 10,
            "reason": "security policy file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 0,
            "reason": "78 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "3ebd99a5e65c11ddfa73f964260bbb774827b104",
        "ran_at": "2026-07-25T06:51:33Z",
        "aggregate_score": 5.5,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": true,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-25T06:47:35Z",
      "oldest_open_prs": [
        {
          "number": 393,
          "created_at": "2025-08-27T18:11:04Z",
          "last_comment_at": "2025-08-27T18:11:08Z",
          "last_comment_author": "copy-pr-bot"
        },
        {
          "number": 449,
          "created_at": "2025-09-10T08:51:17Z",
          "last_comment_at": "2025-09-10T08:51:20Z",
          "last_comment_author": "copy-pr-bot"
        },
        {
          "number": 472,
          "created_at": "2025-09-17T18:03:44Z",
          "last_comment_at": "2025-09-17T23:41:16Z",
          "last_comment_author": "akoumpa"
        },
        {
          "number": 476,
          "created_at": "2025-09-18T15:16:51Z",
          "last_comment_at": "2025-09-19T07:19:03Z",
          "last_comment_author": "akoumpa"
        },
        {
          "number": 496,
          "created_at": "2025-09-23T08:37:30Z",
          "last_comment_at": "2025-09-23T08:37:33Z",
          "last_comment_author": "copy-pr-bot"
        },
        {
          "number": 538,
          "created_at": "2025-09-30T18:35:08Z",
          "last_comment_at": "2025-10-28T03:37:57Z",
          "last_comment_author": "akoumpa"
        },
        {
          "number": 582,
          "created_at": "2025-10-04T04:32:20Z",
          "last_comment_at": "2025-10-04T04:32:24Z",
          "last_comment_author": "copy-pr-bot"
        },
        {
          "number": 599,
          "created_at": "2025-10-07T18:29:35Z",
          "last_comment_at": "2025-10-07T18:29:38Z",
          "last_comment_author": "copy-pr-bot"
        },
        {
          "number": 623,
          "created_at": "2025-10-13T06:10:00Z",
          "last_comment_at": "2025-10-13T06:10:03Z",
          "last_comment_author": "copy-pr-bot"
        },
        {
          "number": 643,
          "created_at": "2025-10-15T07:16:22Z",
          "last_comment_at": "2025-10-15T07:25:54Z",
          "last_comment_author": "pablo-garay"
        },
        {
          "number": 784,
          "created_at": "2025-11-07T17:27:56Z",
          "last_comment_at": "2025-11-07T17:28:00Z",
          "last_comment_author": "copy-pr-bot"
        },
        {
          "number": 787,
          "created_at": "2025-11-10T00:28:09Z",
          "last_comment_at": "2026-01-13T18:07:32Z",
          "last_comment_author": "hemildesai"
        },
        {
          "number": 840,
          "created_at": "2025-11-20T02:12:42Z",
          "last_comment_at": "2025-11-20T02:12:45Z",
          "last_comment_author": "copy-pr-bot"
        },
        {
          "number": 875,
          "created_at": "2025-11-23T02:37:22Z",
          "last_comment_at": "2026-03-11T18:56:16Z",
          "last_comment_author": "bernardwin"
        },
        {
          "number": 1006,
          "created_at": "2026-01-02T09:18:50Z",
          "last_comment_at": "2026-01-03T08:55:31Z",
          "last_comment_author": "HuiyingLi"
        },
        {
          "number": 1057,
          "created_at": "2026-01-14T17:52:07Z",
          "last_comment_at": "2026-01-14T20:49:26Z",
          "last_comment_author": "akoumpa"
        },
        {
          "number": 1072,
          "created_at": "2026-01-16T13:16:21Z",
          "last_comment_at": "2026-01-20T18:33:53Z",
          "last_comment_author": "akoumpa"
        },
        {
          "number": 1094,
          "created_at": "2026-01-21T16:19:34Z",
          "last_comment_at": "2026-02-26T14:03:11Z",
          "last_comment_author": "akoumpa"
        },
        {
          "number": 1101,
          "created_at": "2026-01-22T16:32:35Z",
          "last_comment_at": "2026-01-22T16:32:39Z",
          "last_comment_author": "copy-pr-bot"
        },
        {
          "number": 1141,
          "created_at": "2026-01-30T19:04:01Z",
          "last_comment_at": "2026-01-30T19:04:05Z",
          "last_comment_author": "copy-pr-bot"
        }
      ],
      "last_merged_pr_at": "2026-07-25T06:36:02Z",
      "ci_last_conclusion": null,
      "oldest_open_issues": [
        {
          "number": 258,
          "created_at": "2025-07-23T05:25:55Z",
          "last_comment_at": "2025-09-11T02:07:13Z",
          "last_comment_author": "github-actions"
        },
        {
          "number": 679,
          "created_at": "2025-07-29T19:13:47Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 678,
          "created_at": "2025-07-29T19:14:01Z",
          "last_comment_at": "2026-07-02T20:10:44Z",
          "last_comment_author": "yaoyu-33"
        },
        {
          "number": 676,
          "created_at": "2025-08-04T23:32:41Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 395,
          "created_at": "2025-08-27T18:36:42Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 418,
          "created_at": "2025-09-03T23:37:53Z",
          "last_comment_at": "2025-12-08T05:17:59Z",
          "last_comment_author": "snowmanwwg"
        },
        {
          "number": 419,
          "created_at": "2025-09-04T16:29:26Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 495,
          "created_at": "2025-09-23T00:46:44Z",
          "last_comment_at": "2025-10-07T18:35:32Z",
          "last_comment_author": "terrykong"
        },
        {
          "number": 674,
          "created_at": "2025-09-23T16:54:46Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 501,
          "created_at": "2025-09-23T23:32:34Z",
          "last_comment_at": "2025-09-24T00:09:44Z",
          "last_comment_author": "akoumpa"
        },
        {
          "number": 502,
          "created_at": "2025-09-24T00:08:37Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 509,
          "created_at": "2025-09-24T20:19:57Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 514,
          "created_at": "2025-09-25T19:12:43Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 533,
          "created_at": "2025-09-30T03:04:41Z",
          "last_comment_at": "2026-06-24T16:21:00Z",
          "last_comment_author": "huahuajhu"
        },
        {
          "number": 535,
          "created_at": "2025-09-30T06:47:44Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 536,
          "created_at": "2025-09-30T17:07:53Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 543,
          "created_at": "2025-10-01T16:30:37Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 551,
          "created_at": "2025-10-01T20:51:15Z",
          "last_comment_at": "2026-07-02T20:10:42Z",
          "last_comment_author": "yaoyu-33"
        },
        {
          "number": 558,
          "created_at": "2025-10-02T16:43:28Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 563,
          "created_at": "2025-10-03T05:55:26Z",
          "last_comment_at": "2025-10-03T06:08:33Z",
          "last_comment_author": "snowmanwwg"
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/NVIDIA-NeMo/Automodel",
    "host": "github.com",
    "name": "Automodel",
    "owner": "NVIDIA-NeMo"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "good",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 84,
      "inputs": {
        "security": 64,
        "vitality": 97,
        "community": 74,
        "governance": 81,
        "engineering": 96
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "excellent",
        "name": "Vitality",
        "value": 97,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "excellent",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "commits_last_year": 1505,
              "human_commit_share": 1,
              "days_since_last_push": 0,
              "active_weeks_last_year": 52
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 0 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "52/52 weeks with commits",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 52
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "1505 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 1505
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 92,
            "inputs": {
              "releases_count": 7,
              "latest_release_tag": "v0.5.0",
              "releases_from_tags": false,
              "days_since_latest_release": 22,
              "mean_days_between_releases": 48
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "7 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 7
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 22 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 22
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~48 days",
                "points": 19.8,
                "status": "partial",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 48
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "maintained",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": 0,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 0 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "good",
        "name": "Community & Adoption",
        "value": 74,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "good",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 72,
            "inputs": {
              "forks": 231,
              "stars": 766,
              "watchers": 9,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "766 stars",
                "points": 46.8,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 766
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "231 forks",
                "points": 19.7,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 231
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "9 watchers",
                "points": 5,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 9
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "good",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 77,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": true,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (Apache-2.0)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "Apache-2.0"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 18,
                "status": "met",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 6.3,
                "status": "met",
                "details": [],
                "max_points": 6.3
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "good",
            "name": "Ecosystem adoption (downloads)",
            "note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "registry_dependents"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 71,
            "inputs": {
              "packages": [
                "nemo-automodel"
              ],
              "dependents": null,
              "ecosystems": "pypi",
              "total_downloads": null,
              "monthly_downloads": 19319
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "19,319 downloads/month across pypi",
                "points": 57.1,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 19319,
                      "ecosystems": "pypi"
                    }
                  }
                ],
                "max_points": 80
              },
              {
                "key": "registry_dependents",
                "name": "Registry dependents",
                "detail": "not reported by this ecosystem",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_reported_by_this_ecosystem",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "good",
        "name": "Sustainability & Governance",
        "value": 81,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "good",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 84,
            "inputs": {
              "bus_factor": 4,
              "contributors_sampled": 99,
              "top_contributor_share": 0.235
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "4 contributor(s) cover half of all commits",
                "points": 43.2,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 4
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 24% of commits",
                "points": 17.2,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 24
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "99 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 99
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 24 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 79,
            "inputs": {
              "merged_prs": 2071,
              "open_issues": 151,
              "closed_issues": 361,
              "issue_closed_ratio": 0.705,
              "closed_unmerged_prs": 399
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "70% of issues closed",
                "points": 33,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 70
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "2071/2470 decided PRs merged",
                "points": 32.1,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 2071,
                      "decided": 2470
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 27/30 approved changesets -- score normalized to 9",
                "points": 13.5,
                "status": "partial",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "moderate",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 66,
            "inputs": {
              "followers": 1399,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "NVIDIA-NeMo",
              "public_repos": 27,
              "account_age_days": 423
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "organization-owned",
                "points": 30,
                "status": "met",
                "details": [
                  {
                    "code": "owner_organization",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "1,399 followers of NVIDIA-NeMo",
                "points": 22.6,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 1399,
                      "login": "NVIDIA-NeMo"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "27 public repos, account ~1 yr old",
                "points": 12.9,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 27
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 1
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "nemo-automodel"
              ],
              "ecosystems": "pypi",
              "any_deprecated": false,
              "min_days_since_publish": 22
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "1 package(s) on pypi",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 1,
                      "ecosystems": "pypi"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 22 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 22
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "7 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 7
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "excellent",
        "name": "Engineering Quality",
        "value": 96,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "excellent",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 94,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": true,
              "has_precommit_config": true
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "22 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 22
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": ".flake8, .pylintrc",
                "points": 16,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".flake8, .pylintrc"
                    }
                  }
                ],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 9.6,
                "status": "met",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "30 out of 30 merged PRs checked by a CI test -- score normalized to 10",
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "excellent",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "topics": [
                "llm",
                "vlm",
                "finetuning",
                "gemma3",
                "llama",
                "llama3",
                "mistral",
                "openai",
                "qwen3",
                "gpt-oss",
                "qwen3-next",
                "glm",
                "kimi-k2",
                "deepseek-v3-2",
                "minimax-m2",
                "gemma4",
                "qwen3-6",
                "deepseek-v4",
                "agent"
              ],
              "has_wiki": true,
              "homepage": "https://docs.nvidia.com/nemo/automodel/nightly/index.html",
              "has_readme": true,
              "has_docs_dir": true,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 25,
                "status": "met",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": "https://docs.nvidia.com/nemo/automodel/nightly/index.html",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": "19 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 19
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "moderate",
        "name": "Security",
        "value": 64,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "moderate",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Branch-Protection, Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "branch_protection",
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 55,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 16,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 2,
              "scorecard_aggregate": 5.5
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "30 out of 30 merged PRs checked by a CI test -- score normalized to 10",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 27/30 approved changesets -- score normalized to 9",
                "points": 6.8,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 24 contributing companies or organizations",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "no update tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "78 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "excellent",
            "name": "Dependency advisories",
            "note": "Excluded from scoring (no data or not applicable): No advisories left outstanding. Remaining weights renormalized. Matched the pypi:nemo-automodel@0.5.0 runtime dependency closure — what installing the published package pulls in — 131 packages. Reachability is not analyzed.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "no_advisories_left_outstanding"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              },
              {
                "code": "advisories_scope_published",
                "params": {
                  "package": "pypi:nemo-automodel@0.5.0",
                  "assessed": 131
                }
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "source": "osv",
              "advisories": 0,
              "affected_packages": 0,
              "assessed_packages": 131,
              "unassessed_packages": 0,
              "affected_by_severity": "none",
              "direct_affected_packages": 0
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "no direct dependency carries a known advisory",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "no_direct_advisories",
                    "params": {}
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "no indirect dependency carries a known advisory",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "no_indirect_advisories",
                    "params": {}
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "no advisory carries a publication date",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_no_publication_date",
                    "params": {}
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "malicious_dependencies",
            "band": "excellent",
            "name": "Malicious dependencies",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "source": "osv",
              "meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
              "packages": [],
              "red_flag": false,
              "assessed_packages": 131,
              "malicious_packages": 0,
              "direct_malicious_packages": 0,
              "withdrawn_malicious_packages": 0,
              "installable_malicious_packages": 0
            },
            "components": [
              {
                "key": "no_dependency_reported_as_a_malicious_package",
                "name": "No dependency reported as a malicious package",
                "detail": "no dependency is reported as a malicious package",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "no_malicious_dependencies",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 6
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "moderate",
        "name": "AI Readiness",
        "value": 68,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "excellent",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 1,
              "agent_instruction_files": [
                "AGENTS.md",
                "CLAUDE.md"
              ],
              "agent_instruction_max_bytes": 13233
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "AGENTS.md, CLAUDE.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "AGENTS.md, CLAUDE.md"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "100 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 100,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "good",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 71,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "uv.lock"
              ],
              "has_dockerfile": true,
              "typed_language": false,
              "bootstrap_files": [
                "docs/Makefile",
                "docs/fern/Makefile",
                "nemo_automodel/components/datasets/llm/megatron/Makefile"
              ],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [],
              "agent_commit_share": 0.24,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "docs/Makefile, docs/fern/Makefile, nemo_automodel/components/datasets/llm/megatron/Makefile",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "docs/Makefile, docs/fern/Makefile, nemo_automodel/components/datasets/llm/megatron/Makefile"
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": ".flake8, .pylintrc",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".flake8, .pylintrc"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "Dockerfile, lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "Dockerfile, lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "24 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 24,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "moderate",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 54,
            "inputs": {
              "primary_language": "Python",
              "largest_source_bytes": 153900,
              "source_files_sampled": 1405,
              "oversized_source_files": 30
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Python without a type-check config",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_typecheck_config_language",
                    "params": {
                      "language": "Python"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "30/1405 source files over 60KB",
                "points": 53.8,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 1405,
                      "oversized": 30
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "at_risk",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "example_dirs": [
                "examples",
                "notebooks",
                "recipes"
              ],
              "has_mcp_signal": false,
              "api_schema_files": []
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 40
              },
              {
                "key": "mcp_server",
                "name": "MCP server",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": "examples, notebooks, recipes",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "examples, notebooks, recipes"
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
    "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-25T06:52:11.429061Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/n/NVIDIA-NeMo/Automodel.svg",
  "full_name": "NVIDIA-NeMo/Automodel",
  "license_state": "standard",
  "license_spdx": "Apache-2.0"
}

评分是信号,而非担保。 评分反映的是 GitHub 上公开可见的实践——不是代码审计,也不是安全保证。

缺失数据将被剔除并重新归一化权重,绝不按零分计。方法论已版本化并公开:指标 v1.13.0、模式 v0.27.0—— 完整方法论 · 指标知识库.

单项结果在整体记录中的位置: 汇总统计PyPI.