公开记录
软件健康报告模式 0.27.0 · 指标 1.13.0 · 2026-07-26 19:33 UTC

csyonghe / slang

Making it easier to work with shaders

C++ · Slang自定义许可证★ 1 星标⑂ 0 复刻始于 2017年11月复刻在 GitHub 上查看 ↗

csyonghe/slang 的健康指数为 100 分中的 44 分,处于「存在风险」区间。 其得分最高的类别是AI Readiness(67/100),最低的是Community & Adoption(9/100)。 最近一次更新在 8 天前。 近期的大部分工作由 2 位贡献者完成。

44
总分 / 100
存在风险

软件健康指数

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

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

评分画像

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

所有权

Yong He个人账户
203 关注者25 个公开仓库始于 2012年10月

该仓库由个人账户拥有。相较于组织支持的项目,单一所有者项目的延续性风险更高。

按类别列示的指标

活力

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

50中等 · 占总体的 22%
评分方式
28.8/36推送新近度 — 最近一次推送于 8 天前
4.8/36提交节奏 — 52 周中有 7 周有提交
18/18提交量 — 最近一年 173 次提交
0/10OpenSSF Scorecard:Maintained — 0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0
所用输入
commits_last_year173
human_commit_share1
days_since_last_push8
active_weeks_last_year7

发布纪律

47存在风险
评分方式
27/27有发布版本 — 已发布 27 个发布版本
0/36发布时效 — 最近一次发布版本于 745 天前
19.8/27发布节奏 — 约每 112.7 天发布一次
0/10OpenSSF Scorecard:Signed-Releases — Project has not signed or included provenance with any releases.
所用输入
releases_count27
latest_release_tagv0.test.11
releases_from_tags
days_since_latest_release745
mean_days_between_releases112.7

社区与采用

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

9危急 · 占总体的 18%
评分方式
0/60星标 — 1 个星标
0/25复刻 — 0 个复刻
0/15关注者 — 0 位关注者
所用输入
forks0
stars1
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history

社区健康

19危急
评分方式
0/22.5README
16.9/22.5许可证 — 存在许可证文件,但不是可识别的许可证
0/18CONTRIBUTING 指南
0/13.5行为准则
0/7.2议题模板
0/6.3PR 模板
所用输入
has_readme
has_license
has_contributing
has_issue_template
has_code_of_conduct
has_pull_request_template

可持续性与治理

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

64中等 · 占总体的 24%
评分方式
25.2/54巴士系数 — 2 位贡献者贡献了半数提交
14.7/22.5提交分布 — 头号贡献者编写了 35% 的提交
13.5/13.5贡献者广度 — 99 位贡献者
10/10OpenSSF Scorecard:Contributors — project has 4 contributing companies or organizations
所用输入
bus_factor2
contributors_sampled99
top_contributor_share0.347
评分方式
0/46.8议题解决 — 没有议题或无数据
35.9/38.3PR 接受 — 已裁定的 PR 中 45/48 已合并
0/15OpenSSF Scorecard:Code-Review — Found 0/30 approved changesets -- score normalized to 0
所用输入
merged_prs45
open_issues0
closed_issues0
issue_closed_ratio
closed_unmerged_prs3
已排除计分(无数据或不适用):议题解决。 其余权重已重新归一化。
评分方式
10/30所有权背书 — 个人(用户)账户
0/20已验证域名 — 不适用于个人账户
16.6/25所有者影响力 — csyonghe 有 203 位关注者
22.3/25既往记录 — 25 个公开仓库,账户约 13 年
所用输入
followers203
owner_typeUser
is_verified
owner_logincsyonghe
public_repos25
account_age_days5,021
已排除计分(无数据或不适用):已验证域名。 其余权重已重新归一化。

工程质量

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

55中等 · 占总体的 20%

工程实践

68中等
评分方式
24/24CI 工作流 — 23 个工作流
24/24存在测试
0/16Linter 配置
0/9.6Pre-commit 钩子
6.4/6.4.editorconfig
0/20OpenSSF Scorecard:CI-Tests — 无数据
所用输入
has_ci
has_tests
has_editorconfig
has_linter_config
has_precommit_config
已排除计分(无数据或不适用):OpenSSF Scorecard:CI-Tests。 其余权重已重新归一化。

文档

35存在风险
评分方式
0/30README
25/25文档目录
0/15文档 / 主页站点
0/10仓库描述
0/10主题标签
10/10Wiki
所用输入
topics
has_wiki
homepage
has_readme
has_docs_dir
has_description

安全

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

30存在风险 · 占总体的 16%

安全态势

30存在风险
评分方式
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — branch protection not enabled on development/release branches
0/2.5CI-Tests — 无数据
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/30 approved changesets -- score normalized to 0
2.5/2.5Contributors — project has 4 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.2/2.5许可证 — license file detected
0/7.5Maintained — 0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0
0/5Packaging — 无数据
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
0/5SAST — no SAST tool detected
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — Project has not signed or included provenance with any releases.
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
7.5/7.5Vulnerabilities — 0 existing vulnerabilities detected
所用输入
sourceopenssf_scorecard
checks_evaluated16
scorecard_versionv5.5.0
checks_inconclusive2
scorecard_aggregate3.1
已排除计分(无数据或不适用):ci_tests, packaging。 其余权重已重新归一化。

AI 就绪度

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

67中等 · 占总体的 0%
评分方式
45/45代理指令 — .github/copilot-instructions.md, CLAUDE.md
0/15机器可读文档(llms.txt)
40/40可读的提交历史 — 100 次人类提交中有 99 次说明了意图(结构化标题或解释性正文)
所用输入
has_llms_txt
legible_history_share0.99
agent_instruction_files.github/copilot-instructions.md, CLAUDE.md
agent_instruction_max_bytes13,636
评分方式
0/18一条命令的引导启动
22/22自动化测试
0/11Lint / 格式化配置
11/11静态类型检查 — C++(静态类型)
10/10可复现环境 — Nix
8/10已体现的代理实践 — 最近 100 次提交中有 4 次由代理编写或署名代理
0/8自动化维护 — 未观察到自动依赖更新
0/10OpenSSF Scorecard:Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
所用输入
has_nix
has_tests
lockfiles
has_dockerfile
typed_language
bootstrap_files
has_devcontainer
has_linter_config
typecheck_configs
agent_commit_share0.04
toolchain_manifests
dependency_bot_commit_share0
评分方式
45/45可类型检查的代码 — C++(静态类型)
52.5/55可控的文件大小 — 采样的 1,413 个源文件中有 65 个超过 60KB
所用输入
primary_languageC++
largest_source_bytes811,328
source_files_sampled1,413
oversized_source_files65

机器可读接口

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

关键数据

1GitHub 星标
99贡献者
173最近 12 个月提交数
8距最近推送天数
27发布版本数
2巴士系数(bus factor)
0开放议题
软件包生态系统数

数据采集警告

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • Community profile unavailable

更多细节

OpenSSF Scorecard 3.1 / 10
3.1综合

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

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
不适用CI-Testsno pull request found
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/30 approved changesets -- score normalized to 0
10Contributorsproject has 4 contributing companies or organizations
10Dangerous-Workflowno dangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
9Licenselicense file detected
0Maintained0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0
不适用Packagingpackaging workflow not detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTno SAST tool detected
0Security-Policysecurity policy file not detected
0Signed-ReleasesProject has not signed or included provenance with any releases.
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
10Vulnerabilities0 existing vulnerabilities detected
全部依赖 0

来自 GitHub 依赖图的完整解析依赖集合:0 个直接依赖与 0 个间接(传递)软件包。仓库提交锁文件时,传递闭包才是完整的。

注册表软件包版本关系
依赖安全公告 未评估

本报告未能完成公告比对:No resolved dependencies to assess

原始 JSON 报告 机器可读
{
  "data": {
    "repo": {
      "topics": [],
      "is_fork": true,
      "size_kb": 116459,
      "has_wiki": true,
      "homepage": null,
      "languages": {
        "C": 84515,
        "C++": 18414406,
        "Lua": 116183,
        "Nix": 2107,
        "Cuda": 176,
        "GLSL": 49608,
        "HLSL": 76023,
        "CMake": 104176,
        "Shell": 19276,
        "Slang": 4808241,
        "Python": 55663,
        "Batchfile": 526,
        "JavaScript": 4531,
        "Objective-C++": 16778
      },
      "pushed_at": "2026-07-18T01:04:33Z",
      "created_at": "2017-11-08T14:24:42Z",
      "owner_type": "User",
      "updated_at": "2025-09-14T05:56:46Z",
      "description": "Making it easier to work with shaders",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": null,
      "default_branch": "master",
      "license_spdx_raw": "NOASSERTION",
      "primary_language": "C++",
      "significant_languages": [
        "C++",
        "Slang"
      ]
    },
    "owner": {
      "blog": "http://www.csyong.net",
      "name": "Yong He",
      "type": "User",
      "login": "csyonghe",
      "company": null,
      "location": null,
      "followers": 203,
      "avatar_url": "https://avatars.githubusercontent.com/u/2652293?v=4",
      "created_at": "2012-10-25T20:48:41Z",
      "is_verified": null,
      "public_repos": 25,
      "account_age_days": 5021
    },
    "license": {
      "state": "custom",
      "spdx_id": null,
      "raw_spdx": "NOASSERTION",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": false
    },
    "activity": {
      "releases": [
        {
          "tag": "v0.test.11",
          "kind": "other",
          "published_at": "2024-07-10T23:55:07Z"
        },
        {
          "tag": "v2024.1.11-test",
          "kind": "prerelease",
          "published_at": "2024-05-04T01:18:31Z"
        },
        {
          "tag": "v0.01.2004",
          "kind": "patch",
          "published_at": "2022-09-28T22:14:01Z"
        },
        {
          "tag": "v0.01.2003",
          "kind": "patch",
          "published_at": "2022-09-28T21:57:48Z"
        },
        {
          "tag": "v0.01.2002",
          "kind": "patch",
          "published_at": "2022-09-28T19:58:12Z"
        },
        {
          "tag": "v0.01.2001",
          "kind": "patch",
          "published_at": "2022-09-28T19:49:27Z"
        },
        {
          "tag": "v0.01.2000",
          "kind": "patch",
          "published_at": "2022-09-28T19:14:41Z"
        },
        {
          "tag": "v0.01.1239",
          "kind": "patch",
          "published_at": "2021-11-22T20:59:20Z"
        },
        {
          "tag": "v0.0x093020216",
          "kind": "other",
          "published_at": "2021-10-01T01:29:40Z"
        },
        {
          "tag": "v0.0x093020215",
          "kind": "other",
          "published_at": "2021-10-01T00:17:46Z"
        },
        {
          "tag": "v0.0x093020214",
          "kind": "other",
          "published_at": "2021-09-30T23:19:46Z"
        },
        {
          "tag": "v0.0x093020213",
          "kind": "other",
          "published_at": "2021-09-30T22:01:41Z"
        },
        {
          "tag": "v0.0x093020212",
          "kind": "other",
          "published_at": "2021-09-30T20:48:46Z"
        },
        {
          "tag": "v0.x093020210",
          "kind": "other",
          "published_at": "2021-09-30T19:17:05Z"
        },
        {
          "tag": "build-test-093020212",
          "kind": "other",
          "published_at": "2021-09-30T19:06:43Z"
        },
        {
          "tag": "v0.19.8",
          "kind": "patch",
          "published_at": "2021-09-13T07:35:06Z"
        },
        {
          "tag": "v0.0017",
          "kind": "other",
          "published_at": "2020-12-03T22:39:20Z"
        },
        {
          "tag": "v0.0016",
          "kind": "other",
          "published_at": "2020-12-03T22:23:58Z"
        },
        {
          "tag": "v0.0015",
          "kind": "other",
          "published_at": "2020-12-03T22:05:42Z"
        },
        {
          "tag": "v0.0014",
          "kind": "other",
          "published_at": "2020-12-03T21:46:54Z"
        },
        {
          "tag": "v0.0013",
          "kind": "other",
          "published_at": "2020-12-03T21:43:50Z"
        },
        {
          "tag": "v0.0011",
          "kind": "other",
          "published_at": "2020-12-03T21:23:08Z"
        },
        {
          "tag": "v0.001",
          "kind": "other",
          "published_at": "2020-12-03T21:15:18Z"
        },
        {
          "tag": "v0.01.7",
          "kind": "patch",
          "published_at": "2020-11-16T21:00:28Z"
        },
        {
          "tag": "v0.01.6",
          "kind": "patch",
          "published_at": "2020-11-16T20:50:31Z"
        },
        {
          "tag": "v0.01.5",
          "kind": "patch",
          "published_at": "2020-11-16T20:42:57Z"
        },
        {
          "tag": "build-test-093020211",
          "kind": "other",
          "published_at": "2021-09-30T19:03:36Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "8bcf6c443bbd24498e67ae54f06c2ad933421738",
          "body": "…8428)\n\nThe `SpirvInstructionHelper::loadBlob()` method could segfault when\ncalling `m_headerWords.addRange()` if the SPIR-V blob contained\ninsufficient data for the required 5-word header.\n\nTo reproduce, run \n```\n./build/Debug/bin/slangc.exe tests/modules/environment.slang -o tests/modules/environm\n[…]\nblob has at least\n`SPV_INDEX_INSTRUCTION_START * sizeof(SpvWord)` bytes (20 bytes minimum)\nbefore attempting to process the header words.\n\nRelated to: https://github.com/shader-slang/slang/issues/7547",
          "is_bot": false,
          "headline": "Fix segfault in SPIR-V header processing in SpirvInstructionHelper (#…",
          "author_name": "Gangzheng Tong",
          "author_login": "gtong-nv",
          "committed_at": "2025-09-10T23:25:31Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f3e26754c4b63fee419407752b771ecf0bb8ed5a",
          "body": "Add `findModifier` for `DeclReflection` so pattern like `extern struct\nfoo;` can be properly reflected.\n\nCloses #8009",
          "is_bot": false,
          "headline": "Add FindModifier for Declarations (#8308)",
          "author_name": "Xuanda Yang",
          "author_login": "TH3CHARLie",
          "committed_at": "2025-09-10T22:55:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c5607e9d68e9082ada9441f1949937f6b16d5c7f",
          "body": "…static const decl. (#8392)\n\nCloses #8184.\n\nWe fixed three issues with this regression test:\n1. After generating IR for a `SpecializeComponentType`, we should also\nstrip the frontend\ndecorations from the IR so there is no HighLevelDeclDecoration that will\ngo into the backend.\n2. When lowering a stat\n[…]\nuplicate\nExport/Import decorations with different mangle names, and confuses the\nlinker.\n3. Make sure internal exceptions does not leak through\n    `IComponentType::getEntryPointCode`/`getTargetCode`.",
          "is_bot": false,
          "headline": "Fix crash when compiling specialized generic entrypoint containing a …",
          "author_name": "Yong He",
          "author_login": "csyonghe",
          "committed_at": "2025-09-10T18:50:30Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ec42c4a20facbcae441cd172bfd607614e761907",
          "body": "Closes #8409, but ended up being more about fixing another bug. While\nthe issue itself seems to only be a simple typo fix (see second commit\nin this PR), I found out during writing a test that pointers never got\ncorrect locations regardless of layout. Their locations were always\nassigned to zero due\n[…]\nn, so I went ahead and added\nthat too.\n\nI can split this up into two separate PRs if that's preferred; both\naspects just share a test right now and fix a similar-looking issue in\nthe resulting SPIR-V.",
          "is_bot": false,
          "headline": "Fix pointers and C-like layout in varying parameters (#8425)",
          "author_name": "Julius Ikkala",
          "author_login": "juliusikkala",
          "committed_at": "2025-09-10T18:41:07Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b03cbb02c6486274d46865f3995953f2105cefc9",
          "body": null,
          "is_bot": false,
          "headline": "Squash warnings on gcc 14 (#8377)",
          "author_name": "Ellie Hermaszewska",
          "author_login": "expipiplus1",
          "committed_at": "2025-09-10T13:26:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3d0f5ee55788dca324641ae9268ee37dc4d7d9d5",
          "body": "…… (#8380)\n\n…function-parameter.slang #8315\n\nRoot Cause:\nCUDA compilation crashed with `assert failure:\n!seenFinalUnsizedArrayField` because unsized arrays like\n`RWStructuredBuffer<uint> globalBuffer[]` were not the final field in\ngenerated parameter structs, violating the layout constraint in\nslang\n[…]\nest\nfile\n\n---------\n\nCo-authored-by: slangbot <ellieh+slangbot@nvidia.com>\nCo-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>\nCo-authored-by: Ellie Hermaszewska <ellieh@nvidia.com>",
          "is_bot": false,
          "headline": "CUDA: Fix compiler crash with unsized array field - nonuniformres-as-…",
          "author_name": "Harsh Aggarwal (NVIDIA)",
          "author_login": "szihs",
          "committed_at": "2025-09-10T12:01:36Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2020a102e9e0ea2f39a0f2b2a75085c3607ce734",
          "body": "…8326)\n\n## Problem\nWhen generic functions with debug variables were specialized with\nconcrete types containing non-debuggable fields (e.g.,\n`StructuredBuffer`), the IR cloning process would create invalid\n`DebugVar` instructions without checking if the substituted types\nremained debuggable.\n\n## Solu\n[…]\nthat removes\nthe debugVar created for the non-debuggable types.\n\n---------\n\nCo-authored-by: slangbot <ellieh+slangbot@nvidia.com>\nCo-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Check if debugVar for is debuggable types in the legalization pass (#…",
          "author_name": "Gangzheng Tong",
          "author_login": "gtong-nv",
          "committed_at": "2025-09-10T07:14:05Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "43dffcde78227113a0e62b02857eaf4ed6ea6e7e",
          "body": "Fixes this regression:\n\n```slang\nstruct MyType\n{\n    // Regression Condition 1: there must be more than one member in the lookup scope.\n    float v;\n    int getSum() { return 0; }\n}\n\nvoid m(MyType t)\n{\n    // Regression condition 2: the completion must be in an init expression.\n    // Regression con\n[…]\n Texture2D x = t.;  // completion request after . here\n}\n```\n\nThe root cause is that we shouldn't be applying candidate filtering on\nthe candidate list when in completion checking mode.\n\nCloses #8417.",
          "is_bot": false,
          "headline": "Fix language server auto-complete regression in debug build. (#8416)",
          "author_name": "Yong He",
          "author_login": "csyonghe",
          "committed_at": "2025-09-10T05:14:05Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7026dec790ab0c239c58ebf72b17633e9e8765c3",
          "body": "This updates SPIRV submodules.\nUnfortunately we cannot use the latest because one of PRs in SPIRV-Tools\ncauses VVL errors on our slang-tests. The issue is tracked in\n- https://github.com/KhronosGroup/SPIRV-Tools/issues/6316\n- https://github.com/shader-slang/slang/issues/8414\n\nThis PR also updates/simplifies the document of updating SPIRV process.",
          "is_bot": false,
          "headline": "Update SPIRV-{Tools,Headers} (#8415)",
          "author_name": "Jay Kwak",
          "author_login": "jkwak-work",
          "committed_at": "2025-09-10T02:34:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e554e1b726814535565f0619a868b96b6f2fb525",
          "body": null,
          "is_bot": false,
          "headline": "Send notification only on scheduled CTS runs (#8418)",
          "author_name": "Gangzheng Tong",
          "author_login": "gtong-nv",
          "committed_at": "2025-09-10T02:31:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8aa63073c1be2cdc0c34e71601cb28255e92a805",
          "body": "- Enable ccache in slang bulid for CTS test\n- Allow manual CI dispatch",
          "is_bot": false,
          "headline": "Enable ccache in slang bulid for CTS test (#8413)",
          "author_name": "Gangzheng Tong",
          "author_login": "gtong-nv",
          "committed_at": "2025-09-10T00:08:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3745d75543ded3bc457ff5aba152141d382ba306",
          "body": "This fixes an issue where non-raytracing kernels couldn't contain any\nRaytracingAccelerationStructure resources even when not used.",
          "is_bot": false,
          "headline": "Always define OptixTraversableHandle (#8411)",
          "author_name": "Simon Kallweit",
          "author_login": "skallweitNV",
          "committed_at": "2025-09-09T15:55:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "35b78082565b79125473c6fbd628541ecfa386eb",
          "body": "macos 15.6 includes python 3.9.6 with Xcode, which doesn't understand\nmatch/case. Changing it to to the less spiffy if/elif.\n\nCo-authored-by: Yong He <yonghe@outlook.com>\nCo-authored-by: Sam Estep <sam@samestep.com>",
          "is_bot": false,
          "headline": "Enable slang_lldb.py on macos (#8327)",
          "author_name": "James Helferty (NVIDIA)",
          "author_login": "jhelferty-nv",
          "committed_at": "2025-09-09T14:35:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "63676c5e51d9d58d3cde7e296f82250b71538b85",
          "body": "…408)\n\nThe test can be enabled",
          "is_bot": false,
          "headline": "Fix #8314 - Enable tests/compute/texture-subscript.slang for CUDA (#8…",
          "author_name": "Harsh Aggarwal (NVIDIA)",
          "author_login": "szihs",
          "committed_at": "2025-09-09T11:16:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3aff764c2b5d613f766538d27e0b9f448e7ed5ca",
          "body": "This PR modernizes the Windows-specific code by replacing ANSI Windows\nAPI functions with their Unicode (wide character) counterparts. This\nchange ensures proper handling of Unicode file paths and strings on\nWindows systems.\n\n### File Operations (`source/core/slang-io.cpp`)\n- `DeleteFileA` → `Delete\n[…]\nhub.com>\nCo-authored-by: Gangzheng Tong <gtong-nv@users.noreply.github.com>\nCo-authored-by: slangbot <ellieh+slangbot@nvidia.com>\nCo-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Use wide char version of Windows API (#8390)",
          "author_name": "Gangzheng Tong",
          "author_login": "gtong-nv",
          "committed_at": "2025-09-08T17:24:05Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8b512c49d163af1df33e940acc3c4a230f0d00b7",
          "body": "Fixes #8396 by not emitting the `ArrayStride` when it would've been\nzero. The problem is caused by #7848, more details in the issue\ndescription.\n\nI checked that with equivalent GLSL code, glslangValidator does not emit\nany `ArrayStride`. I assume that the addition of `storageClass ==\nSpvStorageClass\n[…]\nce to have GPUs from multiple vendors in the\nCI to avoid this kind of thing happening again. Or even just llvmpipe;\nthat doesn't even require a GPU and would add at least one more driver\nto test with.",
          "is_bot": false,
          "headline": "Don't emit ArrayStride 0 for RWStructuredBuffer pointers (#8397)",
          "author_name": "Julius Ikkala",
          "author_login": "juliusikkala",
          "committed_at": "2025-09-08T17:07:53Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c0d7405d831faa6208b27fe56bf66fb0b138dcc5",
          "body": "1. Adds retry logic - Implements 3-attempt retry mechanism for\nintermittent test failures\n2. Reduces parallelism for Linux - Changes server counts back to 1 for\nmore stable execution, given the test is short in Linux for now\n3. Adds detailed error logging - Enhanced diagnostic information for\ntest p\n[…]\nts consolidated CI status for simplified\nbranch protection rule\n\n---------\n\nCo-authored-by: slangbot <ellieh+slangbot@nvidia.com>\nCo-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Enhances CI reliability and debug logging (#8393)",
          "author_name": "Gangzheng Tong",
          "author_login": "gtong-nv",
          "committed_at": "2025-09-07T17:07:24Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "bc6b82666fa4deda932c36cea93ee2059e0992b2",
          "body": "…387)\n\nThis change relaxes a previous restriction on link-time types and\nconstants, so that we now allow them to be used to define shader\nparameters.\n\nDoing so will result in a parameter layout that is incomplete prior to\nlinking. The PR added a test to call the reflection API on a fully\nlinked program and ensure that we can report correct binding info.",
          "is_bot": false,
          "headline": "Relax restriction on using link-time types for shader parameters. (#8…",
          "author_name": "Yong He",
          "author_login": "csyonghe",
          "committed_at": "2025-09-06T05:37:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fe87a39e453b64e94446181a9ae5cbfc0f62bf0c",
          "body": "- This PR removes \"wasm\" check from the test job, since there is no test\njob for \"wasm\" yet.\n- Also, move the check for slang-rhi and slangpy test to the job level\nto skip the setup etc. if no run is needed.\n- Update the macos compiler version in building.md to match the clang\ncompiler used in CI.\n-\n[…]\n\n- Run slangpy test with `-n auto --maxprocesses=4` to speed up\n\n---------\n\nCo-authored-by: slangbot <ellieh+slangbot@nvidia.com>\nCo-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Remove unnecessary check and adust server count etc. in CI (#8374)",
          "author_name": "Gangzheng Tong",
          "author_login": "gtong-nv",
          "committed_at": "2025-09-06T03:31:04Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4856da26e188c28bf691d0210ce8016264c00940",
          "body": "The header execinfo.h and the related backtrace functionality is not\navailable on all linux platforms. In particular it's missing on musl\nlinux and on Android before API version 33. This causes compilation\nerrors on those platforms.\n\nWith this change, we first check if backtrace functionality is ava\n[…]\nre using glibc or a compatible Android version.\n\nTested on manylinux_2_28 with glibc 2.28 and musllinux_1_2 with musl\n1.2, has not been tested on Android.\n\nCo-authored-by: Yong He <yonghe@outlook.com>",
          "is_bot": false,
          "headline": "Add check for backtrace availability (#8329)",
          "author_name": "Dario Mylonopoulos",
          "author_login": "ramenguy99",
          "committed_at": "2025-09-06T02:38:08Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ffd58977b4e64af5a83ebc5478555fd667f58e51",
          "body": "WGSL requires Wave functions to be used only in uniform control flow.\n\nThe latest compiler, Tint, started to error out when Wave functions are\nused in a dynamic control flow.\n\nThis commit disables some of tests using Wave functions in dynamic\nbranches. If possible, they are altered to call Wave functions in\nuniform control flows.",
          "is_bot": false,
          "headline": "Disable a few WGSL testing using Wave functions in branches (#8386)",
          "author_name": "Jay Kwak",
          "author_login": "jkwak-work",
          "committed_at": "2025-09-06T01:51:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5055de0bb1cf3f9aac63a60217f2dbde5533c557",
          "body": "The code int x4 = 0xFFFFFFFFFFFFFFFF previously did not produce a\nwarning due to the value being too large for the type. This patch now\nchecks for this and similar issues during parsing.",
          "is_bot": false,
          "headline": "Add warnings for overflows of integer types (#8281)",
          "author_name": "jarcherNV",
          "author_login": "jarcherNV",
          "committed_at": "2025-09-05T23:03:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5500f11768d4d93eef4dfcecf0821fee747bf1a4",
          "body": "If a given library cannot be found using LoadLibraryExA then try again\nusing LoadLibraryA. Return an error only if both of these failed.",
          "is_bot": false,
          "headline": "Try both LoadLibrary functions on Windows (#8368)",
          "author_name": "jarcherNV",
          "author_login": "jarcherNV",
          "committed_at": "2025-09-05T04:35:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1e1ff8a1254c114f261271ffe5580183b8402e32",
          "body": "Previously we are missing `ccache --set-config=cache_dir=\"$ccache_dir\"`\nand the build was using the default cache_dir.\nThis PR fixed that and the cache are hit in reruns.\n\n```\n📊 ccache statistics (post-build):\nCacheable calls:    1198 / 1198 (100.0%)\n  Hits:             1195 / 1198 (99.75%)\n    Dire\n[…]\n2 / 1195 ( 0.17%)\n  Misses:              3 / 1198 ( 0.25%)\nLocal storage:\n  Cache size (GiB):  0.6 /  5.0 (11.11%)\n  Hits:             1195 / 1198 (99.75%)\n  Misses:              3 / 1198 ( 0.25%)\n```",
          "is_bot": false,
          "headline": "Fix cache_dir path for ccache config (#8370)",
          "author_name": "Gangzheng Tong",
          "author_login": "gtong-nv",
          "committed_at": "2025-09-05T02:46:19Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0fb62524bc8beda70694f6c58570ad8096bbe698",
          "body": "The CI has been re-organized with the following:\n```\nci.yml (Main Orchestrator)\n├── filter job\n│   ├── Documentation Only? → Yes → Skip CI\n│   └── Documentation Only? → No → Continue CI\n│\n├── Build Jobs\n│   └── ci-slang-build.yml\n│       ├── common-setup action\n│       ├── Build & Package\n│       └─\n[…]\nig.\n\n\nCloses: https://github.com/shader-slang/slang/issues/6728\n\n---------\n\nCo-authored-by: slangbot <ellieh+slangbot@nvidia.com>\nCo-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Split CI to build and test jobs (#8359)",
          "author_name": "Gangzheng Tong",
          "author_login": "gtong-nv",
          "committed_at": "2025-09-04T20:08:53Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "20373ad01d09d46646d4de0a8cc7a78a4c8f6638",
          "body": "Update intrinsics signature as per the nvapi header",
          "is_bot": false,
          "headline": "Fix#8128 LSS and sphere hit object intrinsics fail to compile (#8339)",
          "author_name": "Harsh Aggarwal (NVIDIA)",
          "author_login": "szihs",
          "committed_at": "2025-09-04T05:31:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5ec41675d817f82a7ce3c4d79c68548db0bd4227",
          "body": "Enable CUDA support for additional HLSL intrinsic tests by implementing\nmissing functionality and fixing compiler bugs affecting CUDA targets.\n\n- Fix critical bug in InterlockedCompareStore64 where division used /4\ninstead of /8 for 64-bit types, causing incorrect memory addressing for\nall signed in\n[…]\nAny/_slang_quadAll helper functions to CUDA prelude\n- Enable tests: quad-control-comp-functionality.slang,\nsubgroup-quad.slang\n\n---------\n\nCo-authored-by: szihs <675653+szihs@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Enable CUDA support for additional HLSL intrinsic tests (#8293)",
          "author_name": "Harsh Aggarwal (NVIDIA)",
          "author_login": "szihs",
          "committed_at": "2025-09-04T05:28:02Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b45706b3f532f85525de5746f1f607ba2e57fc88",
          "body": "Before this PR only the following was a valid line without any\nwhite-space character nor additional `/` character,\n```\n//TEST:\n```\n\nThis PR is to allow slang-test to handle the following variants of the\ntest command comments,\n```\n///TEST:\n// TEST:\n//    TEST:\n////// TEST:\n```\n\nThis PR revealed a reg\n[…]\n tests/cpp-compiler/cpp-compile-shared-library.cpp (cpu)\n\nThey are disabled as a part of this PR.\nAnd there is a new github issue to track it later,\n- https://github.com/shader-slang/slang/issues/8362",
          "is_bot": false,
          "headline": "Handle slang-test command comments better (#8363)",
          "author_name": "Jay Kwak",
          "author_login": "jkwak-work",
          "committed_at": "2025-09-04T03:13:45Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a766d27447aa0fcf69334c0467d9b1124892e180",
          "body": "closes https://github.com/shader-slang/slang/issues/3313",
          "is_bot": false,
          "headline": "Diagnose on structured buffers containing resources (#8222)",
          "author_name": "Ellie Hermaszewska",
          "author_login": "expipiplus1",
          "committed_at": "2025-09-03T20:05:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bf607e2f3fa183e9a2b18c7a98438a05247d6ed3",
          "body": null,
          "is_bot": false,
          "headline": "Fix#8085: Batch-9: Enable cuda tests (#8269)",
          "author_name": "Harsh Aggarwal (NVIDIA)",
          "author_login": "szihs",
          "committed_at": "2025-09-03T16:06:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f5fae010863c0c836a5a80e659673bcd58010dba",
          "body": "Add 29 intrinsics to the list by new test",
          "is_bot": false,
          "headline": "Add Optix Intrinsics Coverage (#8159) (#8310)",
          "author_name": "Harsh Aggarwal (NVIDIA)",
          "author_login": "szihs",
          "committed_at": "2025-09-03T05:16:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "639978008de3a74c00e03451cd9fc74452766fcd",
          "body": null,
          "is_bot": false,
          "headline": "Fix#8086: Batch-10: Enable cuda tests (#8270)",
          "author_name": "Harsh Aggarwal (NVIDIA)",
          "author_login": "szihs",
          "committed_at": "2025-09-03T05:15:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4886bf95fcf6e7f38f48a346f4112fe340a453c8",
          "body": "This avoids uploading the ccache to github and take the cache storage.\n\n---------\n\nCo-authored-by: slangbot <ellieh+slangbot@nvidia.com>\nCo-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "manually config ccache locally (#8351)",
          "author_name": "Gangzheng Tong",
          "author_login": "gtong-nv",
          "committed_at": "2025-09-03T06:26:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7d15d388d7e92547f1cc8ca47748b79589701051",
          "body": "Related to https://github.com/shader-slang/slang/issues/6728\n\n---------\n\nCo-authored-by: slangbot <ellieh+slangbot@nvidia.com>\nCo-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Enable ccache for self-hosted runner (#8345)",
          "author_name": "Gangzheng Tong",
          "author_login": "gtong-nv",
          "committed_at": "2025-09-03T00:07:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f02b08490aa905f42a8d90381db84b1f8e409c0c",
          "body": "Changes default for render-test to sm_6_5.\nSince sm_6_5 is the new default, remove the -use-dxil option, add\n-use-dxcb option\nRemove -use-dxil option from all test cases.\nAdd -use-dxcb to two tests that needed it.\n\nFixes #7611",
          "is_bot": false,
          "headline": "render-test: Change D3D12 default to sm_6_5 (#8320)",
          "author_name": "James Helferty (NVIDIA)",
          "author_login": "jhelferty-nv",
          "committed_at": "2025-09-02T23:43:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "21693abbd0579107e3c03d1e5090b2653722b5de",
          "body": "This commit is to emit the debug-info for the entry point parameters.\n\nTwo things are implemented/fixed in this PR:\n- We were not emitting the `DebugVar` and `DebugValue` at the IR\nlowering level when the type of the entry point parameter is `ConstRef`.\nThis commit handles the `ConstRef` case in a s\n[…]\ng level.\n- Two types for Geometry shaders were incorrectly treated as not valid\ntypes for the DebugInfo. They are `InputPatch` and `OutputPatch`. This\ncommit handles them as valid types for DebugInfo.",
          "is_bot": false,
          "headline": "Emit DebugInfo for the legalized entry point parameters (#7703)",
          "author_name": "Jay Kwak",
          "author_login": "jkwak-work",
          "committed_at": "2025-09-02T19:51:12Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b46f46c5e8603fdafca258028227adf25f95807f",
          "body": "…ion (#8225)\n\nThe link-time specialization documentation contained an incorrect\nexample that used `[ForceUnroll]` with a link-time type method call,\nwhich would cause a compilation error. The issue was that\n`[ForceUnroll]` requires loop bounds to be known at compile time, but\n`sampler.getSampleCount\n[…]\nagent[bot] <198982749+Copilot@users.noreply.github.com>\nCo-authored-by: bmillsNV <163073245+bmillsNV@users.noreply.github.com>\nCo-authored-by: expipiplus1 <857308+expipiplus1@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Remove ForceUnroll attribute from link-time specialization documentat…",
          "author_name": "Copilot",
          "author_login": "Copilot",
          "committed_at": "2025-09-01T06:51:31Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "288a63dea8c441df6edc4f8fae10d340c20e1ba3",
          "body": null,
          "is_bot": false,
          "headline": "Remove unused variable in slangc::main (#8325)",
          "author_name": "Jay Kwak",
          "author_login": "jkwak-work",
          "committed_at": "2025-08-30T01:59:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7758625d3fea67e55e98e7e4103d56c9918365be",
          "body": "Resolves #7628\nResolves: #8197\n\nPrimary Goals:\n1. Add `Access` to pointer\n2. AddressSpace::GroupShared support for pointers (SPIR-V)\n3. Add `__getAddress()` to replace `&`\n* `&` is not updated to `require(cpu)` since slangpy uses `&`. This\nmeans we must: (1) merge PR; (2) replace `&` with `__getAddr\n[…]\n` of `Ptr` will now have to account for\nthe `Access` argument\n* we disallow various syntax paired with `Ptr` and `T*`\n\n---------\n\nCo-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "[CBP] Pointer frontend changes + groupshared pointer support (#7848)",
          "author_name": "ArielG-NV",
          "author_login": "ArielG-NV",
          "committed_at": "2025-08-29T22:52:34Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "450ef7934c1adfdf4a3a3c72967de3c5798a020d",
          "body": "This PR enables slang-rhi and slangpy tests in the slang CI for MacOS.\n\n* exclude the slang-rhi `sampler-array` test for mac; issue tracked in\nhttps://github.com/shader-slang/slang/issues/8246\n* update slang-rhi for fix of `nested-parameter-block-2`\n* for slangpy test, install the required python pa\n[…]\nun.\n\n\nCloses: https://github.com/shader-slang/slang/issues/7330\n\n---------\n\nCo-authored-by: slangbot <ellieh+slangbot@nvidia.com>\nCo-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Enable slangpy and slang-rhi tests for Mac (#8297)",
          "author_name": "Gangzheng Tong",
          "author_login": "gtong-nv",
          "committed_at": "2025-08-29T21:15:52Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "74c39eaa3dbd6ca55a383afca51ec18962838f08",
          "body": "This cause the pthread not found issue on old glibc build. \nThis reverts commit 113327194d4cf750af6265a560615850a8e7e6fb.",
          "is_bot": false,
          "headline": "Revert \"Reduce the dependency to thread library (#8216)\" (#8319)",
          "author_name": "kaizhangNV",
          "author_login": "kaizhangNV",
          "committed_at": "2025-08-28T22:36:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c19e2e92ae8e713225262a17f39a438cd511d416",
          "body": "When `SIMPLE` type test is used with `-g[1-3]` option, the filecheck\npattern will most likely to match to the string itself on the embedded\nsource code rather than match to the emitted spirv-asm code.\n\nThis commit avoids the problem by removing the embedded source code.\n\nThis commit also provides an\n[…]\ntly\nfailing, and it will pass once DebugLocalVariable instruction missing\nfor parameter of the entry point function #7693 is resolved.\n\n---------\n\nCo-authored-by: slangbot <ellieh+slangbot@nvidia.com>",
          "is_bot": false,
          "headline": "Remove the embedded source to avoid self-matching in slang-test (#8305)",
          "author_name": "Jay Kwak",
          "author_login": "jkwak-work",
          "committed_at": "2025-08-28T17:45:07Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3dc466487d489f09c835bdd872eb130cdc5784ea",
          "body": "Update docs/shader-execution-reordering.md with additional intrinsics\nAdd correct capability `LoadLocalRootTableConstant`",
          "is_bot": false,
          "headline": "[Documentation] optix test coverage #463 (#8311)",
          "author_name": "Harsh Aggarwal (NVIDIA)",
          "author_login": "szihs",
          "committed_at": "2025-08-28T11:01:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "80ddf40274fdca93f2ae95a247ff3af122aec6ac",
          "body": "Emits the appropriate OpCapability for 8- and 16-bit type usage:\n- UniformAndStorageBuffer8BitAccess: for 16-bit types in\nSpvStorageClassUniform and SpvStorageClassStorageBuffer\n- UniformAndStorageBuffer16BitAccess: for 16-bit types in\nSpvStorageClassUniform and SpvStorageClassStorageBuffer\n- Storag\n[…]\n282+github-actions[bot]@users.noreply.github.com>\nCo-authored-by: James Helferty (NVIDIA) <jhelferty-nv@users.noreply.github.com>\nCo-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Add SPIRV OpCapability for 8/16bit use in storage (#8194)",
          "author_name": "James Helferty (NVIDIA)",
          "author_login": "jhelferty-nv",
          "committed_at": "2025-08-28T03:08:54Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1681bc67fbae57b54b66c5dcfcbf315d1efa831b",
          "body": "fixes https://github.com/shader-slang/slang/issues/8271\n\nThis PR does the following,\n- Fail slang-test when there are VVL error messages.\n- VVL error for `gfx-unit-test-tool/` were not captured properly by the\ndebug callback.\n- Set an environment variable,\n`VK_INSTANCE_LAYERS=VK_LAYER_KHRONOS_valida\n[…]\nal` and\n`gfx-unit-test-tool/linkTimeTypeLayoutNested.internal`.\n\n---------\n\nCo-authored-by: slangbot <ellieh+slangbot@nvidia.com>\nCo-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Fail slang-test when VVL printed errors (#8280)",
          "author_name": "Jay Kwak",
          "author_login": "jkwak-work",
          "committed_at": "2025-08-26T21:38:57Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4e9ee1dc80ce353640c1e2134249a1f93da9229a",
          "body": "…uint8_t (#8223)\n\nThe Metal backend was generating incorrect type names for 8-bit vector\ntypes, causing compilation failures when targeting Metal. According to\nthe Metal specification, 8-bit vector types should be named `charN` and\n`ucharN` (e.g., `char2`, `uchar3`) rather than `int8_tN` and `uint8_\n[…]\nt-coding-agent-tips) in the docs.\n\n---------\n\nCo-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>\nCo-authored-by: bmillsNV <163073245+bmillsNV@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Fix Metal 8-bit vector type names: emit char/uchar instead of int8_t/…",
          "author_name": "Copilot",
          "author_login": "Copilot",
          "committed_at": "2025-08-26T18:58:44Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0b87355f946b9a0f8b7fa9225369dade3d5bf84a",
          "body": "This PR marks the `slang-rhi` a required dependecy for `platform` and\n`gfx-unit-test`, and only build them when `SLANG_ENABLE_SLANG_RHI=ON`.\nThis should allow the slang still to be built without those tests\ncomponents when `SLANG_ENABLE_SLANG_RHI=OFF`.\n\n---------\n\nCo-authored-by: slangbot <ellieh+slangbot@nvidia.com>\nCo-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Update slang-rhi deps for gfx-unit-test (#8237)",
          "author_name": "Gangzheng Tong",
          "author_login": "gtong-nv",
          "committed_at": "2025-08-26T18:01:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b36659eca38be716bee43c01c6584bda5f91166a",
          "body": "Fixes: #8018\n\nChanges:\n* Do not emit true for `shouldEmitSPIRVDirectly` with a GLSL target",
          "is_bot": false,
          "headline": "Fix `shouldEmitSPIRVDirectly` (#8019)",
          "author_name": "ArielG-NV",
          "author_login": "ArielG-NV",
          "committed_at": "2025-08-26T17:48:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "70d70c1d315a91ed414892fb70974026082bcc99",
          "body": "CMake 3.31 (released [last\nNovember](https://www.kitware.com/cmake-3-31-0-available-for-download/))\ndeprecated compatibility with CMake versions older than 3.10, causing\nwarnings when running commands like `cmake --preset default` in the\nSlang repo:\n\n```\nCMake Deprecation Warning at external/miniz/C\n[…]\nequired` calls in\nlz4/lz4#1601 and richgel999/miniz#344 respectively to fix those\nwarnings, so this PR bumps them both to include those changes.\n\nCo-authored-by: Ellie Hermaszewska <ellieh@nvidia.com>",
          "is_bot": false,
          "headline": "Fix warnings from CMake version 3.31 (#8227)",
          "author_name": "Sam Estep",
          "author_login": "samestep",
          "committed_at": "2025-08-26T17:41:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5060042bb63cbf42063f5e81c58881e1e8323857",
          "body": "close #8068.\n\nCurrently the AutoDiff aggressively scan every IR inst in searching the\ndifferentiable IR. This is not efficient and could have bug, details in\nhttps://github.com/shader-slang/slang/issues/8068#issuecomment-3214856668.\n\nThis PR change the behavior. It will do a initial filter to only g\n[…]\nonly when it's used in other generic function\n(it's only useful when dealing with dynamic dispatch).\n\nThen we will start searching reachable insts from this IR list by using\nthe same method as before.",
          "is_bot": false,
          "headline": "fix a autodiff crash (#8259)",
          "author_name": "kaizhangNV",
          "author_login": "kaizhangNV",
          "committed_at": "2025-08-26T16:56:47Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7b30ad489198ecedb16a0265f290c1e32772514c",
          "body": "This is a first pass at adding WASM builds to releases. ~~I haven't\ntested the outputs yet but it appears to build successfully in my fork\nat least.~~\n\nEdit: Made a fake release in my fork for testing, seems to be working\nwell for my use case at least:\nhttps://github.com/davidar/slang/releases/tag/v2025.999\n\nFixes #8207",
          "is_bot": false,
          "headline": "Add WASM platform support to release workflow (#8264)",
          "author_name": "David A Roberts",
          "author_login": "davidar",
          "committed_at": "2025-08-25T22:54:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "404a8635f4e5a1c7872b8c1cca322904f2ed1579",
          "body": "This commit prints an additional information of GPU version while\nrunning CI.yml.\nThis can help us to debug when things don't work as expected.",
          "is_bot": false,
          "headline": "Print GPU driver version in CI.yml (#8275)",
          "author_name": "Jay Kwak",
          "author_login": "jkwak-work",
          "committed_at": "2025-08-25T16:08:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1562f98c07954ae17f9e7ef186f6c8eb029740ab",
          "body": null,
          "is_bot": false,
          "headline": "Fix#8084: Batch-8: Enable cuda tests (#8268)",
          "author_name": "Harsh Aggarwal (NVIDIA)",
          "author_login": "szihs",
          "committed_at": "2025-08-25T05:20:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7b4d02803344d52af8d979da1d0f42936d360f00",
          "body": null,
          "is_bot": false,
          "headline": "Fix#8083: Batch-7: Enable cuda tests (#8267)",
          "author_name": "Harsh Aggarwal (NVIDIA)",
          "author_login": "szihs",
          "committed_at": "2025-08-25T05:19:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "53fa12e1b522a229006595001421caa62e22eba8",
          "body": null,
          "is_bot": false,
          "headline": "Fix#8082: Batch-6: Enable cuda tests (#8266)",
          "author_name": "Harsh Aggarwal (NVIDIA)",
          "author_login": "szihs",
          "committed_at": "2025-08-25T05:19:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "67cf1403496ed80edd26c2e0368ddd851e09103a",
          "body": null,
          "is_bot": false,
          "headline": "Fix#8081: Batch-5: Enable cuda tests (#8263)",
          "author_name": "Harsh Aggarwal (NVIDIA)",
          "author_login": "szihs",
          "committed_at": "2025-08-25T05:19:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7ae655c2a17636718eea6182dcc918a3920c5660",
          "body": null,
          "is_bot": false,
          "headline": "Fix#8080: Batch-4: Enable cuda tests (#8261)",
          "author_name": "Harsh Aggarwal (NVIDIA)",
          "author_login": "szihs",
          "committed_at": "2025-08-25T05:18:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cd9e1f67184c1361558e18993e5cb392dc1131f0",
          "body": "…ccessor (#7929)\n\nFixes the Slang compiler internal error \"subscript had no getter\" when\nreading from mesh shader output index arrays (e.g., `triangles[0].x`).\n\n## Problem\nThe `OutputIndices` struct was missing a `ref` accessor in its\n`__subscript` implementation, causing the compiler to fail when t\n[…]\ngithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>\nCo-authored-by: slangbot <ellieh+slangbot@nvidia.com>\nCo-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Fix mesh shader OutputIndices subscript error by adding missing ref a…",
          "author_name": "Lujin Wang",
          "author_login": "lujinwangnv",
          "committed_at": "2025-08-22T20:48:20Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3ca2e47514e3fce133a6ac7d1aca88a3b679c551",
          "body": "On Linux, `slang-platform.cpp` compiles with libstdc++ only because\n`unistd.h` is being transitively included. It fails to compile with\nstandard libraries that don't include `unistd.h` like libc++.\n\nThis is the how it's being transitively included with libstdc++:\n```\n/home/mcvm/dev/slang/source/core\n[…]\natomic_base.h\n/usr/lib64/gcc/x86_64-unknown-linux-gnu/15.1.0/../../../../include/c++/15.1.0/bits/atomic_wait.h\n/usr/include/unistd.h\n```\n\nTested building with `-stdlib=libc++` and `-stdlib=libstdc++`.",
          "is_bot": false,
          "headline": "Fix readlink missing include (#8260)",
          "author_name": "TheGoldMonkey",
          "author_login": "TheGoldMonkey",
          "committed_at": "2025-08-22T17:57:19Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a5e6ddd006ecf72ad9a41961811e93e1e2f72e64",
          "body": "Add record and replay support for the IComponentType2 struct and its\nfunctions getTargetCompileResult and getEntryPointCompileResult.",
          "is_bot": false,
          "headline": "Add record and replay support for IComponentType2 (#8215)",
          "author_name": "jarcherNV",
          "author_login": "jarcherNV",
          "committed_at": "2025-08-21T18:42:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "44815ba48c1d149137a2210ca3fccfe3bda2626e",
          "body": "This patch changes the order of searching slangc executable. This bug\naffects the following scenario: let's assume that user has a binary\nrelease of slang package and wants to use it via `find_package(slang\nCONFIG HINTS <path to binary release>)`, but there is also an\nenvironment variable that point\n[…]\n check environment variable first, and in the\nresult SLANGC_EXECUTABLE will point to slangc from Vulkan SDK and not\nfrom the downloaded package.\n\nCo-authored-by: Ellie Hermaszewska <ellieh@nvidia.com>",
          "is_bot": false,
          "headline": "Fix SLANGC_EXECUTABLE search path in slangConfig.cmake (#8200)",
          "author_name": "Sergei Kachkov",
          "author_login": "kachkov98",
          "committed_at": "2025-08-21T17:41:24Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c45f02579076fcf559f92be501d8293d308db34e",
          "body": "… (#8210)\n\n`emitReflectionVarLayoutJSON` will output the `userAttribs` section\ntwice as it gets output by `emitReflectionModifierInfoJSON` first before\nbeing output again by a direct call to `emitUserAttributes`.\n\nIt seems the answer here is to just remove the extra explicit call to\n`emitUserAttributes` and rely on the call in\n`emitReflectionModifierInfoJSON`?",
          "is_bot": false,
          "headline": "Fix reflection JSON writing userAttribs section twice for some cases.…",
          "author_name": "MindSpunk",
          "author_login": "nathanvoglsam",
          "committed_at": "2025-08-21T17:00:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "35f8e092f2aa3ed5e3cf03387e712f798ff4850e",
          "body": "Closes #8112. ~~The issue asks for a \"C layout\", but in this PR I use\nthe term \"CPU layout\" because this naming was pre-existing in the\ncodebase as `kCPULayoutRulesImpl_`. The primary purpose of this layout\nis to match CPU-side struct definitions with the shader side. I'm open\nto better naming sugge\n[…]\nut rules of existing CPU layout\nrules, but they're incompatible with actual shaders. So a new\n`kCLayoutRulesImpl_` was needed anyway.\n\n---------\n\nCo-authored-by: Ellie Hermaszewska <ellieh@nvidia.com>",
          "is_bot": false,
          "headline": "Introduce CDataLayout & -fvk-use-c-layout (#8136)",
          "author_name": "Julius Ikkala",
          "author_login": "juliusikkala",
          "committed_at": "2025-08-21T05:47:18Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "05f0f5603561daed2c134e13bc64649362759968",
          "body": "-Adds semantic SV_VulkanSamplePosition that emits corresponding\ngl_SamplePosition and SpvBuiltinSamplePosition\n-Adds gl_SamplePosition property to glsl.meta.slang\n-Adds SPIRV and GLSL tests for the semantic and property\n-Plan is to later implement SV_SamplePosition that follows HLSL range of\n-0.5 to\n[…]\nerTargetSamplePosition(SV_SampleIndex) which needs more\ncomplicated IR manipulation for HLSL and Metal\n\nFixes #7906\n\n---------\n\nCo-authored-by: ArielG-NV <159081215+ArielG-NV@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Implement SV_VulkanSamplePosition (#8236)",
          "author_name": "davli-nv",
          "author_login": "davli-nv",
          "committed_at": "2025-08-21T00:30:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "cbd73dde3dd2da790bb663385a229ce22965c43c",
          "body": "Fixes #8185. The previous implementation is incorrect and basically only\nworks in the `x = 0` case. `delta` was the smallest possible positive\nvalue representable as a float, but that's below the rounding error of\naddition with almost all reasonably sized floats.\n\nThis fixed implementation is based on bit twiddling instead. I've\nchecked the float case against the C++ `nextafterf` with both a -inf ->\ninf and inf -> -inf sweep, in addition to the test included in this PR.",
          "is_bot": false,
          "headline": "Fix nextafter() (#8195)",
          "author_name": "Julius Ikkala",
          "author_login": "juliusikkala",
          "committed_at": "2025-08-20T22:13:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "619de903b70e08a7ca8471419e8eb7e4dd43ca9d",
          "body": "Allows opt-in for sourcing the following dependencies from the system,\ninstead of using the vendored ones:\n\n- miniz\n- lz4\n- vulkan-headers\n- spirv-tools\n- glslang\n\n(some of these already had options that weren't working, as either it\nexpected them to be static libraries or it was expecting to be emb\n[…]\nicts with new slang releases, it would be nice to see\nget\nthis upstream.\n\n---------\n\nCo-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>\nCo-authored-by: Sam Estep <sam@samestep.com>",
          "is_bot": false,
          "headline": "Add more system dependency options to CMake (#7987)",
          "author_name": "Niklas Korz",
          "author_login": "niklaskorz",
          "committed_at": "2025-08-20T19:52:42Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "82e3fc9c1064f06780f6449154c7cf8f663fceac",
          "body": "## Summary\n\n- Add Metal platform support for `WaveGetActiveMask()` and\n`WaveActiveCountBits()` wave intrinsics\n- Update capability requirements to include Metal platform for subgroup\nballot operations\n- Implement Metal-specific intrinsic assembly using `simd_ballot()` and\n`simd_vote` APIs\n\n  ## Chan\n[…]\nfrom `cuda_glsl_hlsl_spirv` to\n`cuda_glsl_hlsl_metal_spirv` for wave ballot functions\n  - **source/slang/slang-capabilities.capdef**:\n    - Add `metal` to `subgroup_ballot_activemask` capability alias",
          "is_bot": false,
          "headline": "Add Metal support for WaveGetActiveMask and WaveActiveCountBits (#8218)",
          "author_name": "Tianyu Li",
          "author_login": "WeakKnight",
          "committed_at": "2025-08-20T17:32:13Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a26a11ff5c3f14401bbbbbc4b6e3731056618138",
          "body": "There was a case where a PR passed CI test a long time ago, and when it\nis merged, it caused a regression. We like to run via-glsl test when it\ngets merged to prevent it.",
          "is_bot": false,
          "headline": "Enabling via-glsl test for \"merge\" event (#8133)",
          "author_name": "Jay Kwak",
          "author_login": "jkwak-work",
          "committed_at": "2025-08-20T16:34:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "113327194d4cf750af6265a560615850a8e7e6fb",
          "body": "Slang compiler doesn't use thread and we should declare the dependency\nto the thread library when we don't need it.\n\nThe use of Thread is limited to the tools such as slang-test.",
          "is_bot": false,
          "headline": "Reduce the dependency to thread library (#8216)",
          "author_name": "Jay Kwak",
          "author_login": "jkwak-work",
          "committed_at": "2025-08-20T16:28:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e0c20a076f2ec84586b6508664df4f59273c6aaf",
          "body": "Enable CUDA support for batch 3 tests\n    - Enhanced wave operations with exclusive support\n    - Added proper identity values for min/max operations\n    - Fixed intrinsic name mapping issues\n    - Updated test configurations\n\nCo-authored-by: Ellie Hermaszewska <ellieh@nvidia.com>",
          "is_bot": false,
          "headline": "Updated support to enable batch3  (#8219)",
          "author_name": "Harsh Aggarwal (NVIDIA)",
          "author_login": "szihs",
          "committed_at": "2025-08-20T09:11:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e4a7129b84692ddc3c586f0d0dde95e80e173ed8",
          "body": "Commit bdda8a9 from PR #7862 had to disable some slangy tests in ci.yml",
          "is_bot": false,
          "headline": "Fix#8076 - Re-enable slangpy test (#8087)",
          "author_name": "Harsh Aggarwal (NVIDIA)",
          "author_login": "szihs",
          "committed_at": "2025-08-20T05:39:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "785548a49538a8dfc1ee5d7e650b27c5607e43c1",
          "body": "Added a note section under the Installation section that warns users\nabout potential conflicts when multiple Slang installations are present\non the system. The note specifically addresses:\n* The scenario where Slang from Vulkan SDK might conflict with a\nstandalone installation\n* How LD_LIBRARY_PATH on Linux overrides the RUNPATH in the slangc\nexecutable\n\nCloses https://github.com/shader-slang/slang/issues/7405",
          "is_bot": false,
          "headline": "Add multiple slang installations note to doc (#8231)",
          "author_name": "Gangzheng Tong",
          "author_login": "gtong-nv",
          "committed_at": "2025-08-19T22:52:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6321bf07f701692b82bb3a767071e68fc7e19bbf",
          "body": "Don't include the VULKAN_HEADERS and SPIRV-Headers submodule if they are\nalready included.\nFix for the https://github.com/shader-slang/slang/issues/7898.\n\n---------\n\nCo-authored-by: Ellie Hermaszewska <ellieh@nvidia.com>\nCo-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>\nCo-authored-by: Jay Kwak <82421531+jkwak-work@users.noreply.github.com>",
          "is_bot": false,
          "headline": "CMake: Guard inclusion of VULKAN_HEADERS and SPIRV-Headers (#8124)",
          "author_name": "Sergei Popov",
          "author_login": "sergeiepopov",
          "committed_at": "2025-08-19T18:03:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ae1a93b579ed276d2455e1b97ca65ad4727d56d0",
          "body": "… (#8206)\n\nIn Metal, if `ParameterBlock` contains `DescriptorHandle` directly, it\nwould be emitted as DescriptorHandle literal, which is not valid Metal\ncode,\n\nThis fix adds a case for `kIROp_DescriptorHandleType` and directs it to\nthe Parent's `emitType` function to handle it.",
          "is_bot": false,
          "headline": "Emit descriptor handle correctly for ParameterBlock<DescriptorHandle>…",
          "author_name": "Gangzheng Tong",
          "author_login": "gtong-nv",
          "committed_at": "2025-08-19T04:19:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e9a309678f55a59bb012a931af2c1b734968a13d",
          "body": "#7644 added a script that gets run in CI to display a human-readable\ndiff if `source/slang/slang-ir-insts-stable-names.lua` needs to be\nupdated. However, the `git diff` commands in that script are wrong,\ncausing it to instead just display the man page for the `git diff`\ncommand; [here's an\nexample](\n[…]\n\nhttps://github.com/shader-slang/slang/actions/runs/16578977233/job/46890240012\n- https://github.com/shader-slang/slang/actions/runs/16578977233\n\nCo-authored-by: Ellie Hermaszewska <ellieh@nvidia.com>",
          "is_bot": false,
          "headline": "Fix error in IR stable names Git diff CI script (#7954)",
          "author_name": "Sam Estep",
          "author_login": "samestep",
          "committed_at": "2025-08-18T16:02:37Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d9851d4e45d2344e0e220ef6199ef4e117066f0f",
          "body": "This is a followup on #7828 to fix bugs that were causing CodeLLDB to\ngive wrong values and hang (see vadimcn/codelldb#1302) because I didn't\nrealize that these data formatters can be passed _either_ a value of a\ngiven type _or_ a pointer to a value of that type, and need to handle\nboth cases. I als\n[…]\n..\n     def GetVTable(self): ...\n```\n\nHowever, that makes the debugger run _significantly_ slower, so I'm\nchoosing not do do it here.\n\n---------\n\nCo-authored-by: Ellie Hermaszewska <ellieh@nvidia.com>",
          "is_bot": false,
          "headline": "Make LLDB IR data formatters more robust (#7927)",
          "author_name": "Sam Estep",
          "author_login": "samestep",
          "committed_at": "2025-08-18T15:29:57Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "09054bff3d0874a92958b514ae2a9ff2b32483e5",
          "body": "The documentation added by #6844 included instructions to make sure that\nthe Fiddle `#include` in a file comes after all the other `#include`s,\nbut it's easy to accidentally violate this via `clang-format`, as\nhappened for `source/slang/slang-ast-modifier.h` in #7559. This PR\nguards against this sor\n[…]\nabout\nthis in `tools/slang-fiddle/README.md`.\n\nAs a bonus, I also enabled Markdown syntax highlighting for all the code\nblocks in that doc file.\n\nCo-authored-by: Ellie Hermaszewska <ellieh@nvidia.com>",
          "is_bot": false,
          "headline": "Don't let clang-format reorder Fiddle `#include`s (#7887)",
          "author_name": "Sam Estep",
          "author_login": "samestep",
          "committed_at": "2025-08-18T15:10:27Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2f68f98a3d7d41c1daac07afab622c34f5c1b8d4",
          "body": "Close #8054.\nFor detailed root cause is at:\nhttps://github.com/shader-slang/slang/issues/8054#issuecomment-3189579508",
          "is_bot": false,
          "headline": "Fix issue of double lowering issue a differentiable function (#8182)",
          "author_name": "kaizhangNV",
          "author_login": "kaizhangNV",
          "committed_at": "2025-08-18T16:30:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cc93e2c3523f558ee85281f7fe98e220f058f5ed",
          "body": "…(#8109)\n\nClose #8090.\n\nWhen we do type coerce, we use a cache to store the conversion cost\nof different type. The key of the cache is defined by\nstruct BasicTypeKey\n{\n    uint32_t baseType : 8;\n    uint32_t dim1 : 4;\n    uint32_t dim2 : 4;\n    ...\n}\n\nwhere dim1 and dim2 is used for dimension of vec\n[…]\ny extending it to 8 bit.\n\nAlso to make the hash key still within 32 bits, we adjust baseType to 5 bits,\nand knownConstantBitCount to 6 bits.\n\n---------\n\nCo-authored-by: kaizhangNV <kazhang@nvidia.com>",
          "is_bot": false,
          "headline": "Fix constructor overload ambiguity with scalar and vector parameters …",
          "author_name": "Copilot",
          "author_login": "Copilot",
          "committed_at": "2025-08-18T16:29:23Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1a4ccba64a140bd404cbd22a9ae0a8e9e5f425d8",
          "body": "Similar to #7887, this PR improves the Fiddle docs a bit by showing how\nthe `FIDDLE TEMPLATE` example would actually need to include `FIDDLE\nEND` at some point after `FIDDLE OUTPUT`.",
          "is_bot": false,
          "headline": "Show usage of `FIDDLE END` in Fiddle doc example (#7888)",
          "author_name": "Sam Estep",
          "author_login": "samestep",
          "committed_at": "2025-08-18T13:56:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c3df36043c67a94ea51cd7b1ce10a84e52f8d744",
          "body": null,
          "is_bot": false,
          "headline": "Enable CUDA Test Enablement - Batch 1: Autodiff Tests (1-16)  (#8139)",
          "author_name": "Harsh Aggarwal (NVIDIA)",
          "author_login": "szihs",
          "committed_at": "2025-08-18T05:16:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8ba38bcd6e64bc922bc62843375eaa9ef01b6675",
          "body": "This file is automatically overwritten by the build:\n\n\nhttps://github.com/shader-slang/slang/blob/b7df3c7aa27301f88e31ed0a7bbf230688adab6a/source/slang/CMakeLists.txt#L68-L78\n\nIt is currently out of date (running the build gives rise to unstaged\nchanges), so this PR updates it.",
          "is_bot": false,
          "headline": "Update capability atoms reference page (#8138)",
          "author_name": "Sam Estep",
          "author_login": "samestep",
          "committed_at": "2025-08-17T09:07:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3639e71dfcb7e5284949a98d1fefddda118338be",
          "body": "Update cuda context creation to support both cuda 12 and cuda 13.",
          "is_bot": false,
          "headline": "Update cuda context creation to support cuda 13 (#8181)",
          "author_name": "jarcherNV",
          "author_login": "jarcherNV",
          "committed_at": "2025-08-15T22:16:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "af27de01532904508e6a630c213249e93fdd1c66",
          "body": "Add helper functions to create ISlangBlob and load module data from\nsource.\n\n---------\n\nCo-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Add static functions to create blobs from data (#8179)",
          "author_name": "jarcherNV",
          "author_login": "jarcherNV",
          "committed_at": "2025-08-15T20:16:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dcda42e7dcdb5e260013757763bf5dbf67d69568",
          "body": "Metal's popcount prototype is `T popcount(T x)` but we want to use it to\nimplement `countbits` where the prototype always returns `uint`.\n\nUsing `popcount` directly would implicitly cast successfully to the\n32-bit return value in all cases except when the argument is a 64-bit\ntype. Thus, this change always explicitly casts the result to `$TR`,\nwhich should be one of the `uint[N]` types, and should always be able to\nhold the number of bits in the type.\n\nAddresses #6877",
          "is_bot": false,
          "headline": "Use 64bit int instead of emulation on metal (#8180)",
          "author_name": "James Helferty (NVIDIA)",
          "author_login": "jhelferty-nv",
          "committed_at": "2025-08-15T16:21:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f75bf474ef87737c87ef6dcb431bd0b87faee0a8",
          "body": "…ting logic (#8168)\n\nFixes: #8167\n\nCurrent emitting logic does not work, this has been corrected.\nThe provided test ensures our CUDA code is valid by compiling PTX from\nit.\n\n`m_writer->emit(\"OptixTraversableHandle\");` should be `out <<` since\n`out` adds to type-name-cache; otherwise using a type twice will produce\nbad type-names (since we filled type-name cache with \"\" instead of\n\"typeName\")",
          "is_bot": false,
          "headline": "[CUDA] Fix incorrect `kIROp_RaytracingAccelerationStructureType` emit…",
          "author_name": "ArielG-NV",
          "author_login": "ArielG-NV",
          "committed_at": "2025-08-15T15:24:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "feb1569d972f294ce482ea8b1645da6cde4e982d",
          "body": "Fixes #7011",
          "is_bot": false,
          "headline": "Prohibit use of buffer.GetDimensions on metal (#8156)",
          "author_name": "James Helferty (NVIDIA)",
          "author_login": "jhelferty-nv",
          "committed_at": "2025-08-15T13:02:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cfd08da1036cf72b8e6c6f661260b968f79667e7",
          "body": "…` debugging (#8192)\n\nfixes: #8188\n\nChanges:\n* Fix Indentation\n* Add a visualizer for `NodeBase` based on changes to `slang-fiddle`\n\n---------\n\nCo-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Clean up `natvis` and use fiddle to generate info needed for `.natvis…",
          "author_name": "ArielG-NV",
          "author_login": "ArielG-NV",
          "committed_at": "2025-08-14T21:43:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dd06524f523cdac9c753801ce9c3992f66ae5576",
          "body": "…gate if AST-parent has target+set the AST-child does not (#8175)\n\nFixes: #8174\n\nChanges:\n* To determine if we propagate capabilities, we need to ensure that a\n`join` will do nothing (optimization since `join` is expensive + caching\ndata for the `join` adds up to be expensive). This logic was change\n[…]\nd have\n`glsl`. In this case, we will not remove `metal` from the parent since\n`{metal+glsl}.implies({glsl})` is true.\n\n---------\n\nCo-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "[Capability System] Fix bug where capabilities do not correctly prope…",
          "author_name": "ArielG-NV",
          "author_login": "ArielG-NV",
          "committed_at": "2025-08-14T19:27:55Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ceb2e8d04885d55dd9685a38977a55c4f53f202f",
          "body": null,
          "is_bot": false,
          "headline": "Fix typo in \"compilation ceased\" error identifier (#8189)",
          "author_name": "Sam Estep",
          "author_login": "samestep",
          "committed_at": "2025-08-14T18:29:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "90a9515fcbc7e362c05341c2ca65fbe78bc1106a",
          "body": "Fixes #6785",
          "is_bot": false,
          "headline": "Handle SV_Barycentrics on metal (#8163)",
          "author_name": "James Helferty (NVIDIA)",
          "author_login": "jhelferty-nv",
          "committed_at": "2025-08-13T20:45:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "80b46bd2124b3ead963ae977fef3d010049beb9a",
          "body": "#1729 renamed `Val::_toStringOverride` to `Val::_toTextOverride` but did\nnot update the error message for when it is not overridden. This PR\nfixes that.",
          "is_bot": false,
          "headline": "Fix error for not defining `Val::_toTextOverride` (#8177)",
          "author_name": "Sam Estep",
          "author_login": "samestep",
          "committed_at": "2025-08-13T20:19:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d7e2bac2df176af4cd3955e6df02e2ddcbc059d8",
          "body": "When we legalize the entry point param, there are cases where we need to\nreconstruct a struct for the parameter and the original struct wouldn't\nbe used. But if the user tries to use the origianl struct as a type for\na function parameter, we will end up using both the original struct and\nthe synthes\n[…]\nixes https://github.com/shader-slang/slang/issues/8141\nRelated to https://github.com/shader-slang/slang/issues/7693\n\n---------\n\nCo-authored-by: ArielG-NV <159081215+ArielG-NV@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Remove the semantic decoration from the original entry struct (#8146)",
          "author_name": "Jay Kwak",
          "author_login": "jkwak-work",
          "committed_at": "2025-08-13T15:37:22Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "047b8af4881e1fc90aa1004d17e32bdffd53bdcf",
          "body": "Currently the issue template makes the subtitle \"bold\". It is a little\nhard to navigate between the subtitle because the bold is not very\nobvious.\n\nThis commit makes them to use a bigger font.\n\nBefore the change,\n<img width=\"839\" height=\"488\" alt=\"image\"\nsrc=\"https://github.com/user-attachments/assets/08abec42-8389-4404-89a1-5a70670000cd\"\n/>\n\nAfter the change,\n<img width=\"840\" height=\"544\" alt=\"image\"\nsrc=\"https://github.com/user-attachments/assets/e2ffdac1-f8dc-40fa-a317-8dda965f3377\"\n/>",
          "is_bot": false,
          "headline": "Make the issue headings bigger (#8143)",
          "author_name": "Jay Kwak",
          "author_login": "jkwak-work",
          "committed_at": "2025-08-12T19:39:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3618f7a4c35de32405e6ebe458bae835869e2876",
          "body": "Enable CUDA for the tests listed in issue #8078\nThis requires a minor CUDA prelude change, adding some math functions.",
          "is_bot": false,
          "headline": "Enable CUDA testing for batch 2 (#8147)",
          "author_name": "jarcherNV",
          "author_login": "jarcherNV",
          "committed_at": "2025-08-12T18:19:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "719ecf3bf6ce50a8f1d02c6f96ae65e6f492321a",
          "body": "This PR puts the [Khronos official Vulkan\nLoader](https://github.com/NixOS/nixpkgs/blob/6027c30c8e9810896b92429f0092f624f7b1aace/pkgs/by-name/vu/vulkan-loader/package.nix#L22-L27)\nin `LD_LIBRARY_PATH` for the `flake.nix` dev shell, allowing Vulkan\ntests to run.\n\nFor example, before this PR:\n\n```\n$ b\n[…]\ne/array-param.slang.2 (dx11)' \nignored test: 'tests/compute/array-param.slang.3 (dx12)' \npassed test: 'tests/compute/array-param.slang.4 (vk)' \n\n===\n100% of tests passed (2/2), 3 tests ignored\n===\n```",
          "is_bot": false,
          "headline": "Allow `flake.nix` users to run Vulkan tests (#8152)",
          "author_name": "Sam Estep",
          "author_login": "samestep",
          "committed_at": "2025-08-12T15:50:15Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5b64150cdf0dfd6e068cdf27c5ea857c2d967d15",
          "body": "Related to #7969\n\nIn the slangc help text we have two categories, the option category\n`Target` and the values category `target`, where the names only differ\nby case. The help parser finds the category in the list by the\ncase-insensitive name, so `slangc -h Target` and `slangc -h target` will\nboth pr\n[…]\nill get the\nhelp text for `capability` as before as a fallback.\n\n---------\n\nCo-authored-by: slangbot <ellieh+slangbot@nvidia.com>\nCo-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Do case-sensitive search for category first in slangc -h (#8142)",
          "author_name": "aidanfnv",
          "author_login": "aidanfnv",
          "committed_at": "2025-08-11T18:54:47Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "dcdebc1a76a0a6ffbfd6a5805354f8f679c60202",
          "body": "…pes from API (#8119)\n\nCloses #8110.\nCloses #8011.",
          "is_bot": false,
          "headline": "Allow specializing entrypoints with generic value args or variadic ty…",
          "author_name": "Yong He",
          "author_login": "csyonghe",
          "committed_at": "2025-08-09T16:43:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fc6aea37483446372425aca8471f0e8bf7c3a910",
          "body": "Co-authored-by: Jay Kwak <82421531+jkwak-work@users.noreply.github.com>\nCo-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "[SPIR-V] Emit control flags for `branch/flatten` decorations (#8134)",
          "author_name": "amidescent",
          "author_login": null,
          "committed_at": "2025-08-09T15:30:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6d54b66ca633e1890fd4db4c6d90dfe90b9aa4fb",
          "body": "Fixes https://github.com/shader-slang/slang/issues/8098",
          "is_bot": false,
          "headline": "Be conservative for checking if PR is doc changes only (#8130)",
          "author_name": "Jay Kwak",
          "author_login": "jkwak-work",
          "committed_at": "2025-08-09T15:26:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 27,
      "commits_last_year": 173,
      "latest_release_at": "2024-07-10T23:55:07Z",
      "latest_release_tag": "v0.test.11",
      "releases_from_tags": false,
      "days_since_last_push": 8,
      "active_weeks_last_year": 7,
      "days_since_latest_release": 745,
      "mean_days_between_releases": 112.7
    },
    "community": {
      "has_readme": false,
      "has_license": false,
      "has_description": false,
      "has_contributing": false,
      "health_percentage": null,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": []
    },
    "popularity": {
      "forks": 0,
      "stars": 1,
      "watchers": 0,
      "fork_history": {
        "days": [],
        "complete": true,
        "collected": 0,
        "total_forks": 0
      },
      "star_history": null,
      "open_issues_and_prs": 0
    },
    "ai_readiness": {
      "has_nix": true,
      "example_dirs": [
        "examples"
      ],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [],
      "largest_source_bytes": 811328,
      "source_files_sampled": 1413,
      "oversized_source_files": 65,
      "agent_instruction_files": [
        ".github/copilot-instructions.md",
        "CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 13636
    },
    "dependencies": {
      "manifests": [],
      "advisories": {
        "error": "No resolved dependencies to assess",
        "scope": "repository_graph",
        "source": null,
        "findings": [],
        "collected": false,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 0,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [],
      "dependencies": [],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [],
        "collected": true,
        "truncated": false,
        "total_count": 0,
        "direct_count": 0,
        "indirect_count": 0
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 0,
        "merged_prs": 45,
        "open_issues": 0,
        "closed_ratio": null,
        "closed_issues": 0,
        "closed_unmerged_prs": 3
      },
      "bus_factor": 2,
      "bot_contributors": 1,
      "top_contributors": [
        {
          "type": "User",
          "login": "csyonghe",
          "commits": 1534,
          "avatar_url": "https://avatars.githubusercontent.com/u/2652293?v=4"
        },
        {
          "type": "User",
          "login": "jsmall-zzz",
          "commits": 821,
          "avatar_url": "https://avatars.githubusercontent.com/u/14912361?v=4"
        },
        {
          "type": "User",
          "login": "tangent-vector",
          "commits": 287,
          "avatar_url": "https://avatars.githubusercontent.com/u/10618364?v=4"
        },
        {
          "type": "User",
          "login": "expipiplus1",
          "commits": 277,
          "avatar_url": "https://avatars.githubusercontent.com/u/857308?v=4"
        },
        {
          "type": "User",
          "login": "jkwak-work",
          "commits": 244,
          "avatar_url": "https://avatars.githubusercontent.com/u/82421531?v=4"
        },
        {
          "type": "User",
          "login": "saipraveenb25",
          "commits": 175,
          "avatar_url": "https://avatars.githubusercontent.com/u/31557731?v=4"
        },
        {
          "type": "User",
          "login": "kaizhangNV",
          "commits": 133,
          "avatar_url": "https://avatars.githubusercontent.com/u/149626564?v=4"
        },
        {
          "type": "User",
          "login": "ArielG-NV",
          "commits": 113,
          "avatar_url": "https://avatars.githubusercontent.com/u/159081215?v=4"
        },
        {
          "type": "User",
          "login": "aleino-nv",
          "commits": 81,
          "avatar_url": "https://avatars.githubusercontent.com/u/30037074?v=4"
        },
        {
          "type": "User",
          "login": "skallweitNV",
          "commits": 80,
          "avatar_url": "https://avatars.githubusercontent.com/u/64953474?v=4"
        }
      ],
      "contributors_sampled": 99,
      "top_contributor_share": 0.347
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "add-issue-labels.yml",
        "benchmark.yml",
        "check-cmdline-ref.yml",
        "check-formatting.yml",
        "check-toc.yml",
        "ci-slang-build.yml",
        "ci-slang-test.yml",
        "ci.yml",
        "claude.yml",
        "comment-ir-version-check.yml",
        "compile-regression-test.yml",
        "copilot-setup-steps.yml",
        "ensure-pr-label.yml",
        "falcor-compiler-perf-test.yml",
        "falcor-test.yml",
        "format.yml",
        "push-benchmark-results.yml",
        "regenerate-cmdline-ref.yml",
        "regenerate-toc.yml",
        "release-linux-glibc-2-27.yml",
        "release.yml",
        "slash-command-dispatch.yml",
        "vk-gl-cts-nightly.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [],
      "has_editorconfig": true,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [],
      "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": 0,
            "reason": "branch protection not enabled on development/release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": null,
            "reason": "no pull request found",
            "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": 0,
            "reason": "Found 0/30 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 4 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": 9,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 0,
            "reason": "0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": null,
            "reason": "packaging workflow not 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": "no SAST tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 0,
            "reason": "security policy file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": 0,
            "reason": "Project has not signed or included provenance with any releases.",
            "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": 10,
            "reason": "0 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "8bcf6c443bbd24498e67ae54f06c2ad933421738",
        "ran_at": "2026-07-26T19:32:49Z",
        "aggregate_score": 3.1,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-26T09:11:44Z",
      "oldest_open_prs": [],
      "last_merged_pr_at": "2026-02-27T23:26:23Z",
      "ci_last_conclusion": null,
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/csyonghe/slang",
    "host": "github.com",
    "name": "slang",
    "owner": "csyonghe"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "at_risk",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 44,
      "inputs": {
        "security": 30,
        "vitality": 50,
        "community": 9,
        "governance": 64,
        "engineering": 55
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "moderate",
        "name": "Vitality",
        "value": 50,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "moderate",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 52,
            "inputs": {
              "commits_last_year": 173,
              "human_commit_share": 1,
              "days_since_last_push": 8,
              "active_weeks_last_year": 7
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 8 days ago",
                "points": 28.8,
                "status": "partial",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 8
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "7/52 weeks with commits",
                "points": 4.8,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 7
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "173 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 173
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "at_risk",
            "name": "Release discipline",
            "note": null,
            "notes": [],
            "value": 47,
            "inputs": {
              "releases_count": 27,
              "latest_release_tag": "v0.test.11",
              "releases_from_tags": false,
              "days_since_latest_release": 745,
              "mean_days_between_releases": 112.7
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "27 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 27
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 745 days ago",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 745
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~112.7 days",
                "points": 19.8,
                "status": "partial",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 112.7
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "dormant",
              "guards": [
                "no_open_demand"
              ],
              "signals": [
                "release_stall",
                "scorecard_unmaintained"
              ],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": 0,
              "unanswered_open_issues": 0,
              "days_since_last_merged_pr": 148,
              "days_since_last_human_commit": 318,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "no human commit for 318 days, with nothing left unanswered; held at dormant by nothing open to answer",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_quiet",
                    "params": {
                      "days": 318
                    }
                  },
                  {
                    "code": "abandonment_guarded",
                    "params": {
                      "guards": "nothing open to answer"
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "critical",
        "name": "Community & Adoption",
        "value": 9,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 1,
            "inputs": {
              "forks": 0,
              "stars": 1,
              "watchers": 0,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "1 stars",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "0 forks",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "0 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "critical",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 19,
            "inputs": {
              "has_readme": false,
              "has_license": false,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file present, not a recognized license",
                "points": 16.9,
                "status": "partial",
                "details": [
                  {
                    "code": "license_custom",
                    "params": {}
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 0,
                "status": "missed",
                "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": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "moderate",
        "name": "Sustainability & Governance",
        "value": 64,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "moderate",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 63,
            "inputs": {
              "bus_factor": 2,
              "contributors_sampled": 99,
              "top_contributor_share": 0.347
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "2 contributor(s) cover half of all commits",
                "points": 25.2,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 35% of commits",
                "points": 14.7,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 35
                    }
                  }
                ],
                "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 4 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "moderate",
            "name": "Issue & PR responsiveness",
            "note": "Excluded from scoring (no data or not applicable): Issue resolution. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "issue_resolution"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 67,
            "inputs": {
              "merged_prs": 45,
              "open_issues": 0,
              "closed_issues": 0,
              "issue_closed_ratio": null,
              "closed_unmerged_prs": 3
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "no issues or no data",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_issues_or_data",
                    "params": {}
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "45/48 decided PRs merged",
                "points": 35.9,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 45,
                      "decided": 48
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "moderate",
            "name": "Ownership & stewardship",
            "note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "verified_domain"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 61,
            "inputs": {
              "followers": 203,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "csyonghe",
              "public_repos": 25,
              "account_age_days": 5021
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "personal (user) account",
                "points": 10,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_personal",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": "not applicable to user accounts",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_applicable_to_user_accounts",
                    "params": {}
                  }
                ],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "203 followers of csyonghe",
                "points": 16.6,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 203,
                      "login": "csyonghe"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "25 public repos, account ~13 yr old",
                "points": 22.3,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 25
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 13
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "moderate",
        "name": "Engineering Quality",
        "value": 55,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "moderate",
            "name": "Engineering practices",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: CI-Tests. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_ci_tests"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 68,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": true,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "23 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 23
                    }
                  }
                ],
                "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": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 6.4,
                "status": "met",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "at_risk",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 35,
            "inputs": {
              "topics": [],
              "has_wiki": true,
              "homepage": null,
              "has_readme": false,
              "has_docs_dir": true,
              "has_description": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 0,
                "status": "missed",
                "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": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "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": "at_risk",
        "name": "Security",
        "value": 30,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): CI-Tests, Packaging. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "ci_tests",
                    "packaging"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 30,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 16,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 2,
              "scorecard_aggregate": 3.1
            },
            "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": "branch protection not enabled on development/release branches",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "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 0/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 4 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.2,
                "status": "partial",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow not detected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "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": "no SAST tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "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": "0 existing vulnerabilities detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "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": 3
            },
            "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": 67,
        "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": 0.99,
              "agent_instruction_files": [
                ".github/copilot-instructions.md",
                "CLAUDE.md"
              ],
              "agent_instruction_max_bytes": 13636
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": ".github/copilot-instructions.md, CLAUDE.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".github/copilot-instructions.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": "99 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 99,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 51,
            "inputs": {
              "has_nix": true,
              "has_tests": true,
              "lockfiles": [],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [],
              "agent_commit_share": 0.04,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "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": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "C++ (statically typed)",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "C++"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "Nix",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "Nix"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "4 of the last 100 commits agent-authored or agent-credited",
                "points": 8,
                "status": "partial",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 4,
                      "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": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 98,
            "inputs": {
              "primary_language": "C++",
              "largest_source_bytes": 811328,
              "source_files_sampled": 1413,
              "oversized_source_files": 65
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "C++ (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "C++"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "65/1413 source files over 60KB",
                "points": 52.5,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 1413,
                      "oversized": 65
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "at_risk",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "example_dirs": [
                "examples"
              ],
              "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",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "examples"
                    }
                  }
                ],
                "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",
    "Community profile unavailable"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-26T19:33:09.282472Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/c/csyonghe/slang.svg",
  "full_name": "csyonghe/slang",
  "license_state": "custom",
  "license_spdx": null
}

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

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

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