Public record
Software health reportschema 0.27.0 · metrics 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 stars⑂ 7 forkssince Aug 2023View on GitHub ↗

zommiommy/mem_dbg-rs holds a health index of 65 out of 100, placing it in the Moderate band. It scores highest on Vitality (84/100) and lowest on Security (52/100). It was last updated 1 day ago. A single contributor accounts for most of its recent work.

65
overall / 100
Moderate

Software health index

Metrics are grouped into weighted categories on one standardized 1–100 scale. Overall starts as their weighted mean; when public evidence triggers the High-Risk Jurisdiction Policy, the rating is adjusted and receives an At risk ceiling of 49. AI Readiness sits outside the overall score.

65
Excellent85-100Exemplary; meets essentially all checked criteria
Good70-84Healthy; minor gaps
Moderate50-69Acceptable with notable gaps; review recommended
At risk30-49Significant weaknesses; adoption warrants caution
Critical1-29Severe problems (abandoned, single-maintainer, no hygiene)
VitalityCommunity &AdoptionSustainability &GovernanceEngineeringQualitySecurityAI Readiness

Score profile

Each axis is a category. The shape matters more than the average — a healthy subject fills the whole shape, while a spike-and-crater profile means strength in one dimension is masking risk in another.

Ownership

Tommaso FontanaPersonal account
40 followers98 public repossince Jan 2017

This repository is owned by a personal account. A single-owner project carries more continuity risk than an organization-backed one.

Package ecosystems

RegistryPackageVersionDownloads / moVersionsLast publishTags
crates.iomem_dbg0.4.456,506251 day agoallocationdebugmemory
crates.iomem_dbg-derive0.3.456,399141 day agoallocationdebugmemory

Metrics by category

Vitality

Is the project alive — is code being written and are releases shipping?

84Good · 22% of overall
How it's scored
36/36Push recency — last push 1 days ago
13.8/36Commit cadence — 20/52 weeks with commits
18/18Commit volume — 287 commits in the last year
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Inputs used
commits_last_year287
human_commit_share1
days_since_last_push1
active_weeks_last_year20
How it's scored
27/27Ships releases — 20 releases published
36/36Release recency — latest release 1 days ago
19.8/27Release cadence — a release every ~58.7 days
0/10OpenSSF Scorecard: Signed-Releases — no data
Inputs used
releases_count20
latest_release_tag0.4.4
releases_from_tagsno
days_since_latest_release1
mean_days_between_releases58.7
Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.

Community & Adoption

Does the project have users, downloads, attention, and a welcoming setup for contributors?

59Moderate · 18% of overall
How it's scored
26.3/60Stars — 43 stars
6.5/25Forks — 7 forks
0/15Watchers — 2 watchers
Inputs used
forks7
stars43
watchers2
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
How it's scored
22.5/22.5README
22.5/22.5License — recognized license (Apache-2.0)
18/18CONTRIBUTING guide
0/13.5Code of conduct
0/7.2Issue template
0/6.3PR template
Inputs used
has_readmeyes
has_licenseyes
has_contributingyes
has_issue_templateno
has_code_of_conductno
has_pull_request_templateno
How it's scored
67.4/80Monthly downloads — 112,905 downloads/month across crates
0/20Registry dependents — not reported by this ecosystem
Inputs used
packagesmem_dbg, mem_dbg-derive
dependents
ecosystemscrates
total_downloads805,676
monthly_downloads112,905
Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.

Sustainability & Governance

Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?

66Moderate · 24% of overall
How it's scored
9/54Bus factor — 1 contributor(s) cover half of all commits
10.7/22.5Commit distribution — top contributor authored 52% of commits
12.2/13.5Contributor breadth — 9 contributors
10/10OpenSSF Scorecard: Contributors — project has 5 contributing companies or organizations
Inputs used
bus_factor1
contributors_sampled9
top_contributor_share0.523
How it's scored
37.4/46.8Issue resolution — 80% of issues closed
33.2/38.3PR acceptance — 33/38 decided PRs merged
3/15OpenSSF Scorecard: Code-Review — Found 4/16 approved changesets -- score normalized to 2
Inputs used
merged_prs33
open_issues4
closed_issues16
issue_closed_ratio0.8
closed_unmerged_prs5
How it's scored
10/30Ownership backing — personal (user) account
0/20Verified domain — not applicable to user accounts
11.6/25Owner reach — 40 followers of zommiommy
25/25Track record — 98 public repos, account ~9 yr old
Inputs used
followers40
owner_typeUser
is_verified
owner_loginzommiommy
public_repos98
account_age_days3,478
Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.
How it's scored
25/25Published & resolvable — 2 package(s) on crates
35/35Publish recency — latest publish 1 days ago
20/20Version history — 25 published versions
20/20Not deprecated — active, not deprecated or yanked
Inputs used
packagesmem_dbg, mem_dbg-derive
ecosystemscrates
any_deprecatedno
min_days_since_publish1

Engineering Quality

Are baseline engineering and documentation practices in place?

61Moderate · 20% of overall
How it's scored
24/24CI workflows — 2 workflow(s)
24/24Tests present
0/16Linter config
0/9.6Pre-commit hooks
0/6.4.editorconfig
20/20OpenSSF Scorecard: CI-Tests — 4 out of 4 merged PRs checked by a CI test -- score normalized to 10
Inputs used
has_ciyes
has_testsyes
has_editorconfigno
has_linter_configno
has_precommit_configno

Documentation

50Moderate
How it's scored
30/30README
0/25Documentation directory
0/15Documentation / homepage site
10/10Repository description
0/10Topics
10/10Wiki
Inputs used
topics
has_wikiyes
homepage
has_readmeyes
has_docs_dirno
has_descriptionyes

Security

Are visible security and supply-chain practices strong, without unresolved high-risk jurisdiction exposure?

52Moderate · 16% of overall
How it's scored
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.5License — 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 — no data
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 — no data
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
7.5/7.5Vulnerabilities — 0 existing vulnerabilities detected
Inputs used
sourceopenssf_scorecard
checks_evaluated16
scorecard_versionv5.5.0
checks_inconclusive2
scorecard_aggregate4.5
Excluded from scoring (no data or not applicable): packaging, signed_releases. Remaining weights renormalized.
How it's scored
23.1/35Direct dependencies free of known advisories — 3 affected: maligned 0.2.1 (moderate), get-size 0.1.4 (unknown), paste 1.0.15 (unknown)
25/25Indirect dependencies free of known advisories — no indirect dependency carries a known advisory
32.7/40No advisories left outstanding — 3 advisory-carrying package(s) unaddressed past 90 days; oldest published 1,238 days ago
Inputs used
sourceosv
advisories4
affected_packages3
assessed_packages114
unassessed_packages0
affected_by_severitymoderate 1, unknown 2
direct_affected_packages3
Matched the crates:mem_dbg@0.4.4 runtime dependency closure — what installing the published package pulls in — 114 packages. Reachability is not analyzed.

AI Readiness

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.

54Moderate · 0% of overall
How it's scored
0/45Agent instructions — no CLAUDE.md / AGENTS.md / editor rules
0/15Machine-readable docs (llms.txt)
36.8/40Legible commit history — 69 of 100 human commits state their intent (structured subject or explanatory body)
Inputs used
has_llms_txtno
legible_history_share0.69
agent_instruction_files
agent_instruction_max_bytes
How it's scored
12.6/18One-command bootstrap — Cargo.toml, mem_dbg-derive/Cargo.toml, mem_dbg/Cargo.toml (toolchain convention, no task runner)
22/22Automated tests
0/11Lint / format config
11/11Static type checking — Rust (statically typed)
0/10Reproducible environment
10/10Demonstrated agent practice — 7 of the last 100 commits agent-authored or agent-credited
0/8Automated maintenance — no automated dependency updates observed
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Inputs used
has_nixno
has_testsyes
lockfiles
has_dockerfileno
typed_languageyes
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
How it's scored
45/45Type-checkable code — Rust (statically typed)
55/55Manageable file sizes — 0/57 source files over 60KB
Inputs used
primary_languageRust
largest_source_bytes54,577
source_files_sampled57
oversized_source_files0
How it's scored
0/40API schema (OpenAPI/GraphQL/proto)
0/20MCP server
40/40Runnable examples — examples
Inputs used
example_dirsexamples
has_mcp_signalno
api_schema_files

Key facts

43GitHub stars
9contributors
287commits, last 12 months
1days since last push
20releases
1bus factor
4open issues
crates.iopackage ecosystems

Data collection warnings

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

More detail

Star and fork history 0 ★ / 7 ⇿
0Stars
7Forks
12Releases

When each star and fork was added, collected from GitHub and bucketed by day. Cumulative growth sits directly above the daily additions it is made of, so the two read against each other: steady organic accretion looks nothing like an abrupt, short-lived burst. Where that difference is measurable, it is reported as growth authenticity.

1234567712024-052025-052026-05
Major 0Minor 2Patch 10

Each point covers 2 days.

OpenSSF Scorecard 4.5 / 10
4.5aggregate

Independent, tool-agnostic security assessment from the open-source OpenSSF Scorecard. Each check rewards a security practice, not a specific vendor's tool. Checks Scorecard could not determine are marked n/a and excluded from the security score (never counted as zero).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/aPackagingpackaging 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/aSigned-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
10Vulnerabilities0 existing vulnerabilities detected
Direct dependencies 12
RegistryPackageVersion constraintManifest
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
All dependencies 20

Full resolved dependency set from the GitHub dependency graph: 11 direct and 9 indirect (transitive) packages. The transitive closure is complete when the repository commits a lockfile.

RegistryPackageVersionRelation
crates.ioaliasabledirect
crates.iobitflagsdirect
crates.iohalfdirect
crates.iohashbrowndirect
crates.iomaligneddirect
crates.iomaybe-danglingdirect
crates.iommap-rsdirect
crates.ioproc-macro2direct
crates.ioquotedirect
crates.ioranddirect
crates.iosyndirect
crates.ioanyhowindirect
crates.iocapindirect
crates.iocomfy-table7.2.1indirect
crates.iocriterionindirect
crates.iodeepsizeindirect
crates.ioget-sizeindirect
crates.ioinstaindirect
crates.iopasteindirect
crates.ioregexindirect
Dependency advisories 3

Installing crates:mem_dbg@0.4.4 pulls in 114 packages, direct and transitive: 3 carry known advisories, of which 3 are direct dependencies.

PackageVersionRelationSeverityAdvisoriesFixed in
maligned0.2.1directmoderate2
get-size0.1.4directunknown1
paste1.0.15directunknown1

An advisory means the version recorded in the dependency graph falls inside an advisory’s affected range. Reachability is not analysed, and the graph includes development and test pins — a finding may concern tooling rather than shipped software.

Raw JSON report machine-readable
{
  "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"
}

Scores are signals, not warranties. They reflect publicly visible practices on GitHub — not a code audit, and not a security guarantee.

Missing data is excluded and weights renormalized, never scored as zero. Methodology is versioned and open: metrics v1.13.0, schema v0.27.0 — full methodology · metrics wiki.

How one result sits in the wider record: aggregate statisticscrates.io.