Registro público
Informe de salud del softwareesquema 0.26.0 · métricas 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★ 2912 estrellas⑂ 256 forksdesde jul 2022Ver en GitHub ↗

stephenberry/glaze tiene un índice de salud de 75 sobre 100, lo que lo sitúa en la banda Bueno. Su puntuación más alta es Vitality (100/100) y la más baja, AI Readiness (50/100). Se actualizó por última vez hoy. Una sola persona concentra la mayor parte del trabajo reciente.

75
global / 100
Bueno

Índice de salud del software

Las métricas se agrupan en categorías ponderadas sobre una escala de 1 a 100. El resultado global parte de su media; cuando la evidencia pública activa la Política de Jurisdicciones de Alto Riesgo, la calificación se ajusta y recibe el límite 49 (En riesgo). Preparación para IA queda fuera.

75
Excelente85-100Ejemplar; cumple prácticamente todos los criterios evaluados
Bueno70-84Saludable; carencias menores
Moderado50-69Aceptable con carencias notables; se recomienda revisión
En riesgo30-49Debilidades significativas; su adopción exige cautela
Crítico1-29Problemas graves (proyecto abandonado, un solo mantenedor, sin higiene)
VitalidadComunidad yAdopciónSostenibilidady GobernanzaCalidad deIngenieríaSeguridadPreparaciónpara IA

Perfil de puntuación

Cada eje es una categoría. La forma importa más que la media: un proyecto sano llena toda la figura, mientras que un perfil de picos y cráteres indica que la fortaleza en una dimensión enmascara el riesgo en otra.

Titularidad

Stephen BerryCuenta personal
874 seguidores111 repositorios públicosdesde abr 2014

Este repositorio pertenece a una cuenta personal. Un proyecto con un único propietario conlleva más riesgo de continuidad que uno respaldado por una organización.

Métricas por categoría

Vitalidad

¿Está vivo el proyecto: se escribe código y se publican versiones?

100Excelente · 22% del índice global
Cómo se puntúa
36/36Recencia de push — último push hace 0 días
36/36Cadencia de commits — 52/52 semanas con commits
18/18Volumen de commits — 803 commits en el último año
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 23 issue activity found in the last 90 days -- score normalized to 10
Datos de entrada utilizados
commits_last_year803
human_commit_share1
days_since_last_push0
active_weeks_last_year52
Cómo se puntúa
27/27Publica versiones — 100 versiones publicadas
36/36Recencia de las versiones — última versión hace 4 días
27/27Cadencia de publicación — una versión cada ~7,5 días
0/10OpenSSF Scorecard: Signed-Releases — sin datos
Datos de entrada utilizados
releases_count100
latest_release_tagv7.9.1
releases_from_tagsno
days_since_latest_release4
mean_days_between_releases7,5
Excluidos de la puntuación (sin datos o no aplicable): OpenSSF Scorecard: Signed-Releases. Los pesos restantes se han renormalizado.

Comunidad y Adopción

¿Tiene el proyecto usuarios, descargas, atención y unas condiciones acogedoras para quienes contribuyen?

68Moderado · 18% del índice global
Cómo se puntúa
56.2/60Estrellas — 2912 estrellas
20.1/25Forks — 256 forks
8.2/15Observadores — 31 observadores
Datos de entrada utilizados
forks256
stars2912
watchers31
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Cómo se puntúa
22.5/22.5README
22.5/22.5Licencia — licencia reconocida (MIT)
0/18Guía CONTRIBUTING
0/13.5Código de conducta
0/7.2Plantilla de issues
0/6.3Plantilla de PR
Datos de entrada utilizados
has_readme
has_license
has_contributingno
has_issue_templateno
has_code_of_conductno
has_pull_request_templateno

Sostenibilidad y Gobernanza

¿Sobrevivirá el proyecto a sus personas: factor bus, capacidad de respuesta, quién lo respalda y mantenimiento del paquete?

62Moderado · 24% del índice global
Cómo se puntúa
9/54Factor bus — la mitad de los commits recae en 1 contribuyente(s)
2.5/22.5Distribución de commits — el principal contribuyente firma el 89% de los commits
13.5/13.5Amplitud de contribuyentes — 80 contribuyentes
10/10OpenSSF Scorecard: Contributors — project has 6 contributing companies or organizations
Datos de entrada utilizados
bus_factor1
contributors_sampled80
top_contributor_share0,888
Cómo se puntúa
45.7/46.8Resolución de issues — 98% de issues cerradas
35.8/38.3Aceptación de PR — 1522/1625 PR decididos fusionados
6/15OpenSSF Scorecard: Code-Review — Found 12/30 approved changesets -- score normalized to 4
Datos de entrada utilizados
merged_prs1522
open_issues19
closed_issues812
issue_closed_ratio0,977
closed_unmerged_prs103
Cómo se puntúa
10/30Respaldo de la propiedad — cuenta personal (usuario)
0/20Dominio verificado — no aplicable a cuentas de usuario
21.2/25Alcance del propietario — 874 seguidores de stephenberry
25/25Trayectoria — 111 repos públicos, cuenta de ~12 años
Datos de entrada utilizados
followers874
owner_typeUser
is_verified
owner_loginstephenberry
public_repos111
account_age_days4471
Excluidos de la puntuación (sin datos o no aplicable): Dominio verificado. Los pesos restantes se han renormalizado.

Calidad de Ingeniería

¿Existen unas prácticas mínimas de ingeniería y documentación?

80Bueno · 20% del índice global
Cómo se puntúa
24/24Flujos de trabajo de CI — 30 flujo(s) de trabajo
24/24Pruebas presentes
0/16Configuración de linter
0/9.6Hooks de pre-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
Datos de entrada utilizados
has_ci
has_tests
has_editorconfig
has_linter_configno
has_precommit_configno

Documentación

90Excelente
Cómo se puntúa
30/30README
25/25Directorio de documentación
15/15Sitio de documentación / página del proyecto — https://stephenberry.github.io/glaze/
10/10Descripción del repositorio
10/10Topics — 20 topics
0/10Wiki
Datos de entrada utilizados
topicsapi, binary, cplusplus, cpp, interface, json, serialization, reflection, header-only, json-rpc2, fast, csv, json-schema, beve, cbor, toml, messagepack, yaml, jsonb, bson
has_wikino
homepagehttps://stephenberry.github.io/glaze/
has_readme
has_docs_dir
has_description

Seguridad

¿Son sólidas las prácticas visibles de seguridad y de cadena de suministro, sin exposición jurisdiccional de alto riesgo sin resolver?

62Moderado · 16% del índice global
Cómo se puntúa
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — sin datos
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.5Licencia — 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 — sin datos
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 — sin datos
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
7.5/7.5Vulnerabilities — 0 existing vulnerabilities detected
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated15
scorecard_versionv5.5.0
checks_inconclusive3
scorecard_aggregate6,2
Excluidos de la puntuación (sin datos o no aplicable): branch_protection, packaging, signed_releases. Los pesos restantes se han renormalizado.

Preparación para IA

¿Hasta qué punto está el repositorio preparado para desarrollarse y mantenerse con agentes de codificación de IA? Es una insignia independiente y experimental — peso 0,0, de modo que se presenta por separado y no afecta a la puntuación de salud global.

50Moderado · 0% del índice global
Cómo se puntúa
0/45Instrucciones para agentes — sin CLAUDE.md / AGENTS.md / reglas de editor
0/15Documentación legible por máquinas (llms.txt)
40/40Historial de commits legible — 77 de 100 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txtno
legible_history_share0,77
agent_instruction_files
agent_instruction_max_bytes
Cómo se puntúa
0/18Arranque con un solo comando
22/22Pruebas automatizadas
0/11Configuración de lint / formato
11/11Verificación estática de tipos — C++ (tipado estático)
10/10Entorno reproducible — devcontainer, Dockerfile
0/10Práctica demostrada con agentes — ningún commit con autoría de agente entre los últimos 100
0/8Mantenimiento automatizado — no se observan actualizaciones automáticas de dependencias
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Datos de entrada utilizados
has_nixno
has_tests
lockfiles
has_dockerfile
typed_language
bootstrap_files
has_devcontainer
has_linter_configno
typecheck_configs
agent_commit_share0
toolchain_manifests
dependency_bot_commit_share0
Cómo se puntúa
45/45Código verificable por tipos — C++ (tipado estático)
51.1/55Tamaños de archivo manejables — 29/414 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languageC++
largest_source_bytes460.936
source_files_sampled414
oversized_source_files29
Cómo se puntúa
0/40Esquema de API (OpenAPI/GraphQL/proto)
0/20Servidor MCP
40/40Ejemplos ejecutables — examples
Datos de entrada utilizados
example_dirsexamples
has_mcp_signalno
api_schema_files

Datos clave

2912estrellas de GitHub
80contribuidores
803commits en los últimos 12 meses
0días desde el último push
100versiones publicadas
1factor bus
19issues abiertas
ecosistemas de paquetes

Advertencias de recopilación de datos

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

Más detalle

Historial de estrellas y forks 0 ★ / 256 ⇿
0Estrellas
256Forks
99Versiones

Cuándo se añadió cada estrella y fork, recopilado de GitHub y agrupado por día. El crecimiento acumulado se sitúa justo encima de las adiciones diarias que lo componen, de modo que ambos se leen en conjunto: la acumulación orgánica sostenida no se parece en nada a un pico abrupto y efímero. Cuando esa diferencia es medible, se informa como autenticidad del crecimiento.

05010015020025030025472022-102024-082026-07
Mayor 4Menor 30Parche 65

Cada punto abarca 4 días.

OpenSSF Scorecard 6.2 / 10
6.2agregado

Evaluación de seguridad independiente y agnóstica en cuanto a herramientas, procedente del proyecto de código abierto OpenSSF Scorecard. Cada comprobación premia una práctica de seguridad, no la herramienta de un proveedor concreto. Las comprobaciones que Scorecard no pudo determinar se marcan como n/d y se excluyen de la puntuación de seguridad (nunca se cuentan como cero).Scorecard v5.5.0 · 2026-07-22 11:43 UTC

10Binary-Artifactsno binaries found in the repo
n/dBranch-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
n/dPackagingpackaging 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
n/dSigned-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
10Vulnerabilities0 existing vulnerabilities detected
Todas las dependencias 0

Conjunto completo de dependencias resueltas según el grafo de dependencias de GitHub: 0 paquetes directos y 0 indirectos (transitivos). El cierre transitivo es completo cuando el repositorio incluye un lockfile.

RegistroPaqueteVersiónRelación
Avisos de dependencias sin evaluar

El cotejo de avisos no pudo ejecutarse para este informe: No resolved dependencies to assess

Informe JSON sin procesar legible por máquina
{
  "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"
}

Las puntuaciones son señales, no garantías. Reflejan prácticas públicamente visibles en GitHub; no son una auditoría de código ni una garantía de seguridad.

Los datos ausentes se excluyen y los pesos se renormalizan; nunca se puntúan como cero. La metodología es versionada y abierta: métricas v1.13.0, esquema v0.26.0 — metodología completa · wiki de métricas.

Cómo se sitúa un resultado dentro del registro general: estadísticas agregadas.