Публічний реєстр
Звіт про здоров'я програмного забезпеченнясхема 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 р.Переглянути на GitHub ↗

stephenberry/glaze має індекс здоров’я 75 зі 100, що відповідає смузі «Добрий». Найвищий показник — Vitality (100/100), найнижчий — AI Readiness (50/100). Останнє оновлення — сьогодні. Більшість нещодавньої роботи виконує один учасник.

75
загалом / 100
Добрий

Індекс здоров'я програмного забезпечення

Метрики згруповано у зважені категорії на шкалі 1–100. Загальна оцінка починається як їхнє середнє; коли публічні дані активують Політику юрисдикцій високого ризику, рейтинг коригується й отримує верхню межу 49 («Під ризиком»). Готовність до ШІ не входить до індексу.

75
Відмінний85-100Зразковий; відповідає практично всім перевіреним критеріям
Добрий70-84Здоровий; незначні прогалини
Помірний50-69Прийнятний, але з помітними прогалинами; рекомендовано перевірку
У зоні ризику30-49Суттєві слабкі місця; впровадження потребує обережності
Критичний1-29Серйозні проблеми (покинутий, єдиний мейнтейнер, без базової гігієни)
ЖиттєздатністьСпільнота тавпровадженняСталість таврядуванняІнженернаякістьБезпекаГотовність доШІ

Профіль оцінок

Кожна вісь — окрема категорія. Форма важить більше, ніж середнє: здоровий об'єкт заповнює всю фігуру, тоді як профіль із піками та провалами означає, що сила в одному вимірі маскує ризик в іншому.

Власність

Stephen BerryОсобистий обліковий запис
874 підписники111 публічних репозиторіївз квіт. 2014 р.

Цей репозиторій належить особистому обліковому запису. Проєкт з єдиним власником несе більший ризик безперервності, ніж підтримуваний організацією.

Метрики за категоріями

Життєздатність

Чи живий проєкт — чи пишеться код і чи виходять релізи?

100Відмінний · 22% загального індексу
Як обчислюється оцінка
36/36Свіжість push — останній push 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
Як обчислюється оцінка
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
Як обчислюється оцінка
22.5/22.5README
22.5/22.5Ліцензія — визнана ліцензія (MIT)
0/18Настанови CONTRIBUTING
0/13.5Кодекс поведінки
0/7.2Шаблон issue
0/6.3Шаблон PR
Використані вхідні дані
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Вирішення issue — закрито 98% issue
35.8/38.3Прийняття PR — злито 1 522/1 625 вирішених PR
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Охоплення власника — 874 підписників у stephenberry
25/25Послужний список — 111 публічних репозиторіїв, вік облікового запису ~12 р.
Використані вхідні дані
followers874
owner_typeUser
is_verified
owner_loginstephenberry
public_repos111
account_age_days4 471
Виключено з оцінювання (немає даних або не застосовно): Верифікований домен. Залишкові ваги перенормовано.

Інженерна якість

Чи наявні базові інженерні практики та документація?

80Добрий · 20% загального індексу
Як обчислюється оцінка
24/24Процеси CI — 30 процес(ів) CI
24/24Наявні тести
0/16Конфігурація лінтера
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. Залишкові ваги перенормовано.

Готовність до ШІ

Наскільки репозиторій оснащений для розробки та супроводу за участі ШІ-агентів? Незалежний, експериментальний бейдж — вага 0.0, тож він подається окремо і не впливає на загальний індекс здоров'я.

50Помірний · 0% загального індексу
Як обчислюється оцінка
0/45Інструкції для агентів — немає CLAUDE.md / AGENTS.md / правил редактора
0/15Машиночитана документація (llms.txt)
40/40Читабельна історія комітів — намір зазначено у 77 з 100 людських комітів (структурований заголовок або пояснювальний текст)
Використані вхідні дані
has_llms_txtні
legible_history_share0,77
agent_instruction_files
agent_instruction_max_bytes
Як обчислюється оцінка
0/18Розгортання однією командою
22/22Автоматизовані тести
0/11Конфігурація лінтера / форматера
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Керовані розміри файлів — 29/414 файлів вихідного коду понад 60 КБ
Використані вхідні дані
primary_languageC++
largest_source_bytes460 936
source_files_sampled414
oversized_source_files29
Як обчислюється оцінка
0/40Схема API (OpenAPI/GraphQL/proto)
0/20Сервер MCP
40/40Придатні до запуску приклади — examples
Використані вхідні дані
example_dirsexamples
has_mcp_signalні
api_schema_files

Ключові факти

2 912зірок GitHub
80контриб'юторів
803комітів за останні 12 місяців
0днів від останнього пушу
100релізів
1бас-фактор
19відкритих issue
пакетних екосистем

Попередження щодо збору даних

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

Докладніше

Історія зірок і форків 0 ★ / 256 ⇿
0Зірки
256Форки
99Релізи

Коли додано кожну зірку й форк — зібрано з 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 непрямих (транзитивних) пакетів. Транзитивне замикання є повним, коли в репозиторії закомічено lockfile.

РеєстрПакетВерсіяЗв'язок
Сповіщення про залежності не оцінено

Звірка сповіщень не відбулася для цього звіту: 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 — повна методологія · вікі метрик.

Як окремий результат виглядає на тлі всього реєстру: сукупна статистика.