公开记录
软件健康报告模式 0.26.0 · 指标 1.13.0 · 2026-07-22 11:43 UTC

stephenberry / glaze

Extremely fast, in memory, serialization, reflection, and RPC library for C++. JSON, BEVE, BSON, CBOR, CSV, JSONB, MessagePack, TOML, YAML, EETF

C++MIT★ 2,912 星标⑂ 256 复刻始于 2022年7月在 GitHub 上查看 ↗

stephenberry/glaze 的健康指数为 100 分中的 75 分,处于「良好」区间。 其得分最高的类别是Vitality(100/100),最低的是AI Readiness(50/100)。 最近一次更新在今天。 近期的大部分工作由 1 位贡献者完成。

75
总分 / 100
良好

软件健康指数

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

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

评分画像

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

所有权

Stephen Berry个人账户
874 关注者111 个公开仓库始于 2014年4月

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

按类别列示的指标

活力

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

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

发布纪律

100优秀
评分方式
27/27有发布版本 — 已发布 100 个发布版本
36/36发布时效 — 最近一次发布版本于 4 天前
27/27发布节奏 — 约每 7.5 天发布一次
0/10OpenSSF Scorecard:Signed-Releases — 无数据
所用输入
releases_count100
latest_release_tagv7.9.1
releases_from_tags
days_since_latest_release4
mean_days_between_releases7.5
已排除计分(无数据或不适用):OpenSSF Scorecard:Signed-Releases。 其余权重已重新归一化。

社区与采用

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

68中等 · 占总体的 18%
评分方式
56.2/60星标 — 2,912 个星标
20.1/25复刻 — 256 个复刻
8.2/15关注者 — 31 位关注者
所用输入
forks256
stars2,912
watchers31
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history

社区健康

50中等
评分方式
22.5/22.5README
22.5/22.5许可证 — 可识别的许可证(MIT)
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

可持续性与治理

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

62中等 · 占总体的 24%
评分方式
9/54巴士系数 — 1 位贡献者贡献了半数提交
2.5/22.5提交分布 — 头号贡献者编写了 89% 的提交
13.5/13.5贡献者广度 — 80 位贡献者
10/10OpenSSF Scorecard:Contributors — project has 6 contributing companies or organizations
所用输入
bus_factor1
contributors_sampled80
top_contributor_share0.888
评分方式
45.7/46.8议题解决 — 98% 的议题已关闭
35.8/38.3PR 接受 — 已裁定的 PR 中 1,522/1,625 已合并
6/15OpenSSF Scorecard:Code-Review — Found 12/30 approved changesets -- score normalized to 4
所用输入
merged_prs1,522
open_issues19
closed_issues812
issue_closed_ratio0.977
closed_unmerged_prs103
评分方式
10/30所有权背书 — 个人(用户)账户
0/20已验证域名 — 不适用于个人账户
21.2/25所有者影响力 — stephenberry 有 874 位关注者
25/25既往记录 — 111 个公开仓库,账户约 12 年
所用输入
followers874
owner_typeUser
is_verified
owner_loginstephenberry
public_repos111
account_age_days4,471
已排除计分(无数据或不适用):已验证域名。 其余权重已重新归一化。

工程质量

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

80良好 · 占总体的 20%

工程实践

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

文档

90优秀
评分方式
30/30README
25/25文档目录
15/15文档 / 主页站点 — https://stephenberry.github.io/glaze/
10/10仓库描述
10/10主题标签 — 20 个主题标签
0/10Wiki
所用输入
topicsapi, binary, cplusplus, cpp, interface, json, serialization, reflection, header-only, json-rpc2, fast, csv, json-schema, beve, cbor, toml, messagepack, yaml, jsonb, bson
has_wiki
homepagehttps://stephenberry.github.io/glaze/
has_readme
has_docs_dir
has_description

安全

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

62中等 · 占总体的 16%

安全态势

62中等
评分方式
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — 无数据
2.5/2.5CI-Tests — 26 out of 26 merged PRs checked by a CI test -- score normalized to 10
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
3/7.5Code-Review — Found 12/30 approved changesets -- score normalized to 4
2.5/2.5Contributors — project has 6 contributing companies or organizations
10/10Dangerous-Workflow — no dangerous workflow patterns detected
0/7.5Dependency-Update-Tool — no update tool detected
5/5Fuzzing — project is fuzzed
2.5/2.5许可证 — license file detected
7.5/7.5Maintained — 30 commit(s) and 23 issue activity found in the last 90 days -- score normalized to 10
0/5Packaging — 无数据
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
5/5Security-Policy — security policy file detected
0/7.5Signed-Releases — 无数据
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
7.5/7.5Vulnerabilities — 0 existing vulnerabilities detected
所用输入
sourceopenssf_scorecard
checks_evaluated15
scorecard_versionv5.5.0
checks_inconclusive3
scorecard_aggregate6.2
已排除计分(无数据或不适用):branch_protection, packaging, signed_releases。 其余权重已重新归一化。

AI 就绪度

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

50中等 · 占总体的 0%
评分方式
0/45代理指令 — 没有 CLAUDE.md / AGENTS.md / 编辑器规则
0/15机器可读文档(llms.txt)
40/40可读的提交历史 — 100 次人类提交中有 77 次说明了意图(结构化标题或解释性正文)
所用输入
has_llms_txt
legible_history_share0.77
agent_instruction_files
agent_instruction_max_bytes
评分方式
0/18一条命令的引导启动
22/22自动化测试
0/11Lint / 格式化配置
11/11静态类型检查 — C++(静态类型)
10/10可复现环境 — devcontainer, Dockerfile
0/10已体现的代理实践 — 最近 100 次提交中没有代理编写的提交
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
toolchain_manifests
dependency_bot_commit_share0
评分方式
45/45可类型检查的代码 — C++(静态类型)
51.1/55可控的文件大小 — 采样的 414 个源文件中有 29 个超过 60KB
所用输入
primary_languageC++
largest_source_bytes460,936
source_files_sampled414
oversized_source_files29

机器可读接口

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

关键数据

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

数据采集警告

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

更多细节

Star 与 Fork 历史 0 ★ / 256 ⇿
0Star
256Fork
99发布

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

05010015020025030025472022-102024-082026-07
主版本 4次版本 30修订 65

每个点涵盖 4 天。

OpenSSF Scorecard 6.2 / 10
6.2综合

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

10Binary-Artifactsno binaries found in the repo
不适用Branch-Protectioninternal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
10CI-Tests26 out of 26 merged PRs checked by a CI test -- score normalized to 10
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
4Code-ReviewFound 12/30 approved changesets -- score normalized to 4
10Contributorsproject has 6 contributing companies or organizations
10Dangerous-Workflowno dangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
10Fuzzingproject is fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 23 issue activity found in the last 90 days -- score normalized to 10
不适用Packagingpackaging workflow not detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTSAST tool is not run on all commits -- score normalized to 0
10Security-Policysecurity policy file detected
不适用Signed-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
10Vulnerabilities0 existing vulnerabilities detected
全部依赖 0

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

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

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

原始 JSON 报告 机器可读
{
  "data": {
    "repo": {
      "topics": [
        "api",
        "binary",
        "cplusplus",
        "cpp",
        "interface",
        "json",
        "serialization",
        "reflection",
        "header-only",
        "json-rpc2",
        "fast",
        "csv",
        "json-schema",
        "beve",
        "cbor",
        "toml",
        "messagepack",
        "yaml",
        "jsonb",
        "bson"
      ],
      "is_fork": false,
      "size_kb": 12921,
      "has_wiki": false,
      "homepage": "https://stephenberry.github.io/glaze/",
      "languages": {
        "C": 4011,
        "C++": 8659582,
        "HTML": 32460,
        "CMake": 121548,
        "Shell": 4093,
        "Dockerfile": 3837
      },
      "pushed_at": "2026-07-22T08:53:46Z",
      "created_at": "2022-07-15T11:52:30Z",
      "owner_type": "User",
      "updated_at": "2026-07-22T08:53:54Z",
      "description": "Extremely fast, in memory, serialization, reflection, and RPC library for C++. JSON, BEVE, BSON, CBOR, CSV, JSONB, MessagePack, TOML, YAML, EETF",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "main",
      "license_spdx_raw": "MIT",
      "primary_language": "C++",
      "significant_languages": [
        "C++"
      ]
    },
    "owner": {
      "blog": null,
      "name": "Stephen Berry",
      "type": "User",
      "login": "stephenberry",
      "company": null,
      "location": null,
      "followers": 874,
      "avatar_url": "https://avatars.githubusercontent.com/u/7396228?v=4",
      "created_at": "2014-04-24T14:43:08Z",
      "is_verified": null,
      "public_repos": 111,
      "account_age_days": 4471
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v7.9.1",
          "kind": "patch",
          "published_at": "2026-07-17T17:52:55Z"
        },
        {
          "tag": "v7.9.0",
          "kind": "minor",
          "published_at": "2026-07-11T12:17:44Z"
        },
        {
          "tag": "v7.8.4",
          "kind": "patch",
          "published_at": "2026-07-02T16:40:46Z"
        },
        {
          "tag": "v7.8.3",
          "kind": "patch",
          "published_at": "2026-06-23T14:25:44Z"
        },
        {
          "tag": "v7.8.2",
          "kind": "patch",
          "published_at": "2026-06-16T15:34:57Z"
        },
        {
          "tag": "v7.8.1",
          "kind": "patch",
          "published_at": "2026-06-11T01:30:27Z"
        },
        {
          "tag": "v7.8.0",
          "kind": "minor",
          "published_at": "2026-06-10T15:16:36Z"
        },
        {
          "tag": "v7.7.1",
          "kind": "patch",
          "published_at": "2026-05-29T21:54:36Z"
        },
        {
          "tag": "v7.7.0",
          "kind": "minor",
          "published_at": "2026-05-21T18:06:08Z"
        },
        {
          "tag": "v7.6.0",
          "kind": "minor",
          "published_at": "2026-05-10T21:11:17Z"
        },
        {
          "tag": "v7.5.0",
          "kind": "minor",
          "published_at": "2026-04-28T13:28:05Z"
        },
        {
          "tag": "v7.4.0",
          "kind": "minor",
          "published_at": "2026-04-20T13:42:11Z"
        },
        {
          "tag": "v7.3.3",
          "kind": "patch",
          "published_at": "2026-04-11T02:37:34Z"
        },
        {
          "tag": "v7.3.2",
          "kind": "patch",
          "published_at": "2026-04-08T16:35:54Z"
        },
        {
          "tag": "v7.3.1",
          "kind": "patch",
          "published_at": "2026-04-08T15:04:47Z"
        },
        {
          "tag": "v7.3.0",
          "kind": "minor",
          "published_at": "2026-04-07T15:46:44Z"
        },
        {
          "tag": "v7.2.3",
          "kind": "patch",
          "published_at": "2026-04-02T22:21:33Z"
        },
        {
          "tag": "v7.2.2",
          "kind": "patch",
          "published_at": "2026-03-26T14:25:57Z"
        },
        {
          "tag": "v7.2.1",
          "kind": "patch",
          "published_at": "2026-03-15T23:41:27Z"
        },
        {
          "tag": "v7.2.0",
          "kind": "minor",
          "published_at": "2026-03-10T01:41:19Z"
        },
        {
          "tag": "v7.1.1",
          "kind": "patch",
          "published_at": "2026-03-07T15:27:16Z"
        },
        {
          "tag": "v7.1.0",
          "kind": "minor",
          "published_at": "2026-02-28T23:57:21Z"
        },
        {
          "tag": "v7.0.2",
          "kind": "patch",
          "published_at": "2026-01-26T15:29:35Z"
        },
        {
          "tag": "v7.0.1",
          "kind": "patch",
          "published_at": "2026-01-16T16:12:28Z"
        },
        {
          "tag": "v7.0.0",
          "kind": "major",
          "published_at": "2026-01-10T23:34:04Z"
        },
        {
          "tag": "v6.5.1",
          "kind": "patch",
          "published_at": "2026-01-03T19:19:55Z"
        },
        {
          "tag": "v6.5.0",
          "kind": "minor",
          "published_at": "2026-01-01T20:02:33Z"
        },
        {
          "tag": "v6.4.1",
          "kind": "patch",
          "published_at": "2025-12-29T23:34:36Z"
        },
        {
          "tag": "v6.4.0",
          "kind": "minor",
          "published_at": "2025-12-19T02:01:28Z"
        },
        {
          "tag": "v6.3.0",
          "kind": "minor",
          "published_at": "2025-12-17T14:28:21Z"
        },
        {
          "tag": "v6.2.0",
          "kind": "minor",
          "published_at": "2025-12-11T14:35:08Z"
        },
        {
          "tag": "v6.1.0",
          "kind": "minor",
          "published_at": "2025-11-23T01:04:47Z"
        },
        {
          "tag": "v6.0.3",
          "kind": "patch",
          "published_at": "2025-11-10T23:38:47Z"
        },
        {
          "tag": "v6.0.2",
          "kind": "patch",
          "published_at": "2025-11-06T20:02:47Z"
        },
        {
          "tag": "v6.0.1",
          "kind": "patch",
          "published_at": "2025-10-22T13:53:59Z"
        },
        {
          "tag": "v6.0.0",
          "kind": "major",
          "published_at": "2025-10-10T16:38:20Z"
        },
        {
          "tag": "v5.7.2",
          "kind": "patch",
          "published_at": "2025-09-23T18:37:34Z"
        },
        {
          "tag": "v5.7.1",
          "kind": "patch",
          "published_at": "2025-09-10T19:26:28Z"
        },
        {
          "tag": "v5.7.0",
          "kind": "minor",
          "published_at": "2025-09-04T13:49:02Z"
        },
        {
          "tag": "v5.6.1",
          "kind": "patch",
          "published_at": "2025-08-28T20:27:54Z"
        },
        {
          "tag": "v5.6.0",
          "kind": "minor",
          "published_at": "2025-08-19T13:11:00Z"
        },
        {
          "tag": "v5.5.5",
          "kind": "patch",
          "published_at": "2025-08-04T19:13:18Z"
        },
        {
          "tag": "v5.5.4",
          "kind": "patch",
          "published_at": "2025-07-16T17:25:56Z"
        },
        {
          "tag": "v5.5.3",
          "kind": "patch",
          "published_at": "2025-07-14T13:02:16Z"
        },
        {
          "tag": "v5.5.2",
          "kind": "patch",
          "published_at": "2025-06-20T17:05:49Z"
        },
        {
          "tag": "v5.5.1",
          "kind": "patch",
          "published_at": "2025-06-20T14:12:54Z"
        },
        {
          "tag": "v5.5.0",
          "kind": "minor",
          "published_at": "2025-06-16T12:42:29Z"
        },
        {
          "tag": "v5.4.1",
          "kind": "patch",
          "published_at": "2025-06-09T16:09:46Z"
        },
        {
          "tag": "v5.4.0",
          "kind": "minor",
          "published_at": "2025-06-04T17:25:13Z"
        },
        {
          "tag": "v5.3.1",
          "kind": "patch",
          "published_at": "2025-05-30T11:21:35Z"
        },
        {
          "tag": "v5.3.0",
          "kind": "minor",
          "published_at": "2025-05-21T18:34:11Z"
        },
        {
          "tag": "v5.2.1",
          "kind": "patch",
          "published_at": "2025-05-14T15:03:04Z"
        },
        {
          "tag": "v5.2.0",
          "kind": "minor",
          "published_at": "2025-05-06T14:56:20Z"
        },
        {
          "tag": "v5.1.2",
          "kind": "patch",
          "published_at": "2025-05-01T19:14:30Z"
        },
        {
          "tag": "v5.1.1",
          "kind": "patch",
          "published_at": "2025-04-29T16:42:04Z"
        },
        {
          "tag": "v5.1.0",
          "kind": "minor",
          "published_at": "2025-04-10T22:24:18Z"
        },
        {
          "tag": "v5.0.2",
          "kind": "patch",
          "published_at": "2025-03-26T13:09:20Z"
        },
        {
          "tag": "v5.0.1",
          "kind": "patch",
          "published_at": "2025-03-20T16:13:59Z"
        },
        {
          "tag": "v5.0.0",
          "kind": "major",
          "published_at": "2025-03-05T14:29:07Z"
        },
        {
          "tag": "v4.4.3",
          "kind": "patch",
          "published_at": "2025-02-18T22:10:13Z"
        },
        {
          "tag": "v4.4.2",
          "kind": "patch",
          "published_at": "2025-02-14T17:18:35Z"
        },
        {
          "tag": "v4.4.1",
          "kind": "patch",
          "published_at": "2025-02-07T22:08:56Z"
        },
        {
          "tag": "v4.4.0",
          "kind": "minor",
          "published_at": "2025-02-04T20:10:00Z"
        },
        {
          "tag": "v4.3.1",
          "kind": "patch",
          "published_at": "2025-01-13T17:05:40Z"
        },
        {
          "tag": "v4.3.0",
          "kind": "minor",
          "published_at": "2025-01-06T18:39:32Z"
        },
        {
          "tag": "v4.2.4",
          "kind": "patch",
          "published_at": "2025-01-02T16:18:20Z"
        },
        {
          "tag": "v4.2.3",
          "kind": "patch",
          "published_at": "2024-12-26T20:37:23Z"
        },
        {
          "tag": "v4.2.2",
          "kind": "patch",
          "published_at": "2024-12-18T15:45:56Z"
        },
        {
          "tag": "v4.2.1",
          "kind": "patch",
          "published_at": "2024-12-17T17:31:57Z"
        },
        {
          "tag": "v4.2.0",
          "kind": "minor",
          "published_at": "2024-12-16T23:08:15Z"
        },
        {
          "tag": "v4.1.0",
          "kind": "minor",
          "published_at": "2024-12-14T15:03:57Z"
        },
        {
          "tag": "v4.0.3",
          "kind": "patch",
          "published_at": "2024-12-12T15:40:27Z"
        },
        {
          "tag": "v4.0.2",
          "kind": "patch",
          "published_at": "2024-12-02T14:51:29Z"
        },
        {
          "tag": "v4.0.1",
          "kind": "patch",
          "published_at": "2024-11-13T20:55:55Z"
        },
        {
          "tag": "v4.0.0",
          "kind": "major",
          "published_at": "2024-10-31T14:43:29Z"
        },
        {
          "tag": "v3.6.2",
          "kind": "patch",
          "published_at": "2024-10-04T18:17:21Z"
        },
        {
          "tag": "v3.6.1",
          "kind": "patch",
          "published_at": "2024-09-30T19:22:14Z"
        },
        {
          "tag": "v3.6.0",
          "kind": "minor",
          "published_at": "2024-09-26T17:56:44Z"
        },
        {
          "tag": "v3.5.0",
          "kind": "minor",
          "published_at": "2024-09-24T20:16:56Z"
        },
        {
          "tag": "v3.4.3",
          "kind": "patch",
          "published_at": "2024-09-24T18:02:20Z"
        },
        {
          "tag": "v3.4.2",
          "kind": "patch",
          "published_at": "2024-09-23T13:20:51Z"
        },
        {
          "tag": "v3.4.1",
          "kind": "patch",
          "published_at": "2024-09-17T23:45:53Z"
        },
        {
          "tag": "v3.4.0",
          "kind": "minor",
          "published_at": "2024-09-16T15:48:05Z"
        },
        {
          "tag": "v3.3.4",
          "kind": "patch",
          "published_at": "2024-09-10T17:20:34Z"
        },
        {
          "tag": "v3.3.3",
          "kind": "patch",
          "published_at": "2024-09-09T13:14:19Z"
        },
        {
          "tag": "v3.3.2",
          "kind": "patch",
          "published_at": "2024-09-03T13:20:52Z"
        },
        {
          "tag": "v3.3.1",
          "kind": "patch",
          "published_at": "2024-08-15T22:21:40Z"
        },
        {
          "tag": "v3.3.0",
          "kind": "minor",
          "published_at": "2024-08-15T16:07:14Z"
        },
        {
          "tag": "v3.2.6",
          "kind": "patch",
          "published_at": "2024-08-15T13:17:34Z"
        },
        {
          "tag": "v3.2.5",
          "kind": "patch",
          "published_at": "2024-08-12T21:17:41Z"
        },
        {
          "tag": "v3.2.4",
          "kind": "patch",
          "published_at": "2024-08-12T02:28:03Z"
        },
        {
          "tag": "v3.2.3",
          "kind": "patch",
          "published_at": "2024-08-11T12:10:00Z"
        },
        {
          "tag": "v3.2.2",
          "kind": "patch",
          "published_at": "2024-08-09T18:23:13Z"
        },
        {
          "tag": "v3.2.1",
          "kind": "patch",
          "published_at": "2024-08-06T22:32:04Z"
        },
        {
          "tag": "v3.2.0",
          "kind": "minor",
          "published_at": "2024-08-05T17:04:33Z"
        },
        {
          "tag": "v3.1.9",
          "kind": "patch",
          "published_at": "2024-08-01T03:07:25Z"
        },
        {
          "tag": "v3.1.8",
          "kind": "patch",
          "published_at": "2024-07-31T16:26:13Z"
        },
        {
          "tag": "v3.1.7",
          "kind": "patch",
          "published_at": "2024-07-25T12:16:43Z"
        },
        {
          "tag": "v3.1.6",
          "kind": "patch",
          "published_at": "2024-07-23T20:34:47Z"
        },
        {
          "tag": "v3.1.5",
          "kind": "patch",
          "published_at": "2024-07-21T12:11:06Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "2dfb3555da8428f737d2edffd59b70e2450d45fa",
          "body": "* feat(util): add util/attributes.hpp to use lifetimebound attribute\n\n* feat(net): implement http_headers.hpp\n\n* test(net): add http_headers test suite\n\n* fix(net): remove ref-qualifier from http_header::contains_token\n\n* feat(net): add static_asserts to ensure forward_range compatibility\n\n* refactor(net): make http_headers a struct",
          "is_bot": false,
          "headline": "Add HTTP headers API (#2709)",
          "author_name": "Artem Annihilatorq",
          "author_login": "annihilatorq",
          "committed_at": "2026-07-22T08:53:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3a603326da390da29aa5aab2252d3e64798c5567",
          "body": "Reading a YAML scalar into a std::string_view produced a view over freed\nmemory. The str_t reader decodes into a local `std::string str` and ends with\n`value = std::move(str)`; a string_view is assignable from that local, so the\ncode compiled and then pointed at the buffer after it died. The failure\n[…]\nn coverage added for the owning path the constraint scopes: plain,\n  single-quoted, double-quoted with escapes, '' unescaping, and literal and\n  folded block scalars all still decode into std::string.",
          "is_bot": false,
          "headline": "fix dangling std::string_view when reading YAML scalars (#2716)",
          "author_name": "Stephen Berry",
          "author_login": "stephenberry",
          "committed_at": "2026-07-21T22:18:35Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e0c4819003fa65276312ac84b3b7420e51c3e4e3",
          "body": "YAML was the only text format that could not serialize a wall-clock time\npoint: JSON, CBOR and TOML all support `system_clock::time_point`, and YAML's\nimplementation is independent of JSON's and simply never grew an\n`is_system_time_point` specialization. Surfaced while reviewing #2678, which\ngeneral\n[…]\n-only sys_days, sequences, malformed input, and the\n  [0000, 9999] year constraint.\n- The support matrix in docs/chrono.md is measured via\n  write_supported/read_supported rather than hand-maintained.",
          "is_bot": false,
          "headline": "add YAML support for system_clock time points and year_month_day (#2715)",
          "author_name": "Stephen Berry",
          "author_login": "stephenberry",
          "committed_at": "2026-07-21T21:45:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "56e35d5edfeab1ce07f3a71b29dccb31c38cc4da",
          "body": "* Generalize std::chrono serialization across all formats (#2671)\n\nLift std::chrono::duration and steady_clock/high_resolution_clock time\npoints to a single generic to/from<uint32_t Format, ...> in\ncore/chrono.hpp (serialized as the bare rep count), replacing the\nduplicated per-format implementation\n[…]\n/ 9723\n  asserts, chrono_test 126 tests / 3530 asserts.\n- Probes for set<duration>, aligned-array round-trip, unsigned and narrow reps,\n  and JSON/BEVE interchange all pass against the changed header.",
          "is_bot": false,
          "headline": "Generalize std::chrono serialization across all formats (#2671) (#2678)",
          "author_name": "Stephen Berry",
          "author_login": "stephenberry",
          "committed_at": "2026-07-21T20:46:05Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "014a0482ba713c4e8789c3d37507c9f7b804417d",
          "body": "…2714)\n\nThe array-access paths in both `read_jmespath` overloads branched on whether\nthe token carried a key, with the `key[...]` side handling object-member\nnavigation. That side is unreachable, and the compile-time half of it does not\neven compile.\n\n`finalize_tokens` splits every token at '[' and \n[…]\nwhich\n  nothing exercised before. They pass unchanged against the pre-change header,\n  confirming they pin existing behavior rather than new behavior.\n- Suite passes under ASan: 32 tests, 276 asserts.",
          "is_bot": false,
          "headline": "remove unreachable object-member branch from jmespath array access (#…",
          "author_name": "Stephen Berry",
          "author_login": "stephenberry",
          "committed_at": "2026-07-21T17:28:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1927e998a12ef82ef69346bc3948b7def290e84f",
          "body": "The internal `handle_slice` and `seek_array_index` helpers defaulted their\n`Opts` template parameter to `opts{}`. On an internal helper that default is a\nfootgun: a call site that forgets `<Opts>` still compiles, silently binding the\ndefault and resetting every option, including `null_terminated`.\n\n\n[…]\nr call to 'handle_slice'\n\nVerified by reintroducing the omission at each call site in turn and\nconfirming each fails to compile. The jmespath suite passes unchanged under\nASan (29 tests, 255 asserts).",
          "is_bot": false,
          "headline": "require explicit Opts on jmespath slice/index helpers (#2713)",
          "author_name": "Stephen Berry",
          "author_login": "stephenberry",
          "committed_at": "2026-07-21T17:28:39Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d493a67ceac6e636354f5169b5c63dc463ae215f",
          "body": null,
          "is_bot": false,
          "headline": "forward opts to handle_slice in runtime read_jmespath slices (#2710)",
          "author_name": "uwezkhan",
          "author_login": "uwezkhan",
          "committed_at": "2026-07-21T16:54:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b2d5c56017bb1bf71b202679e3a9718e015ce6b1",
          "body": "* json array reader: respect shrink_to_fit option\n\n* guard shrink_to_fit on a has_shrink_to_fit concept\n\n`resizable` does not imply `shrink_to_fit()`: std::list and std::forward_list\nare resizable but have no such member, so enabling the shrink_to_fit option and\nreading into one failed to compile. T\n[…]\nh zero as the normal end of input, the same condition\nfinalize_read_context clears the code on. Caught by json_test_non_null.\n\n---------\n\nCo-authored-by: Alexey Shakula <ays7@users.noreply.github.com>",
          "is_bot": false,
          "headline": "guard shrink_to_fit on a has_shrink_to_fit concept (#2712)",
          "author_name": "Stephen Berry",
          "author_login": "stephenberry",
          "committed_at": "2026-07-21T16:42:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "cadcadea26554cc4214769e358f981426e40a02a",
          "body": null,
          "is_bot": false,
          "headline": "version 7.9.1 bump",
          "author_name": "Stephen Berry",
          "author_login": "stephenberry",
          "committed_at": "2026-07-17T17:51:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bb3d684756b54fb37f4ed5a2e9a9b667326443f1",
          "body": "* guard lazy json scans against end of non-null-terminated input\n\n* harden lazy JSON scanner against truncated, unclosed, and invalid input\n\nFollow-up hardening for the lazy scanner, extending this PR's end-of-input\nguarding and closing two remaining ways malformed input could misbehave.\n\nBound ever\n[…]\ns (no trailing '\\0', or a\n  single '\\0' at json_end_), so the sanitizer CI builds abort on any read past\n  the message end.\n\n---------\n\nCo-authored-by: Stephen Berry <stephenberry.developer@gmail.com>",
          "is_bot": false,
          "headline": "guard lazy json scans against end of non-null-terminated input (#2708)",
          "author_name": "uwezkhan",
          "author_login": "uwezkhan",
          "committed_at": "2026-07-17T10:08:40Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c5dcdf6eee89955db275b711c0303415ffb0e438",
          "body": "* fix(net): validate Host fields in HTTP/1.0 requests\n\n* test(net): add HTTP/1.0 Host fields validation regression tests\n\n* test(net): pass port to send_raw in HTTP/1.0 Host tests\n\n---------\n\nCo-authored-by: Stephen Berry <stephenberry.developer@gmail.com>",
          "is_bot": false,
          "headline": "RFC 9112: fix HTTP/1.0 Host header field validation (#2704)",
          "author_name": "Artem Annihilatorq",
          "author_login": "annihilatorq",
          "committed_at": "2026-07-17T05:33:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c68755a52845b02bda01e2ef7287bdf5385b5523",
          "body": null,
          "is_bot": false,
          "headline": "reject truncated bitset payload in msgpack reader (#2706)",
          "author_name": "uwezkhan",
          "author_login": "uwezkhan",
          "committed_at": "2026-07-16T20:35:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "81daa0bb867414d2f835bd76073cae7a26c16f06",
          "body": null,
          "is_bot": false,
          "headline": "test(net): use ephemeral ports for test servers (#2705)",
          "author_name": "Artem Annihilatorq",
          "author_login": "annihilatorq",
          "committed_at": "2026-07-16T20:33:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "35749c52da6d40d5d5bebb92d9c4abe986745e38",
          "body": "…, TOCTOU-safe read (#2703)\n\nbuffer_to_file (core/write.hpp):\n- Open in binary mode so the buffer's bytes are written verbatim. Text mode\n  translated \\n to \\r\\n on Windows, corrupting binary formats\n  (BEVE/msgpack/CBOR/BSON) whose payloads can contain 0x0A and breaking\n  byte-exact round-trips; it\n[…]\n too costly\nto make the default.\n\nTests: byte-exact round trip over all byte values plus CR/LF combinations, and a\nread_directory-on-missing-directory case that must return an error rather than\nthrow.",
          "is_bot": false,
          "headline": "File I/O correctness fixes: binary write, non-throwing directory read…",
          "author_name": "Stephen Berry",
          "author_login": "stephenberry",
          "committed_at": "2026-07-15T15:01:55Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8f2b16f9ce387c2bdd2e3537d93952a4abdb5388",
          "body": "* reject out-of-range variant type index in beve and cbor readers\n\n* glz_add_isolated_test\n\n---------\n\nCo-authored-by: Stephen Berry <stephenberry.developer@gmail.com>",
          "is_bot": false,
          "headline": "reject out-of-range variant type index in beve and cbor readers (#2682)",
          "author_name": "uwezkhan",
          "author_login": "uwezkhan",
          "committed_at": "2026-07-14T19:53:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9d6e6d62961cd9f50055c32f5239c16a05208d12",
          "body": null,
          "is_bot": false,
          "headline": "fix signed overflow in jsonb_to_json int5 hex conversion (#2702)",
          "author_name": "uwezkhan",
          "author_login": "uwezkhan",
          "committed_at": "2026-07-14T18:30:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "97c4e9e10c708a36fc9a0db47751afb828269a32",
          "body": null,
          "is_bot": false,
          "headline": "Committing clang-format changes",
          "author_name": "stephenberry",
          "author_login": "stephenberry",
          "committed_at": "2026-07-14T13:47:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cc5ceb310c14ecf8fe411d8db9d95e7d63befcf1",
          "body": "The async Content-Length reader treated an EOF during the body read as\nsuccess, returning a short body and pooling the connection. Because\nasio::transfer_exactly only completes without error once the full\nContent-Length has been read, an EOF there means the peer closed before\ndelivering the declared\n[…]\nd_ptr destructor\n    without a graceful SSL shutdown.\n\nAdd regression tests: truncation-is-an-error on both the sync and async\npaths, and that an EOF'd connection is not reused by a follow-up request.",
          "is_bot": false,
          "headline": "error on truncated content-length body in async http_client (#2685)",
          "author_name": "Stephen Berry",
          "author_login": "stephenberry",
          "committed_at": "2026-07-14T13:46:13Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a9acf40591e1f6776ed7d57dd409a5a57893cae6",
          "body": "…(#2701)\n\n* reject \"..\" traversal in route param and wildcard captures\n\n* Treat backslash as a separator in the traversal guard\n\nThe router split the request target on literal '/' before percent-decoding,\nso an encoded backslash (\"%5c\") reached a capture as a literal backslash. On\nWindows that is a \n[…]\n Adds wildcard/param backslash-traversal tests and a\nnon-delimiting backslash case confirming an ordinary name stays valid.\n\n---------\n\nCo-authored-by: Stephen Berry <stephenberry.developer@gmail.com>",
          "is_bot": false,
          "headline": "reject \"..\" traversal (/ and \\) in route param and wildcard captures …",
          "author_name": "uwezkhan",
          "author_login": "uwezkhan",
          "committed_at": "2026-07-13T17:00:10Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6a3638bce3750129c60fc54223901f3ac81d59ba",
          "body": null,
          "is_bot": false,
          "headline": "guard structs_as_arrays beve object reader against end of input (#2686)",
          "author_name": "uwezkhan",
          "author_login": "uwezkhan",
          "committed_at": "2026-07-11T23:31:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "edeb774ec5f819048abeba6aad436ce75835050f",
          "body": "…700)\n\nto_jsonrpc_request (params) and the success path of to_jsonrpc_response\n(result) splice msg.body in verbatim as a JSON value. The REPE decoder\ndoes not validate the body against its format flag, and this converter\ndoes not either (by design, to avoid a redundant parse the downstream\nreader re\n[…]\nepts them silently (last-wins) instead of erroring. So callers\nconverting untrusted, wire-sourced messages must validate the body at\ntheir trust boundary; document that precondition on both functions.",
          "is_bot": false,
          "headline": "Document the JSON body precondition on repe to_jsonrpc conversion (#2…",
          "author_name": "Stephen Berry",
          "author_login": "stephenberry",
          "committed_at": "2026-07-11T22:13:10Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b60a50ca8bc0382bc67af5ec0afb66292d653ed9",
          "body": null,
          "is_bot": false,
          "headline": "Add addtional overloading of read_file_yaml taking a buffer (#2698)",
          "author_name": "Yanzhao Wang",
          "author_login": "YanzhaoW",
          "committed_at": "2026-07-11T21:36:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7df752fa9948508f90bc33dc904028e5babe4206",
          "body": null,
          "is_bot": false,
          "headline": "escape method in repe to_jsonrpc_request (#2699)",
          "author_name": "uwezkhan",
          "author_login": "uwezkhan",
          "committed_at": "2026-07-11T21:34:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7f7a31ed77a6ff6655c394dcf38ef0fe5b6790b6",
          "body": null,
          "is_bot": false,
          "headline": "Committing clang-format changes",
          "author_name": "annihilatorq",
          "author_login": "annihilatorq",
          "committed_at": "2026-07-11T15:10:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0b58806767586aa1aea73917de85988debf94cc7",
          "body": "* feat(net): move parse_request_line into a separate function\n\n* test(net): add request line parser tests\n\nAt the moment, these tests are intentionally failing. The commit containing the tests was added before the implementation specifically so that anyone could identify issues with the current vali\n[…]\nark's printed labels still showed the old names. Update the display\nstrings to match the renamed API; no behavioral change.\n\n---------\n\nCo-authored-by: Stephen Berry <stephenberry.developer@gmail.com>",
          "is_bot": false,
          "headline": "RFC 9112: validate request-line in HTTP server parser (#2693)",
          "author_name": "Artem Annihilatorq",
          "author_login": "annihilatorq",
          "committed_at": "2026-07-11T15:05:10Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f33758ad0c912471f2580fb7b3bf3a2b103214b9",
          "body": null,
          "is_bot": false,
          "headline": "version 7.9.0 bump",
          "author_name": "Stephen Berry",
          "author_login": "stephenberry",
          "committed_at": "2026-07-11T12:15:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "52bcdc906257772ca27f70db7cb9dd03793a2d3b",
          "body": "* Overwrite pre-existing contents when reading YAML sequences\n\nread_yaml appended parsed elements to a pre-populated container instead\nof replacing them, diverging from the JSON parser which overwrites. The\nsequence parsers (parse_flow_sequence / parse_block_sequence) emplaced\nnew elements without f\n[…]\nd map (so first-wins falls out of\nemplace) and restoring any untouched pre-existing entry on scope exit.\nWhen the target starts empty (the common case) this is a no-op.\n\nExtends #2694 to maps/objects.",
          "is_bot": false,
          "headline": "read_yaml overwrites container contents instead of appending (#2697)",
          "author_name": "Stephen Berry",
          "author_login": "stephenberry",
          "committed_at": "2026-07-11T12:14:12Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "18997fb6507a84ce4b25d579ebc748ef656f71e9",
          "body": "…696)",
          "is_bot": false,
          "headline": "Add additional write_file_yaml overloading with a buffer argument (#2…",
          "author_name": "Yanzhao Wang",
          "author_login": "YanzhaoW",
          "committed_at": "2026-07-11T12:11:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "75e2fbb03129af549b6093e9c16493ceb1c953db",
          "body": null,
          "is_bot": false,
          "headline": "bound lazy beve object key length to remaining input (#2692)",
          "author_name": "uwezkhan",
          "author_login": "uwezkhan",
          "committed_at": "2026-07-08T14:55:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d8ed4f45a744c01a527199eb2ce59812437ccefd",
          "body": "The growing array reader looped with `while (it < end)`, so in\nnull-terminated mode a trailing comma pushing `it` to the sentinel\n(e.g. \"[1,\") or a bare \"[\" caused the loop to fall through without\nsetting an error, silently accepting the truncated array.\n\nA valid array always returns from inside the\n[…]\nth tracking, so the guard is limited to the\nnull-terminated case and adds no overhead on well-formed input.\n\nAdd truncated array/nested-array conformance cases across vector,\ndeque, list, and generic.",
          "is_bot": false,
          "headline": "Reject truncated JSON arrays in null-terminated reads (#2691)",
          "author_name": "Stephen Berry",
          "author_login": "stephenberry",
          "committed_at": "2026-07-07T18:53:55Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "78b2c2e53f59697a0115871adf7ecd426f59bd6a",
          "body": null,
          "is_bot": false,
          "headline": "reject non-matching column headers in colwise csv readers (#2690)",
          "author_name": "uwezkhan",
          "author_login": "uwezkhan",
          "committed_at": "2026-07-07T17:32:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dd78ef1bcb7126b3e0bc2fe43569fd20932486bf",
          "body": null,
          "is_bot": false,
          "headline": "Committing clang-format changes",
          "author_name": "annihilatorq",
          "author_login": "annihilatorq",
          "committed_at": "2026-07-06T01:57:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f73ada5ab9659c7fffa6b0a0cf979da3296201b2",
          "body": "* fix(net): validate request Host header in http_server\n\n* test(net): add http_server Host header validation regression test\n\n* fix(test): replace std::jthread with manually joined std::thread\n\n* feat(net): implement Host header field validation\n\n* test(net): add IPv4/IPv6 address validation regress\n[…]\n reaches routing\n(404) rather than being rejected (400); the positive 404 also fails closed\non an empty/timed-out response.\n\n---------\n\nCo-authored-by: Stephen Berry <stephenberry.developer@gmail.com>",
          "is_bot": false,
          "headline": "RFC 9112: validate Host header in HTTP server request parser (#2676)",
          "author_name": "Artem Annihilatorq",
          "author_login": "annihilatorq",
          "committed_at": "2026-07-06T01:56:46Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fc17a5ea6a0ac73342891b895d2929ef716d128a",
          "body": null,
          "is_bot": false,
          "headline": "reject lone surrogate escapes in yaml double-quoted scalars (#2665)",
          "author_name": "uwezkhan",
          "author_login": "uwezkhan",
          "committed_at": "2026-07-03T11:15:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0a21fd9dbd36963790b6f26b9539050e13d78649",
          "body": null,
          "is_bot": false,
          "headline": "version 7.8.4 bump",
          "author_name": "Stephen Berry",
          "author_login": "stephenberry",
          "committed_at": "2026-07-02T16:39:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ed5a73bd6a6c222bd760512c79a227075c677fb7",
          "body": null,
          "is_bot": false,
          "headline": "bound async response body to content-length in http_client (#2684)",
          "author_name": "uwezkhan",
          "author_login": "uwezkhan",
          "committed_at": "2026-07-02T16:38:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4fab0457e33c1f5f7a58a268f16c01d43ee20643",
          "body": "* enforce rfc 6455 frame masking in process_frames\n\n* test(net): add websocket_client masked-frame rejection test\n\n* chore(net): remove redundant comment above make_unmasked_client_frame\n\n---------\n\nCo-authored-by: annihilatorq <143023834+annihilatorq@users.noreply.github.com>",
          "is_bot": false,
          "headline": "enforce rfc 6455 frame masking in process_frames (#2674)",
          "author_name": "uwezkhan",
          "author_login": "uwezkhan",
          "committed_at": "2026-07-01T01:16:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "91a6de0a1ee1c1d30eafdd726d7d1abc1fed2fa9",
          "body": null,
          "is_bot": false,
          "headline": "guard char escape read against end of non-null-terminated input (#2681)",
          "author_name": "uwezkhan",
          "author_login": "uwezkhan",
          "committed_at": "2026-06-29T20:41:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c60d5f6addc88b2abd6bc58a6bb269438e7e1780",
          "body": null,
          "is_bot": false,
          "headline": "Committing clang-format changes",
          "author_name": "stephenberry",
          "author_login": "stephenberry",
          "committed_at": "2026-06-26T10:34:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "02b22c7bc272a3925677978578249b58a7bd47f3",
          "body": "Co-authored-by: Stephen Berry <stephenberry.developer@gmail.com>",
          "is_bot": false,
          "headline": "bound cbor eigen matrix read to the matrix's storage (#2680)",
          "author_name": "uwezkhan",
          "author_login": "uwezkhan",
          "committed_at": "2026-06-26T10:34:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5a0642f14c416bfa93aeb355b3f344325f4b7ed1",
          "body": null,
          "is_bot": false,
          "headline": "Committing clang-format changes",
          "author_name": "stephenberry",
          "author_login": "stephenberry",
          "committed_at": "2026-06-26T10:00:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a1a8be83352d375e588854341ab33a8b1383cc71",
          "body": "* drop header fields with CR or LF when serializing http messages\n\nA header name or value carrying CR or LF terminates the field on the wire (RFC 7230 3.2), so a reflected value can inject extra headers or a body (CWE-113). The response and request serializers now drop such fields. Adds header_field\n[…]\nsplitting_test with the streaming transfer-encoding framing\ncase and unit tests for valid_header_name / valid_header_value.\n\n---------\n\nCo-authored-by: Stephen Berry <stephenberry.developer@gmail.com>",
          "is_bot": false,
          "headline": "drop header fields with CR or LF when serializing http messages (#2677)",
          "author_name": "uwezkhan",
          "author_login": "uwezkhan",
          "committed_at": "2026-06-26T10:00:17Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "df5d61ad09638fd18bef5dfda53060e324716fc5",
          "body": null,
          "is_bot": false,
          "headline": "bound get_view_json seek separator check against end of input (#2679)",
          "author_name": "uwezkhan",
          "author_login": "uwezkhan",
          "committed_at": "2026-06-25T22:23:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "62ab84deeb25d807124bbd99a2a6c775c67dbf72",
          "body": "* reject conflicting content-length headers in request parser\n\n* test: cover tolerated and case-varied duplicate Content-Length\n\nAdd a positive test pinning the \"identical repeats are tolerated\" branch\n(two identical Content-Length headers must still be served), a case-varied\nduplicate (Content-Leng\n[…]\nd map\nlookup, and assert the conflicting-CL rejection on the status line\n(HTTP/1.1 400) rather than a bare \"400\" substring.\n\n---------\n\nCo-authored-by: Stephen Berry <stephenberry.developer@gmail.com>",
          "is_bot": false,
          "headline": "reject conflicting content-length headers in try_parse_request (#2667)",
          "author_name": "uwezkhan",
          "author_login": "uwezkhan",
          "committed_at": "2026-06-24T12:40:32Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8df17494f9526d722309517ca12d7cb1ca938535",
          "body": null,
          "is_bot": false,
          "headline": "Committing clang-format changes",
          "author_name": "stephenberry",
          "author_login": "stephenberry",
          "committed_at": "2026-06-24T11:14:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fa0bca309ed6f240099a2bd2d701ec39412b0c64",
          "body": "…673)\n\n* Fix jmespath negative single index and negative-step slice bounds (#2670 follow-ups)\n\nFollow-ups to #2670, covering the remaining JMESPath slice/index correctness\ngaps in the same family:\n\n- Reject a step of 0. Previously `[5:0:0]` and similar spun in a\n  non-terminating loop (an out-of-bou\n[…]\nror = syntax_error and stop,\n- compile-time: static_assert, matching tokenize_as_array which already\n  fails to compile on tokenization errors.\n\nAdds a regression test for out-of-int32-range literals.",
          "is_bot": false,
          "headline": "Fix jmespath negative single index and negative-step slice bounds (#2…",
          "author_name": "Stephen Berry",
          "author_login": "stephenberry",
          "committed_at": "2026-06-24T11:14:03Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8c6fd3f745d5f3b67e2ef58b11d3c553bcd84b76",
          "body": null,
          "is_bot": false,
          "headline": "fix out-of-bounds read in jmespath negative-step slice (#2670)",
          "author_name": "uwezkhan",
          "author_login": "uwezkhan",
          "committed_at": "2026-06-24T10:03:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "98bd97183db1806b834245d4292eaef713fc184f",
          "body": null,
          "is_bot": false,
          "headline": "version 7.8.3 bump",
          "author_name": "Stephen Berry",
          "author_login": "stephenberry",
          "committed_at": "2026-06-23T14:22:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5d8cf8c5ffe36958471c5320e10eddcbb192d077",
          "body": "* beve: Guard bulk array reads against null data pointer\n\nThe little-endian/single-byte bulk memcpy paths for typed numeric and\ncomplex arrays called std::memcpy(value.data(), ...) unconditionally.\nWhen the array is empty, value.data() may be null and memcpy with a null\nfirst argument is undefined b\n[…]\n  3290 |    Pair_value value{};\n      |                    ^~\n\nSigned-off-by: Itay Bookstein <itay.bookstein@nextsilicon.com>\n\n---------\n\nSigned-off-by: Itay Bookstein <itay.bookstein@nextsilicon.com>",
          "is_bot": false,
          "headline": "Fix compile error in tests, fix UBSan errors in BEVE read path (#2668)",
          "author_name": "nextsilicon-itay-bookstein",
          "author_login": "nextsilicon-itay-bookstein",
          "committed_at": "2026-06-22T17:40:19Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8a7f0e345278e75b42b3ab62f482cd2ee850e499",
          "body": "…663)\n\nterm_to_json_value dispatches on the tag byte (guaranteed present by the\nfunction-top invalid_end), but then hands the raw pointer to ei_decode_long/\nei_decode_double and decode_list/tuple/map_header, which read a fixed payload\npast the tag before any bounds check -- a read past end when the \n[…]\n^32\nelements with a truncated body errors out at once instead of spinning the\ndeclared arity.\n\nAdd regression tests for each truncated scalar, truncated container header,\nand the oversized-arity case.",
          "is_bot": false,
          "headline": "Bound eetf number and container-header reads against end of input (#2…",
          "author_name": "Stephen Berry",
          "author_login": "stephenberry",
          "committed_at": "2026-06-21T02:27:45Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5668dd554f82ecc3755468de63a7aec4705c1142",
          "body": "* guard eetf_to_json sequence and version reads against end\n\n* Read eetf tail/key tags directly to avoid ei_get_type over-read\n\nThe list-tail and map-key guards added in this branch only prove one byte (the\ntag) is present, but get_type -> ei_get_type then reads a 2-4 byte length header\noff the raw \n[…]\nlist missing its NIL tail -> unexpected_end\n(with a valid-list counterpart); improper list tail -> array_element_not_found.\n\n---------\n\nCo-authored-by: Stephen Berry <stephenberry.developer@gmail.com>",
          "is_bot": false,
          "headline": "guard eetf_to_json reads against end of input (#2659)",
          "author_name": "uwezkhan",
          "author_login": "uwezkhan",
          "committed_at": "2026-06-21T00:55:39Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b96c71366f4718f1890b4bce84693b6ed334cd16",
          "body": "* cap recursion depth in yaml and toml generic readers\n\n* toml: bound recursion depth in dotted-key and table-header parsing\n\nThe variant-reader depth guard does not cover every recursive path into a\ngeneric value: dotted keys (a.a.a...=1) recurse through resolve_nested_map\nand table headers ([a.a.a\n[…]\n via\nenclosing-namespace lookup; the read call sites switch from qualified to\nunqualified. The bson and jsonb depth tests continue to pass.\n\n---------\n\nCo-authored-by: uwezkhan <uwezkhan053@gmail.com>",
          "is_bot": false,
          "headline": "Cap recursion depth in text-format readers and unify depth_guard (#2662)",
          "author_name": "Stephen Berry",
          "author_login": "stephenberry",
          "committed_at": "2026-06-20T22:24:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "533ab0d7c85091dd9b72aedf7ede1c7f4d6b6240",
          "body": "…230 3.2.4) (#2661)\n\nA header line using obsolete line folding (obs-fold) or with whitespace between\nthe field-name and the colon was parsed leniently and stored under a mangled\nkey. That let an obfuscated Transfer-Encoding (\"Transfer-Encoding : chunked\", a\ntab before the colon, or a value carried o\n[…]\nated and non-obfuscated TE/CL desync variants.\n\nAdds http_header_strictness_test covering the space-before-colon, tab-before-\ncolon, and obs-fold smuggling vectors plus a well-formed positive control.",
          "is_bot": false,
          "headline": "Reject obs-fold and whitespace-before-colon in request headers (RFC 7…",
          "author_name": "Stephen Berry",
          "author_login": "stephenberry",
          "committed_at": "2026-06-20T20:21:29Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d1b02a59be84d1f75010337298f3d0f83f1e4df2",
          "body": "* reject transfer-encoding requests in finish_request\n\n* Fix RFC reference for Transfer-Encoding 501 to 7230 3.3.1",
          "is_bot": false,
          "headline": "reject transfer-encoding requests in finish_request (#2654)",
          "author_name": "uwezkhan",
          "author_login": "uwezkhan",
          "committed_at": "2026-06-20T19:38:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a0b292502371f8db96936aa8019440ba35897183",
          "body": "* Bound MessagePack array/map reserve against remaining input\n\n* Add regression test for MsgPack reserve amplification; fix map comment\n\nAdds a msgpack_test suite that guards the array32/map32 reserve cap. A\nrecording allocator captures the largest allocation request so the test\nasserts the reservat\n[…]\nthen truncated). The zero-body bombs only ever\nexercised reserve(0) on the patched path, leaving the clamp branch\nuntested.\n\n---------\n\nCo-authored-by: Stephen Berry <stephenberry.developer@gmail.com>",
          "is_bot": false,
          "headline": "Bound MessagePack array/map reserve against remaining input (#2648)",
          "author_name": "arshsmith",
          "author_login": null,
          "committed_at": "2026-06-20T19:06:56Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e1d70fa5a75747b7392d2563d78ede8f39d41c82",
          "body": "…nt (#2658)\n\n* Add per-field chrono format wrappers: glz::date_format and glz::epoch_count\n\nDecouple the wire format from the chrono type (issue #2640) with two JSON\nfield wrappers usable inside glz::object():\n\n  - glz::date_format<&T::m, \"%Y-%m-%d %H:%M:%S\"> renders a system_clock\n    time_point or\n[…]\nchrono.md section: add a read/round-trip example for\ndate_format (previously only the write side was shown) and document the\nwrite-side constraint_violated error for out-of-range years / non-ok dates.",
          "is_bot": false,
          "headline": "Per-field chrono format wrappers: glz::date_format and glz::epoch_cou…",
          "author_name": "Stephen Berry",
          "author_login": "stephenberry",
          "committed_at": "2026-06-20T18:07:42Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "83919619ec904c97974afb3d9d89ebd7c6cf78c2",
          "body": "* use end - it for length bounds checks in binary readers\n\n* Make typed-array length checks overflow-safe (BEVE, CBOR)\n\nBEVE typed-array bounds checks computed it + count * element_size > end\n(or end - it < count * element_size), where count comes from the wire.\nOn the 32-bit targets the project bui\n[…]\namped decode_arg, so the product overflows uint64_t on every platform\nfor count >= 2^63; rewrite as count > (end - it) / 2.\n\n---------\n\nCo-authored-by: Stephen Berry <stephenberry.developer@gmail.com>",
          "is_bot": false,
          "headline": "use end - it for length bounds checks in binary readers (#2653)",
          "author_name": "uwezkhan",
          "author_login": "uwezkhan",
          "committed_at": "2026-06-20T06:13:37Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "dbe8a0ffc890c51eaf329842cfc1f3ca7ca05ae1",
          "body": "Follow-up to #2650. CBOR handled std::byte ranges with one concept-based\nspecialization but uint8_t ranges only via enumerated std::vector<uint8_t> /\nstd::array<uint8_t, N> specializations, so other contiguous uint8_t ranges\n(e.g. std::span<uint8_t>) silently fell through to RFC 8746 typed-array\nenc\n[…]\nement type or container. Net -293/+72 lines.\n\nAdds regression tests for identical byte/uint8 encodings, span<uint8_t> as a\nbyte string, and byte<->uint8 cross-readability for vectors and fixed arrays.",
          "is_bot": false,
          "headline": "Unify CBOR std::byte and uint8_t byte-string handling (#2652)",
          "author_name": "Stephen Berry",
          "author_login": "stephenberry",
          "committed_at": "2026-06-19T02:23:45Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "36001942a89b38c58ed0ee3a298824221ce753f4",
          "body": "…(#2649)\n\nFixes #2647.\n\nBEVE mishandled arrays of two primitive element types:\n\n- std::array<char, N> failed to compile on read: from<BEVE, str_t>\n  unconditionally called value.resize(n), which std::array lacks.\n\n- std::vector<std::byte> / std::array<std::byte, N> serialized as a\n  generic_array (a\n[…]\n the tagged and untagged read paths.\n\nNote: this changes the BEVE wire format for std::byte arrays; data\nwritten by older versions using the generic-array form is rejected\ncleanly with a syntax_error.",
          "is_bot": false,
          "headline": "Encode std::byte ranges compactly and read fixed char arrays in BEVE …",
          "author_name": "Stephen Berry",
          "author_login": "stephenberry",
          "committed_at": "2026-06-19T01:54:33Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3808593e724f2f799a46be6d27fb726971d4d448",
          "body": "…ry (#2651)\n\nThe Windows header-compatibility check split headers into a\nWIN32_LEAN_AND_MEAN group and an unsanitized group using hard-coded\ndirectory globs (net/*, rpc/*) plus an explicit list. That is correct for\ntoday's tree but fragile: a future header that pulls in Winsock2/asio from\noutside th\n[…]\nde),\nso splitting would surface spurious failures unrelated to Windows macros.\nReal macro collisions remain pinpointed via the compiler's #include stack\nand the named macro-preservation #error checks.",
          "is_bot": false,
          "headline": "ci(winhdr): classify Winsock2/asio headers by dependency, not directo…",
          "author_name": "Stephen Berry",
          "author_login": "stephenberry",
          "committed_at": "2026-06-19T01:54:06Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a6e268d70addb201409ce86aaa57e47940a332a0",
          "body": null,
          "is_bot": false,
          "headline": "Committing clang-format changes",
          "author_name": "stephenberry",
          "author_login": "stephenberry",
          "committed_at": "2026-06-19T01:38:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e0ca96fa8c0d8d48ca36c0c689b20b3fe4cc95a0",
          "body": "…SON (#2650)\n\nFollow-up to the BEVE fix for #2647, addressing the same family of issues\nin the other binary codecs.\n\nCBOR:\n- std::vector<std::byte> / std::span<std::byte> were ambiguous (the\n  byte-string specialization tied with the generic array specialization)\n  and would not compile on either wr\n[…]\n char array reads were needed there. Reading\na payload longer than a fixed array yields error_code::syntax_error; a\nshorter payload is copied and the remainder zero-filled, matching the BEVE\nbehavior.",
          "is_bot": false,
          "headline": "Fix std::byte and fixed std::array<char,N> handling in CBOR/MsgPack/B…",
          "author_name": "Stephen Berry",
          "author_login": "stephenberry",
          "committed_at": "2026-06-19T01:38:20Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "44c0035f283d127000fd12d7ff08bdbaf85b17de",
          "body": "This workflow contains a pretty simple check, which will ultimately eliminate the need to worry about guarding std::min/max and std::numeric_limits<T>::min/max, ensure naming conventions that do not conflict with Windows definitions, and address other minor issues that might occasionally slip throug\n[…]\non typo\n\n* chore(ci): remove redundant vcpkg triplet in CMake configuration\n\nCo-authored-by: Yan Romao <DockedFerret800@outlook.com>\n\n---------\n\nCo-authored-by: Yan Romao <DockedFerret800@outlook.com>",
          "is_bot": false,
          "headline": "CI: Add WinAPI header compatibility workflow (#2630)",
          "author_name": "Artem Annihilatorq",
          "author_login": "annihilatorq",
          "committed_at": "2026-06-18T21:00:25Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "082ca19bbd60da1f42984eb8f08782482d654ebd",
          "body": "* fix(net): provide diagnostics on asio winsock include issue\n\nThis issue is quite common when building on Windows if Windows.h is included before Asio without WIN32_LEAN_AND_MEAN. Asio uses winsock2.h, but Windows.h includes winsock.h, which is not compatible with winsock2.h, resulting in confusing\n[…]\nlp users understand the exact cause of the problem and provide an immediate solution, rather than leaving them with this single asio error.\n\n* fix(net): use preprocessor error instead of static_assert",
          "is_bot": false,
          "headline": "Provide diagnostics for asio winsock.h include issue on Windows (#2635)",
          "author_name": "Artem Annihilatorq",
          "author_login": "annihilatorq",
          "committed_at": "2026-06-18T20:32:09Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "607ae05104b74708957f0c69c833a92a1864349a",
          "body": "…teger (#2645)\n\nA JSONB FLOAT/FLOAT5 payload read into an integer field was cast straight to\nthe target type via static_cast<T>(tmp). When the decoded double is NaN, +/-Inf\n(e.g. a JSON5 \"NaN\"/\"Infinity\" sentinel), or finite but outside T's range,\nthat cast is undefined behavior. A fuzzer reached it\n[…]\nnot slip through. Genuinely integral floats still convert.\n\nAdds a jsonb_test regression suite covering NaN/Inf, out-of-range, the 64-bit\nboundary, exact extremes, and truncation of fractional values.",
          "is_bot": false,
          "headline": "Reject non-representable floats when reading a JSONB float into an in…",
          "author_name": "Stephen Berry",
          "author_login": "stephenberry",
          "committed_at": "2026-06-18T18:22:03Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1684eddbc5195bc81cba298f1b14fc27fc5fa4b7",
          "body": "Every ei_* wrapper in the EETF decode/encode helpers used\nstd::bind(ei_func, _1, _2, trailing...) passed to decode_impl/encode_impl.\nEach is a trailing-argument bind that a lambda expresses more clearly and\ninlines more reliably -- these helpers are all GLZ_ALWAYS_INLINE hot paths,\nand std::bind rou\n[…]\ns the functor once as func(const char*,\nint*); encode_impl invokes it twice (nullptr sizing pass, then the real\nbuffer) as func(char*, int*); the bound trailing arguments are passed through\nunchanged.",
          "is_bot": false,
          "headline": "Replace std::bind with lambdas in eetf/ei.hpp (#2646)",
          "author_name": "Stephen Berry",
          "author_login": "stephenberry",
          "committed_at": "2026-06-18T16:29:35Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ab2921d75318532c064e0ddc9073f5d195755e4e",
          "body": "* reject wildcard origin with credentials in is_origin_allowed\n\n* Update CORS integration test for wildcard+credentials rejection\n\nThe pre-existing cors_wildcard_with_credentials_echoes_origin test asserted\nthe old behavior where a wildcard origin list with credentials echoed the\nrequest origin alon\n[…]\nupdated to verify the preflight is denied (403) with no Allow-Origin or\nAllow-Credentials headers, and renamed accordingly.\n\n---------\n\nCo-authored-by: Stephen Berry <stephenberry.developer@gmail.com>",
          "is_bot": false,
          "headline": "reject wildcard origin with credentials in is_origin_allowed (#2644)",
          "author_name": "uwezkhan",
          "author_login": "uwezkhan",
          "committed_at": "2026-06-18T16:29:06Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1a9dfe37578a9fdfef13e3067f0ae59b44af1ce8",
          "body": "…642)\n\n* Fix off-by-one heap overflow when decoding EETF atoms and strings\n\n* updated",
          "is_bot": false,
          "headline": "Fix off-by-one heap overflow when decoding EETF atoms and strings (#2…",
          "author_name": "arshsmith",
          "author_login": null,
          "committed_at": "2026-06-18T14:23:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f2d1a07ab1e6cadce578a3860401f66df8b928f9",
          "body": "* Pre-screen key length in the shared hash dispatch\n\nThe in-place decoders (BSON, MessagePack, CBOR, CSV, TOML) hand\ndecode_hash_with_size::op the raw key view (op(key.data(), key.data() +\nkey.size(), key.size())). Several of the per-type readers dereference key bytes\nwithout bounding the read, so a\n[…]\nthe\nkey length, so stencilcount's key.size() < min_length || key.size() > max_length\nfilter is no longer needed. This also matches the sibling stencil.hpp call sites,\nwhich already call op() directly.",
          "is_bot": false,
          "headline": "Pre-screen key length in the shared hash dispatch (#2643)",
          "author_name": "Stephen Berry",
          "author_login": "stephenberry",
          "committed_at": "2026-06-17T19:36:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "426dbbe281b141a8553c8e4d11652b28e5ec920e",
          "body": null,
          "is_bot": false,
          "headline": "Committing clang-format changes",
          "author_name": "stephenberry",
          "author_login": "stephenberry",
          "committed_at": "2026-06-17T16:42:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e8503af1121735b481e31d0600076d1b52a142fd",
          "body": "…#2638)\n\n* Fix integer overflow in REPE length validation (out-of-bounds read)\n\n* Harden REPE length-overflow error path and add regression tests\n\n- registry::call: build the length-mismatch error via checked_message_length so\n  an overflowing query_length/body_length is reported as a distinct\n  'le\n[…]\n query_length + body_length wraps mod 2^64, and a\n  legitimate message must still parse. Exercised under the ASAN CI build.\n\n---------\n\nCo-authored-by: Stephen Berry <stephenberry.developer@gmail.com>",
          "is_bot": false,
          "headline": "Fix integer overflow in REPE length validation (out-of-bounds read) (…",
          "author_name": "arshsmith",
          "author_login": null,
          "committed_at": "2026-06-17T16:42:15Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "078f425e6490ebc983ef34aa7c3c95af89f98de5",
          "body": null,
          "is_bot": false,
          "headline": "Committing clang-format changes",
          "author_name": "stephenberry",
          "author_login": "stephenberry",
          "committed_at": "2026-06-17T14:57:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6352691fbc25535fa6066a4955685cbbc41fc6d1",
          "body": "* Bound non-null-terminated value scanners against end of input\n\nSeveral JSON value scanners dereference *it without an end check, relying on\nthe trailing '\\0' sentinel that only exists for null-terminated buffers. On a\nnon-null-terminated buffer (opts.null_terminated = false) there is no\nsentinel, \n[…]\nasserts an\n  error. With the unbounded scan a valid name lacking its closing quote\n  over-reads and wrongly succeeds, so this pins the bounded behavior; it runs in\n  the dedicated C++26 reflection CI.",
          "is_bot": false,
          "headline": "Bound non-null-terminated value scanners against end of input (#2636)",
          "author_name": "Stephen Berry",
          "author_login": "stephenberry",
          "committed_at": "2026-06-17T14:56:57Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4b026eabc9b6e1b697a1ff44c15b2a44e3d27451",
          "body": "* guard minified skip_ws against end of non-null-terminated input\n\n* test: assert the full minified non-null-terminated document parses\n\nThe early_end !null terminated minified test pops the last byte before its\nfirst read, so it never exercised the complete document. Add an explicit\nround-trip of t\n[…]\nnd glz::skip\nreaders, pinning that skip_ws's new end_reached return is cleared at depth 0\nand does not regress valid input.\n\n---------\n\nCo-authored-by: Stephen Berry <stephenberry.developer@gmail.com>",
          "is_bot": false,
          "headline": "guard minified skip_ws against end of non-null-terminated input (#2634)",
          "author_name": "uwezkhan",
          "author_login": "uwezkhan",
          "committed_at": "2026-06-16T22:29:20Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2ceef982ae0c64f7e34a3e00272097845b28f64a",
          "body": null,
          "is_bot": false,
          "headline": "Committing clang-format changes",
          "author_name": "stephenberry",
          "author_login": "stephenberry",
          "committed_at": "2026-06-16T17:20:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "60e8aecf0d63b25160c999f3ca027e70a87c6865",
          "body": "* Add build-wide default optimization level (size) option\n\nLets embedded users make `size` the default optimization level for the whole\nbuild instead of passing glz::opts_size{} at every call site. A single forgotten\ndefault-options call (e.g. glz::write(obj, buf) or a transitive glz::format_error)\n\n[…]\ntch opts structs, matching glz::opts_size, so GCC does not flag a\nmember named the same as its unqualified type under -Werror. Also store the\nerror_ctx once in the symbols probe instead of re-parsing.",
          "is_bot": false,
          "headline": "Add build-wide default optimization level (size) option (#2633)",
          "author_name": "Stephen Berry",
          "author_login": "stephenberry",
          "committed_at": "2026-06-16T17:12:50Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c2eef5e33ef0b0e221e8b2154f7988dcaa13f483",
          "body": null,
          "is_bot": false,
          "headline": "version 7.8.2 bump",
          "author_name": "Stephen Berry",
          "author_login": "stephenberry",
          "committed_at": "2026-06-16T15:33:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "13f3acd8c99f58b1233959e50063a47604342c2f",
          "body": "* guard http_client chunked readers against chunk size overflow\n\n* test: cover sync path in chunk size overflow guard\n\nThe PR's existing test exercises only the streaming reader (read_chunk_body).\nAdd a synchronous client.get test against the same near-SIZE_MAX chunk size so\nperform_sync_request_attempt's guard is independently regression-protected.\n\n---------\n\nCo-authored-by: Stephen Berry <stephenberry.developer@gmail.com>",
          "is_bot": false,
          "headline": "guard http_client chunked readers against chunk size overflow (#2632)",
          "author_name": "uwezkhan",
          "author_login": "uwezkhan",
          "committed_at": "2026-06-16T15:19:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "92afe723e8bd4d151bc1460e9035dfa50c77fb9b",
          "body": null,
          "is_bot": false,
          "headline": "Committing clang-format changes",
          "author_name": "stephenberry",
          "author_login": "stephenberry",
          "committed_at": "2026-06-16T14:20:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "907130f0c1ee1970860f835ee07e895ff0d32aa1",
          "body": "* guard eetf big integer sign byte read against end\n\n* Harden EETF small big integer bounds checks\n\n* Simplify EETF small-big test byte casts\n\n* eetf: drop redundant it > end guard in check_invalid_offset\n\nAll callers maintain it <= end (every advance is bounds-checked or\nfollowed by invalid_end), s\n[…]\nre. The subtraction keeps the overflow safety of\navoiding (it + off) while matching the original check's instruction\ncount.\n\n---------\n\nCo-authored-by: Stephen Berry <stephenberry.developer@gmail.com>",
          "is_bot": false,
          "headline": "guard eetf big integer sign byte read against end (#2631)",
          "author_name": "uwezkhan",
          "author_login": "uwezkhan",
          "committed_at": "2026-06-16T14:19:11Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "79962d1e5055e0b0e9f484a5d89e0f2902e5d6fc",
          "body": null,
          "is_bot": false,
          "headline": "guard eetf_to_json length readers against char sign extension (#2628)",
          "author_name": "uwezkhan",
          "author_login": "uwezkhan",
          "committed_at": "2026-06-15T19:19:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "531f154f74fd0d5960ca80e8a671c03618b4ce6e",
          "body": null,
          "is_bot": false,
          "headline": "Committing clang-format changes",
          "author_name": "stephenberry",
          "author_login": "stephenberry",
          "committed_at": "2026-06-15T16:06:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8cb1f3a063b0e06cf0f331e7cbf6f6f60f007b9a",
          "body": "…on (#2625)\n\n* feat(util): implement utf8_stream_validator\n\n* test(utf8): add utf8_stream_validator correctness tests\n\n* fix(benchmark): build memory benchmark only when Darwin malloc.h present\n\n* chore(benchmark): export compile commands for standalone builds\n\n* fix(benchmark): avoid `small` macro \n[…]\nlittle) to match that convention; the\nlittle/big offset math is unchanged and behavior on every real platform is\nidentical.\n\n---------\n\nCo-authored-by: Stephen Berry <stephenberry.developer@gmail.com>",
          "is_bot": false,
          "headline": "Fail fast after receiving invalid UTF-8 payload in WebSocket connecti…",
          "author_name": "Artem Annihilatorq",
          "author_login": "annihilatorq",
          "committed_at": "2026-06-15T16:06:08Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8e61e3447b74e83d3498fe9a120100a7813b6f52",
          "body": "* guard fixed-size arrays in beve bool and complex readers\n\n* support partial reads for BEVE bool arrays\n\n---------\n\nCo-authored-by: Stephen Berry <stephenberry.developer@gmail.com>",
          "is_bot": false,
          "headline": "guard fixed-size arrays in beve bool and complex readers (#2624)",
          "author_name": "uwezkhan",
          "author_login": "uwezkhan",
          "committed_at": "2026-06-13T22:03:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2c3d4470d97870de2689fb18fc36701517bd4109",
          "body": "* guard iterator against end in stencilcount\n\n* handle truncated stencilcount keys\n\n* test stencilcount input boundaries\n\n* make sized hash decoding bounds safe\n\n* limit bounds checks to stencilcount\n\n* guard CBOR object key hashing\n\n---------\n\nCo-authored-by: Stephen Berry <stephenberry.developer@gmail.com>",
          "is_bot": false,
          "headline": "guard iterator against end in stencilcount (#2623)",
          "author_name": "uwezkhan",
          "author_login": "uwezkhan",
          "committed_at": "2026-06-13T20:28:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1ce36b4f8b238a3dc809e6feb313fc7cc8e1cb60",
          "body": "* Fix exception reads from generic JSON\n\n* Test generic JSON exception formatting",
          "is_bot": false,
          "headline": "Fix exception reads from generic JSON (#2622)",
          "author_name": "Stephen Berry",
          "author_login": "stephenberry",
          "committed_at": "2026-06-12T21:44:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "20b93e66eb64fc41442eb95141503b172ee64a1e",
          "body": null,
          "is_bot": false,
          "headline": "Committing clang-format changes",
          "author_name": "stephenberry",
          "author_login": "stephenberry",
          "committed_at": "2026-06-12T20:00:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "436d3ef1176ca8aa9c69f11defd8c3a969d8b491",
          "body": "* Fix HTTP date formatting data race\n\n* Use explicitly sized types and add comprehensive date formatting tests\n\n- Replace int/unsigned casts with int32_t/uint32_t in format_http_date\n- Add <cstdint> include\n- Add unit tests: unix epoch, Y2K, leap day, end of year, single digit day, all weekdays, all months\n\n* Add doc comment and [[nodiscard]] to format_http_date\n\n* direct integer casts for easier reading",
          "is_bot": false,
          "headline": "Fix HTTP date formatting data race (#2619)",
          "author_name": "Stephen Berry",
          "author_login": "stephenberry",
          "committed_at": "2026-06-12T19:59:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2004cd9d14e3cbb1cc507a15d03f2c3158037e17",
          "body": null,
          "is_bot": false,
          "headline": "Committing clang-format changes",
          "author_name": "stephenberry",
          "author_login": "stephenberry",
          "committed_at": "2026-06-12T15:58:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "204a6ae23b8e2e54ba98ca978cef85efce1671ba",
          "body": "* ci(net): add WebSocket autobahn testsuite workflow\n\n* fix(ci): exclude long-running and compression autobahn cases\n\n* fix(ci): stabilize Autobahn WebSocket workflow\n\n* fix(ci): validate Autobahn reports reliably\n\n---------\n\nCo-authored-by: Stephen Berry <stephenberry.developer@gmail.com>",
          "is_bot": false,
          "headline": "Add WebSocket autobahn client testsuite (#2615)",
          "author_name": "Artem Annihilatorq",
          "author_login": "annihilatorq",
          "committed_at": "2026-06-12T15:57:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9618ef8ef503c72b10e7b2769839784f09d24d2c",
          "body": null,
          "is_bot": false,
          "headline": "version 7.8.1 bump",
          "author_name": "Stephen Berry",
          "author_login": "stephenberry",
          "committed_at": "2026-06-11T01:28:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "13adf5d075529c7e15b77963d54eccd9315fa5e1",
          "body": "…#2604)\n\n* Centralize Asio backend selection into a glaze::asio target (#2599)\n\nThe CMake configuration selected Boost.Asio first, while\nglaze/ext/glaze_asio.hpp prefers standalone Asio whenever <asio.hpp> is\nincludable. On a system with both installed, CMake could link Boost while\nthe header silent\n[…]\nAlso add a comment in glaze_asio.hpp distinguishing the input macro\nGLZ_USE_BOOST_ASIO from the output macro GLZ_USING_BOOST_ASIO, and document\nthe glaze::asio target in docs/networking/asio-setup.md.",
          "is_bot": false,
          "headline": "Centralize Asio backend selection into a glaze::asio target (#2599) (…",
          "author_name": "Stephen Berry",
          "author_login": "stephenberry",
          "committed_at": "2026-06-10T14:07:14Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e2af7c99c3e4f03061eb469beda47108aa77d861",
          "body": "…ting members (#2612)\n\n* Add glz::reflect_array to serialize structs as arrays without enumerating members (#2602)\n\n* Use glz::reflect_array{} tag value and support local glaze meta\n\nReplace the glz::reflect_array<T> variable template with a glz::reflect_array{}\ntag struct that meta_wrapper_v expands into the reflected glz::array(...). This\nalso makes it usable from a local glaze meta, not just a global glz::meta\nspecialization.",
          "is_bot": false,
          "headline": "Add glz::reflect_array to serialize structs as arrays without enumera…",
          "author_name": "Stephen Berry",
          "author_login": "stephenberry",
          "committed_at": "2026-06-10T13:13:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "73a72d2530ac97a5f4bd8eb488f8952e35d3937f",
          "body": "When reading with error_on_unknown_keys = false from a streaming input\nbuffer, skipping an unknown key's value failed with unexpected_end if\nthe value extended past the currently buffered data. The skip routines\nhad no streaming refill points, unlike the object/array parsing loops.\n\nskip_value<JSON>\n[…]\nhe buffer. Truncated values still\nreport unexpected_end at EOF. The validating-skip path (JSON pointer\nparse_value) is excluded because it returns a span into the buffer that\nrefills would invalidate.",
          "is_bot": false,
          "headline": "Fix streaming buffer refill when skipping unknown keys (#2609) (#2611)",
          "author_name": "Stephen Berry",
          "author_login": "stephenberry",
          "committed_at": "2026-06-10T01:47:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d4f8acfec8f8d869fae6ec3d08aa788573feb3f5",
          "body": null,
          "is_bot": false,
          "headline": "Committing clang-format changes",
          "author_name": "stephenberry",
          "author_login": "stephenberry",
          "committed_at": "2026-06-10T00:38:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4f99a20e7487c55f9dc422249a64d6049f1d3e16",
          "body": "* fix(net): reject oversized control frames\n\n* test(net): extend WebSocket control frame regression test",
          "is_bot": false,
          "headline": "RFC 6455: reject oversized WebSocket control frames (#2606)",
          "author_name": "Artem Annihilatorq",
          "author_login": "annihilatorq",
          "committed_at": "2026-06-10T00:37:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ed83d92d9796073421f160efacae62e397fdf04d",
          "body": null,
          "is_bot": false,
          "headline": "Committing clang-format changes",
          "author_name": "stephenberry",
          "author_login": "stephenberry",
          "committed_at": "2026-06-08T19:50:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "08ef7350ba1874e8298490f923a6444903742e55",
          "body": "* fix(net): specify host authority in HTTP & WebSocket clients\n\n* test(net): add Host authority regression tests\n\n* Widen port_buf to avoid relying on itoa write-size internals\n\nThe Host-authority port is written with glz::to_chars into a stack\nbuffer. char[5] was exactly large enough for the 5-digi\n[…]\nto char[8] to make the sizing\nobviously safe, matching the generously-sized scratch buffers used\nelsewhere in the net code.\n\n---------\n\nCo-authored-by: Stephen Berry <stephenberry.developer@gmail.com>",
          "is_bot": false,
          "headline": "RFC 9112: fix Host authority in HTTP and WebSocket clients (#2605)",
          "author_name": "Artem Annihilatorq",
          "author_login": "annihilatorq",
          "committed_at": "2026-06-08T19:49:52Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1717a5e44a0f0e06047bbede268ecd9975e5942c",
          "body": null,
          "is_bot": false,
          "headline": "Committing clang-format changes",
          "author_name": "stephenberry",
          "author_login": "stephenberry",
          "committed_at": "2026-06-08T16:18:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "71072f96c144f07ad199337eb44b18eef135d8f3",
          "body": null,
          "is_bot": false,
          "headline": "cast to unsigned char before cctype calls in parsers (#2603)",
          "author_name": "uwezkhan",
          "author_login": "uwezkhan",
          "committed_at": "2026-06-08T16:17:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 100,
      "commits_last_year": 803,
      "latest_release_at": "2026-07-17T17:52:55Z",
      "latest_release_tag": "v7.9.1",
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 52,
      "days_since_latest_release": 4,
      "mean_days_between_releases": 7.5
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 57,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": []
    },
    "popularity": {
      "forks": 256,
      "stars": 2912,
      "watchers": 31,
      "fork_history": {
        "days": [
          {
            "date": "2022-10-14",
            "count": 5
          },
          {
            "date": "2022-10-18",
            "count": 1
          },
          {
            "date": "2022-10-19",
            "count": 1
          },
          {
            "date": "2022-10-22",
            "count": 1
          },
          {
            "date": "2022-10-23",
            "count": 1
          },
          {
            "date": "2022-10-27",
            "count": 1
          },
          {
            "date": "2022-11-09",
            "count": 1
          },
          {
            "date": "2022-11-23",
            "count": 1
          },
          {
            "date": "2023-01-07",
            "count": 1
          },
          {
            "date": "2023-01-13",
            "count": 1
          },
          {
            "date": "2023-01-23",
            "count": 1
          },
          {
            "date": "2023-02-02",
            "count": 1
          },
          {
            "date": "2023-02-18",
            "count": 1
          },
          {
            "date": "2023-02-19",
            "count": 1
          },
          {
            "date": "2023-03-01",
            "count": 1
          },
          {
            "date": "2023-03-03",
            "count": 2
          },
          {
            "date": "2023-03-07",
            "count": 2
          },
          {
            "date": "2023-03-13",
            "count": 1
          },
          {
            "date": "2023-03-25",
            "count": 1
          },
          {
            "date": "2023-04-09",
            "count": 1
          },
          {
            "date": "2023-05-04",
            "count": 1
          },
          {
            "date": "2023-05-07",
            "count": 1
          },
          {
            "date": "2023-05-16",
            "count": 1
          },
          {
            "date": "2023-07-04",
            "count": 1
          },
          {
            "date": "2023-07-07",
            "count": 2
          },
          {
            "date": "2023-07-12",
            "count": 2
          },
          {
            "date": "2023-07-23",
            "count": 1
          },
          {
            "date": "2023-07-25",
            "count": 1
          },
          {
            "date": "2023-07-28",
            "count": 1
          },
          {
            "date": "2023-07-31",
            "count": 1
          },
          {
            "date": "2023-08-01",
            "count": 1
          },
          {
            "date": "2023-08-15",
            "count": 1
          },
          {
            "date": "2023-09-21",
            "count": 1
          },
          {
            "date": "2023-10-05",
            "count": 1
          },
          {
            "date": "2023-10-11",
            "count": 1
          },
          {
            "date": "2023-10-16",
            "count": 1
          },
          {
            "date": "2023-10-23",
            "count": 1
          },
          {
            "date": "2023-10-24",
            "count": 1
          },
          {
            "date": "2023-11-02",
            "count": 1
          },
          {
            "date": "2023-11-04",
            "count": 1
          },
          {
            "date": "2023-11-08",
            "count": 1
          },
          {
            "date": "2023-11-09",
            "count": 1
          },
          {
            "date": "2023-11-13",
            "count": 1
          },
          {
            "date": "2023-11-16",
            "count": 1
          },
          {
            "date": "2023-11-17",
            "count": 1
          },
          {
            "date": "2023-12-01",
            "count": 1
          },
          {
            "date": "2023-12-03",
            "count": 1
          },
          {
            "date": "2023-12-06",
            "count": 1
          },
          {
            "date": "2023-12-07",
            "count": 1
          },
          {
            "date": "2023-12-12",
            "count": 1
          },
          {
            "date": "2023-12-21",
            "count": 1
          },
          {
            "date": "2023-12-22",
            "count": 1
          },
          {
            "date": "2023-12-26",
            "count": 2
          },
          {
            "date": "2024-01-02",
            "count": 1
          },
          {
            "date": "2024-01-08",
            "count": 1
          },
          {
            "date": "2024-01-10",
            "count": 1
          },
          {
            "date": "2024-01-18",
            "count": 1
          },
          {
            "date": "2024-01-29",
            "count": 1
          },
          {
            "date": "2024-02-01",
            "count": 1
          },
          {
            "date": "2024-02-06",
            "count": 1
          },
          {
            "date": "2024-02-13",
            "count": 1
          },
          {
            "date": "2024-02-14",
            "count": 1
          },
          {
            "date": "2024-02-21",
            "count": 1
          },
          {
            "date": "2024-02-23",
            "count": 1
          },
          {
            "date": "2024-02-29",
            "count": 1
          },
          {
            "date": "2024-03-01",
            "count": 1
          },
          {
            "date": "2024-03-29",
            "count": 1
          },
          {
            "date": "2024-04-05",
            "count": 1
          },
          {
            "date": "2024-04-12",
            "count": 1
          },
          {
            "date": "2024-05-05",
            "count": 1
          },
          {
            "date": "2024-05-11",
            "count": 1
          },
          {
            "date": "2024-05-25",
            "count": 1
          },
          {
            "date": "2024-06-02",
            "count": 1
          },
          {
            "date": "2024-06-06",
            "count": 1
          },
          {
            "date": "2024-06-13",
            "count": 1
          },
          {
            "date": "2024-06-14",
            "count": 1
          },
          {
            "date": "2024-06-15",
            "count": 1
          },
          {
            "date": "2024-06-20",
            "count": 1
          },
          {
            "date": "2024-06-22",
            "count": 1
          },
          {
            "date": "2024-07-03",
            "count": 1
          },
          {
            "date": "2024-07-05",
            "count": 1
          },
          {
            "date": "2024-07-06",
            "count": 1
          },
          {
            "date": "2024-07-07",
            "count": 1
          },
          {
            "date": "2024-07-12",
            "count": 1
          },
          {
            "date": "2024-07-18",
            "count": 1
          },
          {
            "date": "2024-07-20",
            "count": 1
          },
          {
            "date": "2024-07-25",
            "count": 1
          },
          {
            "date": "2024-08-10",
            "count": 1
          },
          {
            "date": "2024-08-14",
            "count": 1
          },
          {
            "date": "2024-08-17",
            "count": 1
          },
          {
            "date": "2024-08-19",
            "count": 1
          },
          {
            "date": "2024-08-20",
            "count": 1
          },
          {
            "date": "2024-09-06",
            "count": 1
          },
          {
            "date": "2024-09-14",
            "count": 1
          },
          {
            "date": "2024-09-15",
            "count": 1
          },
          {
            "date": "2024-09-30",
            "count": 1
          },
          {
            "date": "2024-10-03",
            "count": 1
          },
          {
            "date": "2024-10-16",
            "count": 1
          },
          {
            "date": "2024-10-23",
            "count": 2
          },
          {
            "date": "2024-10-28",
            "count": 1
          },
          {
            "date": "2024-11-02",
            "count": 1
          },
          {
            "date": "2024-11-15",
            "count": 1
          },
          {
            "date": "2024-11-20",
            "count": 2
          },
          {
            "date": "2024-11-23",
            "count": 1
          },
          {
            "date": "2024-12-05",
            "count": 1
          },
          {
            "date": "2024-12-11",
            "count": 2
          },
          {
            "date": "2024-12-15",
            "count": 1
          },
          {
            "date": "2024-12-16",
            "count": 4
          },
          {
            "date": "2024-12-17",
            "count": 2
          },
          {
            "date": "2024-12-18",
            "count": 3
          },
          {
            "date": "2024-12-22",
            "count": 1
          },
          {
            "date": "2024-12-23",
            "count": 2
          },
          {
            "date": "2025-01-02",
            "count": 1
          },
          {
            "date": "2025-01-03",
            "count": 2
          },
          {
            "date": "2025-01-08",
            "count": 1
          },
          {
            "date": "2025-01-10",
            "count": 1
          },
          {
            "date": "2025-01-15",
            "count": 1
          },
          {
            "date": "2025-01-29",
            "count": 1
          },
          {
            "date": "2025-02-01",
            "count": 1
          },
          {
            "date": "2025-02-05",
            "count": 1
          },
          {
            "date": "2025-02-21",
            "count": 1
          },
          {
            "date": "2025-02-22",
            "count": 1
          },
          {
            "date": "2025-02-28",
            "count": 1
          },
          {
            "date": "2025-03-03",
            "count": 1
          },
          {
            "date": "2025-03-08",
            "count": 1
          },
          {
            "date": "2025-03-12",
            "count": 1
          },
          {
            "date": "2025-03-28",
            "count": 1
          },
          {
            "date": "2025-05-03",
            "count": 2
          },
          {
            "date": "2025-05-12",
            "count": 1
          },
          {
            "date": "2025-05-17",
            "count": 2
          },
          {
            "date": "2025-06-03",
            "count": 2
          },
          {
            "date": "2025-06-10",
            "count": 1
          },
          {
            "date": "2025-06-14",
            "count": 1
          },
          {
            "date": "2025-06-16",
            "count": 1
          },
          {
            "date": "2025-06-23",
            "count": 1
          },
          {
            "date": "2025-06-25",
            "count": 1
          },
          {
            "date": "2025-07-03",
            "count": 1
          },
          {
            "date": "2025-07-07",
            "count": 1
          },
          {
            "date": "2025-07-09",
            "count": 1
          },
          {
            "date": "2025-07-15",
            "count": 1
          },
          {
            "date": "2025-07-17",
            "count": 2
          },
          {
            "date": "2025-07-25",
            "count": 1
          },
          {
            "date": "2025-07-30",
            "count": 1
          },
          {
            "date": "2025-08-11",
            "count": 1
          },
          {
            "date": "2025-08-14",
            "count": 1
          },
          {
            "date": "2025-08-16",
            "count": 1
          },
          {
            "date": "2025-08-25",
            "count": 2
          },
          {
            "date": "2025-09-05",
            "count": 1
          },
          {
            "date": "2025-09-09",
            "count": 1
          },
          {
            "date": "2025-09-14",
            "count": 1
          },
          {
            "date": "2025-09-15",
            "count": 1
          },
          {
            "date": "2025-09-27",
            "count": 1
          },
          {
            "date": "2025-10-06",
            "count": 1
          },
          {
            "date": "2025-10-14",
            "count": 2
          },
          {
            "date": "2025-10-22",
            "count": 1
          },
          {
            "date": "2025-10-25",
            "count": 1
          },
          {
            "date": "2025-10-27",
            "count": 1
          },
          {
            "date": "2025-10-28",
            "count": 1
          },
          {
            "date": "2025-11-04",
            "count": 1
          },
          {
            "date": "2025-11-07",
            "count": 2
          },
          {
            "date": "2025-11-12",
            "count": 1
          },
          {
            "date": "2025-11-14",
            "count": 1
          },
          {
            "date": "2025-11-20",
            "count": 1
          },
          {
            "date": "2025-11-21",
            "count": 1
          },
          {
            "date": "2025-12-08",
            "count": 1
          },
          {
            "date": "2025-12-17",
            "count": 1
          },
          {
            "date": "2025-12-22",
            "count": 1
          },
          {
            "date": "2025-12-29",
            "count": 1
          },
          {
            "date": "2025-12-31",
            "count": 1
          },
          {
            "date": "2026-01-08",
            "count": 1
          },
          {
            "date": "2026-01-09",
            "count": 1
          },
          {
            "date": "2026-01-12",
            "count": 1
          },
          {
            "date": "2026-01-21",
            "count": 2
          },
          {
            "date": "2026-01-23",
            "count": 1
          },
          {
            "date": "2026-02-04",
            "count": 1
          },
          {
            "date": "2026-02-05",
            "count": 1
          },
          {
            "date": "2026-02-19",
            "count": 1
          },
          {
            "date": "2026-02-25",
            "count": 1
          },
          {
            "date": "2026-02-28",
            "count": 1
          },
          {
            "date": "2026-03-03",
            "count": 2
          },
          {
            "date": "2026-03-07",
            "count": 1
          },
          {
            "date": "2026-03-10",
            "count": 1
          },
          {
            "date": "2026-03-12",
            "count": 1
          },
          {
            "date": "2026-03-18",
            "count": 1
          },
          {
            "date": "2026-03-20",
            "count": 1
          },
          {
            "date": "2026-03-21",
            "count": 1
          },
          {
            "date": "2026-03-24",
            "count": 1
          },
          {
            "date": "2026-03-27",
            "count": 1
          },
          {
            "date": "2026-03-31",
            "count": 2
          },
          {
            "date": "2026-04-03",
            "count": 1
          },
          {
            "date": "2026-04-11",
            "count": 1
          },
          {
            "date": "2026-04-15",
            "count": 1
          },
          {
            "date": "2026-04-27",
            "count": 1
          },
          {
            "date": "2026-04-28",
            "count": 2
          },
          {
            "date": "2026-04-29",
            "count": 2
          },
          {
            "date": "2026-04-30",
            "count": 1
          },
          {
            "date": "2026-05-01",
            "count": 2
          },
          {
            "date": "2026-05-09",
            "count": 1
          },
          {
            "date": "2026-05-12",
            "count": 3
          },
          {
            "date": "2026-05-13",
            "count": 2
          },
          {
            "date": "2026-05-16",
            "count": 1
          },
          {
            "date": "2026-05-18",
            "count": 2
          },
          {
            "date": "2026-05-26",
            "count": 1
          },
          {
            "date": "2026-06-03",
            "count": 1
          },
          {
            "date": "2026-06-08",
            "count": 1
          },
          {
            "date": "2026-06-10",
            "count": 1
          },
          {
            "date": "2026-06-18",
            "count": 1
          },
          {
            "date": "2026-06-22",
            "count": 1
          },
          {
            "date": "2026-06-29",
            "count": 1
          },
          {
            "date": "2026-07-01",
            "count": 1
          },
          {
            "date": "2026-07-05",
            "count": 1
          },
          {
            "date": "2026-07-10",
            "count": 1
          },
          {
            "date": "2026-07-15",
            "count": 1
          },
          {
            "date": "2026-07-17",
            "count": 1
          },
          {
            "date": "2026-07-19",
            "count": 1
          },
          {
            "date": "2026-07-20",
            "count": 2
          }
        ],
        "complete": true,
        "collected": 254,
        "total_forks": 256
      },
      "star_history": null,
      "open_issues_and_prs": 43
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "examples"
      ],
      "has_llms_txt": false,
      "has_dockerfile": true,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": true,
      "typecheck_configs": [],
      "toolchain_manifests": [],
      "largest_source_bytes": 460936,
      "source_files_sampled": 414,
      "oversized_source_files": 29,
      "agent_instruction_files": [],
      "agent_instruction_max_bytes": null
    },
    "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": 24,
        "merged_prs": 1522,
        "open_issues": 19,
        "closed_ratio": 0.977,
        "closed_issues": 812,
        "closed_unmerged_prs": 103
      },
      "bus_factor": 1,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "stephenberry",
          "commits": 3276,
          "avatar_url": "https://avatars.githubusercontent.com/u/7396228?v=4"
        },
        {
          "type": "User",
          "login": "mwalcott3",
          "commits": 145,
          "avatar_url": "https://avatars.githubusercontent.com/u/9817348?v=4"
        },
        {
          "type": "User",
          "login": "justend29",
          "commits": 43,
          "avatar_url": "https://avatars.githubusercontent.com/u/10579359?v=4"
        },
        {
          "type": "User",
          "login": "uwezkhan",
          "commits": 30,
          "avatar_url": "https://avatars.githubusercontent.com/u/114483941?v=4"
        },
        {
          "type": "User",
          "login": "annihilatorq",
          "commits": 22,
          "avatar_url": "https://avatars.githubusercontent.com/u/143023834?v=4"
        },
        {
          "type": "User",
          "login": "jbbjarnason",
          "commits": 17,
          "avatar_url": "https://avatars.githubusercontent.com/u/15651464?v=4"
        },
        {
          "type": "User",
          "login": "arturbac",
          "commits": 9,
          "avatar_url": "https://avatars.githubusercontent.com/u/14975842?v=4"
        },
        {
          "type": "User",
          "login": "huangminghuang",
          "commits": 9,
          "avatar_url": "https://avatars.githubusercontent.com/u/3933219?v=4"
        },
        {
          "type": "User",
          "login": "pwqbot",
          "commits": 8,
          "avatar_url": "https://avatars.githubusercontent.com/u/49278533?v=4"
        },
        {
          "type": "User",
          "login": "fregate",
          "commits": 7,
          "avatar_url": "https://avatars.githubusercontent.com/u/4081464?v=4"
        }
      ],
      "contributors_sampled": 80,
      "top_contributor_share": 0.888
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "armv7.yml",
        "autobahn.yml",
        "benchmark.yml",
        "big-endian.yml",
        "boost-asio.yml",
        "clang-cl.yml",
        "clang-format.yml",
        "clang-linux-erlang.yml",
        "clang-linux-latest.yml",
        "clang-linux.yml",
        "clang-tidy.yml",
        "clang.yml",
        "code_coverage.yml",
        "disable-always-inline.yml",
        "docs.yml",
        "exhaustive_float.yml",
        "exhaustive_int.yml",
        "gcc-erlang.yml",
        "gcc-old-abi.yml",
        "gcc-x86.yml",
        "gcc.yml",
        "msvc.yml",
        "msys2.yml",
        "p2996-reflection.yml",
        "quickfuzz.yml",
        "sanitizers.yml",
        "simple_float.yml",
        "standalone-asio.yml",
        "windows-header-compatibility.yml",
        "yaml-conformance-data-gcc.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": null,
            "reason": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 10,
            "reason": "26 out of 26 merged PRs checked by a CI test -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 4,
            "reason": "Found 12/30 approved changesets -- score normalized to 4",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 6 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": 10,
            "reason": "project is fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "30 commit(s) and 23 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": 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": "SAST tool is not run on all commits -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 10,
            "reason": "security policy file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 10,
            "reason": "0 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "2dfb3555da8428f737d2edffd59b70e2450d45fa",
        "ran_at": "2026-07-22T11:43:15Z",
        "aggregate_score": 6.2,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": true,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-22T09:07:13Z",
      "oldest_open_prs": [
        {
          "number": 1107,
          "created_at": "2024-06-20T15:06:42Z",
          "last_comment_at": "2024-07-23T14:02:15Z",
          "last_comment_author": "celonymire"
        },
        {
          "number": 1115,
          "created_at": "2024-06-26T12:24:45Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 2157,
          "created_at": "2025-12-18T18:30:00Z",
          "last_comment_at": "2026-03-27T17:40:53Z",
          "last_comment_author": "packit-as-a-service"
        },
        {
          "number": 2236,
          "created_at": "2026-01-10T04:46:07Z",
          "last_comment_at": "2026-01-16T04:59:40Z",
          "last_comment_author": "packit-as-a-service"
        },
        {
          "number": 2296,
          "created_at": "2026-02-03T12:36:58Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 2328,
          "created_at": "2026-02-20T13:18:01Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 2367,
          "created_at": "2026-03-13T01:20:41Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 2399,
          "created_at": "2026-03-24T14:36:13Z",
          "last_comment_at": "2026-04-28T14:06:16Z",
          "last_comment_author": "stephenberry"
        },
        {
          "number": 2408,
          "created_at": "2026-03-29T21:40:49Z",
          "last_comment_at": "2026-06-12T18:16:01Z",
          "last_comment_author": "packit-as-a-service"
        },
        {
          "number": 2411,
          "created_at": "2026-03-30T13:09:48Z",
          "last_comment_at": "2026-04-08T01:59:34Z",
          "last_comment_author": "GTruf"
        },
        {
          "number": 2448,
          "created_at": "2026-04-08T02:17:50Z",
          "last_comment_at": "2026-04-14T02:45:04Z",
          "last_comment_author": "GTruf"
        },
        {
          "number": 2532,
          "created_at": "2026-04-27T22:45:47Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 2563,
          "created_at": "2026-05-12T11:36:04Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 2564,
          "created_at": "2026-05-13T09:50:41Z",
          "last_comment_at": "2026-05-15T10:29:54Z",
          "last_comment_author": "genisis0x"
        },
        {
          "number": 2588,
          "created_at": "2026-05-28T21:16:17Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 2610,
          "created_at": "2026-06-09T14:05:29Z",
          "last_comment_at": "2026-06-09T16:47:21Z",
          "last_comment_author": "wilkolbrzym-coder"
        },
        {
          "number": 2613,
          "created_at": "2026-06-10T19:56:46Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 2617,
          "created_at": "2026-06-11T13:50:43Z",
          "last_comment_at": "2026-06-15T21:07:20Z",
          "last_comment_author": "CramBL"
        },
        {
          "number": 2629,
          "created_at": "2026-06-15T16:12:11Z",
          "last_comment_at": "2026-06-17T12:39:23Z",
          "last_comment_author": "stephenberry"
        },
        {
          "number": 2669,
          "created_at": "2026-06-22T17:54:30Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ],
      "last_merged_pr_at": "2026-07-22T08:53:47Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": [
        {
          "number": 1019,
          "created_at": "2024-05-22T12:55:15Z",
          "last_comment_at": "2026-04-02T15:22:29Z",
          "last_comment_author": "stephenberry"
        },
        {
          "number": 1296,
          "created_at": "2024-09-13T15:41:10Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1586,
          "created_at": "2025-02-01T05:13:50Z",
          "last_comment_at": "2026-03-20T17:14:10Z",
          "last_comment_author": "DockedFerret800"
        },
        {
          "number": 2168,
          "created_at": "2025-12-21T14:15:04Z",
          "last_comment_at": "2025-12-21T20:53:27Z",
          "last_comment_author": "aurelleb"
        },
        {
          "number": 2182,
          "created_at": "2025-12-29T20:25:51Z",
          "last_comment_at": "2026-06-20T02:29:49Z",
          "last_comment_author": "Sailanarmo"
        },
        {
          "number": 2234,
          "created_at": "2026-01-08T17:48:05Z",
          "last_comment_at": "2026-05-09T11:17:46Z",
          "last_comment_author": "hieubnt235"
        },
        {
          "number": 2265,
          "created_at": "2026-01-24T15:57:31Z",
          "last_comment_at": "2026-01-26T14:57:09Z",
          "last_comment_author": "stephenberry"
        },
        {
          "number": 2366,
          "created_at": "2026-03-12T13:52:30Z",
          "last_comment_at": "2026-03-23T14:25:23Z",
          "last_comment_author": "VinnyVicious"
        },
        {
          "number": 2376,
          "created_at": "2026-03-15T09:09:29Z",
          "last_comment_at": "2026-05-27T07:52:04Z",
          "last_comment_author": "genisis0x"
        },
        {
          "number": 2409,
          "created_at": "2026-03-30T01:12:55Z",
          "last_comment_at": "2026-05-27T07:53:29Z",
          "last_comment_author": "genisis0x"
        },
        {
          "number": 2453,
          "created_at": "2026-04-08T20:28:08Z",
          "last_comment_at": "2026-04-09T15:54:58Z",
          "last_comment_author": "DockedFerret800"
        },
        {
          "number": 2508,
          "created_at": "2026-04-16T09:20:57Z",
          "last_comment_at": "2026-04-16T09:25:23Z",
          "last_comment_author": "CoinFuMasterShifu"
        },
        {
          "number": 2514,
          "created_at": "2026-04-17T13:22:46Z",
          "last_comment_at": "2026-04-18T13:07:25Z",
          "last_comment_author": "stephenberry"
        },
        {
          "number": 2639,
          "created_at": "2026-06-17T08:53:22Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 2655,
          "created_at": "2026-06-20T01:39:18Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 2656,
          "created_at": "2026-06-20T01:39:37Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 2657,
          "created_at": "2026-06-20T01:39:53Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 2666,
          "created_at": "2026-06-21T20:13:57Z",
          "last_comment_at": "2026-06-22T14:34:04Z",
          "last_comment_author": "nextsilicon-itay-bookstein"
        },
        {
          "number": 2672,
          "created_at": "2026-06-24T08:18:46Z",
          "last_comment_at": "2026-06-24T16:19:49Z",
          "last_comment_author": "stephenberry"
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/stephenberry/glaze",
    "host": "github.com",
    "name": "glaze",
    "owner": "stephenberry"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "good",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 75,
      "inputs": {
        "security": 62,
        "vitality": 100,
        "community": 68,
        "governance": 62,
        "engineering": 80
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "excellent",
        "name": "Vitality",
        "value": 100,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "excellent",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "commits_last_year": 803,
              "human_commit_share": 1,
              "days_since_last_push": 0,
              "active_weeks_last_year": 52
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 0 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "52/52 weeks with commits",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 52
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "803 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 803
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 23 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "releases_count": 100,
              "latest_release_tag": "v7.9.1",
              "releases_from_tags": false,
              "days_since_latest_release": 4,
              "mean_days_between_releases": 7.5
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "100 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 100
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 4 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 4
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~7.5 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 7.5
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "maintained",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": 0,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 0 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "moderate",
        "name": "Community & Adoption",
        "value": 68,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "good",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 84,
            "inputs": {
              "forks": 256,
              "stars": 2912,
              "watchers": 31,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "2,912 stars",
                "points": 56.2,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 2912
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "256 forks",
                "points": 20.1,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 256
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "31 watchers",
                "points": 8.2,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 31
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "moderate",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 50,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "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": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (MIT)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "MIT"
                    }
                  }
                ],
                "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": 62,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "at_risk",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 35,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 80,
              "top_contributor_share": 0.888
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "1 contributor(s) cover half of all commits",
                "points": 9,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 89% of commits",
                "points": 2.5,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 89
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "80 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 80
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 6 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "excellent",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 88,
            "inputs": {
              "merged_prs": 1522,
              "open_issues": 19,
              "closed_issues": 812,
              "issue_closed_ratio": 0.977,
              "closed_unmerged_prs": 103
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "98% of issues closed",
                "points": 45.7,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 98
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "1522/1625 decided PRs merged",
                "points": 35.8,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 1522,
                      "decided": 1625
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 12/30 approved changesets -- score normalized to 4",
                "points": 6,
                "status": "partial",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "good",
            "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": 70,
            "inputs": {
              "followers": 874,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "stephenberry",
              "public_repos": 111,
              "account_age_days": 4471
            },
            "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": "874 followers of stephenberry",
                "points": 21.2,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 874,
                      "login": "stephenberry"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "111 public repos, account ~12 yr old",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 111
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 12
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "good",
        "name": "Engineering Quality",
        "value": 80,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "good",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 74,
            "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": "30 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 30
                    }
                  }
                ],
                "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": "26 out of 26 merged PRs checked by a CI test -- score normalized to 10",
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "excellent",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "topics": [
                "api",
                "binary",
                "cplusplus",
                "cpp",
                "interface",
                "json",
                "serialization",
                "reflection",
                "header-only",
                "json-rpc2",
                "fast",
                "csv",
                "json-schema",
                "beve",
                "cbor",
                "toml",
                "messagepack",
                "yaml",
                "jsonb",
                "bson"
              ],
              "has_wiki": false,
              "homepage": "https://stephenberry.github.io/glaze/",
              "has_readme": true,
              "has_docs_dir": true,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 25,
                "status": "met",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": "https://stephenberry.github.io/glaze/",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": "20 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 20
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "moderate",
        "name": "Security",
        "value": 62,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "moderate",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Branch-Protection, Packaging, Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "branch_protection",
                    "packaging",
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 62,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 15,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 3,
              "scorecard_aggregate": 6.2
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "26 out of 26 merged PRs checked by a CI test -- score normalized to 10",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 12/30 approved changesets -- score normalized to 4",
                "points": 3,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 6 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 fuzzed",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 23 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow 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": "SAST tool is not run on all commits -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "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": 4
            },
            "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": 50,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "at_risk",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.77,
              "agent_instruction_files": [],
              "agent_instruction_max_bytes": null
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "no CLAUDE.md / AGENTS.md / editor rules",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_instructions",
                    "params": {}
                  }
                ],
                "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": "77 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 77,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "at_risk",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 43,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [],
              "has_dockerfile": true,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": true,
              "has_linter_config": false,
              "typecheck_configs": [],
              "agent_commit_share": 0,
              "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": "devcontainer, Dockerfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "devcontainer, Dockerfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "no agent-authored commits among the last 100",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_authored_commits",
                    "params": {
                      "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": 96,
            "inputs": {
              "primary_language": "C++",
              "largest_source_bytes": 460936,
              "source_files_sampled": 414,
              "oversized_source_files": 29
            },
            "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": "29/414 source files over 60KB",
                "points": 51.1,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 414,
                      "oversized": 29
                    }
                  }
                ],
                "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"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-22T11:43:43.415859Z",
  "schema_version": "0.26.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/s/stephenberry/glaze.svg",
  "full_name": "stephenberry/glaze",
  "license_state": "standard",
  "license_spdx": "MIT"
}

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

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

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