Registro público
Informe de salud del softwareesquema 0.27.0 · métricas 1.13.0 · 2026-07-24 17:52 UTC

zommiommy / mem_dbg-rs

A trait + derive to recursively compute / print the memory usage of a data structure.

RustApache-2.0★ 43 estrellas⑂ 7 forksdesde ago 2023Ver en GitHub ↗

zommiommy/mem_dbg-rs tiene un índice de salud de 65 sobre 100, lo que lo sitúa en la banda Moderado. Su puntuación más alta es Vitality (84/100) y la más baja, Security (52/100). Se actualizó por última vez hace 1 día. Una sola persona concentra la mayor parte del trabajo reciente.

65
global / 100
Moderado

Í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.

65
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

Tommaso FontanaCuenta personal
40 seguidores98 repositorios públicosdesde ene 2017

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.

Ecosistemas de paquetes

RegistroPaqueteVersiónDescargas / mesVersionesÚltima publicaciónEtiquetas
crates.iomem_dbg0.4.456.50625hace 1 díaallocationdebugmemory
crates.iomem_dbg-derive0.3.456.39914hace 1 díaallocationdebugmemory

Métricas por categoría

Vitalidad

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

84Bueno · 22% del índice global
Cómo se puntúa
36/36Recencia de push — último push hace 1 días
13.8/36Cadencia de commits — 20/52 semanas con commits
18/18Volumen de commits — 287 commits en el último año
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Datos de entrada utilizados
commits_last_year287
human_commit_share1
days_since_last_push1
active_weeks_last_year20
Cómo se puntúa
27/27Publica versiones — 20 versiones publicadas
36/36Recencia de las versiones — última versión hace 1 días
19.8/27Cadencia de publicación — una versión cada ~58,7 días
0/10OpenSSF Scorecard: Signed-Releases — sin datos
Datos de entrada utilizados
releases_count20
latest_release_tag0.4.4
releases_from_tagsno
days_since_latest_release1
mean_days_between_releases58,7
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?

59Moderado · 18% del índice global
Cómo se puntúa
26.3/60Estrellas — 43 estrellas
6.5/25Forks — 7 forks
0/15Observadores — 2 observadores
Datos de entrada utilizados
forks7
stars43
watchers2
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Cómo se puntúa
22.5/22.5README
22.5/22.5Licencia — licencia reconocida (Apache-2.0)
18/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_contributing
has_issue_templateno
has_code_of_conductno
has_pull_request_templateno
Cómo se puntúa
67.4/80Descargas mensuales — 112.905 descargas/mes en crates
0/20Dependientes en el registro — no lo informa este ecosistema
Datos de entrada utilizados
packagesmem_dbg, mem_dbg-derive
dependents
ecosystemscrates
total_downloads805.676
monthly_downloads112.905
Excluidos de la puntuación (sin datos o no aplicable): Dependientes en el registro. Los pesos restantes se han renormalizado.

Sostenibilidad y Gobernanza

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

66Moderado · 24% del índice global
Cómo se puntúa
9/54Factor bus — la mitad de los commits recae en 1 contribuyente(s)
10.7/22.5Distribución de commits — el principal contribuyente firma el 52% de los commits
12.2/13.5Amplitud de contribuyentes — 9 contribuyentes
10/10OpenSSF Scorecard: Contributors — project has 5 contributing companies or organizations
Datos de entrada utilizados
bus_factor1
contributors_sampled9
top_contributor_share0,523
Cómo se puntúa
37.4/46.8Resolución de issues — 80% de issues cerradas
33.2/38.3Aceptación de PR — 33/38 PR decididos fusionados
3/15OpenSSF Scorecard: Code-Review — Found 4/16 approved changesets -- score normalized to 2
Datos de entrada utilizados
merged_prs33
open_issues4
closed_issues16
issue_closed_ratio0,8
closed_unmerged_prs5
Cómo se puntúa
10/30Respaldo de la propiedad — cuenta personal (usuario)
0/20Dominio verificado — no aplicable a cuentas de usuario
11.6/25Alcance del propietario — 40 seguidores de zommiommy
25/25Trayectoria — 98 repos públicos, cuenta de ~9 años
Datos de entrada utilizados
followers40
owner_typeUser
is_verified
owner_loginzommiommy
public_repos98
account_age_days3478
Excluidos de la puntuación (sin datos o no aplicable): Dominio verificado. Los pesos restantes se han renormalizado.
Cómo se puntúa
25/25Publicado y resoluble — 2 paquete(s) en crates
35/35Recencia de publicación — última publicación hace 1 días
20/20Historial de versiones — 25 versiones en el registro
20/20No obsoleto — activo, ni obsoleto ni retirado
Datos de entrada utilizados
packagesmem_dbg, mem_dbg-derive
ecosystemscrates
any_deprecatedno
min_days_since_publish1

Calidad de Ingeniería

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

61Moderado · 20% del índice global
Cómo se puntúa
24/24Flujos de trabajo de CI — 2 flujo(s) de trabajo
24/24Pruebas presentes
0/16Configuración de linter
0/9.6Hooks de pre-commit
0/6.4.editorconfig
20/20OpenSSF Scorecard: CI-Tests — 4 out of 4 merged PRs checked by a CI test -- score normalized to 10
Datos de entrada utilizados
has_ci
has_tests
has_editorconfigno
has_linter_configno
has_precommit_configno

Documentación

50Moderado
Cómo se puntúa
30/30README
0/25Directorio de documentación
0/15Sitio de documentación / página del proyecto
10/10Descripción del repositorio
0/10Topics
10/10Wiki
Datos de entrada utilizados
topics
has_wiki
homepage
has_readme
has_docs_dirno
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?

52Moderado · 16% del índice global
Cómo se puntúa
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — branch protection not enabled on development/release branches
2.5/2.5CI-Tests — 4 out of 4 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
1.5/7.5Code-Review — Found 4/16 approved changesets -- score normalized to 2
2.5/2.5Contributors — project has 5 contributing companies or organizations
10/10Dangerous-Workflow — no dangerous workflow patterns detected
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5Licencia — license file detected
7.5/7.5Maintained — 30 commit(s) and 0 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
0/5Security-Policy — security policy file not 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_evaluated16
scorecard_versionv5.5.0
checks_inconclusive2
scorecard_aggregate4,5
Excluidos de la puntuación (sin datos o no aplicable): packaging, signed_releases. Los pesos restantes se han renormalizado.
Cómo se puntúa
23.1/35Dependencias directas libres de avisos conocidos — 3 afectados: maligned 0.2.1 (moderate), get-size 0.1.4 (unknown), paste 1.0.15 (unknown)
25/25Dependencias indirectas libres de avisos conocidos — ninguna dependencia indirecta tiene un aviso conocido
32.7/40Sin avisos pendientes — 3 paquete(s) con avisos sin atender más allá de 90 días; el más antiguo publicado hace 1238 días
Datos de entrada utilizados
sourceosv
advisories4
affected_packages3
assessed_packages114
unassessed_packages0
affected_by_severitymoderate 1, unknown 2
direct_affected_packages3
Se cotejó el cierre de dependencias en tiempo de ejecución de crates:mem_dbg@0.4.4 —lo que arrastra la instalación del paquete publicado—: 114 paquetes. No se analiza la alcanzabilidad.

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.

54Moderado · 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)
36.8/40Historial de commits legible — 69 de 100 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txtno
legible_history_share0,69
agent_instruction_files
agent_instruction_max_bytes
Cómo se puntúa
12.6/18Arranque con un solo comando — Cargo.toml, mem_dbg-derive/Cargo.toml, mem_dbg/Cargo.toml (convención del toolchain, sin ejecutor de tareas)
22/22Pruebas automatizadas
0/11Configuración de lint / formato
11/11Verificación estática de tipos — Rust (tipado estático)
0/10Entorno reproducible
10/10Práctica demostrada con agentes — 7 de los últimos 100 commits con autoría o crédito de agente
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_dockerfileno
typed_language
bootstrap_files
has_devcontainerno
has_linter_configno
typecheck_configs
agent_commit_share0,07
toolchain_manifestsCargo.toml, mem_dbg-derive/Cargo.toml, mem_dbg/Cargo.toml
dependency_bot_commit_share0
Cómo se puntúa
45/45Código verificable por tipos — Rust (tipado estático)
55/55Tamaños de archivo manejables — 0/57 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languageRust
largest_source_bytes54.577
source_files_sampled57
oversized_source_files0
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

43estrellas de GitHub
9contribuidores
287commits en los últimos 12 meses
1días desde el último push
20versiones publicadas
1factor bus
4issues abiertas
crates.ioecosistemas 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 ★ / 7 ⇿
0Estrellas
7Forks
12Versiones

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.

1234567712024-052025-052026-05
Mayor 0Menor 2Parche 10

Cada punto abarca 2 días.

OpenSSF Scorecard 4.5 / 10
4.5agregado

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-24 17:52 UTC

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
10CI-Tests4 out of 4 merged PRs checked by a CI test -- score normalized to 10
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
2Code-ReviewFound 4/16 approved changesets -- score normalized to 2
10Contributorsproject has 5 contributing companies or organizations
10Dangerous-Workflowno dangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
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
0Security-Policysecurity policy file not detected
n/dSigned-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
10Vulnerabilities0 existing vulnerabilities detected
Dependencias directas 12
RegistroPaqueteRestricción de versiónManifiesto
crates.ioquote1mem_dbg-derive/Cargo.toml
crates.ioproc-macro21.0mem_dbg-derive/Cargo.toml
crates.iosyn2.0mem_dbg-derive/Cargo.toml
crates.iobitflags2.4.1mem_dbg/Cargo.toml
crates.iomem_dbg-derivemem_dbg/Cargo.toml
crates.iommap-rs0.7.0mem_dbg/Cargo.toml
crates.iohalf2.0.4mem_dbg/Cargo.toml
crates.iorand0.10.0mem_dbg/Cargo.toml
crates.iomaligned0.2.1mem_dbg/Cargo.toml
crates.iohashbrown0.16mem_dbg/Cargo.toml
crates.ioaliasable0.1.3mem_dbg/Cargo.toml
crates.iomaybe-dangling0.1.2mem_dbg/Cargo.toml
Todas las dependencias 20

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

RegistroPaqueteVersiónRelación
crates.ioaliasabledirecta
crates.iobitflagsdirecta
crates.iohalfdirecta
crates.iohashbrowndirecta
crates.iomaligneddirecta
crates.iomaybe-danglingdirecta
crates.iommap-rsdirecta
crates.ioproc-macro2directa
crates.ioquotedirecta
crates.ioranddirecta
crates.iosyndirecta
crates.ioanyhowindirecta
crates.iocapindirecta
crates.iocomfy-table7.2.1indirecta
crates.iocriterionindirecta
crates.iodeepsizeindirecta
crates.ioget-sizeindirecta
crates.ioinstaindirecta
crates.iopasteindirecta
crates.ioregexindirecta
Avisos de dependencias 3

Instalar crates:mem_dbg@0.4.4 arrastra 114 paquetes, directos y transitivos: 3 tienen avisos conocidos, de los cuales 3 son dependencias directas.

PaqueteVersiónRelaciónGravedadAvisosCorregido en
maligned0.2.1directamoderada2
get-size0.1.4directadesconocida1
paste1.0.15directadesconocida1

Un aviso significa que la versión registrada en el grafo de dependencias cae dentro del rango afectado de un aviso. No se analiza la alcanzabilidad, y el grafo incluye fijaciones de desarrollo y prueba: un hallazgo puede referirse al utillaje y no al software distribuido.

Informe JSON sin procesar legible por máquina
{
  "data": {
    "repo": {
      "topics": [],
      "is_fork": false,
      "size_kb": 968,
      "has_wiki": true,
      "homepage": null,
      "languages": {
        "Rust": 377987
      },
      "pushed_at": "2026-07-23T14:23:27Z",
      "created_at": "2023-08-08T12:13:46Z",
      "owner_type": "User",
      "updated_at": "2026-07-23T14:23:05Z",
      "description": "A trait +  derive to recursively compute / print the memory usage of a data structure.  ",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "Apache-2.0",
      "default_branch": "main",
      "license_spdx_raw": "Apache-2.0",
      "primary_language": "Rust",
      "significant_languages": [
        "Rust"
      ]
    },
    "owner": {
      "blog": "zom.wtf",
      "name": "Tommaso Fontana",
      "type": "User",
      "login": "zommiommy",
      "company": null,
      "location": "Milan (Italy)",
      "followers": 40,
      "avatar_url": "https://avatars.githubusercontent.com/u/25117939?v=4",
      "created_at": "2017-01-14T11:04:34Z",
      "is_verified": null,
      "public_repos": 98,
      "account_age_days": 3478
    },
    "license": {
      "state": "standard",
      "spdx_id": "Apache-2.0",
      "raw_spdx": "Apache-2.0",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "0.4.4",
          "kind": "patch",
          "published_at": "2026-07-23T14:23:52Z"
        },
        {
          "tag": "0.4.3",
          "kind": "patch",
          "published_at": "2026-06-17T20:27:49Z"
        },
        {
          "tag": "0.4.2",
          "kind": "patch",
          "published_at": "2026-06-01T12:56:52Z"
        },
        {
          "tag": "0.4.1",
          "kind": "patch",
          "published_at": "2026-03-25T09:21:56Z"
        },
        {
          "tag": "0.4.0",
          "kind": "minor",
          "published_at": "2026-02-11T19:14:44Z"
        },
        {
          "tag": "0.3.4",
          "kind": "patch",
          "published_at": "2026-01-21T00:33:25Z"
        },
        {
          "tag": "0.3.3",
          "kind": "patch",
          "published_at": "2026-01-04T12:55:56Z"
        },
        {
          "tag": "0.3.2",
          "kind": "patch",
          "published_at": "2025-11-03T09:30:14Z"
        },
        {
          "tag": "0.3.1",
          "kind": "patch",
          "published_at": "2025-10-16T09:31:19Z"
        },
        {
          "tag": "0.3.0",
          "kind": "minor",
          "published_at": "2025-02-09T22:26:28Z"
        },
        {
          "tag": "0.2.5",
          "kind": "patch",
          "published_at": "2025-02-06T18:31:49Z"
        },
        {
          "tag": "0.2.4",
          "kind": "patch",
          "published_at": "2024-08-09T12:17:13Z"
        },
        {
          "tag": "0.2.3",
          "kind": "patch",
          "published_at": "2024-08-09T10:20:14Z"
        },
        {
          "tag": "0.2.2",
          "kind": "patch",
          "published_at": "2024-06-03T20:18:01Z"
        },
        {
          "tag": "0.2.1",
          "kind": "patch",
          "published_at": "2024-05-28T06:05:43Z"
        },
        {
          "tag": "0.2.0",
          "kind": "minor",
          "published_at": "2024-04-27T12:55:46Z"
        },
        {
          "tag": "0.1.8",
          "kind": "patch",
          "published_at": "2024-04-07T18:24:01Z"
        },
        {
          "tag": "0.1.7",
          "kind": "patch",
          "published_at": "2024-04-07T18:14:44Z"
        },
        {
          "tag": "0.1.6",
          "kind": "patch",
          "published_at": "2024-04-07T17:27:45Z"
        },
        {
          "tag": "0.1.4",
          "kind": "patch",
          "published_at": "2024-03-18T13:17:07Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "2fc4d91e391ccd58c5e20d401f07709197042307",
          "body": null,
          "is_bot": false,
          "headline": "Updated change log",
          "author_name": "Sebastiano Vigna",
          "author_login": "vigna",
          "committed_at": "2026-07-23T14:22:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2a11e8a24f3c8aabd0308620b4fbe544fbe8b2e1",
          "body": "…re::io::cursor",
          "is_bot": false,
          "headline": "License is now MIT or Apache; fixed change from std::io::cursor to co…",
          "author_name": "Sebastiano Vigna",
          "author_login": "vigna",
          "committed_at": "2026-07-23T14:22:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "38436003093d9b1d4b9e2b9d0c24bcbc5f9d2bc5",
          "body": null,
          "is_bot": false,
          "headline": "Spacing/date",
          "author_name": "Sebastiano Vigna",
          "author_login": "vigna",
          "committed_at": "2026-06-17T20:28:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3de8b588426aac9cebc3d7858bc1d3064aac71ef",
          "body": null,
          "is_bot": false,
          "headline": "Better error message",
          "author_name": "Sebastiano Vigna",
          "author_login": "vigna",
          "committed_at": "2026-06-17T19:57:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d9d784a019ccd877c247629ca91496e313235bad",
          "body": "The per-field flat check emitted `const { …::FLAT_CHECK; }` with the `;`\ninside the block, making it a bare path statement that tripped the\n`path_statements` lint for every flat field (i.e. nearly every derived\ntype). Move the `;` outside the `const` block so the access is the\nblock's tail expression; the `must_use` warning for non-flat fields is\nunaffected.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Fix path_statements warning from flat-field check",
          "author_name": "Sebastiano Vigna",
          "author_login": "vigna",
          "committed_at": "2026-06-17T19:55:19Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "0325d3658f65353c75a44bcd0053176220007862",
          "body": "#[mem_size(flat)] on a type with a non-flat field now produces a\ncompile-time `unused_must_use` warning pointing at the offending field.\nA new #[must_use] marker `NonFlatField` is mapped from `Boolean` via a\n`FLAT_CHECK` const (False -> NonFlatField, True -> ()); the derive emits,\nper field, a disca\n[…]\nAlso deduplicate predicates in every generated where-clause, so a type\nused across several fields contributes its bound only once.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Warn on non-flat #[mem_size(flat)] fields; dedup derived where-clauses",
          "author_name": "Sebastiano Vigna",
          "author_login": "vigna",
          "committed_at": "2026-06-17T17:57:59Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "43ac4db5d9d19d2f226ff49e7c78bd6199f70837",
          "body": "The 'mirror hashbrown table layout' fix regenerated only the x86_64\nsnapshots; the i686 (x86) and aarch64-linux variants, which are the only\nplatform snapshots actually exercised in CI (build-i686 and build-aarch64\nrun the snapshot tests; the x86_64 jobs skip them), were left stale.\n\nRegenerate them\n[…]\nn, run under qemu-i386\n    (default features, matching build-i686); also refreshes ref_dedup\n    snapshots that still carried the legacy insta 'assertion_line'\n    header and outdated tree connectors.",
          "is_bot": false,
          "headline": "test: regenerate i686 and aarch64-linux snapshots",
          "author_name": "Tommaso Fontana",
          "author_login": "zommiommy",
          "committed_at": "2026-06-17T16:26:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "bcfd7f6ec253d6a4406285756a47393bf644064f",
          "body": null,
          "is_bot": false,
          "headline": "Predicate dedup",
          "author_name": "Sebastiano Vigna",
          "author_login": "vigna",
          "committed_at": "2026-06-17T16:21:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7912d956d47a75b49f93bb3b1a3914b6716d9128",
          "body": null,
          "is_bot": false,
          "headline": "Regenerated insta",
          "author_name": "Sebastiano Vigna",
          "author_login": "vigna",
          "committed_at": "2026-06-17T15:41:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5d714d3acd694dbaea7522ca633a9017c2b097ee",
          "body": null,
          "is_bot": false,
          "headline": "Redistributed and gated audit tests",
          "author_name": "Sebastiano Vigna",
          "author_login": "vigna",
          "committed_at": "2026-06-17T15:35:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "88b71d343c9c4b8b94f6c27dcef7301afbba2468",
          "body": "The assertion ctrl_offset > bucket_bytes only held for GROUP_WIDTH == 16 (x86_64+SSE2), where [u8;3]*8 = 24 rounds up to 32. On aarch64 (GROUP_WIDTH 8) and the generic 4-byte group, 24 is already aligned so ctrl_offset == bucket_bytes and the test failed. Assert the round-up invariant instead (aligned, at-or-after the bucket data, minimal padding), which holds for every group width.",
          "is_bot": false,
          "headline": "test: make hash control-offset assertion platform-agnostic",
          "author_name": "Tommaso Fontana",
          "author_login": "zommiommy",
          "committed_at": "2026-06-17T15:23:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0019d863c971533c17c15d605bd895c954012754",
          "body": "Fix audited memory accounting and display issues",
          "is_bot": false,
          "headline": "Merge pull request #62 from zommiommy/fix/review-findings",
          "author_name": "Sebastiano Vigna",
          "author_login": "vigna",
          "committed_at": "2026-06-17T15:05:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "16ef2d8dbaf633849c7f53edf1b5b2a611a919d4",
          "body": null,
          "is_bot": false,
          "headline": "docs: correct maybe-dangling feature note",
          "author_name": "Tommaso Fontana",
          "author_login": "zommiommy",
          "committed_at": "2026-06-17T14:29:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "87741a1384ab5e3d095f3d77285c266bbc138376",
          "body": null,
          "is_bot": false,
          "headline": "docs: state MemSize lower bound",
          "author_name": "Tommaso Fontana",
          "author_login": "zommiommy",
          "committed_at": "2026-06-17T14:29:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "158e54b34cfd001393e52efe32b0a2f685856c4c",
          "body": null,
          "is_bot": false,
          "headline": "fix: write stderr output completely",
          "author_name": "Tommaso Fontana",
          "author_login": "zommiommy",
          "committed_at": "2026-06-17T14:29:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ebf11ac6091f37f22c873116df519d71f5f2c941",
          "body": null,
          "is_bot": false,
          "headline": "fix: keep followed pointer markers visible",
          "author_name": "Tommaso Fontana",
          "author_login": "zommiommy",
          "committed_at": "2026-06-17T14:29:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "55b142cf063939700f229ea0871c8dfd9648c2ea",
          "body": null,
          "is_bot": false,
          "headline": "fix: render borrowed Cow references",
          "author_name": "Tommaso Fontana",
          "author_login": "zommiommy",
          "committed_at": "2026-06-17T14:29:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "31c7a891ceea7cdb40977c19f1f6d4e5ff4a5ee6",
          "body": null,
          "is_bot": false,
          "headline": "fix: account guard targets as references",
          "author_name": "Tommaso Fontana",
          "author_login": "zommiommy",
          "committed_at": "2026-06-17T14:29:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2e62a5c2047121b3c5ba5aeb8cbbc63e8abc80f8",
          "body": null,
          "is_bot": false,
          "headline": "fix: support alloc shared pointers",
          "author_name": "Tommaso Fontana",
          "author_login": "zommiommy",
          "committed_at": "2026-06-17T14:29:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9f89199df00e08b2eb3098c10eef36c93b6a832a",
          "body": null,
          "is_bot": false,
          "headline": "fix: support empty enum derives",
          "author_name": "Tommaso Fontana",
          "author_login": "zommiommy",
          "committed_at": "2026-06-17T14:29:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "03cf163598729a14ac181a9667a0fba95d12f502",
          "body": null,
          "is_bot": false,
          "headline": "fix: avoid derive enum binding collisions",
          "author_name": "Tommaso Fontana",
          "author_login": "zommiommy",
          "committed_at": "2026-06-17T14:29:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8bd761d2d0689787edd9ee11c2d16ede6207c627",
          "body": null,
          "is_bot": false,
          "headline": "fix: preserve shared pointer allocations",
          "author_name": "Tommaso Fontana",
          "author_login": "zommiommy",
          "committed_at": "2026-06-17T14:29:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0766ddb6eb3a53a6795e72779f99d6f457b3189d",
          "body": null,
          "is_bot": false,
          "headline": "fix: mirror hashbrown table layout",
          "author_name": "Tommaso Fontana",
          "author_login": "zommiommy",
          "committed_at": "2026-06-17T14:29:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "95c5158f540a459a190ec90c4f9a36574f65c3fa",
          "body": null,
          "is_bot": false,
          "headline": "fix: avoid blocking lock traversal",
          "author_name": "Tommaso Fontana",
          "author_login": "zommiommy",
          "committed_at": "2026-06-17T13:55:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "db5d4f98a074ef5f297ad28913a169234ed2d4fd",
          "body": null,
          "is_bot": false,
          "headline": "fix: treat cell interiors as opaque",
          "author_name": "Tommaso Fontana",
          "author_login": "zommiommy",
          "committed_at": "2026-06-17T13:55:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5989b85cc2d4901435b45e09ae02de9bea6c9bc4",
          "body": null,
          "is_bot": false,
          "headline": "Documented limitation of thin pointers",
          "author_name": "Sebastiano Vigna",
          "author_login": "vigna",
          "committed_at": "2026-06-17T10:44:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "12972c56fa03bae58c00fd3f44df662a72a264af",
          "body": "Break followed-pointer cycles when computing mem_size",
          "is_bot": false,
          "headline": "Merge pull request #52 from zommiommy/followed-pointer-cycles",
          "author_name": "Sebastiano Vigna",
          "author_login": "vigna",
          "committed_at": "2026-06-17T09:33:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ba0e7f6f43aa4f5b0f0d2043cedaeeef657231d6",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'main' into followed-pointer-cycles",
          "author_name": "Sebastiano Vigna",
          "author_login": "vigna",
          "committed_at": "2026-06-17T09:32:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1d2c6b9b5faddf1403481083a3e064f653feb26e",
          "body": "Render Option/Result payloads as labeled MemDbg children\n\n# Conflicts:\n#\tCHANGELOG.md",
          "is_bot": false,
          "headline": "Merge pull request #57 from zommiommy/option-result-memdbg",
          "author_name": "Tommaso Fontana",
          "author_login": "zommiommy",
          "committed_at": "2026-06-16T11:10:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "186a77bdc75cdbe4cac8f0cbf24d089533aecfc1",
          "body": "Break tuple field-offset ties by size in MemDbg",
          "is_bot": false,
          "headline": "Merge pull request #60 from zommiommy/tuple-zst-tiebreak",
          "author_name": "Tommaso Fontana",
          "author_login": "zommiommy",
          "committed_at": "2026-06-16T09:37:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9a41fd57b398a7194acfac49f9cd934d0beee570",
          "body": "Make derive(MemDbg) expansion hygienic and allocation-free",
          "is_bot": false,
          "headline": "Merge pull request #56 from zommiommy/derive-hygiene",
          "author_name": "Tommaso Fontana",
          "author_login": "zommiommy",
          "committed_at": "2026-06-16T09:36:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b0445a6630e0ffbb41399f2ea1ee8bf3d95b40fa",
          "body": "The PR accidentally committed a pending insta snapshot\n(test_all_types_mem_dbg_insta__default@aarch64-darwin.snap.new), which\nis a transient artifact from a failing snapshot run. Remove it and add\n*.snap.new to .gitignore so pending snapshots are never committed again.",
          "is_bot": false,
          "headline": "chore: drop committed insta .snap.new and gitignore the pattern",
          "author_name": "Tommaso Fontana",
          "author_login": "zommiommy",
          "committed_at": "2026-06-16T09:35:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "666700e16e5f292964b3bacb948ad03a556b104a",
          "body": "Implement network and time types via core, add their MemDbgImpl",
          "is_bot": false,
          "headline": "Merge pull request #59 from zommiommy/core-net-time",
          "author_name": "Tommaso Fontana",
          "author_login": "zommiommy",
          "committed_at": "2026-06-16T09:26:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "138855e7fdb8b2ca96653fe2e888bb3cec14e4af",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'main' into tuple-zst-tiebreak",
          "author_name": "Tommaso Fontana",
          "author_login": "zommiommy",
          "committed_at": "2026-06-16T09:26:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "71676ae56c6371b3166ca5a12d5b0303f5c5d68e",
          "body": "The network address types live in core::net (stable since 1.77, below\nthe crate MSRV) and Duration in core::time, so their MemSize impls are\nnow unconditional instead of std-gated; std re-exports the same types.\nInstant, SystemTime, and SystemTimeError remain std-only, as they are\nclock-backed.\n\nMor\n[…]\nmDbgImpl implementation, so a\nfield of one of these types made #[derive(MemDbg)] fail its bounds even\nunder std. They are now MemDbg leaf types.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Implement network and time types via core, add their MemDbgImpl",
          "author_name": "Sebastiano Vigna",
          "author_login": "vigna",
          "committed_at": "2026-06-16T09:24:19Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "db5ee9be4bf4dd3105916bb91c12dc7b6af6ded6",
          "body": "Make Layout's MemDbgImpl available under no_std",
          "is_bot": false,
          "headline": "Merge pull request #58 from zommiommy/layout-no-std",
          "author_name": "Sebastiano Vigna",
          "author_login": "vigna",
          "committed_at": "2026-06-13T21:10:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "17ec4880b34d8853dc753d150fac26d422f684c3",
          "body": "The derive macro sorts (offset, size) since 0.4.1 so that ZSTs sharing\nan offset with a non-ZST field are not attributed spurious padding, but\nthe tuple MemDbgImpl was never updated and sorted by offset alone,\nleaving the attribution to the compiler's whims. Mirror the tie-break\n(plus the index as final tie-breaker, keeping the unstable sort\ndeterministic).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Break tuple field-offset ties by size in MemDbg",
          "author_name": "Sebastiano Vigna",
          "author_login": "vigna",
          "committed_at": "2026-06-11T16:01:47Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "37a955d661498cbeb72169d86406473769370017",
          "body": "The MemSize implementation for core::alloc::Layout is unconditional,\nbut MemDbgImpl was gated behind the std feature, so under no_std a\nLayout field made #[derive(MemDbg)] fail its bounds. Layout is a core\ntype; the implementation is now unconditional. Also fixes the stale\ncomment claiming Layout::align is unstable.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Make Layout's MemDbgImpl available under no_std",
          "author_name": "Sebastiano Vigna",
          "author_login": "vigna",
          "committed_at": "2026-06-11T15:57:59Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "2fa90d0abb870e797ee3acb8f6704860477bd72f",
          "body": "ControlFlow, Poll, Bound, and Reverse render their active payload as a\nlabeled child, but Option and Result - by far the most common sum\ntypes - had empty MemDbgImpl implementations and rendered nothing,\neven though MemSize counts the payload. They now render Some/Ok/Err\nchildren like the other sum \n[…]\nin regenerated with cargo insta; the other\narchitectures patched with a script validated byte-for-byte against\nthe insta-accepted darwin output.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Render Option/Result payloads as labeled MemDbg children",
          "author_name": "Sebastiano Vigna",
          "author_login": "vigna",
          "committed_at": "2026-06-11T15:56:39Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8d3993b853e3973b1856f9ad54b85d719a9a14bf",
          "body": "The generated _mem_dbg_rec_on referenced Vec, vec!, String, Some, Ok,\nunreachable!, and prelude trait methods without qualification, so the\nderive failed to compile in no_std crates (and any module without the\nstandard prelude). The in-repo no_std tests did not catch this because\nintegration-test cr\n[…]\nndex as final tie-breaker so the unstable sort remains\ndeterministic. A no_implicit_prelude integration test guards against\nhygiene regressions.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Make derive(MemDbg) expansion hygienic and allocation-free",
          "author_name": "Sebastiano Vigna",
          "author_login": "vigna",
          "committed_at": "2026-06-11T15:47:40Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "624315edc9a2b97ad519a18ff7337099d1be2c36",
          "body": null,
          "is_bot": false,
          "headline": "Break followed-pointer cycles when computing mem_size",
          "author_name": "LucaCappelletti94",
          "author_login": "LucaCappelletti94",
          "committed_at": "2026-06-03T07:27:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "51b0efdeafc9861d1be35d3088b4e9ed871d190b",
          "body": null,
          "is_bot": false,
          "headline": "Cosmetic changes",
          "author_name": "Sebastiano Vigna",
          "author_login": "vigna",
          "committed_at": "2026-06-02T18:19:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8bacdc132a93f7653f3e98d603101f4b5290402c",
          "body": null,
          "is_bot": false,
          "headline": "Bumped version",
          "author_name": "Sebastiano Vigna",
          "author_login": "vigna",
          "committed_at": "2026-06-02T16:36:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bd11373469140885fbec36a6ec51f91cbebe8cd1",
          "body": "…thod; removed committed comparison file",
          "is_bot": false,
          "headline": "Fixed change log; fixed documentation of FlatType for new dispatch me…",
          "author_name": "Sebastiano Vigna",
          "author_login": "vigna",
          "committed_at": "2026-06-02T16:33:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "784a1be0da561570c183cc755d07e57e279d6b8a",
          "body": "The optional-types snapshot test keyed its insta suffix on\n`std::env::consts::ARCH` and only shipped `@aarch64` snapshots, so it\nfailed on every other target (notably `x86_64`/`x86`) for lack of a\nbaseline. Mirror the suffix scheme used by `test_all_types_mem_dbg_insta`\n(`aarch64-linux`/`aarch64-darwin`/`<arch>`) and add the missing per-arch\nsnapshots: `x86_64`/`aarch64-{linux,darwin}` (64-bit, identical content)\nand `x86` (32-bit, generated under i686-unknown-linux-gnu).",
          "is_bot": false,
          "headline": "test: arch-specific snapshots for optional wrapper types",
          "author_name": "Tommaso Fontana",
          "author_login": "zommiommy",
          "committed_at": "2026-06-02T15:40:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c5f711d338e77a9b832aa88e69c1df4cef2f65b5",
          "body": null,
          "is_bot": false,
          "headline": "Use criterion 0.8 for benchmarks",
          "author_name": "LucaCappelletti94",
          "author_login": "LucaCappelletti94",
          "committed_at": "2026-06-02T15:40:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "99e500d1682cafb0ed80b5673104365ff5af06ac",
          "body": null,
          "is_bot": false,
          "headline": "Exclude benchmarks from the tarpaulin coverage run",
          "author_name": "LucaCappelletti94",
          "author_login": "LucaCappelletti94",
          "committed_at": "2026-06-02T15:40:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "42c1d51c7c8381d225f82419d024feef9b583511",
          "body": null,
          "is_bot": false,
          "headline": "docs: record container size dispatch refactor in changelog",
          "author_name": "Tommaso Fontana",
          "author_login": "zommiommy",
          "committed_at": "2026-06-02T15:40:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7f31adf5d936dce167c4efeae6e37ec3e22a22c6",
          "body": "`core::any::type_name` renders the atomic integer types as `Atomic<bool>`\non some toolchains and `AtomicBool` on others, which had left the\ncommitted snapshots split across both spellings (x86_64 and\naarch64-darwin on the generic form, x86 and aarch64-linux on the legacy\nform). Fold the generic spel\n[…]\ne\nsnapshot harness and converge every snapshot to it, so the all-types\nsnapshot test no longer depends on the toolchain's atomic rendering.\nOnly type-name strings change; reported sizes are identical.",
          "is_bot": false,
          "headline": "test: canonicalize atomic type names in all-types snapshots",
          "author_name": "Tommaso Fontana",
          "author_login": "zommiommy",
          "committed_at": "2026-06-02T15:40:38Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "9fa412836b4ceb90b0146a1ea5ebb335524119fd",
          "body": "Add focused size assertions for the map flat-combination paths that the\nsingle-pass mem_size computation reshaped: HashMap<u32, String> (flat\nkey, heap value), HashMap<String, String> (heap key and value),\nBTreeMap<String, u8> (heap key, flat value), and BTreeMap<String,\nString> (heap key and value). These were previously exercised only by\nthe monolithic all-types snapshot and the tolerance-based correctness\ntest.",
          "is_bot": false,
          "headline": "test: cover flat/non-flat HashMap and BTreeMap key/value size paths",
          "author_name": "Tommaso Fontana",
          "author_login": "zommiommy",
          "committed_at": "2026-06-02T15:40:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8894a58cdc3f84e60961588dd3a4314bda24e2c3",
          "body": "Add HashMap<String,String> and BTreeMap<String,String> to the non_flat bench group so the (non-flat, non-flat) map path that changed is exercised.",
          "is_bot": false,
          "headline": "test: benchmark non-flat key/value maps",
          "author_name": "Tommaso Fontana",
          "author_login": "zommiommy",
          "committed_at": "2026-06-02T15:40:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c7660c96f50af7c60940aeb45b18e870bf480eb2",
          "body": "Maps with non-flat keys and values iterated keys() then values() (two container traversals). Fold both sides into one self.iter() pass via a shared map_heap_extras helper, using the identity key_storage + value_storage == sum_entries(heap_extras) + len*(size_of::<K>()+size_of::<V>()). Output is byte-identical to the prior two-pass code, verified by regenerating and diffing all insta snapshots against main.",
          "is_bot": false,
          "headline": "perf: compute HashMap/BTreeMap mem_size in a single pass",
          "author_name": "Tommaso Fontana",
          "author_login": "zommiommy",
          "committed_at": "2026-06-02T15:40:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "50ee73e99671fffc6a7c428f40b5394ff2ef9098",
          "body": null,
          "is_bot": false,
          "headline": "Replace MemSizeHelper dispatch with a FlatType value branch",
          "author_name": "LucaCappelletti94",
          "author_login": "LucaCappelletti94",
          "committed_at": "2026-06-02T15:40:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6b873736c874af30f0e8be9363dc41ab9e865c8d",
          "body": null,
          "is_bot": false,
          "headline": "Pre-release review",
          "author_name": "Sebastiano Vigna",
          "author_login": "vigna",
          "committed_at": "2026-06-01T12:41:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e202d9962b806a15b06619d3e64dff0066972bf2",
          "body": null,
          "is_bot": false,
          "headline": "aarch64-darwin instas",
          "author_name": "Sebastiano Vigna",
          "author_login": "vigna",
          "committed_at": "2026-06-01T12:07:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f7337e156f902cb83f48e009e35458f0bd4f5f11",
          "body": "When rebasing onto main's Rust 1.96 snapshot regeneration, git's rename\ndetection folded main's core::sync::atomic::Atomic<T> renaming (from the\nretired @aarch64 snapshots) into the migrated @aarch64-linux files. The\naarch64 CI runner (ubuntu-24.04-arm, current stable) still renders the\nAtomicBool/AtomicUsize aliases, so restore that naming to keep build-aarch64\ngreen. The local-only x86_64 reference keeps the 1.96 Atomic<T> form used on\nmain.",
          "is_bot": false,
          "headline": "test: keep aarch64-linux all-types snapshots on AtomicBool naming",
          "author_name": "Tommaso Fontana",
          "author_login": "zommiommy",
          "committed_at": "2026-06-01T12:03:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "46c1b8f02e623661eea4ffe35f785b32e6a59349",
          "body": null,
          "is_bot": false,
          "headline": "test: refresh x86 capacity snapshots",
          "author_name": "Tommaso Fontana",
          "author_login": "zommiommy",
          "committed_at": "2026-06-01T12:03:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "13ab69557b0089c702f0acc70325e0617cdbd6b4",
          "body": null,
          "is_bot": false,
          "headline": "test: refresh aarch64-linux capacity snapshots",
          "author_name": "Tommaso Fontana",
          "author_login": "zommiommy",
          "committed_at": "2026-06-01T12:03:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e7f2f6f6877b35859bf86215871eec772c0a6eb6",
          "body": null,
          "is_bot": false,
          "headline": "test: normalize all-types snapshot type names",
          "author_name": "Tommaso Fontana",
          "author_login": "zommiommy",
          "committed_at": "2026-06-01T12:03:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6daf63fb0c17647d2b0823d79853ba7e26ed2515",
          "body": null,
          "is_bot": false,
          "headline": "test: cover LinkedList all-types snapshots",
          "author_name": "Tommaso Fontana",
          "author_login": "zommiommy",
          "committed_at": "2026-06-01T12:03:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "47b874a8927fc7d0bd2afa6ee90cfa0e10b49210",
          "body": null,
          "is_bot": false,
          "headline": "docs: clarify LinkedList node mirror",
          "author_name": "Tommaso Fontana",
          "author_login": "zommiommy",
          "committed_at": "2026-06-01T12:03:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "31b67458ccb65e2794a423c7edd468e90fd11e5e",
          "body": "Available under both no_std+alloc and std. Per-node accounting uses\na layout-equivalent mirror of std's private Node<T>, re-exported as\ntests can compute expected sizes against the same definition.\n\nA hand-rolled formula like 2 * size_of::<usize>() + size_of::<T>()\nmiscounts whenever align_of::<T>()\n[…]\n matches for any T. The same pattern is already used for\nRc<T> and Arc<T> (RcInner, ArcInner).\n\nLinkedList has no reserved spare capacity, so SizeFlags::CAPACITY\nreturns the same value as the default.",
          "is_bot": false,
          "headline": "Add MemSize/MemDbg implementations for LinkedList<T>",
          "author_name": "LucaCappelletti94",
          "author_login": "LucaCappelletti94",
          "committed_at": "2026-06-01T12:03:28Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4003556995207566e1cfbd591c705d84e92aabf6",
          "body": null,
          "is_bot": false,
          "headline": "Fixes for miri GitHub action",
          "author_name": "Sebastiano Vigna",
          "author_login": "vigna",
          "committed_at": "2026-06-01T11:53:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "31574b5789bcdc58585252ba738263aa9ef2a7fb",
          "body": null,
          "is_bot": false,
          "headline": "Bumped versions",
          "author_name": "Sebastiano Vigna",
          "author_login": "vigna",
          "committed_at": "2026-06-01T11:30:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bbd4f67cd43fb1fe9ce29e1a3c3b40be4856ef9c",
          "body": null,
          "is_bot": false,
          "headline": "GitHub action for MRSV 1.85",
          "author_name": "Sebastiano Vigna",
          "author_login": "vigna",
          "committed_at": "2026-06-01T10:58:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7fb41648ce09f269dda6a52ec89b1347e99cbe62",
          "body": null,
          "is_bot": false,
          "headline": "Regenerated snapshot for x64_64 (Rust 1.96)",
          "author_name": "Sebastiano Vigna",
          "author_login": "vigna",
          "committed_at": "2026-06-01T08:18:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3be1c09eee6eec9456e6f14ef67c230b00f4de09",
          "body": null,
          "is_bot": false,
          "headline": "Added tests for maybe_dangling and aliasable",
          "author_name": "Sebastiano Vigna",
          "author_login": "vigna",
          "committed_at": "2026-06-01T08:17:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6f9730fa01dd990d5fa82503bb5a0d4a32c5c495",
          "body": "…shot for 1.96 (atomic types are named through Atomic)",
          "is_bot": false,
          "headline": "Added crates maybe_dangling and aliasable; updated aarch64 insta snap…",
          "author_name": "Sebastiano Vigna",
          "author_login": "vigna",
          "committed_at": "2026-06-01T07:51:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "37bcdfb087351c603be37c38400a68fc235b7dbb",
          "body": null,
          "is_bot": false,
          "headline": "Fixed insta tests",
          "author_name": "Sebastiano Vigna",
          "author_login": "vigna",
          "committed_at": "2026-05-15T14:08:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1718dd1a2c9b672b6a5bf2861263d27be7f5b06c",
          "body": null,
          "is_bot": false,
          "headline": "docs(changelog): cover unreleased changes",
          "author_name": "Tommaso Fontana",
          "author_login": "zommiommy",
          "committed_at": "2026-05-15T13:03:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ae07232aac04163a92ecba509d2c40be2d5e4e8e",
          "body": "Runs on `ubuntu-24.04-arm` (free GitHub-hosted ARM64 runner for\npublic repos). Mirrors the `build-stable` matrix:\n\n- Build (default features)\n- Test default+full features (does NOT skip snapshots, so the\n  refreshed `@aarch64` snapshots are validated end-to-end on every\n  push)\n- Test no-default-fea\n[…]\ne-features matrix\n\nCatches arch-specific regressions like the 8-byte off-by-one in\n`test_hash_collections.rs` that was only visible on aarch64+NEON\n(hashbrown's `Group = uint8x8_t`, not `uint8x16_t`).",
          "is_bot": false,
          "headline": "ci: add aarch64-linux build/test job",
          "author_name": "Tommaso Fontana",
          "author_login": "zommiommy",
          "committed_at": "2026-05-15T12:52:16Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "17a320089e4b2af5045ae5da55b830d2ec464af1",
          "body": "Regenerated by running the snapshot test under qemu-aarch64 user\nemulation:\n\n    docker run --platform linux/arm64 rust:latest \\\n        bash -c 'INSTA_UPDATE=always cargo test \\\n        --features std,derive,half,maligned,mmap-rs,rand \\\n        --test test_all_types_mem_dbg_insta'\n\nCaptures the sam\n[…]\nsizes shift under the tightened heuristic\n    (FILL = B + 1).\n\nThe previous `@aarch64` snapshots were stale (no maintainer with\naarch64 hardware had refreshed them). Now in sync with the other\narches.",
          "is_bot": false,
          "headline": "test: refresh @aarch64 snapshots for audit fixes",
          "author_name": "Tommaso Fontana",
          "author_login": "zommiommy",
          "committed_at": "2026-05-15T12:52:16Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "622b2956f129a330d201d8b4ef2334493ba6111e",
          "body": "Regenerated by running `cargo test --target i686-unknown-linux-gnu`\n(via the `rust:latest` Docker image with `gcc-multilib`, mirroring\nthe `build-i686` CI job) with `INSTA_UPDATE=always`. Captures the\nvisible deltas already applied to `@x86_64`:\n\n  - Range/Reverse/Bound/ControlFlow/Poll wrappers now\n[…]\n    labeled child fields.\n  - BTreeMap/BTreeSet sizes shift under the tightened heuristic\n    (FILL = B + 1).\n\nThe `@aarch64` snapshots remain stale and still need a refresh on an\nactual aarch64 host.",
          "is_bot": false,
          "headline": "test: refresh @x86 snapshots for audit fixes",
          "author_name": "Tommaso Fontana",
          "author_login": "zommiommy",
          "committed_at": "2026-05-15T12:52:16Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a1dc5ca0d602052d4ff032ca8523046663553fc7",
          "body": "The previous attempt to make these match `Vec`/`String`'s `len` /\n`capacity` flag gating (commit fc38630, since reverted) missed that\n`CAPACITY` is a semantic flag, not a syntactic one. It exists to expose\nallocator-chosen slack (geometric growth in `Vec`, load-factor policy in\n`HashMap`/`BTreeMap`); a buffered I/O type's allocation is taken\nverbatim from the constructor's argument, so there is no slack to\nexpose. Spell that out in the source so the next reader does not\nre-litigate the question.",
          "is_bot": false,
          "headline": "docs(impl_mem_size): document why BufReader/BufWriter ignore CAPACITY",
          "author_name": "Tommaso Fontana",
          "author_login": "zommiommy",
          "committed_at": "2026-05-15T12:52:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ada4ebc4eb4a17839b9407068c9ad270d2076046",
          "body": "… with labels\n\nThese wrappers all called `_mem_dbg_rec_on` directly on their inner\nfield. `_mem_dbg_rec_on` is the \"render the children of self\" hook -\nit does not print the field's own line, so the field label was lost.\nFor primitive Idx (e.g. `u32`), Range collapsed to a single line; for\nfields wi\n[…]\n`/`Poll`/`ControlFlow`: labels the active payload with the\n    variant name.\n\nSnapshots refreshed for x86_64; aarch64 and x86 snapshots will need a\nmatching INSTA_UPDATE=always run on those platforms.",
          "is_bot": false,
          "headline": "fix(impl_mem_dbg): render Range/Reverse/Bound/ControlFlow/Poll fields…",
          "author_name": "Tommaso Fontana",
          "author_login": "zommiommy",
          "committed_at": "2026-05-15T12:52:16Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2ec3119b581fa4eccf9f2d415e7ecfe558710676",
          "body": "`Mutex<T>::_mem_dbg_rec_on` returned `self.lock().unwrap_or_else(...)`,\nwhich is a `MutexGuard<T>` value, and called `_mem_dbg_rec_on` on it.\nMethod resolution picked `MutexGuard`'s own impl, which is gated on\n`DbgFlags::FOLLOW_REFS` and emits nothing under default flags. The\nresult: `Mutex<T>`'s ch\n[…]\nmitive ref),\nwhich has no MemDbgImpl override, so method resolution falls through\nto `T`'s impl.\n\nUse UFCS to dispatch directly on `<T as MemDbgImpl>` after locking,\nbypassing the guard impl entirely.",
          "is_bot": false,
          "headline": "fix(impl_mem_dbg): dispatch Mutex/RwLock children to T's impl directly",
          "author_name": "Tommaso Fontana",
          "author_login": "zommiommy",
          "committed_at": "2026-05-15T12:52:16Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "41a98fc18e13b5451657eb0b3672ff85c1440675",
          "body": "`OnceCell<T>::_mem_dbg_rec_on` called `self.get()._mem_dbg_rec_on(...)`,\nwhich dispatches on `Option<&T>` and hits the empty `Option` default.\nThe inner `T` was never traversed, so `mem_dbg` reported the OnceCell's\ninflated size with no breakdown - while `mem_size_rec` did recurse,\nproducing inconsistent output. Pattern-match on `self.get()` and forward\nto the inner `T`'s impl directly.",
          "is_bot": false,
          "headline": "fix(impl_mem_dbg): recurse into OnceCell payload under default flags",
          "author_name": "Tommaso Fontana",
          "author_login": "zommiommy",
          "committed_at": "2026-05-15T12:52:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b2451753ea65826a74c207833522dc0f1d91d9da",
          "body": "Each tuple `_mem_dbg_rec_on` allocated a `Vec<(usize, usize)>` to\nsort fields by offset. The size is fixed at compile time per arity, so\nuse a stack array with one slot per field (no sentinel) and compute the\nlast field's padded size from `size_of::<Self>()` directly.\n\nDrops the per-call allocation entirely under `std`; under `no_std` the\n`vec` macro import is no longer needed.",
          "is_bot": false,
          "headline": "perf(impl_mem_dbg): build tuple field-offset table on the stack",
          "author_name": "Tommaso Fontana",
          "author_login": "zommiommy",
          "committed_at": "2026-05-15T12:52:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5af6510e011b198f8099a7e715ead472dd650507",
          "body": "The old `(len / B) * avg_node_size` formula dropped the root and any\nintermediate internal nodes whenever `len` was just above `CAPACITY`\n(11 with B=6), undercounting by ~50%. Walk the tree level-by-level\ninstead, summing `leaf_count` leaf nodes plus the geometric series of\ninternal-node counts abov\n[…]\nB real / 1.96 GB reported); the `B` choice\novershoots by ~22% at that scale.\n\nSnapshots refreshed for x86_64; aarch64 and x86 snapshots will need a\nmatching INSTA_UPDATE=always run on those platforms.",
          "is_bot": false,
          "headline": "perf(impl_mem_size): tighten BTreeMap/BTreeSet size heuristic",
          "author_name": "Tommaso Fontana",
          "author_login": "zommiommy",
          "committed_at": "2026-05-15T12:52:16Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fcdc8f3dff01093211e1d872921267a0057be245",
          "body": "* RefCell silently undercounts when a mutable borrow is active; the\n  MemDbg side surfaces `<mutably borrowed>` but the size side does not.\n  Document the asymmetry.\n* Cell and UnsafeCell briefly read the inner value through a raw\n  pointer; for non-flat `T`, a reentrant mutation via the same cell\n  can race against the read. Spell out that the result is unspecified\n  but never UB.",
          "is_bot": false,
          "headline": "docs(impl_mem_size): clarify Cell/UnsafeCell/RefCell mem_size caveats",
          "author_name": "Tommaso Fontana",
          "author_login": "zommiommy",
          "committed_at": "2026-05-15T12:52:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b39bc4ac8d74eb69b6019b48a5bde80a0855bb2a",
          "body": "`Mmap` and `MmapMut` own their mapped region (it's released on drop),\nso their bytes are part of the value's footprint, not a followable\nindirection. Counting them only under `FOLLOW_REFS` was a category\nerror: `Mmap` is not a reference, and there is no notion of unused\ncapacity for an mmap, so `CAPACITY` would be a no-op too. Always\ninclude `self.len()` and update the test accordingly.",
          "is_bot": false,
          "headline": "fix(impl_mem_size): always count owned mmap_rs bytes",
          "author_name": "Tommaso Fontana",
          "author_login": "zommiommy",
          "committed_at": "2026-05-15T12:52:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4e1cbf7a60bcd33a03fde21e54abf83313c608c3",
          "body": "A hand-written MemDbgImpl that passes a padded_size smaller than\nsize_of_val(self) used to underflow the padding computation, panicking\nin debug builds. Saturate so the worst case is a missing [NB] suffix\nrather than an abort.",
          "is_bot": false,
          "headline": "fix(lib): saturate padded_size subtraction in mem_dbg trace",
          "author_name": "Tommaso Fontana",
          "author_login": "zommiommy",
          "committed_at": "2026-05-15T12:52:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0e7b07e2e9911734208878bd19d7aaccb3a84948",
          "body": "…_correctness claim\n\nNo-op clean-up on the GROUP_WIDTH comments introduced in 58b42bd:\n\n- Replace em-dash with ASCII so the comments match the rest of the\n  codebase (`grep -rn '—' mem_dbg/src mem_dbg/tests` is empty).\n- Reword the impl-side cross-reference: byte-exact ground truth lives\n  in test_h\n[…]\nification of the GW choice.\n- Add trailing commas in impl_mem_size.rs's cfg arms so the impl and\n  test gates are character-identical mirrors.\n\nTests pass on x86_64 and aarch64 (qemu-user via Docker).",
          "is_bot": false,
          "headline": "style(hash-collections): ASCII comments, trailing commas, soften test…",
          "author_name": "Tommaso Fontana",
          "author_login": "zommiommy",
          "committed_at": "2026-05-15T12:02:46Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "58b42bd9545e5ac551f38fac7fef6f785f47e113",
          "body": "test_hash_collections predicted GW=16 on aarch64+NEON, but stdlib's\nvendored hashbrown does not enable the NEON SIMD probe and allocates\nwith 8-byte groups everywhere except SSE2 x86. Verified end-to-end by\ntest_correctness against the cap allocator. Also clarify the matching\ncomment in impl_mem_size.rs.",
          "is_bot": false,
          "headline": "fix(tests): align aarch64 GROUP_WIDTH expectation with stdlib hashbrown",
          "author_name": "Al Johri",
          "author_login": "AlJohri",
          "committed_at": "2026-05-15T12:00:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0d0dc6ddd4502efef8bdea47a85720df228529a6",
          "body": "The previous smoke test only checked that `mem_dbg_depth_on` returned\nOk and threw the output away, so any regression that produced valid but\nsemantically-wrong output (missing type name, wrong total) would pass\nsilently. Assert that the rendered output contains both the type name\nand the computed total size at every tested depth.",
          "is_bot": false,
          "headline": "test: assert content in BinaryHeap mem_dbg test",
          "author_name": "Tommaso Fontana",
          "author_login": "zommiommy",
          "committed_at": "2026-05-15T09:15:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d6229cf7aa16e49c34628b42f67345a7937efb08",
          "body": "Add `binary_heap: BinaryHeap<u32>` and\n`binary_heap_nested: BinaryHeap<Vec<i32>>` fields to AllTypesStruct and\nrefresh the per-arch snapshots (@aarch64 via qemu-user, @x86 via\ncross-compile to i686, @x86_64 natively) so the new impl is exercised\nacross every flag/depth combination.",
          "is_bot": false,
          "headline": "test(snapshots): cover BinaryHeap in AllTypesStruct matrix",
          "author_name": "Tommaso Fontana",
          "author_login": "zommiommy",
          "committed_at": "2026-05-15T09:15:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6e141cf513ef70a230273f83272c17727eab9767",
          "body": "`alloc::collections::BinaryHeap` is stable, so gating BinaryHeap impls\nbehind `feature = \"std\"` (unlike Vec and VecDeque) needlessly denied\nthem to no_std+alloc users. Mirror the VecDeque dual-import pattern in\nboth impl_mem_size.rs and impl_mem_dbg.rs and drop the std cfg attrs.",
          "is_bot": false,
          "headline": "fix(impl): expose BinaryHeap impls under no_std+alloc",
          "author_name": "Tommaso Fontana",
          "author_login": "zommiommy",
          "committed_at": "2026-05-15T09:15:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6876e703d33d2fdabf8e7fc1842b17ba36489131",
          "body": null,
          "is_bot": false,
          "headline": "Add BinaryHeap trait impls",
          "author_name": "LucaCappelletti94",
          "author_login": "LucaCappelletti94",
          "committed_at": "2026-05-15T09:15:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1e771af8134de1767781e41bd8ad938078619802",
          "body": null,
          "is_bot": false,
          "headline": "Reformatted",
          "author_name": "Sebastiano Vigna",
          "author_login": "vigna",
          "committed_at": "2026-05-07T16:10:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f5e2633b05103e0f1a2eb3bb9408f01a8d5b1392",
          "body": "…c and similar",
          "is_bot": false,
          "headline": "Implemented traits for Cow using the same implementation rules from R…",
          "author_name": "LucaCappelletti94",
          "author_login": "LucaCappelletti94",
          "committed_at": "2026-05-07T13:09:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b08f13e2a9ad6064503812054fab4e1cdfc94be7",
          "body": null,
          "is_bot": false,
          "headline": "Implemented traits for OnceLock",
          "author_name": "LucaCappelletti94",
          "author_login": "LucaCappelletti94",
          "committed_at": "2026-05-07T12:27:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b3deee6a2c908bd3f5d0bdbc89378c249fe2f5a2",
          "body": "`test_weak_pointers`, `test_default_hasher`, `test_random_state`,\n`test_build_hasher_default`, `test_net_addresses`, `test_time_types`,\nand `test_system_time_error` reference `std`-only types whose\n`MemSize` impls live behind `#[cfg(feature = \"std\")]` in\n`impl_mem_size.rs`. Without the gate the test target fails to\ncompile under `cargo test --no-default-features` and\n`cargo test --no-default-features --features derive` (CI run\n25438693440 step \"Run no default features tests\").",
          "is_bot": false,
          "headline": "test: gate std-only flat primitive tests behind `feature = \"std\"`",
          "author_name": "Tommaso Fontana",
          "author_login": "zommiommy",
          "committed_at": "2026-05-06T13:42:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e1e989d71dc0c63aee404939d618ca8fe67c35e7",
          "body": "The previous Pin<P> impl only overrode _mem_dbg_rec_on, leaving\n_mem_dbg_depth_on at its default. That default does not consult the\ndbg_refs HashSet, so the dedup tracking and @ / -> back-reference\nmarkers emitted by &T / Rc<T> / Arc<T> via impl_mem_dbg_for_deref!\nwere lost when those pointers were \n[…]\nem_size and mem_dbg, fix an unused_allocation warning, drop an\ninert #[mem_size(rec)] attribute, and tighten field-name assertions\nso they no longer match substrings inside fully-qualified type\nnames.",
          "is_bot": false,
          "headline": "fix(impl_mem_dbg): preserve dedup markers when wrapping in Pin<P>",
          "author_name": "Tommaso Fontana",
          "author_login": "zommiommy",
          "committed_at": "2026-05-06T13:31:02Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0bb2fb50bd022e1831df0c3317e26aef439e9c88",
          "body": "Add coverage that asserts the exact size formula for every type with a\nMemSize impl that did not already have a precise test, and upgrade the\nexisting 'assert!(size > 0)' / inequality tests to assert_eq! against\nthe impl's predicted formula.\n\nNew test files:\n- test_flat_primitives.rs - bool, char, f\n[…]\n::<Self>() + len (FOLLOW_REFS).\n- test_maligned_types.rs asserts each Aligned type and Aligned<A, T>\n  with both flat and heap payloads.\n- test_half_types.rs and test_rand.rs assert size_of::<Self>().",
          "is_bot": false,
          "headline": "test: precise size assertions for every MemSize impl",
          "author_name": "Tommaso Fontana",
          "author_login": "zommiommy",
          "committed_at": "2026-05-06T13:14:25Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "734863477e1335712676332dee0b97fa4f7267b4",
          "body": "test_arc_deduplication only asserted an inequality for the\nFOLLOW_RCS branch. Add test_arc_in_struct (Arc<u64>, flat payload)\nand test_arc_with_heap_payload (Arc<String>, exercises both the\nFOLLOW_RCS recursion through T and the CAPACITY flag) with exact\nsize formulas, mirroring test_box_in_struct.",
          "is_bot": false,
          "headline": "test: precise size assertions for Arc<T> in struct fields",
          "author_name": "Tommaso Fontana",
          "author_login": "zommiommy",
          "committed_at": "2026-05-06T12:50:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ea5402f1d2d86d5b9a3a7102d4eebce3eb07de14",
          "body": "Delegate MemSize, FlatType, and MemDbgImpl for Pin<P> to the wrapped pointer type so pinned Box, references, Rc, and Arc keep their existing traversal policies. Add focused coverage and changelog entry.",
          "is_bot": false,
          "headline": "Add generic Pin trait impls",
          "author_name": "LucaCappelletti94",
          "author_login": "LucaCappelletti94",
          "committed_at": "2026-05-06T12:42:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d77b8fd064619099a0e41b96286c1dc1dd8a015a",
          "body": "Box::leak triggered miri's leak detector. The references in\ntest_niche_optimized_wrappers don't actually need 'static lifetime;\na stack binding works just as well.",
          "is_bot": false,
          "headline": "test: avoid Box::leak in niche test for miri compatibility",
          "author_name": "Tommaso Fontana",
          "author_login": "zommiommy",
          "committed_at": "2026-05-06T10:33:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d00a9814cbeca54f6ccaf8bbcfcf082f0fbfa0eb",
          "body": "Rename to test_* prefix, return anyhow::Result<()>, and replace\nunwrap()/expect() with the ? operator, as required by the LWA\nrust-dev-guidelines.",
          "is_bot": false,
          "headline": "test: align core wrapper tests with project guidelines",
          "author_name": "Tommaso Fontana",
          "author_login": "zommiommy",
          "committed_at": "2026-05-06T10:33:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fd7f8dd543acb0a26dc03bca8982feb5bf47456f",
          "body": null,
          "is_bot": false,
          "headline": "test: cover niche-fill behaviour for core wrapper impls",
          "author_name": "Tommaso Fontana",
          "author_login": "zommiommy",
          "committed_at": "2026-05-06T10:33:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e1d7d1a981f0f42c81e0042d174ed43888c8d1a3",
          "body": null,
          "is_bot": false,
          "headline": "Cover core wrapper impls",
          "author_name": "LucaCappelletti94",
          "author_login": "LucaCappelletti94",
          "committed_at": "2026-05-06T10:33:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 20,
      "commits_last_year": 287,
      "latest_release_at": "2026-07-23T14:23:52Z",
      "latest_release_tag": "0.4.4",
      "releases_from_tags": false,
      "days_since_last_push": 1,
      "active_weeks_last_year": 20,
      "days_since_latest_release": 1,
      "mean_days_between_releases": 58.7
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": true,
      "health_percentage": 57,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "mem_dbg",
          "exists": true,
          "license": "Apache-2.0 OR MIT",
          "keywords": [
            "allocation",
            "debug",
            "memory",
            "development-tools::debugging"
          ],
          "ecosystem": "crates",
          "matches_repo": true,
          "registry_url": "https://crates.io/crates/mem_dbg",
          "is_deprecated": false,
          "latest_version": "0.4.4",
          "repository_url": "https://github.com/zommiommy/mem_dbg-rs",
          "versions_count": 25,
          "total_downloads": 408001,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 56506,
          "first_published_at": "2023-11-30T11:29:12.379276Z",
          "latest_published_at": "2026-07-23T14:23:12.384542Z",
          "latest_version_yanked": false,
          "days_since_latest_publish": 1
        },
        {
          "name": "mem_dbg-derive",
          "exists": true,
          "license": "Apache-2.0 OR MIT",
          "keywords": [
            "allocation",
            "debug",
            "memory",
            "development-tools::procedural-macro-helpers"
          ],
          "ecosystem": "crates",
          "matches_repo": true,
          "registry_url": "https://crates.io/crates/mem_dbg-derive",
          "is_deprecated": false,
          "latest_version": "0.3.4",
          "repository_url": "https://github.com/zommiommy/mem_dbg-rs",
          "versions_count": 14,
          "total_downloads": 397675,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 56399,
          "first_published_at": "2023-11-30T11:27:40.602371Z",
          "latest_published_at": "2026-07-23T14:23:08.491799Z",
          "latest_version_yanked": false,
          "days_since_latest_publish": 1
        }
      ]
    },
    "popularity": {
      "forks": 7,
      "stars": 43,
      "watchers": 2,
      "fork_history": {
        "days": [
          {
            "date": "2024-05-26",
            "count": 1
          },
          {
            "date": "2024-08-08",
            "count": 1
          },
          {
            "date": "2024-08-16",
            "count": 1
          },
          {
            "date": "2024-09-18",
            "count": 1
          },
          {
            "date": "2024-09-25",
            "count": 1
          },
          {
            "date": "2025-12-17",
            "count": 1
          },
          {
            "date": "2026-05-14",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 7,
        "total_forks": 7
      },
      "star_history": null,
      "open_issues_and_prs": 8
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "examples"
      ],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [
        "Cargo.toml",
        "mem_dbg-derive/Cargo.toml",
        "mem_dbg/Cargo.toml"
      ],
      "largest_source_bytes": 54577,
      "source_files_sampled": 57,
      "oversized_source_files": 0,
      "agent_instruction_files": [],
      "agent_instruction_max_bytes": null
    },
    "dependencies": {
      "manifests": [
        "Cargo.toml",
        "mem_dbg-derive/Cargo.toml",
        "mem_dbg/Cargo.toml"
      ],
      "advisories": {
        "error": null,
        "scope": "published_package",
        "source": "osv",
        "findings": [
          {
            "name": "maligned",
            "direct": true,
            "version": "0.2.1",
            "severity": "moderate",
            "ecosystem": "crates",
            "cvss_score": null,
            "advisory_ids": [
              "GHSA-wm8x-php5-hvq6",
              "RUSTSEC-2023-0017"
            ],
            "fixed_version": null,
            "advisory_count": 2,
            "oldest_advisory_days": 1238
          },
          {
            "name": "get-size",
            "direct": true,
            "version": "0.1.4",
            "severity": "unknown",
            "ecosystem": "crates",
            "cvss_score": null,
            "advisory_ids": [
              "RUSTSEC-2024-0425"
            ],
            "fixed_version": null,
            "advisory_count": 1,
            "oldest_advisory_days": 677
          },
          {
            "name": "paste",
            "direct": true,
            "version": "1.0.15",
            "severity": "unknown",
            "ecosystem": "crates",
            "cvss_score": null,
            "advisory_ids": [
              "RUSTSEC-2024-0436"
            ],
            "fixed_version": null,
            "advisory_count": 1,
            "oldest_advisory_days": 655
          }
        ],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {
          "unknown": 2,
          "moderate": 1
        },
        "advisory_count": 4,
        "affected_count": 3,
        "assessed_count": 114,
        "malicious_count": 0,
        "assessed_package": "crates:mem_dbg@0.4.4",
        "unassessed_count": 0,
        "direct_affected_count": 3
      },
      "ecosystems": [
        "crates"
      ],
      "dependencies": [
        {
          "name": "quote",
          "manifest": "mem_dbg-derive/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "proc-macro2",
          "manifest": "mem_dbg-derive/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.0"
        },
        {
          "name": "syn",
          "manifest": "mem_dbg-derive/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2.0"
        },
        {
          "name": "bitflags",
          "manifest": "mem_dbg/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2.4.1"
        },
        {
          "name": "mem_dbg-derive",
          "manifest": "mem_dbg/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "mmap-rs",
          "manifest": "mem_dbg/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.7.0"
        },
        {
          "name": "half",
          "manifest": "mem_dbg/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2.0.4"
        },
        {
          "name": "rand",
          "manifest": "mem_dbg/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.10.0"
        },
        {
          "name": "maligned",
          "manifest": "mem_dbg/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.2.1"
        },
        {
          "name": "hashbrown",
          "manifest": "mem_dbg/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.16"
        },
        {
          "name": "aliasable",
          "manifest": "mem_dbg/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.1.3"
        },
        {
          "name": "maybe-dangling",
          "manifest": "mem_dbg/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.1.2"
        }
      ],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "aliasable",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "bitflags",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "half",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "hashbrown",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "maligned",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "maybe-dangling",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "mmap-rs",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "proc-macro2",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "quote",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "rand",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "syn",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "anyhow",
            "direct": false,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "cap",
            "direct": false,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "comfy-table",
            "direct": false,
            "version": "7.2.1",
            "ecosystem": "crates"
          },
          {
            "name": "criterion",
            "direct": false,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "deepsize",
            "direct": false,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "get-size",
            "direct": false,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "insta",
            "direct": false,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "paste",
            "direct": false,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "regex",
            "direct": false,
            "version": null,
            "ecosystem": "crates"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 20,
        "direct_count": 11,
        "indirect_count": 9
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 4,
        "merged_prs": 33,
        "open_issues": 4,
        "closed_ratio": 0.8,
        "closed_issues": 16,
        "closed_unmerged_prs": 5
      },
      "bus_factor": 1,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "vigna",
          "commits": 276,
          "avatar_url": "https://avatars.githubusercontent.com/u/1464942?v=4"
        },
        {
          "type": "User",
          "login": "zommiommy",
          "commits": 126,
          "avatar_url": "https://avatars.githubusercontent.com/u/25117939?v=4"
        },
        {
          "type": "User",
          "login": "LucaCappelletti94",
          "commits": 115,
          "avatar_url": "https://avatars.githubusercontent.com/u/7738570?v=4"
        },
        {
          "type": "User",
          "login": "RagnarGrootKoerkamp",
          "commits": 4,
          "avatar_url": "https://avatars.githubusercontent.com/u/6233682?v=4"
        },
        {
          "type": "User",
          "login": "AngeloSav",
          "commits": 2,
          "avatar_url": "https://avatars.githubusercontent.com/u/90687232?v=4"
        },
        {
          "type": "User",
          "login": "dovreshef",
          "commits": 2,
          "avatar_url": "https://avatars.githubusercontent.com/u/5120549?v=4"
        },
        {
          "type": "User",
          "login": "AlJohri",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/2790092?v=4"
        },
        {
          "type": "User",
          "login": "zacchiro",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/216766?v=4"
        },
        {
          "type": "User",
          "login": "progval",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/406946?v=4"
        }
      ],
      "contributors_sampled": 9,
      "top_contributor_share": 0.523
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "links.yml",
        "rust.yml"
      ],
      "has_docs_dir": false,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 0,
            "reason": "branch protection not enabled on development/release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 10,
            "reason": "4 out of 4 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": 2,
            "reason": "Found 4/16 approved changesets -- score normalized to 2",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 5 contributing companies or organizations",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 0,
            "reason": "no update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": 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": 0,
            "reason": "security policy file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": 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": "2fc4d91e391ccd58c5e20d401f07709197042307",
        "ran_at": "2026-07-24T17:52:03Z",
        "aggregate_score": 4.5,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-23T14:28:56Z",
      "oldest_open_prs": [
        {
          "number": 42,
          "created_at": "2026-05-07T09:29:12Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 46,
          "created_at": "2026-05-14T18:37:32Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 48,
          "created_at": "2026-05-14T20:22:08Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 61,
          "created_at": "2026-06-16T11:57:14Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ],
      "last_merged_pr_at": "2026-06-17T15:05:30Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": [
        {
          "number": 11,
          "created_at": "2024-08-17T08:57:21Z",
          "last_comment_at": "2024-08-17T10:19:49Z",
          "last_comment_author": "zommiommy"
        },
        {
          "number": 26,
          "created_at": "2026-01-15T07:08:30Z",
          "last_comment_at": "2026-01-18T13:14:48Z",
          "last_comment_author": "LucaCappelletti94"
        },
        {
          "number": 30,
          "created_at": "2026-01-17T10:32:23Z",
          "last_comment_at": "2026-01-17T11:09:01Z",
          "last_comment_author": "vigna"
        },
        {
          "number": 33,
          "created_at": "2026-01-18T20:41:12Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/zommiommy/mem_dbg-rs",
    "host": "github.com",
    "name": "mem_dbg-rs",
    "owner": "zommiommy"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 65,
      "inputs": {
        "security": 52,
        "vitality": 84,
        "community": 59,
        "governance": 66,
        "engineering": 61
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 84,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "good",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 78,
            "inputs": {
              "commits_last_year": 287,
              "human_commit_share": 1,
              "days_since_last_push": 1,
              "active_weeks_last_year": 20
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 1 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 1
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "20/52 weeks with commits",
                "points": 13.8,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 20
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "287 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 287
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 92,
            "inputs": {
              "releases_count": 20,
              "latest_release_tag": "0.4.4",
              "releases_from_tags": false,
              "days_since_latest_release": 1,
              "mean_days_between_releases": 58.7
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "20 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 20
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 1 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 1
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~58.7 days",
                "points": 19.8,
                "status": "partial",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 58.7
                    }
                  }
                ],
                "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": 1,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 1 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 1
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "moderate",
        "name": "Community & Adoption",
        "value": 59,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "at_risk",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 33,
            "inputs": {
              "forks": 7,
              "stars": 43,
              "watchers": 2,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "43 stars",
                "points": 26.3,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 43
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "7 forks",
                "points": 6.5,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 7
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "2 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "good",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 70,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": true,
              "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 (Apache-2.0)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "Apache-2.0"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 18,
                "status": "met",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "good",
            "name": "Ecosystem adoption (downloads)",
            "note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "registry_dependents"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 84,
            "inputs": {
              "packages": [
                "mem_dbg",
                "mem_dbg-derive"
              ],
              "dependents": null,
              "ecosystems": "crates",
              "total_downloads": 805676,
              "monthly_downloads": 112905
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "112,905 downloads/month across crates",
                "points": 67.4,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 112905,
                      "ecosystems": "crates"
                    }
                  }
                ],
                "max_points": 80
              },
              {
                "key": "registry_dependents",
                "name": "Registry dependents",
                "detail": "not reported by this ecosystem",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_reported_by_this_ecosystem",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "moderate",
        "name": "Sustainability & Governance",
        "value": 66,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "at_risk",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 42,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 9,
              "top_contributor_share": 0.523
            },
            "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 52% of commits",
                "points": 10.7,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 52
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "9 contributors",
                "points": 12.2,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 9
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 5 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 74,
            "inputs": {
              "merged_prs": 33,
              "open_issues": 4,
              "closed_issues": 16,
              "issue_closed_ratio": 0.8,
              "closed_unmerged_prs": 5
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "80% of issues closed",
                "points": 37.4,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 80
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "33/38 decided PRs merged",
                "points": 33.2,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 33,
                      "decided": 38
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 4/16 approved changesets -- score normalized to 2",
                "points": 3,
                "status": "partial",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "moderate",
            "name": "Ownership & stewardship",
            "note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "verified_domain"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 58,
            "inputs": {
              "followers": 40,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "zommiommy",
              "public_repos": 98,
              "account_age_days": 3478
            },
            "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": "40 followers of zommiommy",
                "points": 11.6,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 40,
                      "login": "zommiommy"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "98 public repos, account ~9 yr old",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 98
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 9
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "mem_dbg",
                "mem_dbg-derive"
              ],
              "ecosystems": "crates",
              "any_deprecated": false,
              "min_days_since_publish": 1
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "2 package(s) on crates",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 2,
                      "ecosystems": "crates"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 1 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 1
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "25 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 25
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "moderate",
        "name": "Engineering Quality",
        "value": 61,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "moderate",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 68,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "2 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "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": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "4 out of 4 merged PRs checked by a CI test -- score normalized to 10",
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "moderate",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 50,
            "inputs": {
              "topics": [],
              "has_wiki": true,
              "homepage": null,
              "has_readme": true,
              "has_docs_dir": false,
              "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": 0,
                "status": "missed",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "moderate",
        "name": "Security",
        "value": 52,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Packaging, Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "packaging",
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 45,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 16,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 2,
              "scorecard_aggregate": 4.5
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection not enabled on development/release branches",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "4 out of 4 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 4/16 approved changesets -- score normalized to 2",
                "points": 1.5,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 5 contributing companies or organizations",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "no update tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow 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 not detected",
                "points": 0,
                "status": "missed",
                "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": "dependency_advisories",
            "band": "good",
            "name": "Dependency advisories",
            "note": "Matched the crates:mem_dbg@0.4.4 runtime dependency closure — what installing the published package pulls in — 114 packages. Reachability is not analyzed.",
            "notes": [
              {
                "code": "advisories_scope_published",
                "params": {
                  "package": "crates:mem_dbg@0.4.4",
                  "assessed": 114
                }
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 81,
            "inputs": {
              "source": "osv",
              "advisories": 4,
              "affected_packages": 3,
              "assessed_packages": 114,
              "unassessed_packages": 0,
              "affected_by_severity": "moderate 1, unknown 2",
              "direct_affected_packages": 3
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "3 affected: maligned 0.2.1 (moderate), get-size 0.1.4 (unknown), paste 1.0.15 (unknown)",
                "points": 23.1,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_affected",
                    "params": {
                      "count": 3,
                      "packages": "maligned 0.2.1 (moderate), get-size 0.1.4 (unknown), paste 1.0.15 (unknown)"
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "no indirect dependency carries a known advisory",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "no_indirect_advisories",
                    "params": {}
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "3 advisory-carrying package(s) unaddressed past 90 days; oldest published 1238 days ago",
                "points": 32.7,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_stale",
                    "params": {
                      "days": 90,
                      "count": 3,
                      "oldest": 1238
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "malicious_dependencies",
            "band": "excellent",
            "name": "Malicious dependencies",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "source": "osv",
              "meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
              "packages": [],
              "red_flag": false,
              "assessed_packages": 114,
              "malicious_packages": 0,
              "direct_malicious_packages": 0,
              "withdrawn_malicious_packages": 0,
              "installable_malicious_packages": 0
            },
            "components": [
              {
                "key": "no_dependency_reported_as_a_malicious_package",
                "name": "No dependency reported as a malicious package",
                "detail": "no dependency is reported as a malicious package",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "no_malicious_dependencies",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 18
            },
            "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": 54,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "at_risk",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 37,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.69,
              "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": "69 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 36.8,
                "status": "partial",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 69,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 56,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [],
              "agent_commit_share": 0.07,
              "toolchain_manifests": [
                "Cargo.toml",
                "mem_dbg-derive/Cargo.toml",
                "mem_dbg/Cargo.toml"
              ],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "Cargo.toml, mem_dbg-derive/Cargo.toml, mem_dbg/Cargo.toml (toolchain convention, no task runner)",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "toolchain_convention",
                    "params": {
                      "files": "Cargo.toml, mem_dbg-derive/Cargo.toml, mem_dbg/Cargo.toml"
                    }
                  }
                ],
                "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": "Rust (statically typed)",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Rust"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "7 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 7,
                      "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": 100,
            "inputs": {
              "primary_language": "Rust",
              "largest_source_bytes": 54577,
              "source_files_sampled": 57,
              "oversized_source_files": 0
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Rust (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Rust"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "0/57 source files over 60KB",
                "points": 55,
                "status": "met",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 57,
                      "oversized": 0
                    }
                  }
                ],
                "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-24T17:52:17.060670Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/z/zommiommy/mem_dbg-rs.svg",
  "full_name": "zommiommy/mem_dbg-rs",
  "license_state": "standard",
  "license_spdx": "Apache-2.0"
}

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.27.0 — metodología completa · wiki de métricas.

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